This is Unofficial EPICS BASE Doxygen Site
epicsAtomic.h File Reference
#include <stdlib.h>
#include "compilerSpecific.h"
#include "epicsAtomicCD.h"
+ Include dependency graph for epicsAtomic.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define EPICS_ATOMIC_INLINE   static EPICS_ALWAYS_INLINE
 

Typedefs

typedef void * EpicsAtomicPtrT
 

Functions

EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier (void)
 
EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier (void)
 
EPICS_ATOMIC_INLINE size_t epicsAtomicIncrSizeT (size_t *pTarget)
 
EPICS_ATOMIC_INLINE int epicsAtomicIncrIntT (int *pTarget)
 
EPICS_ATOMIC_INLINE size_t epicsAtomicDecrSizeT (size_t *pTarget)
 
EPICS_ATOMIC_INLINE int epicsAtomicDecrIntT (int *pTarget)
 
EPICS_ATOMIC_INLINE size_t epicsAtomicAddSizeT (size_t *pTarget, size_t delta)
 
EPICS_ATOMIC_INLINE size_t epicsAtomicSubSizeT (size_t *pTarget, size_t delta)
 
EPICS_ATOMIC_INLINE int epicsAtomicAddIntT (int *pTarget, int delta)
 
EPICS_ATOMIC_INLINE void epicsAtomicSetSizeT (size_t *pTarget, size_t newValue)
 
EPICS_ATOMIC_INLINE void epicsAtomicSetIntT (int *pTarget, int newValue)
 
EPICS_ATOMIC_INLINE void epicsAtomicSetPtrT (EpicsAtomicPtrT *pTarget, EpicsAtomicPtrT newValue)
 
EPICS_ATOMIC_INLINE size_t epicsAtomicGetSizeT (const size_t *pTarget)
 
EPICS_ATOMIC_INLINE int epicsAtomicGetIntT (const int *pTarget)
 
EPICS_ATOMIC_INLINE EpicsAtomicPtrT epicsAtomicGetPtrT (const EpicsAtomicPtrT *pTarget)
 
EPICS_ATOMIC_INLINE size_t epicsAtomicCmpAndSwapSizeT (size_t *pTarget, size_t oldVal, size_t newVal)
 
EPICS_ATOMIC_INLINE int epicsAtomicCmpAndSwapIntT (int *pTarget, int oldVal, int newVal)
 
EPICS_ATOMIC_INLINE EpicsAtomicPtrT epicsAtomicCmpAndSwapPtrT (EpicsAtomicPtrT *pTarget, EpicsAtomicPtrT oldVal, EpicsAtomicPtrT newVal)
 

Macro Definition Documentation

#define EPICS_ATOMIC_INLINE   static EPICS_ALWAYS_INLINE

Definition at line 22 of file epicsAtomic.h.

Typedef Documentation

typedef void* EpicsAtomicPtrT

Definition at line 28 of file epicsAtomic.h.

Function Documentation

EPICS_ATOMIC_INLINE int epicsAtomicAddIntT ( int *  pTarget,
int  delta 
)

Definition at line 126 of file epicsAtomicCD.h.

127 {
128  return __sync_add_and_fetch ( pTarget, delta );
129 }
EPICS_ATOMIC_INLINE size_t epicsAtomicAddSizeT ( size_t *  pTarget,
size_t  delta 
)

Definition at line 156 of file epicsAtomicCD.h.

157 {
158  return __sync_add_and_fetch ( pTarget, delta );
159 }
EPICS_ATOMIC_INLINE int epicsAtomicCmpAndSwapIntT ( int *  pTarget,
int  oldVal,
int  newVal 
)

Definition at line 132 of file epicsAtomicCD.h.

134 {
135  return __sync_val_compare_and_swap ( pTarget, oldVal, newVal);
136 }
EPICS_ATOMIC_INLINE EpicsAtomicPtrT epicsAtomicCmpAndSwapPtrT ( EpicsAtomicPtrT pTarget,
EpicsAtomicPtrT  oldVal,
EpicsAtomicPtrT  newVal 
)

Definition at line 175 of file epicsAtomicCD.h.

178 {
179  return __sync_val_compare_and_swap ( pTarget, oldVal, newVal);
180 }
EPICS_ATOMIC_INLINE size_t epicsAtomicCmpAndSwapSizeT ( size_t *  pTarget,
size_t  oldVal,
size_t  newVal 
)

Definition at line 168 of file epicsAtomicCD.h.

170 {
171  return __sync_val_compare_and_swap ( pTarget, oldVal, newVal);
172 }
EPICS_ATOMIC_INLINE int epicsAtomicDecrIntT ( int *  pTarget)

Definition at line 120 of file epicsAtomicCD.h.

121 {
122  return __sync_sub_and_fetch ( pTarget, 1 );
123 }
EPICS_ATOMIC_INLINE size_t epicsAtomicDecrSizeT ( size_t *  pTarget)

Definition at line 150 of file epicsAtomicCD.h.

151 {
152  return __sync_sub_and_fetch ( pTarget, 1u );
153 }
EPICS_ATOMIC_INLINE int epicsAtomicGetIntT ( const int *  pTarget)

Definition at line 163 of file epicsAtomicDefault.h.

164 {
166  return *pTarget;
167 }
EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier(void)
Definition: epicsAtomicCD.h:91
EPICS_ATOMIC_INLINE EpicsAtomicPtrT epicsAtomicGetPtrT ( const EpicsAtomicPtrT pTarget)

Definition at line 180 of file epicsAtomicDefault.h.

181 {
183  return *pTarget;
184 }
EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier(void)
Definition: epicsAtomicCD.h:91
EPICS_ATOMIC_INLINE size_t epicsAtomicGetSizeT ( const size_t *  pTarget)

Definition at line 171 of file epicsAtomicDefault.h.

172 {
174  return *pTarget;
175 }
EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier(void)
Definition: epicsAtomicCD.h:91
EPICS_ATOMIC_INLINE int epicsAtomicIncrIntT ( int *  pTarget)

Definition at line 114 of file epicsAtomicCD.h.

115 {
116  return __sync_add_and_fetch ( pTarget, 1 );
117 }
EPICS_ATOMIC_INLINE size_t epicsAtomicIncrSizeT ( size_t *  pTarget)

Definition at line 144 of file epicsAtomicCD.h.

145 {
146  return __sync_add_and_fetch ( pTarget, 1u );
147 }
EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier ( void  )

Definition at line 91 of file epicsAtomicCD.h.

92 {
93  asm("mfence;");
94 }
EPICS_ATOMIC_INLINE void epicsAtomicSetIntT ( int *  pTarget,
int  newValue 
)

Definition at line 135 of file epicsAtomicDefault.h.

136 {
137  *pTarget = newVal;
139 }
EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier(void)
EPICS_ATOMIC_INLINE void epicsAtomicSetPtrT ( EpicsAtomicPtrT pTarget,
EpicsAtomicPtrT  newValue 
)

Definition at line 151 of file epicsAtomicDefault.h.

153 {
154  *pTarget = newVal;
156 }
EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier(void)
EPICS_ATOMIC_INLINE void epicsAtomicSetSizeT ( size_t *  pTarget,
size_t  newValue 
)

Definition at line 143 of file epicsAtomicDefault.h.

144 {
145  *pTarget = newVal;
147 }
EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier(void)
EPICS_ATOMIC_INLINE size_t epicsAtomicSubSizeT ( size_t *  pTarget,
size_t  delta 
)

Definition at line 162 of file epicsAtomicCD.h.

163 {
164  return __sync_sub_and_fetch ( pTarget, delta );
165 }
EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier ( void  )

Definition at line 101 of file epicsAtomicCD.h.

102 {
103  asm("mfence;");
104 }