upipe/uatomic.h header reference
Upipe thread-safe atomic operations More
Header inclusion [link]
Members [link]
Types [link]
- typedef [...] * uatomic_ptr_t
- typedef [...] uatomic_uint32_t
Function [link]
- uint32_t atomic_fetch_sub(uatomic_uint32_t *obj, uint32_t operand)
Macros [link]
Description [link]
This API mimics a partial C11 stdatomic implementation. Atomic variables must be initialized with uatomic_init before use, and released with uatomic_clean before deallocation.
Members detail [link]
#define UATOMIC_TEMPLATE(type, ctype, atomictype) [link]
This macro is declared in upipe/uatomic.h source file, line 81.
This macro defines a set of functions to manipulate atomic variables.
#define _UPIPE_UATOMIC_H_ [link]
This macro is declared in upipe/uatomic.h source file, line 34.
uint32_t atomic_fetch_sub(uatomic_uint32_t *obj, uint32_t operand) [link]
This function is declared in upipe/uatomic.h source file, line 159.
This function decrements a uatomic variable.
Parameter list:
- obj: pointer to a uatomic variable
- operand: value to subtract
The return value is value before the operation
#define uatomic_clean(a) [link]
This macro is declared in upipe/uatomic.h source file, line 59.
#define uatomic_compare_exchange [link]
This macro is declared in upipe/uatomic.h source file, line 61.
#define uatomic_fetch_add [link]
This macro is declared in upipe/uatomic.h source file, line 64.
#define uatomic_fetch_sub [link]
This macro is declared in upipe/uatomic.h source file, line 65.
#define uatomic_init [link]
This macro is declared in upipe/uatomic.h source file, line 53.
#define uatomic_load [link]
This macro is declared in upipe/uatomic.h source file, line 57.
#define uatomic_ptr_clean(a) [link]
This macro is declared in upipe/uatomic.h source file, line 60.
#define uatomic_ptr_compare_exchange [link]
This macro is declared in upipe/uatomic.h source file, line 62.
#define uatomic_ptr_compare_exchange_ptr(obj, expected, desired) [link]
This macro is declared in upipe/uatomic.h source file, line 269.
This macro atomically replaces the uatomic pointer, if it contains an expected value, with a desired value.
Parameter list:
- obj: pointer to a uatomic variable
- expected: reference to expected value, overwritten with actual value if it fails
- desired: desired value
The return value is false if the exchange failed
#define uatomic_ptr_init [link]
This macro is declared in upipe/uatomic.h source file, line 54.
#define uatomic_ptr_load [link]
This macro is declared in upipe/uatomic.h source file, line 58.
#define uatomic_ptr_load_ptr(obj, type) [link]
This macro is declared in upipe/uatomic.h source file, line 257.
This macro loads an atomic pointer.
Parameter list:
- obj: pointer to a uatomic variable
- type: type of the pointer
The return value is the loaded value
#define uatomic_ptr_store [link]
This macro is declared in upipe/uatomic.h source file, line 56.
typedef void * uatomic_ptr_t [link]
This typedef is declared in upipe/uatomic.h source file, line 79.
This typedef defines an atomic pointer.
#define uatomic_store [link]
This macro is declared in upipe/uatomic.h source file, line 55.
typedef uint32_t uatomic_uint32_t [link]
This typedef is declared in upipe/uatomic.h source file, line 76.
This typedef defines an atomic 32-bits unsigned integer. ARM platforms do not support larger atomic operations.
See also uring_lifo and uring_fifo.