RTEMS
|
Support for atomic operations. More...
Files | |
file | atomic.h |
Atomic Operations API. | |
Macros | |
#define | ATOMIC_ORDER_RELAXED CPU_ATOMIC_ORDER_RELAXED |
#define | ATOMIC_ORDER_ACQUIRE CPU_ATOMIC_ORDER_ACQUIRE |
#define | ATOMIC_ORDER_RELEASE CPU_ATOMIC_ORDER_RELEASE |
#define | ATOMIC_ORDER_ACQ_REL CPU_ATOMIC_ORDER_ACQ_REL |
#define | ATOMIC_ORDER_SEQ_CST CPU_ATOMIC_ORDER_SEQ_CST |
#define | ATOMIC_INITIALIZER_UINT(value) CPU_ATOMIC_INITIALIZER_UINT( value ) |
#define | ATOMIC_INITIALIZER_ULONG(value) CPU_ATOMIC_INITIALIZER_ULONG( value ) |
#define | ATOMIC_INITIALIZER_UINTPTR(value) CPU_ATOMIC_INITIALIZER_UINTPTR( value ) |
#define | ATOMIC_INITIALIZER_FLAG CPU_ATOMIC_INITIALIZER_FLAG |
#define | _Atomic_Fence(order) _CPU_atomic_Fence( order ) |
#define | _Atomic_Init_uint(obj, desired) _CPU_atomic_Init_uint( obj, desired ) |
#define | _Atomic_Init_ulong(obj, desired) _CPU_atomic_Init_ulong( obj, desired ) |
#define | _Atomic_Init_uintptr(obj, desired) _CPU_atomic_Init_uintptr( obj, desired ) |
#define | _Atomic_Load_uint(obj, order) _CPU_atomic_Load_uint( obj, order ) |
#define | _Atomic_Load_ulong(obj, order) _CPU_atomic_Load_ulong( obj, order ) |
#define | _Atomic_Load_uintptr(obj, order) _CPU_atomic_Load_uintptr( obj, order ) |
#define | _Atomic_Store_uint(obj, desr, order) _CPU_atomic_Store_uint( obj, desr, order ) |
#define | _Atomic_Store_ulong(obj, desr, order) _CPU_atomic_Store_ulong( obj, desr, order ) |
#define | _Atomic_Store_uintptr(obj, desr, order) _CPU_atomic_Store_uintptr( obj, desr, order ) |
#define | _Atomic_Fetch_add_uint(obj, arg, order) _CPU_atomic_Fetch_add_uint( obj, arg, order ) |
#define | _Atomic_Fetch_add_ulong(obj, arg, order) _CPU_atomic_Fetch_add_ulong( obj, arg, order ) |
#define | _Atomic_Fetch_add_uintptr(obj, arg, order) _CPU_atomic_Fetch_add_uintptr( obj, arg, order ) |
#define | _Atomic_Fetch_sub_uint(obj, arg, order) _CPU_atomic_Fetch_sub_uint( obj, arg, order ) |
#define | _Atomic_Fetch_sub_ulong(obj, arg, order) _CPU_atomic_Fetch_sub_ulong( obj, arg, order ) |
#define | _Atomic_Fetch_sub_uintptr(obj, arg, order) _CPU_atomic_Fetch_sub_uintptr( obj, arg, order ) |
#define | _Atomic_Fetch_or_uint(obj, arg, order) _CPU_atomic_Fetch_or_uint( obj, arg, order ) |
#define | _Atomic_Fetch_or_ulong(obj, arg, order) _CPU_atomic_Fetch_or_ulong( obj, arg, order ) |
#define | _Atomic_Fetch_or_uintptr(obj, arg, order) _CPU_atomic_Fetch_or_uintptr( obj, arg, order ) |
#define | _Atomic_Fetch_and_uint(obj, arg, order) _CPU_atomic_Fetch_and_uint( obj, arg, order ) |
#define | _Atomic_Fetch_and_ulong(obj, arg, order) _CPU_atomic_Fetch_and_ulong( obj, arg, order ) |
#define | _Atomic_Fetch_and_uintptr(obj, arg, order) _CPU_atomic_Fetch_and_uintptr( obj, arg, order ) |
#define | _Atomic_Exchange_uint(obj, desr, order) _CPU_atomic_Exchange_uint( obj, desr, order ) |
#define | _Atomic_Exchange_ulong(obj, desr, order) _CPU_atomic_Exchange_ulong( obj, desr, order ) |
#define | _Atomic_Exchange_uintptr(obj, desr, order) _CPU_atomic_Exchange_uintptr( obj, desr, order ) |
#define | _Atomic_Compare_exchange_uint(obj, expected, desired, succ, fail) _CPU_atomic_Compare_exchange_uint( obj, expected, desired, succ, fail ) |
#define | _Atomic_Compare_exchange_ulong(obj, expected, desired, succ, fail) _CPU_atomic_Compare_exchange_ulong( obj, expected, desired, succ, fail ) |
#define | _Atomic_Compare_exchange_uintptr(obj, expected, desired, succ, fail) _CPU_atomic_Compare_exchange_uintptr( obj, expected, desired, succ, fail ) |
#define | _Atomic_Flag_clear(obj, order) _CPU_atomic_Flag_clear( obj, order ) |
#define | _Atomic_Flag_test_and_set(obj, order) _CPU_atomic_Flag_test_and_set( obj, order ) |
Typedefs | |
typedef CPU_atomic_Uint | Atomic_Uint |
typedef CPU_atomic_Ulong | Atomic_Ulong |
typedef CPU_atomic_Uintptr | Atomic_Uintptr |
typedef CPU_atomic_Flag | Atomic_Flag |
typedef CPU_atomic_Order | Atomic_Order |
Support for atomic operations.
Atomic operations can be used to implement low-level synchronization primitives on SMP systems, like spin locks. All atomic operations are defined in terms of C11 (ISO/IEC 9899:2011) or C++11 (ISO/IEC 14882:2011). For documentation use the standard documents.