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)

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:
mem pointer to the object
val amount 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:
mem pointer to the value
with what to swap it with
cmp the 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:
mem pointer to the pointer
with what to swap it with
cmp the 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:
mem pointer 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:
mem pointer 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:
p pool
Returns:
APR_SUCCESS on successful completion

apr_uint32_t apr_atomic_read32 ( volatile apr_uint32_t *  mem  ) 

atomically read an apr_uint32_t from memory

Parameters:
mem the pointer

void apr_atomic_set32 ( volatile apr_uint32_t *  mem,
apr_uint32_t  val 
)

atomically set an apr_uint32_t in memory

Parameters:
mem pointer to the object
val value 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:
mem pointer to the object
val amount 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:
mem pointer to the value
val what to swap it with
Returns:
the old value of *mem


Generated on Mon Nov 26 11:23:52 2007 for Apache Portable Runtime by  doxygen 1.5.2