forked from Minki/linux
[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>
This commit is contained in:
parent
e6850cce8f
commit
688ce17b85
@ -393,15 +393,13 @@ extern cpumask_t cpu_present_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)
|
||||||
|
|
||||||
/* Find the highest possible smp_processor_id() */
|
/* Find the highest possible smp_processor_id() */
|
||||||
static inline unsigned int highest_possible_processor_id(void)
|
#define highest_possible_processor_id() \
|
||||||
{
|
({ \
|
||||||
unsigned int cpu, highest = 0;
|
unsigned int cpu, highest = 0; \
|
||||||
|
for_each_cpu_mask(cpu, cpu_possible_map) \
|
||||||
for_each_cpu_mask(cpu, cpu_possible_map)
|
highest = cpu; \
|
||||||
highest = cpu;
|
highest; \
|
||||||
|
})
|
||||||
return highest;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __LINUX_CPUMASK_H */
|
#endif /* __LINUX_CPUMASK_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user