equal
deleted
inserted
replaced
|
1 #ifndef _ASM_GENERIC_BITOPS_SCHED_H_ |
|
2 #define _ASM_GENERIC_BITOPS_SCHED_H_ |
|
3 |
|
4 #include <linux/compiler.h> /* unlikely() */ |
|
5 #include <asm/types.h> |
|
6 |
|
7 /* |
|
8 * Every architecture must define this function. It's the fastest |
|
9 * way of searching a 100-bit bitmap. It's guaranteed that at least |
|
10 * one of the 100 bits is cleared. |
|
11 */ |
|
12 static inline int sched_find_first_bit(const unsigned long *b) |
|
13 { |
|
14 #if BITS_PER_LONG == 64 |
|
15 if (b[0]) |
|
16 return __ffs(b[0]); |
|
17 return __ffs(b[1]) + 64; |
|
18 #elif BITS_PER_LONG == 32 |
|
19 if (b[0]) |
|
20 return __ffs(b[0]); |
|
21 if (b[1]) |
|
22 return __ffs(b[1]) + 32; |
|
23 if (b[2]) |
|
24 return __ffs(b[2]) + 64; |
|
25 return __ffs(b[3]) + 96; |
|
26 #else |
|
27 #error BITS_PER_LONG not defined |
|
28 #endif |
|
29 } |
|
30 |
|
31 #endif /* _ASM_GENERIC_BITOPS_SCHED_H_ */ |