Path: blob/master/include/asm-generic/bitops/__ffs.h
10818 views
#ifndef _ASM_GENERIC_BITOPS___FFS_H_1#define _ASM_GENERIC_BITOPS___FFS_H_23#include <asm/types.h>45/**6* __ffs - find first bit in word.7* @word: The word to search8*9* Undefined if no bit exists, so code should check against 0 first.10*/11static __always_inline unsigned long __ffs(unsigned long word)12{13int num = 0;1415#if BITS_PER_LONG == 6416if ((word & 0xffffffff) == 0) {17num += 32;18word >>= 32;19}20#endif21if ((word & 0xffff) == 0) {22num += 16;23word >>= 16;24}25if ((word & 0xff) == 0) {26num += 8;27word >>= 8;28}29if ((word & 0xf) == 0) {30num += 4;31word >>= 4;32}33if ((word & 0x3) == 0) {34num += 2;35word >>= 2;36}37if ((word & 0x1) == 0)38num += 1;39return num;40}4142#endif /* _ASM_GENERIC_BITOPS___FFS_H_ */434445