diff options
Diffstat (limited to 'include/qemu/bitops.h')
| -rw-r--r-- | include/qemu/bitops.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/qemu/bitops.h b/include/qemu/bitops.h index cb3526d1f4..2c0a2fe751 100644 --- a/include/qemu/bitops.h +++ b/include/qemu/bitops.h @@ -68,6 +68,19 @@ static inline void clear_bit(long nr, unsigned long *addr) } /** + * clear_bit_atomic - Clears a bit in memory atomically + * @nr: Bit to clear + * @addr: Address to start counting from + */ +static inline void clear_bit_atomic(long nr, unsigned long *addr) +{ + unsigned long mask = BIT_MASK(nr); + unsigned long *p = addr + BIT_WORD(nr); + + return qatomic_and(p, ~mask); +} + +/** * change_bit - Toggle a bit in memory * @nr: Bit to change * @addr: Address to start counting from |