Commit 96a9b4d3 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] cpumask: uninline any_online_cpu()

           text    data     bss     dec     hex filename
before: 3605597 1363528  363328 5332453  515de5 vmlinux
after:  3605295 1363612  363200 5332107  515c8b vmlinux

218 bytes saved.

Also, optimise any_online_cpu() out of existence on CONFIG_SMP=n.

This function seems inefficient.  Can't we simply AND the two masks, then use
find_first_bit()?

Cc: Paul Jackson <pj@sgi.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 86302820
...@@ -398,22 +398,15 @@ extern cpumask_t cpu_present_map; ...@@ -398,22 +398,15 @@ extern cpumask_t cpu_present_map;
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
int highest_possible_processor_id(void); int highest_possible_processor_id(void);
#define any_online_cpu(mask) __any_online_cpu(&(mask))
int __any_online_cpu(const cpumask_t *mask);
#else #else
#define highest_possible_processor_id() 0 #define highest_possible_processor_id() 0
#define any_online_cpu(mask) 0
#endif #endif
#define any_online_cpu(mask) \
({ \
int cpu; \
for_each_cpu_mask(cpu, (mask)) \
if (cpu_online(cpu)) \
break; \
cpu; \
})
#define for_each_cpu(cpu) for_each_cpu_mask((cpu), cpu_possible_map) #define for_each_cpu(cpu) for_each_cpu_mask((cpu), cpu_possible_map)
#define for_each_online_cpu(cpu) for_each_cpu_mask((cpu), cpu_online_map) #define for_each_online_cpu(cpu) for_each_cpu_mask((cpu), cpu_online_map)
#define for_each_present_cpu(cpu) for_each_cpu_mask((cpu), cpu_present_map) #define for_each_present_cpu(cpu) for_each_cpu_mask((cpu), cpu_present_map)
#endif /* __LINUX_CPUMASK_H */ #endif /* __LINUX_CPUMASK_H */
...@@ -31,3 +31,15 @@ int highest_possible_processor_id(void) ...@@ -31,3 +31,15 @@ int highest_possible_processor_id(void)
return highest; return highest;
} }
EXPORT_SYMBOL(highest_possible_processor_id); EXPORT_SYMBOL(highest_possible_processor_id);
int __any_online_cpu(const cpumask_t *mask)
{
int cpu;
for_each_cpu_mask(cpu, *mask) {
if (cpu_online(cpu))
break;
}
return cpu;
}
EXPORT_SYMBOL(__any_online_cpu);
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