cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

nodemask.c (671B)


      1// SPDX-License-Identifier: GPL-2.0
      2#include <linux/nodemask.h>
      3#include <linux/module.h>
      4#include <linux/random.h>
      5
      6unsigned int __next_node_in(int node, const nodemask_t *srcp)
      7{
      8	unsigned int ret = __next_node(node, srcp);
      9
     10	if (ret == MAX_NUMNODES)
     11		ret = __first_node(srcp);
     12	return ret;
     13}
     14EXPORT_SYMBOL(__next_node_in);
     15
     16#ifdef CONFIG_NUMA
     17/*
     18 * Return the bit number of a random bit set in the nodemask.
     19 * (returns NUMA_NO_NODE if nodemask is empty)
     20 */
     21int node_random(const nodemask_t *maskp)
     22{
     23	int w, bit = NUMA_NO_NODE;
     24
     25	w = nodes_weight(*maskp);
     26	if (w)
     27		bit = bitmap_ord_to_pos(maskp->bits,
     28			get_random_int() % w, MAX_NUMNODES);
     29	return bit;
     30}
     31#endif