diff options
author | Alexander van Heukelum <heukelum@mailshack.com> | 2008-05-13 05:28:21 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2008-05-23 12:46:12 -0400 |
commit | 7baac8b91f9871ba8cb09af84de4ae1d86d07812 (patch) | |
tree | 4624f10539c3bb4581f99c1a187f1008502b8438 | |
parent | 3f9b48a7584851997702cdc3f58e7811b5546397 (diff) |
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: Alexander van Heukelum <heukelum@fastmail.fm>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r-- | include/linux/cpumask.h | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index b49472d1af84..80226e776143 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h | |||
@@ -370,10 +370,10 @@ int __any_online_cpu(const cpumask_t *mask); | |||
370 | #define first_cpu(src) __first_cpu(&(src)) | 370 | #define first_cpu(src) __first_cpu(&(src)) |
371 | #define next_cpu(n, src) __next_cpu((n), &(src)) | 371 | #define next_cpu(n, src) __next_cpu((n), &(src)) |
372 | #define any_online_cpu(mask) __any_online_cpu(&(mask)) | 372 | #define any_online_cpu(mask) __any_online_cpu(&(mask)) |
373 | #define for_each_cpu_mask(cpu, mask) \ | 373 | #define for_each_cpu_mask(cpu, mask) \ |
374 | for ((cpu) = first_cpu(mask); \ | 374 | for ((cpu) = -1; \ |
375 | (cpu) < NR_CPUS; \ | 375 | (cpu) = next_cpu((cpu), (mask)), \ |
376 | (cpu) = next_cpu((cpu), (mask))) | 376 | (cpu) < NR_CPUS; ) |
377 | #endif | 377 | #endif |
378 | 378 | ||
379 | #if NR_CPUS <= 64 | 379 | #if NR_CPUS <= 64 |
@@ -387,10 +387,10 @@ int __any_online_cpu(const cpumask_t *mask); | |||
387 | int __next_cpu_nr(int n, const cpumask_t *srcp); | 387 | int __next_cpu_nr(int n, const cpumask_t *srcp); |
388 | #define next_cpu_nr(n, src) __next_cpu_nr((n), &(src)) | 388 | #define next_cpu_nr(n, src) __next_cpu_nr((n), &(src)) |
389 | #define cpus_weight_nr(cpumask) __cpus_weight(&(cpumask), nr_cpu_ids) | 389 | #define cpus_weight_nr(cpumask) __cpus_weight(&(cpumask), nr_cpu_ids) |
390 | #define for_each_cpu_mask_nr(cpu, mask) \ | 390 | #define for_each_cpu_mask_nr(cpu, mask) \ |
391 | for ((cpu) = first_cpu(mask); \ | 391 | for ((cpu) = -1; \ |
392 | (cpu) < nr_cpu_ids; \ | 392 | (cpu) = next_cpu_nr((cpu), (mask)), \ |
393 | (cpu) = next_cpu_nr((cpu), (mask))) | 393 | (cpu) < nr_cpu_ids; ) |
394 | 394 | ||
395 | #endif /* NR_CPUS > 64 */ | 395 | #endif /* NR_CPUS > 64 */ |
396 | 396 | ||