Rev 1970 | Rev 5056 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1970 | Rev 3031 | ||
---|---|---|---|
Line 24... | Line 24... | ||
24 | #define for_each_set_bit(bit, addr, size) \ |
24 | #define for_each_set_bit(bit, addr, size) \ |
25 | for ((bit) = find_first_bit((addr), (size)); \ |
25 | for ((bit) = find_first_bit((addr), (size)); \ |
26 | (bit) < (size); \ |
26 | (bit) < (size); \ |
27 | (bit) = find_next_bit((addr), (size), (bit) + 1)) |
27 | (bit) = find_next_bit((addr), (size), (bit) + 1)) |
Line -... | Line 28... | ||
- | 28 | ||
- | 29 | /* same as for_each_set_bit() but use bit as value to start with */ |
|
- | 30 | #define for_each_set_bit_from(bit, addr, size) \ |
|
- | 31 | for ((bit) = find_next_bit((addr), (size), (bit)); \ |
|
- | 32 | (bit) < (size); \ |
|
- | 33 | (bit) = find_next_bit((addr), (size), (bit) + 1)) |
|
- | 34 | ||
- | 35 | #define for_each_clear_bit(bit, addr, size) \ |
|
- | 36 | for ((bit) = find_first_zero_bit((addr), (size)); \ |
|
- | 37 | (bit) < (size); \ |
|
- | 38 | (bit) = find_next_zero_bit((addr), (size), (bit) + 1)) |
|
- | 39 | ||
- | 40 | /* same as for_each_clear_bit() but use bit as value to start with */ |
|
- | 41 | #define for_each_clear_bit_from(bit, addr, size) \ |
|
- | 42 | for ((bit) = find_next_zero_bit((addr), (size), (bit)); \ |
|
- | 43 | (bit) < (size); \ |
|
- | 44 | (bit) = find_next_zero_bit((addr), (size), (bit) + 1)) |
|
28 | 45 | ||
29 | static __inline__ int get_bitmask_order(unsigned int count) |
46 | static __inline__ int get_bitmask_order(unsigned int count) |
30 | { |
47 | { |
Line 31... | Line 48... | ||
31 | int order; |
48 | int order; |
Line 48... | Line 65... | ||
48 | { |
65 | { |
49 | return sizeof(w) == 4 ? hweight32(w) : hweight64(w); |
66 | return sizeof(w) == 4 ? hweight32(w) : hweight64(w); |
50 | } |
67 | } |
Line 51... | Line 68... | ||
51 | 68 | ||
- | 69 | /** |
|
- | 70 | * rol64 - rotate a 64-bit value left |
|
- | 71 | * @word: value to rotate |
|
- | 72 | * @shift: bits to roll |
|
- | 73 | */ |
|
- | 74 | static inline __u64 rol64(__u64 word, unsigned int shift) |
|
- | 75 | { |
|
- | 76 | return (word << shift) | (word >> (64 - shift)); |
|
- | 77 | } |
|
- | 78 | ||
- | 79 | /** |
|
- | 80 | * ror64 - rotate a 64-bit value right |
|
- | 81 | * @word: value to rotate |
|
- | 82 | * @shift: bits to roll |
|
- | 83 | */ |
|
- | 84 | static inline __u64 ror64(__u64 word, unsigned int shift) |
|
- | 85 | { |
|
- | 86 | return (word >> shift) | (word << (64 - shift)); |
|
- | 87 | } |
|
- | 88 | ||
52 | /** |
89 | /** |
53 | * rol32 - rotate a 32-bit value left |
90 | * rol32 - rotate a 32-bit value left |
54 | * @word: value to rotate |
91 | * @word: value to rotate |
55 | * @shift: bits to roll |
92 | * @shift: bits to roll |
56 | */ |
93 | */ |