diff options
| author | Rusty Russell <rusty@rustcorp.com.au> | 2004-03-08 06:06:03 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-03-08 06:06:03 -0800 |
| commit | a59d2e4e6977e7b94e003c96a41f07e96cddc340 (patch) | |
| tree | b550b7b27639edb04cd7548b58f86fa9905dce90 /include/linux | |
| parent | 33a7ddaa6883444f328f1aac78b3612c7c9cfe0b (diff) | |
[PATCH] minor cleanups for hotplug CPUs
Note that without CONFIG_HOTPLUG_CPU, online cpus == possible cpus, so
substitutions are a noop.
- Changes show_stat to print out stats for every possible cpu, not
just online CPUs.
- Allocate mem in stat_open on possible, not online_cpus.
- Add conventient macros to cpu.h: especially cpu_is_offline() for
testing if a cpu is still online.
- Add a num_possible_cpus() similar to num_online_cpus(), and define
cpu_possible_mask for UP.
- Allow printk on down cpus once system is running.
- Mask cpumask with possible, not online cpus, for sys_getaffinity().
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/cpu.h | 13 | ||||
| -rw-r--r-- | include/linux/cpumask.h | 3 |
2 files changed, 16 insertions, 0 deletions
diff --git a/include/linux/cpu.h b/include/linux/cpu.h index 5ecc291dc138..83a37dc0ec3f 100644 --- a/include/linux/cpu.h +++ b/include/linux/cpu.h @@ -21,6 +21,8 @@ #include <linux/sysdev.h> #include <linux/node.h> +#include <linux/compiler.h> +#include <linux/cpumask.h> #include <asm/semaphore.h> struct cpu { @@ -56,9 +58,20 @@ extern struct sysdev_class cpu_sysdev_class; extern struct semaphore cpucontrol; #define lock_cpu_hotplug() down(&cpucontrol) #define unlock_cpu_hotplug() up(&cpucontrol) +#define lock_cpu_hotplug_interruptible() down_interruptible(&cpucontrol) +#define hotcpu_notifier(fn, pri) { \ + static struct notifier_block fn##_nb = { fn, pri }; \ + register_cpu_notifier(&fn##_nb); \ +} +#define cpu_is_offline(cpu) unlikely(!cpu_online(cpu)) #else #define lock_cpu_hotplug() do { } while (0) #define unlock_cpu_hotplug() do { } while (0) +#define lock_cpu_hotplug_interruptible() 0 +#define hotcpu_notifier(fn, pri) + +/* CPUs don't go offline once they're online w/o CONFIG_HOTPLUG_CPU */ +#define cpu_is_offline(cpu) 0 #endif #endif /* _LINUX_CPU_H_ */ diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index 5731bdb3c7d8..090c3f2dc6ec 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h @@ -12,6 +12,7 @@ extern cpumask_t cpu_online_map; extern cpumask_t cpu_possible_map; #define num_online_cpus() cpus_weight(cpu_online_map) +#define num_possible_cpus() cpus_weight(cpu_possible_map) #define cpu_online(cpu) cpu_isset(cpu, cpu_online_map) #define cpu_possible(cpu) cpu_isset(cpu, cpu_possible_map) @@ -24,7 +25,9 @@ extern cpumask_t cpu_possible_map; #define for_each_online_cpu(cpu) for_each_cpu_mask(cpu, cpu_online_map) #else #define cpu_online_map cpumask_of_cpu(0) +#define cpu_possible_map cpumask_of_cpu(0) #define num_online_cpus() 1 +#define num_possible_cpus() 1 #define cpu_online(cpu) ({ BUG_ON((cpu) != 0); 1; }) #define cpu_possible(cpu) ({ BUG_ON((cpu) != 0); 1; }) |
