---
name: "__test_and_clear_bit"
section: "9"
platform: "linux"
package: "linux-manual-4.9"
version: "4.9.228-1"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/__test_and_clear_bit"
---

# \_\_test\_and\_clear\_bit(9)

Clear a bit and return its old value

## NAME

\_\_test\_and\_clear\_bit - Clear a bit and return its old value

## SYNOPSIS

**bool \_\_test\_and\_clear\_bit(long** *nr***, volatile unsigned long \*** *addr***);**

## ARGUMENTS

*nr*

Bit to clear

*addr*

Address to count from

## DESCRIPTION

This operation is non-atomic and can be reordered. If two examples of this operation race, one can appear to succeed but actually fail. You must protect multiple accesses with a lock.

## NOTE

the operation is performed atomically with respect to the local CPU, but not other CPUs. Portable code should not rely on this behaviour. KVM relies on this behaviour on x86 for modifying memory that is also accessed from a hypervisor on the same CPU if running in a VM: don't change this without also updating arch/x86/kernel/kvm.c

## COPYRIGHT
