Apache2
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Collaboration diagram for Atomic Operations:

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)
 
voidapr_atomic_casptr (void *volatile *mem, void *with, const void *cmp)
 
voidapr_atomic_xchgptr (void *volatile *mem, void *with)
 

Detailed Description

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 ( void *volatile *  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 ( void *volatile *  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