This is Unofficial EPICS BASE Doxygen Site
epicsAtomicCD.h File Reference
#include "epicsAtomicOSD.h"
+ Include dependency graph for epicsAtomicCD.h:

Go to the source code of this file.

Macros

#define EPICS_ATOMIC_CMPLR_NAME   "GCC"
 
#define GCC_ATOMIC_CONCAT(A, B)   GCC_ATOMIC_CONCATR(A,B)
 
#define GCC_ATOMIC_CONCATR(A, B)   ( A ## B )
 
#define GCC_ATOMIC_INTRINSICS_AVAIL_INT_T
 
#define GCC_ATOMIC_INTRINSICS_AVAIL_SIZE_T
 
#define GCC_ATOMIC_INTRINSICS_MIN_X86
 
#define GCC_ATOMIC_INTRINSICS_GCC4_OR_BETTER   ( ( __GNUC__ * 100 + __GNUC_MINOR__ ) >= 401 )
 
#define GCC_ATOMIC_INTRINSICS_AVAIL_EARLIER
 
#define EPICS_ATOMIC_READ_MEMORY_BARRIER
 
#define EPICS_ATOMIC_WRITE_MEMORY_BARRIER
 
#define EPICS_ATOMIC_INCR_INTT
 
#define EPICS_ATOMIC_DECR_INTT
 
#define EPICS_ATOMIC_ADD_INTT
 
#define EPICS_ATOMIC_CAS_INTT
 
#define EPICS_ATOMIC_INCR_SIZET
 
#define EPICS_ATOMIC_DECR_SIZET
 
#define EPICS_ATOMIC_ADD_SIZET
 
#define EPICS_ATOMIC_SUB_SIZET
 
#define EPICS_ATOMIC_CAS_SIZET
 
#define EPICS_ATOMIC_CAS_PTRT
 

Functions

EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier (void)
 
EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier (void)
 
EPICS_ATOMIC_INLINE int epicsAtomicIncrIntT (int *pTarget)
 
EPICS_ATOMIC_INLINE int epicsAtomicDecrIntT (int *pTarget)
 
EPICS_ATOMIC_INLINE int epicsAtomicAddIntT (int *pTarget, int delta)
 
EPICS_ATOMIC_INLINE int epicsAtomicCmpAndSwapIntT (int *pTarget, int oldVal, int newVal)
 
EPICS_ATOMIC_INLINE size_t epicsAtomicIncrSizeT (size_t *pTarget)
 
EPICS_ATOMIC_INLINE size_t epicsAtomicDecrSizeT (size_t *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 size_t epicsAtomicCmpAndSwapSizeT (size_t *pTarget, size_t oldVal, size_t newVal)
 
EPICS_ATOMIC_INLINE EpicsAtomicPtrT epicsAtomicCmpAndSwapPtrT (EpicsAtomicPtrT *pTarget, EpicsAtomicPtrT oldVal, EpicsAtomicPtrT newVal)
 

Macro Definition Documentation

#define EPICS_ATOMIC_ADD_INTT

Definition at line 125 of file epicsAtomicCD.h.

#define EPICS_ATOMIC_ADD_SIZET

Definition at line 155 of file epicsAtomicCD.h.

#define EPICS_ATOMIC_CAS_INTT

Definition at line 131 of file epicsAtomicCD.h.

#define EPICS_ATOMIC_CAS_PTRT

Definition at line 174 of file epicsAtomicCD.h.

#define EPICS_ATOMIC_CAS_SIZET

Definition at line 167 of file epicsAtomicCD.h.

#define EPICS_ATOMIC_CMPLR_NAME   "GCC"

Definition at line 23 of file epicsAtomicCD.h.

#define EPICS_ATOMIC_DECR_INTT

Definition at line 119 of file epicsAtomicCD.h.

#define EPICS_ATOMIC_DECR_SIZET

Definition at line 149 of file epicsAtomicCD.h.

#define EPICS_ATOMIC_INCR_INTT

Definition at line 113 of file epicsAtomicCD.h.

#define EPICS_ATOMIC_INCR_SIZET

Definition at line 143 of file epicsAtomicCD.h.

#define EPICS_ATOMIC_READ_MEMORY_BARRIER

Definition at line 90 of file epicsAtomicCD.h.

#define EPICS_ATOMIC_SUB_SIZET

Definition at line 161 of file epicsAtomicCD.h.

#define EPICS_ATOMIC_WRITE_MEMORY_BARRIER

Definition at line 100 of file epicsAtomicCD.h.

#define GCC_ATOMIC_CONCAT (   A,
 
)    GCC_ATOMIC_CONCATR(A,B)

Definition at line 25 of file epicsAtomicCD.h.

#define GCC_ATOMIC_CONCATR (   A,
 
)    ( A ## B )

Definition at line 26 of file epicsAtomicCD.h.

#define GCC_ATOMIC_INTRINSICS_AVAIL_EARLIER
Value:
#define GCC_ATOMIC_INTRINSICS_GCC4_OR_BETTER
Definition: epicsAtomicCD.h:42
#define GCC_ATOMIC_INTRINSICS_MIN_X86
Definition: epicsAtomicCD.h:38

Definition at line 45 of file epicsAtomicCD.h.

#define GCC_ATOMIC_INTRINSICS_AVAIL_INT_T
Value:
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_, \
__SIZEOF_INT__ )
#define GCC_ATOMIC_CONCAT(A, B)
Definition: epicsAtomicCD.h:25

Definition at line 28 of file epicsAtomicCD.h.

#define GCC_ATOMIC_INTRINSICS_AVAIL_SIZE_T
Value:
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_, \
__SIZEOF_SIZE_T__ )
#define GCC_ATOMIC_CONCAT(A, B)
Definition: epicsAtomicCD.h:25

Definition at line 33 of file epicsAtomicCD.h.

#define GCC_ATOMIC_INTRINSICS_GCC4_OR_BETTER   ( ( __GNUC__ * 100 + __GNUC_MINOR__ ) >= 401 )

Definition at line 42 of file epicsAtomicCD.h.

#define GCC_ATOMIC_INTRINSICS_MIN_X86
Value:
( defined ( __i486 ) || defined ( __pentium ) || \
defined ( __pentiumpro ) || defined ( __MMX__ ) )

Definition at line 38 of file epicsAtomicCD.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 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 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 }