16 #ifndef epicsAtomicCD_h 17 #define epicsAtomicCD_h 22 # error this header file is only for use with with the Microsoft Compiler 25 #ifdef _MSC_EXTENSIONS 27 #define EPICS_ATOMIC_CMPLR_NAME "MSVC-INTRINSIC" 31 #if defined ( _M_IX86 ) 32 # pragma warning( push ) 33 # pragma warning( disable : 4793 ) 37 __asm { xchg fence, eax }
39 # pragma warning( pop ) 40 #elif defined ( _M_X64 ) 42 # pragma intrinsic ( __faststorefence ) 47 #elif defined ( _M_IA64 ) 49 # pragma intrinsic ( __mf ) 55 # error unexpected target architecture, msvc version of epicsAtomicCD.h 67 #define MS_InterlockedExchange _InterlockedExchange 68 #define MS_InterlockedCompareExchange _InterlockedCompareExchange 69 #define MS_InterlockedIncrement _InterlockedIncrement 70 #define MS_InterlockedDecrement _InterlockedDecrement 71 #define MS_InterlockedExchange _InterlockedExchange 72 #define MS_InterlockedExchangeAdd _InterlockedExchangeAdd 73 #if defined ( MS_ATOMIC_64 ) 74 # define MS_LONGLONG long long 75 # define MS_InterlockedIncrement64 _InterlockedIncrement64 76 # define MS_InterlockedDecrement64 _InterlockedDecrement64 77 # define MS_InterlockedExchange64 _InterlockedExchange64 78 # define MS_InterlockedExchangeAdd64 _InterlockedExchangeAdd64 79 # define MS_InterlockedCompareExchange64 _InterlockedCompareExchange64 86 #define EPICS_ATOMIC_READ_MEMORY_BARRIER 89 epicsAtomicMemoryBarrier ();
92 #define EPICS_ATOMIC_WRITE_MEMORY_BARRIER 95 epicsAtomicMemoryBarrier ();
107 #define EPICS_ATOMIC_CMPLR_NAME "MSVC-DIRECT" 113 #include "epicsAtomicOSD.h" An EPICS-specific replacement for ANSI C's assert.
EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier(void)
#define EPICS_ATOMIC_INLINE
EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier(void)