Apache Portable Runtime
Functions
Atomic Operations
Apache Portability Runtime library

Functions

apr_status_t apr_atomic_init (apr_pool_t *p)
apr_uint32_t apr_atomic_read32 (volatile apr_uint32_t *mem)
void apr_atomic_set32 (volatile apr_uint32_t *mem, apr_uint32_t val)
apr_uint32_t apr_atomic_add32 (volatile apr_uint32_t *mem, apr_uint32_t val)
void apr_atomic_sub32 (volatile apr_uint32_t *mem, apr_uint32_t val)
apr_uint32_t apr_atomic_inc32 (volatile apr_uint32_t *mem)
int apr_atomic_dec32 (volatile apr_uint32_t *mem)
apr_uint32_t apr_atomic_cas32 (volatile apr_uint32_t *mem, apr_uint32_t with, apr_uint32_t cmp)
apr_uint32_t apr_atomic_xchg32 (volatile apr_uint32_t *mem, apr_uint32_t val)
void * apr_atomic_casptr (volatile void **mem, void *with, const void *cmp)
void * apr_atomic_xchgptr (volatile void **mem, void *with)

Function Documentation

apr_uint32_t apr_atomic_add32 ( volatile apr_uint32_t *  mem,
apr_uint32_t  val 
)

atomically add 'val' to an apr_uint32_t

Parameters:
mempointer to the object
valamount to add
Returns:
old value pointed to by mem
apr_uint32_t apr_atomic_cas32 ( volatile apr_uint32_t *  mem,
apr_uint32_t  with,
apr_uint32_t  cmp 
)

compare an apr_uint32_t's value with 'cmp'. If they are the same swap the value with 'with'

Parameters:
mempointer to the value
withwhat to swap it with
cmpthe value to compare it to
Returns:
the old value of *mem
void* apr_atomic_casptr ( volatile void **  mem,
void *  with,
const void *  cmp 
)

compare the pointer's value with cmp. If they are the same swap the value with 'with'

Parameters:
mempointer to the pointer
withwhat to swap it with
cmpthe value to compare it to
Returns:
the old value of the pointer
int apr_atomic_dec32 ( volatile apr_uint32_t *  mem)

atomically decrement an apr_uint32_t by 1

Parameters:
mempointer to the atomic value
Returns:
zero if the value becomes zero on decrement, otherwise non-zero
apr_uint32_t apr_atomic_inc32 ( volatile apr_uint32_t *  mem)

atomically increment an apr_uint32_t by 1

Parameters:
mempointer to the object
Returns:
old value pointed to by mem
apr_status_t apr_atomic_init ( apr_pool_t p)

this function is required on some platforms to initialize the atomic operation's internal structures

Parameters:
ppool
Returns:
APR_SUCCESS on successful completion
Remarks:
Programs do NOT need to call this directly. APR will call this automatically from apr_initialize.
apr_uint32_t apr_atomic_read32 ( volatile apr_uint32_t *  mem)

atomically read an apr_uint32_t from memory

Parameters:
memthe pointer
void apr_atomic_set32 ( volatile apr_uint32_t *  mem,
apr_uint32_t  val 
)

atomically set an apr_uint32_t in memory

Parameters:
mempointer to the object
valvalue that the object will assume
void apr_atomic_sub32 ( volatile apr_uint32_t *  mem,
apr_uint32_t  val 
)

atomically subtract 'val' from an apr_uint32_t

Parameters:
mempointer to the object
valamount to subtract
apr_uint32_t apr_atomic_xchg32 ( volatile apr_uint32_t *  mem,
apr_uint32_t  val 
)

exchange an apr_uint32_t's value with 'val'.

Parameters:
mempointer to the value
valwhat to swap it with
Returns:
the old value of *mem
void* apr_atomic_xchgptr ( volatile void **  mem,
void *  with 
)

exchange a pair of pointer values

Parameters:
mempointer to the pointer
withwhat to swap it with
Returns:
the old value of the pointer
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines