aboutsummaryrefslogtreecommitdiff
path: root/include/linux/log2.h
AgeCommit message (Collapse)AuthorFilesLines
2008-02-06log2.h: Define order_base_2() macro for convenience.Robert P. J. Day1-0/+16
Given a number of places in the tree that need to calculate this value explicitly, might as well just create a macro for it. (akpm: must be implemented as a macro for callee typeof() usage) Signed-off-by: Robert P. J. Day <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2007-10-17Add a "rounddown_pow_of_two" routine to log2.hRobert P. J. Day1-0/+25
To go along with the existing "roundup_pow_of_two" routine, add one for rounding down since that operation appears to crop up on a regular basis in the source tree. [[email protected]: fix unbalanced parentheses] Signed-off-by: Robert P. J. Day <[email protected]> Signed-off-by: Mariusz Kozlowski <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2007-05-18Fix roundup_pow_of_two(1)Rolf Eike Beer1-1/+1
1 is a power of two, therefore roundup_pow_of_two(1) should return 1. It does in case the argument is a variable but in case it's a constant it behaves wrong and returns 0. Probably nobody ever did it so this was never noticed. Signed-off-by: Rolf Eike Beer <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2007-02-17Correct trivial typo in log2.h.Robert P. J. Day1-1/+1
Single typo correction in include/linux/log2.h. Signed-off-by: Robert P. J. Day <[email protected]> Signed-Off-By: David Howells <[email protected]> Signed-off-by: Adrian Bunk <[email protected]>
2007-02-07[POWERPC] Add "is_power_of_2" checking to log2.h.Robert P. J. Day1-0/+11
Add the inline function "is_power_of_2()" to log2.h, where the value zero is *not* considered to be a power of two. Signed-off-by: Robert P. J. Day <[email protected]> Acked-by: Kumar Gala <[email protected]> Signed-off-by: Paul Mackerras <[email protected]>
2006-12-08[PATCH] LOG2: Alter roundup_pow_of_two() so that it can use a ilog2() on a ↵David Howells1-0/+26
constant Alter roundup_pow_of_two() so that it can make use of ilog2() on a constant to produce a constant value, retaining the ability for an arch to override it in the non-const case. This permits the function to be used to initialise variables. Signed-off-by: David Howells <[email protected]> Cc: Benjamin Herrenschmidt <[email protected]> Cc: Paul Mackerras <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-12-08[PATCH] LOG2: Implement a general integer log2 facility in the kernelDavid Howells1-0/+131
This facility provides three entry points: ilog2() Log base 2 of unsigned long ilog2_u32() Log base 2 of u32 ilog2_u64() Log base 2 of u64 These facilities can either be used inside functions on dynamic data: int do_something(long q) { ...; y = ilog2(x) ...; } Or can be used to statically initialise global variables with constant values: unsigned n = ilog2(27); When performing static initialisation, the compiler will report "error: initializer element is not constant" if asked to take a log of zero or of something not reducible to a constant. They treat negative numbers as unsigned. When not dealing with a constant, they fall back to using fls() which permits them to use arch-specific log calculation instructions - such as BSR on x86/x86_64 or SCAN on FRV - if available. [[email protected]: MMC fix] Signed-off-by: David Howells <[email protected]> Cc: Benjamin Herrenschmidt <[email protected]> Cc: Paul Mackerras <[email protected]> Cc: Herbert Xu <[email protected]> Cc: David Howells <[email protected]> Cc: Wojtek Kaniewski <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>