
On Jun 11, 2008, at 9:03 AM, Haavard Skinnemoen wrote:
Kumar Gala galak@kernel.crashing.org wrote:
On Jun 11, 2008, at 5:54 AM, Haavard Skinnemoen wrote:
Kumar Gala galak@kernel.crashing.org wrote:
+/*
- fls: find last (most-significant) bit set.
- Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
- */
+static __inline__ int fls(unsigned int x) +{
- return __ilog2(x) + 1;
+}
__ilog2(0) returns -1?
it does.
In general, or just on powerpc? If it's the latter, could you add a comment so that people won't blindly copy it into their architecture's bitops.h?
I'm guessing on PPC (thus the __ilog2 rather than ilog2()).
From the kernel headers:
/* * non-constant log of base 2 calculators * - the arch may override these in asm/bitops.h if they can be implemented * more efficiently than using fls() and fls64() * - the arch is not required to handle n==0 if implementing the fallback */ #ifndef CONFIG_ARCH_HAS_ILOG2_U32 static inline __attribute__((const)) int __ilog2_u32(u32 n) { return fls(n) - 1; } #endif
I'll add a comment.
- k