NAME
atomic_add, atomic_sub, atomic_inc, atomic_dec - thread/SMP
safe arithmetic on atomic data
SYNOPSIS
#include <asm/atomic.h>
void atomic_add(int i, volatile atomic_t*v)
void atomic_sub(int i, volatile atomic_t*v)
void atomic_inc(volatile atomic_t*v)
void atomic_dec(volatile atomic_t*v)
int atomic_read(volatile atomic_t*v)
void atomic_set(volatile atomic_t*v, int i)
int atomic_dec_and_test(volatile atomic_t*v)
DESCRIPTION
These functions manipulate variables of type atomic_t is SMP
and interrupt safe ways. These variables can be used to hold
spin locks or SMP-safe reference counters. These functions
guarantee that the operation that they represent is per-
formed correctly. If necessary, hardware bus locking is per-
formed to protect the operation. Usually, the CPU has some
sort of atomic instructions that allow these operations to
be performed quickly and safely.
The atomic_dec_and_test decrements the atomic variable, and
returns true if the result is zero. This function is partic-
ularly useful in implementing spin locks on SMP systems.
RETURN VALUE
The atomic_read function returns the integer value of the
atomic variable.
The atomic_dec_and_test returns TRUE if the value becomes
zero after the decrement.
AVAILABILITY
Linux 2.0+
SEE ALSO
intro(9)
AUTHOR
Stephen Williams <steve@icarus.com>
BUGS
The read and set operations generally have no special pro-
tections.