Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  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  */
 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_ */
 42 
  This page was automatically generated by the LXR engine.