Commit | Line | Data |
---|---|---|
6d29ea23 AM |
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 | |
ff80a77f MG |
9 | * way of searching a 100-bit bitmap. It's guaranteed that at least |
10 | * one of the 100 bits is cleared. | |
6d29ea23 AM |
11 | */ |
12 | static inline int sched_find_first_bit(const unsigned long *b) | |
13 | { | |
14 | #if BITS_PER_LONG == 64 | |
ff80a77f | 15 | if (b[0]) |
6d29ea23 | 16 | return __ffs(b[0]); |
ff80a77f | 17 | return __ffs(b[1]) + 64; |
6d29ea23 | 18 | #elif BITS_PER_LONG == 32 |
ff80a77f | 19 | if (b[0]) |
6d29ea23 | 20 | return __ffs(b[0]); |
ff80a77f | 21 | if (b[1]) |
6d29ea23 | 22 | return __ffs(b[1]) + 32; |
ff80a77f | 23 | if (b[2]) |
6d29ea23 | 24 | return __ffs(b[2]) + 64; |
ff80a77f | 25 | return __ffs(b[3]) + 96; |
6d29ea23 AM |
26 | #else |
27 | #error BITS_PER_LONG not defined | |
28 | #endif | |
29 | } | |
30 | ||
31 | #endif /* _ASM_GENERIC_BITOPS_SCHED_H_ */ |