diff options
author | Gautham R Shenoy <ego@in.ibm.com> | 2006-12-06 23:38:58 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-07 11:39:41 -0500 |
commit | f7dff2b12654149c9cac8d8c79b6588759edd5a9 (patch) | |
tree | 2fc9e50d6c796d48de577ee4b0704326337771ed /include/linux/cpu.h | |
parent | d3fa72e4556ec1f04e46a0d561d9e785ecaa173d (diff) |
[PATCH] Handle per-subsystem mutexes for CONFIG_HOTPLUG_CPU not set
Provide a common interface for all the subsystems to lock and unlock their
per-subsystem hotcpu mutexes.
When CONFIG_HOTPLUG_CPU is not set, these operations would be no-ops.
[akpm@osdl.org: macros -> inlines]
Signed-off-by: Gautham R Shenoy <ego@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux/cpu.h')
-rw-r--r-- | include/linux/cpu.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/include/linux/cpu.h b/include/linux/cpu.h index 71dc6ba4f73f..bf00ce6ecadf 100644 --- a/include/linux/cpu.h +++ b/include/linux/cpu.h | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/compiler.h> | 24 | #include <linux/compiler.h> |
25 | #include <linux/cpumask.h> | 25 | #include <linux/cpumask.h> |
26 | #include <asm/semaphore.h> | 26 | #include <asm/semaphore.h> |
27 | #include <linux/mutex.h> | ||
27 | 28 | ||
28 | struct cpu { | 29 | struct cpu { |
29 | int node_id; /* The node which contains the CPU */ | 30 | int node_id; /* The node which contains the CPU */ |
@@ -74,6 +75,17 @@ extern struct sysdev_class cpu_sysdev_class; | |||
74 | 75 | ||
75 | #ifdef CONFIG_HOTPLUG_CPU | 76 | #ifdef CONFIG_HOTPLUG_CPU |
76 | /* Stop CPUs going up and down. */ | 77 | /* Stop CPUs going up and down. */ |
78 | |||
79 | static inline void cpuhotplug_mutex_lock(struct mutex *cpu_hp_mutex) | ||
80 | { | ||
81 | mutex_lock(cpu_hp_mutex); | ||
82 | } | ||
83 | |||
84 | static inline void cpuhotplug_mutex_unlock(struct mutex *cpu_hp_mutex) | ||
85 | { | ||
86 | mutex_unlock(cpu_hp_mutex); | ||
87 | } | ||
88 | |||
77 | extern void lock_cpu_hotplug(void); | 89 | extern void lock_cpu_hotplug(void); |
78 | extern void unlock_cpu_hotplug(void); | 90 | extern void unlock_cpu_hotplug(void); |
79 | #define hotcpu_notifier(fn, pri) { \ | 91 | #define hotcpu_notifier(fn, pri) { \ |
@@ -85,7 +97,14 @@ extern void unlock_cpu_hotplug(void); | |||
85 | #define unregister_hotcpu_notifier(nb) unregister_cpu_notifier(nb) | 97 | #define unregister_hotcpu_notifier(nb) unregister_cpu_notifier(nb) |
86 | int cpu_down(unsigned int cpu); | 98 | int cpu_down(unsigned int cpu); |
87 | #define cpu_is_offline(cpu) unlikely(!cpu_online(cpu)) | 99 | #define cpu_is_offline(cpu) unlikely(!cpu_online(cpu)) |
88 | #else | 100 | |
101 | #else /* CONFIG_HOTPLUG_CPU */ | ||
102 | |||
103 | static inline void cpuhotplug_mutex_lock(struct mutex *cpu_hp_mutex) | ||
104 | { } | ||
105 | static inline void cpuhotplug_mutex_unlock(struct mutex *cpu_hp_mutex) | ||
106 | { } | ||
107 | |||
89 | #define lock_cpu_hotplug() do { } while (0) | 108 | #define lock_cpu_hotplug() do { } while (0) |
90 | #define unlock_cpu_hotplug() do { } while (0) | 109 | #define unlock_cpu_hotplug() do { } while (0) |
91 | #define lock_cpu_hotplug_interruptible() 0 | 110 | #define lock_cpu_hotplug_interruptible() 0 |
@@ -95,7 +114,7 @@ int cpu_down(unsigned int cpu); | |||
95 | 114 | ||
96 | /* CPUs don't go offline once they're online w/o CONFIG_HOTPLUG_CPU */ | 115 | /* CPUs don't go offline once they're online w/o CONFIG_HOTPLUG_CPU */ |
97 | static inline int cpu_is_offline(int cpu) { return 0; } | 116 | static inline int cpu_is_offline(int cpu) { return 0; } |
98 | #endif | 117 | #endif /* CONFIG_HOTPLUG_CPU */ |
99 | 118 | ||
100 | #ifdef CONFIG_SUSPEND_SMP | 119 | #ifdef CONFIG_SUSPEND_SMP |
101 | extern int disable_nonboot_cpus(void); | 120 | extern int disable_nonboot_cpus(void); |