Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/include/asm-generic/bitops/ffs.h
10818 views
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
43