1 #ifndef _ASM_GENERIC_BITOPS_FFS_H_ 2 #define _ASM_GENERIC_BITOPS_FFS_H_ 3 4 /** 5 * ffs - find first bit set 6 * @x: the word to search 7 * 8 * This is defined the same way as 9 * the libc and compiler builtin ffs routines, therefore 10 * differs in spirit from the above ffz (man ffs). 11 */ ffs(int x)12static inline int ffs(int x) 13 { 14 int r = 1; 15 16 if (!x) 17 return 0; 18 if (!(x & 0xffff)) { 19 x >>= 16; 20 r += 16; 21 } 22 if (!(x & 0xff)) { 23 x >>= 8; 24 r += 8; 25 } 26 if (!(x & 0xf)) { 27 x >>= 4; 28 r += 4; 29 } 30 if (!(x & 3)) { 31 x >>= 2; 32 r += 2; 33 } 34 if (!(x & 1)) { 35 x >>= 1; 36 r += 1; 37 } 38 return r; 39 } 40 41 #endif /* _ASM_GENERIC_BITOPS_FFS_H_ */ 42