April 11, 2007 ATOMIC_ADD 3

### NAME

atomic_add, atomic_add_32, atomic_add_int, atomic_add_long, atomic_add_ptr, atomic_add_64, atomic_add_32_nv, atomic_add_int_nv, atomic_add_long_nv, atomic_add_ptr_nv, atomic_add_64_nv - atomic add operations

### SYNOPSIS

```void` atomic_add_32(```volatile uint32_t *ptr``, int32_t delta`)
```void` atomic_add_int(```volatile unsigned int *ptr``, int delta`)
```void` atomic_add_long(```volatile unsigned long *ptr``, long delta`)
```void` atomic_add_ptr(```volatile void *ptr``, ssize_t delta`)
```void` atomic_add_64(```volatile uint64_t *ptr``, int64_t delta`)
```uint32_t` atomic_add_32_nv(```volatile uint32_t *ptr``, int32_t delta`)
```unsigned` `int` atomic_add_int_nv(```volatile unsigned int *ptr``, int delta`)
```unsigned` `long` atomic_add_long_nv(```volatile unsigned long *ptr``, long delta`)
```void``*` atomic_add_ptr_nv(```volatile void *ptr``, ssize_t delta`)
```uint64_t` atomic_add_64_nv(```volatile uint64_t *ptr``, int64_t delta`)

### DESCRIPTION

The atomic_add family of functions add a signed value ```delta` to the variable referenced by ```ptr` in an atomic fashion.

The *_nv(``) variants of these functions return the new value.

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.

### SEE ALSO

atomic_ops(3)

### HISTORY

The atomic_add functions first appeared in NetBSD5.0.