|
|
| File: [Development] / linux-2.6-xfs / include / asm-generic / bitops / ffs.h (download)
Revision 1.1, Mon May 29 16:35:25 2006 UTC (11 years, 5 months ago) by nathans.longdrop.melbourne.sgi.com
Merge up to 2.6.17-rc5. Merge of 2.6.x-xfs-melb:linux:26065a by kenmcd. |
#ifndef _ASM_GENERIC_BITOPS_FFS_H_
#define _ASM_GENERIC_BITOPS_FFS_H_
/**
* ffs - find first bit set
* @x: the word to search
*
* This is defined the same way as
* the libc and compiler builtin ffs routines, therefore
* differs in spirit from the above ffz (man ffs).
*/
static inline int ffs(int x)
{
int r = 1;
if (!x)
return 0;
if (!(x & 0xffff)) {
x >>= 16;
r += 16;
}
if (!(x & 0xff)) {
x >>= 8;
r += 8;
}
if (!(x & 0xf)) {
x >>= 4;
r += 4;
}
if (!(x & 3)) {
x >>= 2;
r += 2;
}
if (!(x & 1)) {
x >>= 1;
r += 1;
}
return r;
}
#endif /* _ASM_GENERIC_BITOPS_FFS_H_ */