| ATOMIC_SWAP(3) | Library Functions Manual | ATOMIC_SWAP(3) | 
atomic_swap, atomic_swap_32,
  atomic_swap_uint,
  atomic_swap_ulong,
  atomic_swap_ptr,
  atomic_swap_64 —
#include <sys/atomic.h>
uint32_t
  
  atomic_swap_32(volatile
    uint32_t *ptr, uint32_t
    new);
unsigned int
  
  atomic_swap_uint(volatile
    unsigned int *ptr,
    unsigned int new);
unsigned long
  
  atomic_swap_ulong(volatile
    unsigned long *ptr,
    unsigned long new);
void *
  
  atomic_swap_ptr(volatile
    void *ptr, void
    *new);
uint64_t
  
  atomic_swap_64(volatile
    uint64_t *ptr, uint64_t
    new);
atomic_swap family of functions perform a swap
  operation in an atomic fashion. The value of the variable referenced by
  ptr is replaced by new and the old
  value returned.
The 64-bit variants of these functions are available only on
    platforms that can support atomic 64-bit memory access. Applications can
    check for the availability of 64-bit atomic memory operations by testing if
    the pre-processor macro __HAVE_ATOMIC64_OPS is
    defined.
atomic_swap functions first appeared in
  NetBSD 5.0.
| April 11, 2007 | NetBSD 9.3 |