aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Travis <travis@sgi.com>2008-04-04 21:11:02 -0400
committerIngo Molnar <mingo@elte.hu>2008-04-19 13:44:59 -0400
commit321a8e9dcb714f3c350ba55e41ed447bf3f05fac (patch)
treee75ca8ebcee0954dc6e313864ebba9f72e984fc8
parent7c16ec585c558960a508ccf9a08fcb9ed49b3754 (diff)
cpumask: add CPU_MASK_ALL_PTR macro
* Add a static cpumask_t variable "CPU_MASK_ALL_PTR" to use as a pointer reference to CPU_MASK_ALL. This reduces where possible the instances where CPU_MASK_ALL allocates and fills a large array on the stack. Used only if NR_CPUS > BITS_PER_LONG. * Change init/main.c to use new set_cpus_allowed_ptr(). Depends on: [sched-devel]: sched: add new set_cpus_allowed_ptr function Cc: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Mike Travis <travis@sgi.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--include/linux/cpumask.h6
-rw-r--r--init/main.c7
2 files changed, 12 insertions, 1 deletions
diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
index 67e0e38d32b1..629102feaa66 100644
--- a/include/linux/cpumask.h
+++ b/include/linux/cpumask.h
@@ -243,6 +243,8 @@ int __next_cpu(int n, const cpumask_t *srcp);
243 [BITS_TO_LONGS(NR_CPUS)-1] = CPU_MASK_LAST_WORD \ 243 [BITS_TO_LONGS(NR_CPUS)-1] = CPU_MASK_LAST_WORD \
244} } 244} }
245 245
246#define CPU_MASK_ALL_PTR (&CPU_MASK_ALL)
247
246#else 248#else
247 249
248#define CPU_MASK_ALL \ 250#define CPU_MASK_ALL \
@@ -251,6 +253,10 @@ int __next_cpu(int n, const cpumask_t *srcp);
251 [BITS_TO_LONGS(NR_CPUS)-1] = CPU_MASK_LAST_WORD \ 253 [BITS_TO_LONGS(NR_CPUS)-1] = CPU_MASK_LAST_WORD \
252} } 254} }
253 255
256/* cpu_mask_all is in init/main.c */
257extern cpumask_t cpu_mask_all;
258#define CPU_MASK_ALL_PTR (&cpu_mask_all)
259
254#endif 260#endif
255 261
256#define CPU_MASK_NONE \ 262#define CPU_MASK_NONE \
diff --git a/init/main.c b/init/main.c
index 99ce94930b09..2df3f0617fdc 100644
--- a/init/main.c
+++ b/init/main.c
@@ -363,6 +363,11 @@ static inline void smp_prepare_cpus(unsigned int maxcpus) { }
363 363
364#else 364#else
365 365
366#if NR_CPUS > BITS_PER_LONG
367cpumask_t cpu_mask_all __read_mostly = CPU_MASK_ALL;
368EXPORT_SYMBOL(cpu_mask_all);
369#endif
370
366#ifndef CONFIG_HAVE_SETUP_PER_CPU_AREA 371#ifndef CONFIG_HAVE_SETUP_PER_CPU_AREA
367unsigned long __per_cpu_offset[NR_CPUS] __read_mostly; 372unsigned long __per_cpu_offset[NR_CPUS] __read_mostly;
368 373
@@ -811,7 +816,7 @@ static int __init kernel_init(void * unused)
811 /* 816 /*
812 * init can run on any cpu. 817 * init can run on any cpu.
813 */ 818 */
814 set_cpus_allowed(current, CPU_MASK_ALL); 819 set_cpus_allowed_ptr(current, CPU_MASK_ALL_PTR);
815 /* 820 /*
816 * Tell the world that we're going to be the grim 821 * Tell the world that we're going to be the grim
817 * reaper of innocent orphaned children. 822 * reaper of innocent orphaned children.