Loading...
Searching...
No Matches
Atomic Operations
Apache Portability Runtime library
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 (volatile void **mem, void *with, const void *cmp)
void * | apr_atomic_xchgptr (volatile void **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

  mem | pointer to the object
  val | amount 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

  mem | pointer to the object
  val | amount 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

  mem | pointer to the value
  with | what to swap it with
  cmp | the 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

  mem | pointer to the value
  with | what to swap it with
  cmp | the value to compare it to

Returns
  the old value of *mem

## apr_atomic_casptr()

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

## apr_atomic_dec32()

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

int apr_atomic_dec64 | ( | volatile apr_uint64_t * | mem | ) |

atomically decrement an apr_uint64_t by 1

Parameters

  mem | pointer 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

  mem | pointer 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

  mem | pointer 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

  p | pool

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

  mem | the pointer

## apr_atomic_read64()

apr_uint64_t apr_atomic_read64 | ( | volatile apr_uint64_t * | mem | ) |

atomically read an apr_uint64_t from memory

Parameters

  mem | the 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

  mem | pointer to the object
  val | value 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

  mem | pointer to the object
  val | value 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

  mem | pointer to the object
  val | amount 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

  mem | pointer to the object
  val | amount 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

  mem | pointer to the value
  val | what 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

  mem | pointer to the value
  val | what to swap it with

Returns
  the old value of *mem

## apr_atomic_xchgptr()

void * apr_atomic_xchgptr | ( | volatile void ** | mem,
|  | void * | with
| ) |  |

exchange a pair of pointer values

Parameters

  mem | pointer to the pointer
  with | what to swap it with

Returns
  the old value of the pointer