The hotplug CPU patch introduces this to replace the loop over all active CPUs
abstraction:
for (i = 0; i < NR_CPUS; i++) {
if (!cpu_online(i))
continue;
Since the cpu online map is probably going to be quite sparse, could I suggest
this alternative, which doesn't have to loop 32 times:
===== smp.h 1.11 vs edited =====
--- 1.11/include/asm-i386/smp.h Thu Jun 20 14:04:21 2002
+++ edited/smp.h Thu Jun 20 12:39:33 2002
@@ -95,6 +95,11 @@
#define cpu_online(cpu) (cpu_online_map & (1<<(cpu)))
+#define for_each_cpu(cpu, mask) \
+ for(mask = cpu_online_map; \
+ cpu = __ffs(mask), mask != 0; \
+ mask &= ~(1<<cpu))
+
extern inline unsigned int num_online_cpus(void)
{
return hweight32(cpu_online_map);
I've implemented this for my voyager system (8 cpus, but still a sparse online
bitmap), mainly because (for historical reasons), I have to do this loop in
time critical IPI code.
James
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Sun Jun 23 2002 - 22:00:23 EST