| 1 | |
| 2 | #include <linux/nodemask.h>
|
| 3 | #include <linux/module.h>
|
| 4 | #include <linux/random.h>
|
| 5 |
|
| 6 | int __next_node_in(int node, const nodemask_t *srcp)
|
| 7 | {
|
| 8 | int ret = __next_node(node, srcp);
|
| 9 |
|
| 10 | if (ret == MAX_NUMNODES)
|
| 11 | ret = __first_node(srcp);
|
| 12 | return ret;
|
| 13 | }
|
| 14 | EXPORT_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 |
|
| 21 | int 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
|