ATOMIC_ADD_INT(9) | Kernel Developer's Manual | ATOMIC_ADD_INT(9)

# NAME

`atomic_add_int`, `atomic_add_int_nv`, `atomic_add_long`, `atomic_add_long_nv` — atomic addition operations

# SYNOPSIS

`#include <sys/atomic.h>`

void
`atomic_add_int`(volatile unsigned int *p, unsigned int v);

unsigned int
`atomic_add_int_nv`(volatile unsigned int *p, unsigned int v);

void
`atomic_add_long`(volatile unsigned long *p, unsigned long v);

unsigned long
`atomic_add_long_nv`(volatile unsigned long *p, unsigned long v);

# DESCRIPTION

The atomic_add set of functions provide an interface for atomically performing add and add-and-fetch operations with respect to interrupts and multiple processors in the system.

The value referenced by the pointer p is incremented by the value v.

# CONTEXT

`atomic_add_int`(), `atomic_add_int_nv`(), `atomic_add_long`(), and `atomic_add_long_nv`() can all be called during autoconf, from process context, or from interrupt context.

# RETURN VALUES

`atomic_add_int` and `atomic_add_long` perform the addition without returning any knowledge of the value at p.

`atomic_add_int_nv` and `atomic_add_long_nv` return the value at p after the addition was performed.

# SEE ALSO

atomic_inc_int(9), atomic_sub_int(9)

# HISTORY

The atomic_add functions first appeared in NetBSD 5.0 and OpenBSD 5.5.

February 13, 2014 | Debian