Clears bits in the word or doubleword specified byaddr by AND-ing that value with the value specified by val, in a single atomic operation, and returns the original value of addr.
unsigned int __fetch_and_and (volatile unsigned int* addr, unsigned int val);
unsigned long __fetch_and_andlp (volatile unsigned long* addr, unsigned long val);
This operation is useful when a variable containing bit flags is shared between several threads or processes.
__fetch_and_andlp is valid only in 64-bit mode.