|
@@ -111,10 +111,20 @@ DEFINE_PER_CPU(int, cpu_state) = { 0 };
|
|
|
* a new thread. Also avoids complicated thread destroy functionality
|
|
|
* for idle threads.
|
|
|
*/
|
|
|
+#ifdef CONFIG_HOTPLUG_CPU
|
|
|
+/*
|
|
|
+ * Needed only for CONFIG_HOTPLUG_CPU because __cpuinitdata is
|
|
|
+ * removed after init for !CONFIG_HOTPLUG_CPU.
|
|
|
+ */
|
|
|
+static DEFINE_PER_CPU(struct task_struct *, idle_thread_array);
|
|
|
+#define get_idle_for_cpu(x) (per_cpu(idle_thread_array, x))
|
|
|
+#define set_idle_for_cpu(x,p) (per_cpu(idle_thread_array, x) = (p))
|
|
|
+#else
|
|
|
struct task_struct *idle_thread_array[NR_CPUS] __cpuinitdata ;
|
|
|
-
|
|
|
#define get_idle_for_cpu(x) (idle_thread_array[(x)])
|
|
|
#define set_idle_for_cpu(x,p) (idle_thread_array[(x)] = (p))
|
|
|
+#endif
|
|
|
+
|
|
|
|
|
|
/*
|
|
|
* Currently trivial. Write the real->protected mode
|