root/include/asm-generic/bitops/ffs.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. ffs

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

/* [<][>][^][v][top][bottom][index][help] */