|
#define | cf_atomic32_cas_m(_a, _b, _x) |
|
#define | cf_atomic32_decr(a) (cf_atomic32_add((a), -1)) |
|
#define | cf_atomic32_fas_m(_a, _b) |
|
#define | cf_atomic32_get(a) (a) |
|
#define | cf_atomic32_incr(a) (cf_atomic32_add((a), 1)) |
|
#define | cf_atomic32_set(a, b) (*(a) = (b)) |
|
#define | cf_atomic32_sub(a, b) (cf_atomic32_add((a), (0 - (b)))) |
|
#define | cf_atomic_int_add(_a, _b) cf_atomic32_add(_a, _b) |
|
#define | cf_atomic_int_addunless(_a, _b, _x) cf_atomic32_addunless(_a, _b, _x) |
|
#define | cf_atomic_int_cas(_a, _b, _x) cf_atomic32_cas(_a, _b, _x) |
|
#define | cf_atomic_int_cas_m(_a, _b, _x) cf_atomic32_cas_m(_a, _b, _x) |
|
#define | cf_atomic_int_decr(_a) cf_atomic32_add((_a), -1) |
|
#define | cf_atomic_int_fas(_a, _b) cf_atomic32_fas(_a, _b) |
|
#define | cf_atomic_int_fas_m(_a, _b) cf_atomic32_fas_m(_a, _b) |
|
#define | cf_atomic_int_get(_a) cf_atomic32_get(_a) |
|
#define | cf_atomic_int_incr(_a) cf_atomic32_add((_a), 1) |
|
#define | cf_atomic_int_set(_a, _b) cf_atomic32_set(_a, _b) |
|
#define | cf_atomic_int_setmax(_a, _x) cf_atomic32_setmax(_a, _x) |
|
#define | cf_atomic_int_sub(_a, _b) cf_atomic32_sub(_a, _b) |
|
#define | cf_atomic_p_add(_a, _b) cf_atomic32_add(_a, _b) |
|
#define | cf_atomic_p_addunless(_a, _b, _x) cf_atomic32_addunless(_a, _b, _x) |
|
#define | cf_atomic_p_cas(_a, _b, _x) cf_atomic32_cas(_a, _b, _x) |
|
#define | cf_atomic_p_cas_m(_a, _b, _x) cf_atomic32_cas_m(_a, _b, _x) |
|
#define | cf_atomic_p_decr(_a) cf_atomic32_add((_a), -1) |
|
#define | cf_atomic_p_fas(_a, _b) cf_atomic32_fas(_a, _b) |
|
#define | cf_atomic_p_fas_m(_a, _b) cf_atomic32_fas_m(_a, _b) |
|
#define | cf_atomic_p_get(_a) cf_atomic32_get(_a) |
|
#define | cf_atomic_p_incr(_a) cf_atomic32_add((_a), 1) |
|
#define | cf_atomic_p_set(_a, _b) cf_atomic32_set(_a, _b) |
|
#define | cf_atomic_p_setmax(_a, _x) cf_atomic32_setmax(_a, _x) |
|
#define | CF_MEMORY_BARRIER() __asm__ __volatile__ ("lock; addl $0,0(%%esp)" : : : "memory") |
|
#define | CF_MEMORY_BARRIER_READ() CF_MEMORY_BARRIER() |
|
#define | CF_MEMORY_BARRIER_WRITE() __asm__ __volatile__ ("" : : : "memory") |
|
#define | smb_mb() asm volatile("mfence":::"memory") |
|
#define cf_atomic32_get |
( |
|
a | ) |
(a) |
SYNOPSIS Atomic memory operations Memory barriers
cf_atomicX_add Atomic addition: add a value b into an atomic integer a, and return the result
cf_atomicX_cas Compare-and-swap: test a value b against an atomic integer a; if they are equal, store the value x into a, and return the initial value of a. "Success" can be checked by comparing the returned value against b NB: this is a strong memory barrier
cf_atomicX_fas Fetch-and-swap: swap the values of b and a
cf_atomicX_addunless Increment-unless: test a value b against an atomic integer a. If they are NOT equal, add x to a, and return non-zero; if they ARE equal, return zero
Definition at line 82 of file cf_atomic.h.