Messages in this thread | | | Date | Sun, 22 Aug 2010 15:38:20 -0400 | From | Mathieu Desnoyers <> | Subject | Re: [PATCH for -tip 1/2] kernel.h: add MAYBE_BUILD_BUG_ON_NOT_POWER_OF_2 |
| |
* Andi Kleen (andi@firstfloor.org) wrote: > > +/* Force a compilation error if condition is constant and not a power of 2 */ > > +#define MAYBE_BUILD_BUG_ON_NOT_POWER_OF_2(n) \ > > + MAYBE_BUILD_BUG_ON((n) == 0 || (((n) & ((n) - 1)) != 0)) > > Looks super-ugly. IMHO just writing MAYBE_BUILD_BUG_ON(!n || n & (n - 1)) directly > would be clear enough. If you really think that's unclear define a generic > is_power_of_two() macro.
There is already a is_power_of_two macro in log2.h, but I fear it might incorrectly interact with "MAYBE_BUILD_BUG_ON" (for some reason passing the constant result of a static inline is not treated as a constant by the macro, and thus it always "passes" the test).
So if everyone object to this new macro, I'd be tempted to just go with your suggestion. However the fact that we already have BUILD_BUG_ON_NOT_POWER_OF_2(n) made me think that some people prefer to have it done as a macro.
Other opinions ?
Thanks,
Mathieu
-- Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com
| |