Messages in this thread Patch in this message | | | Date | Fri, 05 Dec 2008 18:33:44 +0100 | From | Eric Dumazet <> | Subject | [PACH] smp: uninline num_online_cpus() & num_possible_cpus() |
| |
num_online_cpus() and num_possible_cpus() are not performance critical and are quite large.
Unlining them shrinks kernel text size by 7523 bytes on x86, if NR_CPUS>32
Signed-off-by: Eric Dumazet <dada1@cosmosbay.com> --- include/linux/cpumask.h | 4 ++-- init/main.c | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index 21e1dd4..f9b2b51 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h @@ -507,8 +507,8 @@ extern cpumask_t cpu_present_map; extern cpumask_t cpu_active_map; #if NR_CPUS > 1 -#define num_online_cpus() cpus_weight_nr(cpu_online_map) -#define num_possible_cpus() cpus_weight_nr(cpu_possible_map) +extern int num_online_cpus(void); +extern int num_possible_cpus(void); #define num_present_cpus() cpus_weight_nr(cpu_present_map) #define cpu_online(cpu) cpu_isset((cpu), cpu_online_map) #define cpu_possible(cpu) cpu_isset((cpu), cpu_possible_map) diff --git a/init/main.c b/init/main.c index 7e117a2..a1a3e55 100644 --- a/init/main.c +++ b/init/main.c @@ -376,6 +376,18 @@ EXPORT_SYMBOL(cpu_mask_all); int nr_cpu_ids __read_mostly = NR_CPUS; EXPORT_SYMBOL(nr_cpu_ids); +int num_online_cpus(void) +{ + return cpus_weight_nr(cpu_online_map); +} +EXPORT_SYMBOL(num_online_cpus); + +int num_possible_cpus(void) +{ + return cpus_weight_nr(cpu_possible_map); +} +EXPORT_SYMBOL(num_possible_cpus); + /* An arch may set nr_cpu_ids earlier if needed, so this would be redundant */ static void __init setup_nr_cpu_ids(void) {
| |