Apache2
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)
 
apr_uint64_t apr_atomic_read64 (volatile apr_uint64_t *mem)
 
void apr_atomic_set64 (volatile apr_uint64_t *mem, apr_uint64_t val)
 
apr_uint64_t apr_atomic_add64 (volatile apr_uint64_t *mem, apr_uint64_t val)
 
void apr_atomic_sub64 (volatile apr_uint64_t *mem, apr_uint64_t val)
 
apr_uint64_t apr_atomic_inc64 (volatile apr_uint64_t *mem)
 
int apr_atomic_dec64 (volatile apr_uint64_t *mem)
 
apr_uint64_t apr_atomic_cas64 (volatile apr_uint64_t *mem, apr_uint64_t with, apr_uint64_t cmp)
 
apr_uint64_t apr_atomic_xchg64 (volatile apr_uint64_t *mem, apr_uint64_t val)
 
void * apr_atomic_casptr (void *volatile *mem, void *with, const void *cmp)
 
void * apr_atomic_xchgptr (void *volatile *mem, void *with)
 

Detailed Description

Function Documentation

◆ apr_atomic_add32()

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_atomic_add64()

apr_uint64_t apr_atomic_add64 ( volatile apr_uint64_t mem,
apr_uint64_t  val 
)

atomically add 'val' to an apr_uint64_t

Parameters
mempointer to the object
valamount to add
Returns
old value pointed to by mem

◆ apr_atomic_cas32()

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

◆ apr_atomic_cas64()

apr_uint64_t apr_atomic_cas64 ( volatile apr_uint64_t mem,
apr_uint64_t  with,
apr_uint64_t  cmp 
)

compare an apr_uint64_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

◆ apr_atomic_casptr()

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

◆ apr_atomic_dec32()

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_atomic_dec64()

int apr_atomic_dec64 ( volatile apr_uint64_t mem)

atomically decrement an apr_uint64_t by 1

Parameters
mempointer to the atomic value
Returns
zero if the value becomes zero on decrement, otherwise non-zero

◆ apr_atomic_inc32()

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_atomic_inc64()

apr_uint64_t apr_atomic_inc64 ( volatile apr_uint64_t mem)

atomically increment an apr_uint64_t by 1

Parameters
mempointer to the object
Returns
old value pointed to by mem

◆ apr_atomic_init()

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_atomic_read32()

apr_uint32_t apr_atomic_read32 ( volatile apr_uint32_t mem)

atomically read an apr_uint32_t from memory

Parameters
memthe pointer

◆ apr_atomic_read64()

apr_uint64_t apr_atomic_read64 ( volatile apr_uint64_t mem)

atomically read an apr_uint64_t from memory

Parameters
memthe pointer

◆ apr_atomic_set32()

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

◆ apr_atomic_set64()

void apr_atomic_set64 ( volatile apr_uint64_t mem,
apr_uint64_t  val 
)

atomically set an apr_uint64_t in memory

Parameters
mempointer to the object
valvalue that the object will assume

◆ apr_atomic_sub32()

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_atomic_sub64()

void apr_atomic_sub64 ( volatile apr_uint64_t mem,
apr_uint64_t  val 
)

atomically subtract 'val' from an apr_uint64_t

Parameters
mempointer to the object
valamount to subtract

◆ apr_atomic_xchg32()

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

◆ apr_atomic_xchg64()

apr_uint64_t apr_atomic_xchg64 ( volatile apr_uint64_t mem,
apr_uint64_t  val 
)

exchange an apr_uint64_t's value with 'val'.

Parameters
mempointer to the value
valwhat to swap it with
Returns
the old value of *mem

◆ apr_atomic_xchgptr()

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