40 #include "compilerSpecific.h"
42 #define EPICS_ATOMIC_INLINE static EPICS_ALWAYS_INLINE
182 EPICS_ATOMIC_INLINE
void epicsAtomicSetPtrT ( EpicsAtomicPtrT * pTarget, EpicsAtomicPtrT newValue );
212 EPICS_ATOMIC_INLINE EpicsAtomicPtrT
epicsAtomicGetPtrT (
const EpicsAtomicPtrT * pTarget );
228 size_t oldVal,
size_t newVal );
244 int oldVal,
int newVal );
260 EpicsAtomicPtrT * pTarget,
261 EpicsAtomicPtrT oldVal,
262 EpicsAtomicPtrT newVal );
276 #include "epicsAtomicCD.h"
295 EPICS_ATOMIC_INLINE
size_t increment (
size_t & v )
308 EPICS_ATOMIC_INLINE
int increment (
int & v )
321 EPICS_ATOMIC_INLINE
size_t decrement (
size_t & v )
334 EPICS_ATOMIC_INLINE
int decrement (
int & v )
348 EPICS_ATOMIC_INLINE
size_t add (
size_t & v,
size_t delta )
362 EPICS_ATOMIC_INLINE
int add (
int & v,
int delta )
376 EPICS_ATOMIC_INLINE
size_t subtract (
size_t & v,
size_t delta )
390 EPICS_ATOMIC_INLINE
int subtract (
int & v,
int delta )
402 EPICS_ATOMIC_INLINE
void set (
size_t & v ,
size_t newValue )
414 EPICS_ATOMIC_INLINE
void set (
int & v,
int newValue )
439 EPICS_ATOMIC_INLINE
size_t get (
const size_t & v )
452 EPICS_ATOMIC_INLINE
int get (
const int & v )
481 EPICS_ATOMIC_INLINE
size_t compareAndSwap (
size_t & v,
482 size_t oldVal,
size_t newVal )
498 EPICS_ATOMIC_INLINE
int compareAndSwap (
int & v,
int oldVal,
int newVal )
EPICS_ATOMIC_INLINE EpicsAtomicPtrT epicsAtomicGetPtrT(const EpicsAtomicPtrT *pTarget)
atomically load and return pointer value
EPICS_ATOMIC_INLINE int epicsAtomicIncrIntT(int *pTarget)
atomic increment on int value
EPICS_ATOMIC_INLINE int epicsAtomicDecrIntT(int *pTarget)
atomic decrement on int value
EPICS_ATOMIC_INLINE int epicsAtomicGetIntT(const int *pTarget)
atomically load and return int value
EPICS_ATOMIC_INLINE size_t epicsAtomicAddSizeT(size_t *pTarget, size_t delta)
atomic addition on size_t value
EPICS_ATOMIC_INLINE void epicsAtomicSetIntT(int *pTarget, int newValue)
atomically assign int value to variable
EPICS_ATOMIC_INLINE int epicsAtomicAddIntT(int *pTarget, int delta)
atomic addition on int value
EPICS_ATOMIC_INLINE int epicsAtomicCmpAndSwapIntT(int *pTarget, int oldVal, int newVal)
atomically compare int value with expected and if equal swap with new value
EPICS_ATOMIC_INLINE size_t epicsAtomicSubSizeT(size_t *pTarget, size_t delta)
atomic subtraction on size_t value
EPICS_ATOMIC_INLINE void epicsAtomicSetSizeT(size_t *pTarget, size_t newValue)
atomically assign size_t value to variable
EPICS_ATOMIC_INLINE void epicsAtomicSetPtrT(EpicsAtomicPtrT *pTarget, EpicsAtomicPtrT newValue)
atomically assign pointer value to variable
EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier(void)
load target into cache
EPICS_ATOMIC_INLINE size_t epicsAtomicCmpAndSwapSizeT(size_t *pTarget, size_t oldVal, size_t newVal)
atomically compare size_t value with expected and if equal swap with new value
EPICS_ATOMIC_INLINE size_t epicsAtomicGetSizeT(const size_t *pTarget)
atomically load and return size_t value
EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier(void)
push cache version of target into target
EPICS_ATOMIC_INLINE size_t epicsAtomicIncrSizeT(size_t *pTarget)
atomic increment on size_t value
EPICS_ATOMIC_INLINE EpicsAtomicPtrT epicsAtomicCmpAndSwapPtrT(EpicsAtomicPtrT *pTarget, EpicsAtomicPtrT oldVal, EpicsAtomicPtrT newVal)
atomically compare int value with expected and if equal swap with new value
EPICS_ATOMIC_INLINE size_t epicsAtomicDecrSizeT(size_t *pTarget)
atomic decrement on size_t value