aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/cpumask.h
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2005-10-16 03:17:33 -0400
committerDavid S. Miller <davem@davemloft.net>2005-10-16 03:17:33 -0400
commit688ce17b8599abc548b406c00e4d18ae0dec954f (patch)
treec64c78c72bf9582c2dcc5a3455d6fe561c6e7085 /include/linux/cpumask.h
parente6850cce8f0fcb0e16b981f13cb9c69618bbdaf1 (diff)
[PATCH]: highest_possible_processor_id() has to be a macro
... otherwise, things like alpha and sparc64 break and break badly. They define cpu_possible_map to something else in smp.h *AFTER* having included cpumask.h. If that puppy is a macro, expansion will happen at the actual caller, when we'd already seen #define cpu_possible_map ... and we will get the right thing used. As an inline helper it will be tokenized before we get to that define and that's it; no matter what we define later, it won't affect anything. We get modules with dependency on cpu_possible_map instead of the right symbol (phys_cpu_present_map in case of sparc64), or outright link errors if they are built-in. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/cpumask.h')
-rw-r--r--include/linux/cpumask.h16
1 files changed, 7 insertions, 9 deletions
diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
index fe9778301d07..9bdba8169b41 100644
--- a/include/linux/cpumask.h
+++ b/include/linux/cpumask.h
@@ -393,15 +393,13 @@ extern cpumask_t cpu_present_map;
393#define for_each_present_cpu(cpu) for_each_cpu_mask((cpu), cpu_present_map) 393#define for_each_present_cpu(cpu) for_each_cpu_mask((cpu), cpu_present_map)
394 394
395/* Find the highest possible smp_processor_id() */ 395/* Find the highest possible smp_processor_id() */
396static inline unsigned int highest_possible_processor_id(void) 396#define highest_possible_processor_id() \
397{ 397({ \
398 unsigned int cpu, highest = 0; 398 unsigned int cpu, highest = 0; \
399 399 for_each_cpu_mask(cpu, cpu_possible_map) \
400 for_each_cpu_mask(cpu, cpu_possible_map) 400 highest = cpu; \
401 highest = cpu; 401 highest; \
402 402})
403 return highest;
404}
405 403
406 404
407#endif /* __LINUX_CPUMASK_H */ 405#endif /* __LINUX_CPUMASK_H */