tools: introduce test_and_clear_bit
We have test_and_set_bit but not test_and_clear_bit. Add it. Signed-off-by: Peter Xu <peterx@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
@@ -96,6 +96,23 @@ static inline int test_and_set_bit(int nr, unsigned long *addr)
|
|||||||
return (old & mask) != 0;
|
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
|
* bitmap_alloc - Allocate bitmap
|
||||||
* @nbits: Number of bits
|
* @nbits: Number of bits
|
||||||
|
|||||||
Reference in New Issue
Block a user