Commit 7baac8b9 authored by Alexander van Heukelum's avatar Alexander van Heukelum Committed by Thomas Gleixner

cpumask: make for_each_cpu_mask a bit smaller

The for_each_cpu_mask loop is used quite often in the kernel. It
makes use of two functions: first_cpu and next_cpu. This patch
changes for_each_cpu_mask to use only the latter. Because next_cpu
finds the next eligible cpu _after_ the given one, the iteration
variable has to be initialized to -1 and next_cpu has to be
called with this value before the first iteration. An x86_64
defconfig kernel (from sched/latest) is about 2500 bytes smaller
with this patch applied:

   text	   data	    bss	    dec	    hex	filename
6222517	 917952	 749932	7890401	 7865e1	vmlinux.orig
6219922	 917952	 749932	7887806	 785bbe	vmlinux

The same size reduction is seen for defconfig+MAXSMP

   text	   data	    bss	    dec	    hex	filename
6241772	2563968	1492716	10298456	 9d2458	vmlinux.orig
6239211	2563968	1492716	10295895	 9d1a57	vmlinux
Signed-off-by: default avatarAlexander van Heukelum <heukelum@fastmail.fm>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 3f9b48a7
...@@ -370,10 +370,10 @@ int __any_online_cpu(const cpumask_t *mask); ...@@ -370,10 +370,10 @@ int __any_online_cpu(const cpumask_t *mask);
#define first_cpu(src) __first_cpu(&(src)) #define first_cpu(src) __first_cpu(&(src))
#define next_cpu(n, src) __next_cpu((n), &(src)) #define next_cpu(n, src) __next_cpu((n), &(src))
#define any_online_cpu(mask) __any_online_cpu(&(mask)) #define any_online_cpu(mask) __any_online_cpu(&(mask))
#define for_each_cpu_mask(cpu, mask) \ #define for_each_cpu_mask(cpu, mask) \
for ((cpu) = first_cpu(mask); \ for ((cpu) = -1; \
(cpu) < NR_CPUS; \ (cpu) = next_cpu((cpu), (mask)), \
(cpu) = next_cpu((cpu), (mask))) (cpu) < NR_CPUS; )
#endif #endif
#if NR_CPUS <= 64 #if NR_CPUS <= 64
...@@ -387,10 +387,10 @@ int __any_online_cpu(const cpumask_t *mask); ...@@ -387,10 +387,10 @@ int __any_online_cpu(const cpumask_t *mask);
int __next_cpu_nr(int n, const cpumask_t *srcp); int __next_cpu_nr(int n, const cpumask_t *srcp);
#define next_cpu_nr(n, src) __next_cpu_nr((n), &(src)) #define next_cpu_nr(n, src) __next_cpu_nr((n), &(src))
#define cpus_weight_nr(cpumask) __cpus_weight(&(cpumask), nr_cpu_ids) #define cpus_weight_nr(cpumask) __cpus_weight(&(cpumask), nr_cpu_ids)
#define for_each_cpu_mask_nr(cpu, mask) \ #define for_each_cpu_mask_nr(cpu, mask) \
for ((cpu) = first_cpu(mask); \ for ((cpu) = -1; \
(cpu) < nr_cpu_ids; \ (cpu) = next_cpu_nr((cpu), (mask)), \
(cpu) = next_cpu_nr((cpu), (mask))) (cpu) < nr_cpu_ids; )
#endif /* NR_CPUS > 64 */ #endif /* NR_CPUS > 64 */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment