diff options
| author | James Bottomley <James.Bottomley@HansenPartnership.com> | 2016-07-06 07:25:55 -0700 |
|---|---|---|
| committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2016-07-06 07:25:55 -0700 |
| commit | ea1a25c3348abc33d7d94db28501766adf3d1c7d (patch) | |
| tree | ca3c5c8b72532117034dd2d57a2a85eead13db7b /lib/nodemask.c | |
| parent | 5e7ff2ca7f2da55fe777167849d0c93403bd0dc8 (diff) | |
| parent | 262e2bfd7d1e1f1ee48b870e5dfabb87c06b975e (diff) | |
Merge branch 'jejb-fixes' into fixes
Diffstat (limited to 'lib/nodemask.c')
| -rw-r--r-- | lib/nodemask.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/nodemask.c b/lib/nodemask.c new file mode 100644 index 000000000000..e42a5bf44d33 --- /dev/null +++ b/lib/nodemask.c @@ -0,0 +1,30 @@ +#include <linux/nodemask.h> +#include <linux/module.h> +#include <linux/random.h> + +int __next_node_in(int node, const nodemask_t *srcp) +{ + int ret = __next_node(node, srcp); + + if (ret == MAX_NUMNODES) + ret = __first_node(srcp); + return ret; +} +EXPORT_SYMBOL(__next_node_in); + +#ifdef CONFIG_NUMA +/* + * Return the bit number of a random bit set in the nodemask. + * (returns NUMA_NO_NODE if nodemask is empty) + */ +int node_random(const nodemask_t *maskp) +{ + int w, bit = NUMA_NO_NODE; + + w = nodes_weight(*maskp); + if (w) + bit = bitmap_ord_to_pos(maskp->bits, + get_random_int() % w, MAX_NUMNODES); + return bit; +} +#endif |
