X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=lib%2Fcpumask.c;h=3a67dc5ada7d5b2655ae461890519e995d50d7c9;hb=def4d8733b8b8fed521957a7fd546714dd491b91;hp=1560d97390ddd06b5137c154060db3adf9125ea9;hpb=ccb46000f4bb459777686611157ac0eac928704e;p=powerpc.git diff --git a/lib/cpumask.c b/lib/cpumask.c index 1560d97390..3a67dc5ada 100644 --- a/lib/cpumask.c +++ b/lib/cpumask.c @@ -9,3 +9,37 @@ int __first_cpu(const cpumask_t *srcp) } EXPORT_SYMBOL(__first_cpu); +int __next_cpu(int n, const cpumask_t *srcp) +{ + return min_t(int, NR_CPUS, find_next_bit(srcp->bits, NR_CPUS, n+1)); +} +EXPORT_SYMBOL(__next_cpu); + +/* + * Find the highest possible smp_processor_id() + * + * Note: if we're prepared to assume that cpu_possible_map never changes + * (reasonable) then this function should cache its return value. + */ +int highest_possible_processor_id(void) +{ + unsigned int cpu; + unsigned highest = 0; + + for_each_cpu_mask(cpu, cpu_possible_map) + highest = cpu; + return highest; +} +EXPORT_SYMBOL(highest_possible_processor_id); + +int __any_online_cpu(const cpumask_t *mask) +{ + int cpu; + + for_each_cpu_mask(cpu, *mask) { + if (cpu_online(cpu)) + break; + } + return cpu; +} +EXPORT_SYMBOL(__any_online_cpu);