**atomic_swap_uint**,

**atomic_swap_ulong**,

**atomic_swap_ptr** —

atomic swap operations
**#include
<sys/atomic.h>**
`unsigned int`
**atomic_swap_uint**(

`volatile
unsigned int *p`,

`unsigned int
new`);

`unsigned long`
**atomic_swap_ulong**(

`volatile
unsigned long *p`,

`unsigned long
new`);

`void *`
**atomic_swap_ptr**(

`volatile
void *p`,

`void
*new`);

The atomic_swap set of functions provide an interface for atomically performing
swap operations with respect to interrupts and multiple processors in the
system.

The value referenced by the pointer

`p` is
replaced by the value

`new`.

**atomic_swap_uint**(),

**atomic_swap_ulong**(), and

**atomic_swap_ptr**() can all be called during
autoconf, from process context, or from interrupt context.

These functions return the value at

`p` as it was
before the swap operation.

atomic_cas_uint(9)
The atomic_swap functions first appeared in

NetBSD 5.0
and

OpenBSD 5.5.