uint32_t
atomic_cas_32(
volatile uint32_t *ptr
, uint32_t old
, uint32_t new
)
unsigned
int
atomic_cas_uint(
volatile unsigned int *ptr
, unsigned int old
, unsigned int new
)
unsigned
long
atomic_cas_ulong(
volatile unsigned long *ptr
, unsigned long old
, unsigned long new
)
void
*
atomic_cas_ptr(
volatile void *ptr
, void *old
, void *new
)
uint64_t
atomic_cas_64(
volatile uint64_t *ptr
, uint64_t old
, uint64_t new
)
ptr
is compared against
old
.
If the values are equal,
new
is stored in the variable referenced by
ptr
.
The old value of the variable referenced by
ptr
is always returned regardless of whether or not the new value was stored.
Applications can test for success of the operation by comparing the
return value to the value passed as
old
;
if they are equal then the new value was stored.
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.