2.5.32: is_smp() and can_be_smp()
PATCH 1/1 2.5.32: is_smp() and can_be_smp()
Will be used by another patch that I'll post in the very near future. For i386 cpucount is used rather than computing the hweight of cpu_online_map since it's faster and already there. Ideally the same should be done for all architectures in both these macros and num_online_cpus and num_possible_cpus.
include/asm-i386/smp.h +4 -0
@@ -94,6 +94,10 @@ extern inline unsigned int num_online_cpreturn hweight32 (cpu_online_map); } +extern int cpucount; +#define is_smp () (cpucount) +#define can_be_smp () (cpucount) +extern inline int any_online_cpu (unsigned int mask) {if (mask & cpu_online_map)
include/linux/smp.h +15 -0
@@ -78,6 +78,19 @@ extern int register_cpu_notifier(structextern void unregister_cpu_notifier (struct notifier_block *nb);int cpu_up (unsigned int cpu); + +#ifndef is_smp +#define is_smp () (num_online_cpus() > 1) +#endif + +#ifndef can_be_smp +#ifdef num_possible_cpus +#define can_be_smp () (num_possible_cpus() > 1) +#else +#define can_be_smp () is_smp() +#endif +#endif +#else /* !SMP */ /*
@@ -96,6 +109,8 @@ static inline void smp_send_reschedule_a#define cpu_online_map 1#define cpu_online (cpu) ({ cpu; 1; })#define num_online_cpus () 1 +#define is_smp () 0 +#define can_be_smp () 0#define num_booting_cpus () 1struct notifier_block ;