Veritable Lasagna
An Allocator & Data Structure Library for C.
Loading...
Searching...
No Matches
vl_atomic_ptr.h File Reference
#include "vl_atomic.h"
#include "vl_memory.h"
+ Include dependency graph for vl_atomic_ptr.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define VL_ATOMIC_PTR_ALIGN   sizeof(vl_tagged_ptr)
 Atomic pointers must be aligned by their size when dynamically allocated.
 
#define vlAtomicPtrCompareExchangeStrong(atPtr, atPtrExpected, valPtr)
 Convenience macro for strong atomic tagged pointer CAS with sequential consistency.
 
#define vlAtomicPtrCompareExchangeWeak(atPtr, atPtrExpected, valPtr)
 Convenience macro for weak atomic tagged pointer CAS with sequential consistency.
 

Typedefs

typedef VL_ATOMIC vl_tagged_ptr vl_atomic_ptr
 Atomic variant of vl_tagged_ptr.
 

Variables

 vl_tagged_ptr
 
VL_API const vl_tagged_ptr VL_TAGPTR_NULL
 Default initialization value for tagged/atomic pointers.
 

Macro Definition Documentation

◆ VL_ATOMIC_PTR_ALIGN

#define VL_ATOMIC_PTR_ALIGN   sizeof(vl_tagged_ptr)

Atomic pointers must be aligned by their size when dynamically allocated.

◆ vlAtomicPtrCompareExchangeStrong

#define vlAtomicPtrCompareExchangeStrong (   atPtr,
  atPtrExpected,
  valPtr 
)
Value:
vlAtomicPtrCompareExchangeStrongExplicit(atPtr, atPtrExpected, valPtr, VL_MEMORY_ORDER_SEQ_CST, \
@ VL_MEMORY_ORDER_SEQ_CST
Definition vl_atomic.h:167

Convenience macro for strong atomic tagged pointer CAS with sequential consistency.

Parameters
atPtrPointer to atomic tagged pointer.
atPtrExpectedExpected pointer/tag (updated on failure).
valPtrNew pointer value.
Returns
VL_TRUE if successful, VL_FALSE otherwise.
See also
vlAtomicPtrCompareExchangeStrongExplicit

◆ vlAtomicPtrCompareExchangeWeak

#define vlAtomicPtrCompareExchangeWeak (   atPtr,
  atPtrExpected,
  valPtr 
)
Value:
vlAtomicPtrCompareExchangeWeakExplicit(atPtr, atPtrExpected, valPtr, VL_MEMORY_ORDER_SEQ_CST, \

Convenience macro for weak atomic tagged pointer CAS with sequential consistency.

Parameters
atPtrPointer to atomic tagged pointer.
atPtrExpectedExpected pointer/tag (updated on failure).
valPtrNew pointer value.
Returns
VL_TRUE if successful, VL_FALSE otherwise.
See also
vlAtomicPtrCompareExchangeWeakExplicit

Typedef Documentation

◆ vl_atomic_ptr

Atomic variant of vl_tagged_ptr.

Variable Documentation

◆ vl_tagged_ptr

vl_tagged_ptr

◆ VL_TAGPTR_NULL

VL_API const vl_tagged_ptr VL_TAGPTR_NULL
extern

Default initialization value for tagged/atomic pointers.

ptr = NULL;
tag = 0;