VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   33 Branches   57 Tags
b24413180f560 (Greg Kroah-Hartman 2017-11-01 15:07:57 +0100  1) // SPDX-License-Identifier: GPL-2.0
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700  2) #include <linux/nodemask.h>
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700  3) #include <linux/module.h>
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700  4) #include <linux/random.h>
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700  5) 
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700  6) int __next_node_in(int node, const nodemask_t *srcp)
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700  7) {
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700  8) 	int ret = __next_node(node, srcp);
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700  9) 
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 10) 	if (ret == MAX_NUMNODES)
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 11) 		ret = __first_node(srcp);
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 12) 	return ret;
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 13) }
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 14) EXPORT_SYMBOL(__next_node_in);
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 15) 
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 16) #ifdef CONFIG_NUMA
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 17) /*
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 18)  * Return the bit number of a random bit set in the nodemask.
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 19)  * (returns NUMA_NO_NODE if nodemask is empty)
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 20)  */
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 21) int node_random(const nodemask_t *maskp)
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 22) {
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 23) 	int w, bit = NUMA_NO_NODE;
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 24) 
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 25) 	w = nodes_weight(*maskp);
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 26) 	if (w)
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 27) 		bit = bitmap_ord_to_pos(maskp->bits,
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 28) 			get_random_int() % w, MAX_NUMNODES);
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 29) 	return bit;
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 30) }
0edaf86cf1a6a (Andrew Morton      2016-05-19 17:10:58 -0700 31) #endif