Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

define first set of BIT* macros

define first set of BIT* macros

- move BITOP_MASK and BITOP_WORD from asm-generic/bitops/atomic.h to
include/linux/bitops.h and rename it to BIT_MASK and BIT_WORD
- move BITS_TO_LONGS and BITS_PER_BYTE to bitops.h too and allow easily
define another BITS_TO_something (e.g. in event.c) by BITS_TO_TYPE macro
Remaining (and common) BIT macro will be defined after all occurences and
conflicts will be sorted out in the patches.

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Jiri Slaby and committed by
Linus Torvalds
d05be13b 5159f407

+33 -34
+12 -15
include/asm-generic/bitops/atomic.h
··· 3 3 4 4 #include <asm/types.h> 5 5 6 - #define BITOP_MASK(nr) (1UL << ((nr) % BITS_PER_LONG)) 7 - #define BITOP_WORD(nr) ((nr) / BITS_PER_LONG) 8 - 9 6 #ifdef CONFIG_SMP 10 7 #include <asm/spinlock.h> 11 8 #include <asm/cache.h> /* we use L1_CACHE_BYTES */ ··· 63 66 */ 64 67 static inline void set_bit(int nr, volatile unsigned long *addr) 65 68 { 66 - unsigned long mask = BITOP_MASK(nr); 67 - unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr); 69 + unsigned long mask = BIT_MASK(nr); 70 + unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); 68 71 unsigned long flags; 69 72 70 73 _atomic_spin_lock_irqsave(p, flags); ··· 84 87 */ 85 88 static inline void clear_bit(int nr, volatile unsigned long *addr) 86 89 { 87 - unsigned long mask = BITOP_MASK(nr); 88 - unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr); 90 + unsigned long mask = BIT_MASK(nr); 91 + unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); 89 92 unsigned long flags; 90 93 91 94 _atomic_spin_lock_irqsave(p, flags); ··· 105 108 */ 106 109 static inline void change_bit(int nr, volatile unsigned long *addr) 107 110 { 108 - unsigned long mask = BITOP_MASK(nr); 109 - unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr); 111 + unsigned long mask = BIT_MASK(nr); 112 + unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); 110 113 unsigned long flags; 111 114 112 115 _atomic_spin_lock_irqsave(p, flags); ··· 125 128 */ 126 129 static inline int test_and_set_bit(int nr, volatile unsigned long *addr) 127 130 { 128 - unsigned long mask = BITOP_MASK(nr); 129 - unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr); 131 + unsigned long mask = BIT_MASK(nr); 132 + unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); 130 133 unsigned long old; 131 134 unsigned long flags; 132 135 ··· 149 152 */ 150 153 static inline int test_and_clear_bit(int nr, volatile unsigned long *addr) 151 154 { 152 - unsigned long mask = BITOP_MASK(nr); 153 - unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr); 155 + unsigned long mask = BIT_MASK(nr); 156 + unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); 154 157 unsigned long old; 155 158 unsigned long flags; 156 159 ··· 172 175 */ 173 176 static inline int test_and_change_bit(int nr, volatile unsigned long *addr) 174 177 { 175 - unsigned long mask = BITOP_MASK(nr); 176 - unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr); 178 + unsigned long mask = BIT_MASK(nr); 179 + unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); 177 180 unsigned long old; 178 181 unsigned long flags; 179 182
+13 -16
include/asm-generic/bitops/non-atomic.h
··· 3 3 4 4 #include <asm/types.h> 5 5 6 - #define BITOP_MASK(nr) (1UL << ((nr) % BITS_PER_LONG)) 7 - #define BITOP_WORD(nr) ((nr) / BITS_PER_LONG) 8 - 9 6 /** 10 7 * __set_bit - Set a bit in memory 11 8 * @nr: the bit to set ··· 14 17 */ 15 18 static inline void __set_bit(int nr, volatile unsigned long *addr) 16 19 { 17 - unsigned long mask = BITOP_MASK(nr); 18 - unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr); 20 + unsigned long mask = BIT_MASK(nr); 21 + unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); 19 22 20 23 *p |= mask; 21 24 } 22 25 23 26 static inline void __clear_bit(int nr, volatile unsigned long *addr) 24 27 { 25 - unsigned long mask = BITOP_MASK(nr); 26 - unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr); 28 + unsigned long mask = BIT_MASK(nr); 29 + unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); 27 30 28 31 *p &= ~mask; 29 32 } ··· 39 42 */ 40 43 static inline void __change_bit(int nr, volatile unsigned long *addr) 41 44 { 42 - unsigned long mask = BITOP_MASK(nr); 43 - unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr); 45 + unsigned long mask = BIT_MASK(nr); 46 + unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); 44 47 45 48 *p ^= mask; 46 49 } ··· 56 59 */ 57 60 static inline int __test_and_set_bit(int nr, volatile unsigned long *addr) 58 61 { 59 - unsigned long mask = BITOP_MASK(nr); 60 - unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr); 62 + unsigned long mask = BIT_MASK(nr); 63 + unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); 61 64 unsigned long old = *p; 62 65 63 66 *p = old | mask; ··· 75 78 */ 76 79 static inline int __test_and_clear_bit(int nr, volatile unsigned long *addr) 77 80 { 78 - unsigned long mask = BITOP_MASK(nr); 79 - unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr); 81 + unsigned long mask = BIT_MASK(nr); 82 + unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); 80 83 unsigned long old = *p; 81 84 82 85 *p = old & ~mask; ··· 87 90 static inline int __test_and_change_bit(int nr, 88 91 volatile unsigned long *addr) 89 92 { 90 - unsigned long mask = BITOP_MASK(nr); 91 - unsigned long *p = ((unsigned long *)addr) + BITOP_WORD(nr); 93 + unsigned long mask = BIT_MASK(nr); 94 + unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); 92 95 unsigned long old = *p; 93 96 94 97 *p = old ^ mask; ··· 102 105 */ 103 106 static inline int test_bit(int nr, const volatile unsigned long *addr) 104 107 { 105 - return 1UL & (addr[BITOP_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); 108 + return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); 106 109 } 107 110 108 111 #endif /* _ASM_GENERIC_BITOPS_NON_ATOMIC_H_ */
+8
include/linux/bitops.h
··· 2 2 #define _LINUX_BITOPS_H 3 3 #include <asm/types.h> 4 4 5 + #ifdef __KERNEL__ 6 + #define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG)) 7 + #define BIT_WORD(nr) ((nr) / BITS_PER_LONG) 8 + #define BITS_TO_TYPE(nr, t) (((nr)+(t)-1)/(t)) 9 + #define BITS_TO_LONGS(nr) BITS_TO_TYPE(nr, BITS_PER_LONG) 10 + #define BITS_PER_BYTE 8 11 + #endif 12 + 5 13 /* 6 14 * Include this here because some architectures need generic_ffs/fls in 7 15 * scope
-3
include/linux/types.h
··· 3 3 4 4 #ifdef __KERNEL__ 5 5 6 - #define BITS_TO_LONGS(bits) \ 7 - (((bits)+BITS_PER_LONG-1)/BITS_PER_LONG) 8 6 #define DECLARE_BITMAP(name,bits) \ 9 7 unsigned long name[BITS_TO_LONGS(bits)] 10 8 11 - #define BITS_PER_BYTE 8 12 9 #endif 13 10 14 11 #include <linux/posix_types.h>