RTEMS: Atomic Operations

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
Files | Macros | Typedefs
Atomic Operations
Internal » SuperCore

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

## Detailed Description

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.