40#define vlAtomicPtrInit(atPtr, valPtr) vlAtomicInit((atPtr), valPtr);
52static inline void vlAtomicPtrStore(
vl_atomic_ptr* atomicPtr,
void* ptr){
115#define vlAtomicPtrCompareExchangeStrong(atPtr, atPtrExpected, valPtr)\
116 vlAtomicPtrCompareExchangeStrongExplicit(atPtr, atPtrExpected, valPtr, VL_MEMORY_ORDER_SEQ_CST, VL_MEMORY_ORDER_SEQ_CST)
128#define vlAtomicPtrCompareExchangeWeak(atPtr, atPtrExpected, valPtr)\
129 vlAtomicPtrCompareExchangeWeakExplicit(atPtr, atPtrExpected, valPtr, VL_MEMORY_ORDER_SEQ_CST, VL_MEMORY_ORDER_SEQ_CST)
#define vlAtomicStore(ptr, val)
Performs a generic atomic write operation.
Definition vl_atomic.h:184
#define VL_ATOMIC
Definition vl_atomic.h:25
#define vlAtomicCompareExchangeStrongExplicit(ptr, expectedPtr, desired, trueOrder, falseOrder)
Atomically compares the memory at ptr with. If *ptr == *expectedPtr, *ptr = desired.
Definition vl_atomic.h:415
#define vlAtomicCompareExchangeWeakExplicit(ptr, expectedPtr, desired, trueOrder, falseOrder)
Atomically compares the memory at ptr with. If *ptr == *expectedPtr, *ptr = desired.
Definition vl_atomic.h:396
#define vlAtomicLoad(ptr)
Performs a generic atomic read operation.
Definition vl_atomic.h:157
vl_memory_order_t
Memory order enumeration. Dictates reordering of memory accesses surrounding and including atomic ope...
Definition vl_atomic.h:98
const vl_tagged_ptr VL_TAGPTR_NULL
Default initialization value for tagged/atomic pointers.
Definition vl_atomic_ptr.c:3
vl_uintptr_t ptr
Definition vl_atomic_ptr.h:20
vl_ularge_t tag
Definition vl_atomic_ptr.h:21
VL_ATOMIC vl_tagged_ptr vl_atomic_ptr
Atomic variant of vl_tagged_ptr.
Definition vl_atomic_ptr.h:28
A Tagged Pointer structure for use with Atomic, lock-free algorithms.
Definition vl_atomic_ptr.h:19
VL_UPTR_T vl_uintptr_t
Unsigned integer type suitable for expressing memory addresses.
Definition vl_numtypes.h:101
VL_BOOL_T vl_bool_t
Definition vl_numtypes.h:128
VL_ULARGE_T vl_ularge_t
Largest available unsigned integer type.
Definition vl_numtypes.h:74