Loading tools/include/linux/bitmap.h +17 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,23 @@ static inline int test_and_set_bit(int nr, unsigned long *addr) return (old & mask) != 0; } /** * test_and_clear_bit - Clear a bit and return its old value * @nr: Bit to clear * @addr: Address to count from */ static inline int test_and_clear_bit(int nr, unsigned long *addr) { unsigned long mask = BIT_MASK(nr); unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); unsigned long old; old = *p; *p = old & ~mask; return (old & mask) != 0; } /** * bitmap_alloc - Allocate bitmap * @nbits: Number of bits Loading Loading
tools/include/linux/bitmap.h +17 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,23 @@ static inline int test_and_set_bit(int nr, unsigned long *addr) return (old & mask) != 0; } /** * test_and_clear_bit - Clear a bit and return its old value * @nr: Bit to clear * @addr: Address to count from */ static inline int test_and_clear_bit(int nr, unsigned long *addr) { unsigned long mask = BIT_MASK(nr); unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); unsigned long old; old = *p; *p = old & ~mask; return (old & mask) != 0; } /** * bitmap_alloc - Allocate bitmap * @nbits: Number of bits Loading