`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.