X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fcpumask.c;h=3a67dc5ada7d5b2655ae461890519e995d50d7c9;hb=c259cc281255bdb30ceba190bfd7f37e3ae3fc85;hp=ba2f8543052c7a0158471d2a326b8c9b45e1386a;hpb=3d18bd74a22d0bed3bc81fc64c4ba6344a10f155;p=powerpc.git diff --git a/lib/cpumask.c b/lib/cpumask.c index ba2f854305..3a67dc5ada 100644 --- a/lib/cpumask.c +++ b/lib/cpumask.c @@ -14,3 +14,32 @@ 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);