Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ffs.h
Go to the documentation of this file.
1 #ifndef _ASM_GENERIC_BITOPS_FFS_H_
2 #define _ASM_GENERIC_BITOPS_FFS_H_
3 
12 static 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_ */