diff --git a/src/libCom/osi/compiler/clang/epicsAtomicCD.h b/src/libCom/osi/compiler/clang/epicsAtomicCD.h index 00fa24e4b..34037869b 100644 --- a/src/libCom/osi/compiler/clang/epicsAtomicCD.h +++ b/src/libCom/osi/compiler/clang/epicsAtomicCD.h @@ -16,16 +16,6 @@ #ifndef epicsAtomicCD_h #define epicsAtomicCD_h -#if defined ( __cplusplus ) -# define EPICS_ATOMIC_INLINE inline -#else -# define EPICS_ATOMIC_INLINE __inline__ -#endif - -/* - * we have an inline keyword so we can proceed - * with an os specific inline instantiation - */ #include "epicsAtomicOSD.h" #endif /* epicsAtomicCD_h */ diff --git a/src/libCom/osi/compiler/default/epicsAtomicCD.h b/src/libCom/osi/compiler/default/epicsAtomicCD.h index 3ca260759..34037869b 100644 --- a/src/libCom/osi/compiler/default/epicsAtomicCD.h +++ b/src/libCom/osi/compiler/default/epicsAtomicCD.h @@ -16,15 +16,6 @@ #ifndef epicsAtomicCD_h #define epicsAtomicCD_h -#if __STDC_VERSION__ >= 199901L || defined ( __cplusplus ) -# define EPICS_ATOMIC_INLINE inline - /* - * We have already defined the public interface in epicsAtomic.h - * so there is nothing more to implement if there isnt an inline - * keyword available. Otherwise, if we have an inline keyword - * we will proceed with an os specific inline implementation. - */ -# include "epicsAtomicOSD.h" -#endif +#include "epicsAtomicOSD.h" #endif /* epicsAtomicCD_h */ diff --git a/src/libCom/osi/compiler/gcc/epicsAtomicCD.h b/src/libCom/osi/compiler/gcc/epicsAtomicCD.h index e3989769f..8f7f97d16 100644 --- a/src/libCom/osi/compiler/gcc/epicsAtomicCD.h +++ b/src/libCom/osi/compiler/gcc/epicsAtomicCD.h @@ -20,8 +20,6 @@ # error this header is only for use with the gnu compiler #endif -#define EPICS_ATOMIC_INLINE __inline__ - #define GCC_ATOMIC_CONCAT( A, B ) GCC_ATOMIC_CONCATR(A,B) #define GCC_ATOMIC_CONCATR( A, B ) ( A ## B ) @@ -69,7 +67,7 @@ extern "C" { #ifndef EPICS_ATOMIC_READ_MEMORY_BARRIER #define EPICS_ATOMIC_READ_MEMORY_BARRIER -EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier () +EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier (void) { __sync_synchronize (); } @@ -77,7 +75,7 @@ EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier () #ifndef EPICS_ATOMIC_WRITE_MEMORY_BARRIER #define EPICS_ATOMIC_WRITE_MEMORY_BARRIER -EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier () +EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier (void) { __sync_synchronize (); } @@ -88,7 +86,7 @@ EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier () #ifndef EPICS_ATOMIC_READ_MEMORY_BARRIER #if GCC_ATOMIC_INTRINSICS_MIN_X86 #define EPICS_ATOMIC_READ_MEMORY_BARRIER -EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier () +EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier (void) { asm("mfence;"); } @@ -98,7 +96,7 @@ EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier () #ifndef EPICS_ATOMIC_WRITE_MEMORY_BARRIER #if GCC_ATOMIC_INTRINSICS_MIN_X86 #define EPICS_ATOMIC_WRITE_MEMORY_BARRIER -EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier () +EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier (void) { asm("mfence;"); } diff --git a/src/libCom/osi/compiler/msvc/epicsAtomicCD.h b/src/libCom/osi/compiler/msvc/epicsAtomicCD.h index f834f0405..282aa971a 100644 --- a/src/libCom/osi/compiler/msvc/epicsAtomicCD.h +++ b/src/libCom/osi/compiler/msvc/epicsAtomicCD.h @@ -26,16 +26,10 @@ #include -#if _MSC_VER >= 1200 -# define EPICS_ATOMIC_INLINE __forceinline -#else -# define EPICS_ATOMIC_INLINE __inline -#endif - #if defined ( _M_IX86 ) # pragma warning( push ) # pragma warning( disable : 4793 ) - EPICS_ATOMIC_INLINE void epicsAtomicMemoryBarrier () + EPICS_ATOMIC_INLINE void epicsAtomicMemoryBarrier (void) { long fence; __asm { xchg fence, eax } @@ -44,14 +38,14 @@ #elif defined ( _M_X64 ) # define MS_ATOMIC_64 # pragma intrinsic ( __faststorefence ) - EPICS_ATOMIC_INLINE void epicsAtomicMemoryBarrier () + EPICS_ATOMIC_INLINE void epicsAtomicMemoryBarrier (void) { __faststorefence (); } #elif defined ( _M_IA64 ) # define MS_ATOMIC_64 # pragma intrinsic ( __mf ) - EPICS_ATOMIC_INLINE void epicsAtomicMemoryBarrier () + EPICS_ATOMIC_INLINE void epicsAtomicMemoryBarrier (void) { __mf (); } @@ -88,13 +82,13 @@ extern "C" { #endif /* __cplusplus */ #define EPICS_ATOMIC_READ_MEMORY_BARRIER -EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier () +EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier (void) { epicsAtomicMemoryBarrier (); } #define EPICS_ATOMIC_WRITE_MEMORY_BARRIER -EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier () +EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier (void) { epicsAtomicMemoryBarrier (); } @@ -108,10 +102,6 @@ EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier () #else /* ifdef _MSC_EXTENSIONS */ -#if defined ( __cplusplus ) -# define EPICS_ATOMIC_INLINE inline -#endif - /* * if unavailable as an intrinsic we will try * for os specific inline solution diff --git a/src/libCom/osi/compiler/solStudio/epicsAtomicCD.h b/src/libCom/osi/compiler/solStudio/epicsAtomicCD.h index 60083cf71..34037869b 100644 --- a/src/libCom/osi/compiler/solStudio/epicsAtomicCD.h +++ b/src/libCom/osi/compiler/solStudio/epicsAtomicCD.h @@ -16,16 +16,6 @@ #ifndef epicsAtomicCD_h #define epicsAtomicCD_h -#if defined ( __cplusplus ) -# define EPICS_ATOMIC_INLINE inline -#else -# define EPICS_ATOMIC_INLINE __inline -#endif - -/* - * we have an inline keyword so we can proceed - * with an os specific inline instantiation - */ #include "epicsAtomicOSD.h" #endif /* epicsAtomicCD_h */ diff --git a/src/libCom/osi/epicsAtomic.h b/src/libCom/osi/epicsAtomic.h index f3d509f56..f568c9de0 100644 --- a/src/libCom/osi/epicsAtomic.h +++ b/src/libCom/osi/epicsAtomic.h @@ -17,7 +17,9 @@ #include /* define size_t */ -#include "shareLib.h" +#include "compilerSpecific.h" + +#define EPICS_ATOMIC_INLINE EPICS_FUNC_INLINE #ifdef __cplusplus extern "C" { @@ -26,10 +28,10 @@ extern "C" { typedef void * EpicsAtomicPtrT; /* load target into cache */ -epicsShareFunc void epicsAtomicReadMemoryBarrier (); +EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier (void); /* push cache version of target into target */ -epicsShareFunc void epicsAtomicWriteMemoryBarrier (); +EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier (void); /* * lock out other smp processors from accessing the target, @@ -37,8 +39,8 @@ epicsShareFunc void epicsAtomicWriteMemoryBarrier (); * to target, allow other smp processors to access the target, * return new value of target as modified by this operation */ -epicsShareFunc size_t epicsAtomicIncrSizeT ( size_t * pTarget ); -epicsShareFunc int epicsAtomicIncrIntT ( int * pTarget ); +EPICS_ATOMIC_INLINE size_t epicsAtomicIncrSizeT ( size_t * pTarget ); +EPICS_ATOMIC_INLINE int epicsAtomicIncrIntT ( int * pTarget ); /* * lock out other smp processors from accessing the target, @@ -46,8 +48,8 @@ epicsShareFunc int epicsAtomicIncrIntT ( int * pTarget ); * to target, allow out other smp processors to access the target, * return new value of target as modified by this operation */ -epicsShareFunc size_t epicsAtomicDecrSizeT ( size_t * pTarget ); -epicsShareFunc int epicsAtomicDecrIntT ( int * pTarget ); +EPICS_ATOMIC_INLINE size_t epicsAtomicDecrSizeT ( size_t * pTarget ); +EPICS_ATOMIC_INLINE int epicsAtomicDecrIntT ( int * pTarget ); /* * lock out other smp processors from accessing the target, @@ -55,23 +57,23 @@ epicsShareFunc int epicsAtomicDecrIntT ( int * pTarget ); * to target, allow other smp processors to access the target, * return new value of target as modified by this operation */ -epicsShareFunc size_t epicsAtomicAddSizeT ( size_t * pTarget, size_t delta ); -epicsShareFunc size_t epicsAtomicSubSizeT ( size_t * pTarget, size_t delta ); -epicsShareFunc int epicsAtomicAddIntT ( int * pTarget, int delta ); +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 ); /* * set cache version of target, flush cache to target */ -epicsShareFunc void epicsAtomicSetSizeT ( size_t * pTarget, size_t newValue ); -epicsShareFunc void epicsAtomicSetIntT ( int * pTarget, int newValue ); -epicsShareFunc void epicsAtomicSetPtrT ( EpicsAtomicPtrT * pTarget, EpicsAtomicPtrT newValue ); +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 ); /* * fetch target into cache, return new value of target */ -epicsShareFunc size_t epicsAtomicGetSizeT ( const size_t * pTarget ); -epicsShareFunc int epicsAtomicGetIntT ( const int * pTarget ); -epicsShareFunc EpicsAtomicPtrT epicsAtomicGetPtrT ( const EpicsAtomicPtrT * pTarget ); +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 ); /* * lock out other smp processors from accessing the target, @@ -80,11 +82,11 @@ epicsShareFunc EpicsAtomicPtrT epicsAtomicGetPtrT ( const EpicsAtomicPtrT * pTar * to access the target, return the original value stored in the * target */ -epicsShareFunc size_t epicsAtomicCmpAndSwapSizeT ( size_t * pTarget, +EPICS_ATOMIC_INLINE size_t epicsAtomicCmpAndSwapSizeT ( size_t * pTarget, size_t oldVal, size_t newVal ); -epicsShareFunc int epicsAtomicCmpAndSwapIntT ( int * pTarget, +EPICS_ATOMIC_INLINE int epicsAtomicCmpAndSwapIntT ( int * pTarget, int oldVal, int newVal ); -epicsShareFunc EpicsAtomicPtrT epicsAtomicCmpAndSwapPtrT ( +EPICS_ATOMIC_INLINE EpicsAtomicPtrT epicsAtomicCmpAndSwapPtrT ( EpicsAtomicPtrT * pTarget, EpicsAtomicPtrT oldVal, EpicsAtomicPtrT newVal ); @@ -111,119 +113,98 @@ namespace atomic { /* * overloaded c++ interface */ -epicsShareFunc size_t increment ( size_t & v ); -epicsShareFunc int increment ( int & v ); -epicsShareFunc size_t decrement ( size_t & v ); -epicsShareFunc int decrement ( int & v ); -epicsShareFunc size_t add ( size_t & v, size_t delta ); -epicsShareFunc int add ( int & v, int delta ); -epicsShareFunc size_t subtract ( size_t & v, size_t delta ); -epicsShareFunc int subtract ( int & v, int delta ); -epicsShareFunc void set ( size_t & v , size_t newValue ); -epicsShareFunc void set ( int & v, int newValue ); -epicsShareFunc void set ( EpicsAtomicPtrT & v, - EpicsAtomicPtrT newValue ); -epicsShareFunc size_t get ( const size_t & v ); -epicsShareFunc int get ( const int & v ); -epicsShareFunc EpicsAtomicPtrT get ( const EpicsAtomicPtrT & v ); -epicsShareFunc size_t compareAndSwap ( size_t & v, size_t oldVal, - size_t newVal ); -epicsShareFunc int compareAndSwap ( int & v, int oldVal, int newVal ); -epicsShareFunc EpicsAtomicPtrT compareAndSwap ( EpicsAtomicPtrT & v, - EpicsAtomicPtrT oldVal, - EpicsAtomicPtrT newVal ); /************* incr ***************/ -inline size_t increment ( size_t & v ) +EPICS_ATOMIC_INLINE size_t increment ( size_t & v ) { return epicsAtomicIncrSizeT ( & v ); } -inline int increment ( int & v ) +EPICS_ATOMIC_INLINE int increment ( int & v ) { return epicsAtomicIncrIntT ( & v ); } /************* decr ***************/ -inline size_t decrement ( size_t & v ) +EPICS_ATOMIC_INLINE size_t decrement ( size_t & v ) { return epicsAtomicDecrSizeT ( & v ); } -inline int decrement ( int & v ) +EPICS_ATOMIC_INLINE int decrement ( int & v ) { return epicsAtomicDecrIntT ( & v ); } /************* add ***************/ -inline size_t add ( size_t & v, size_t delta ) +EPICS_ATOMIC_INLINE size_t add ( size_t & v, size_t delta ) { return epicsAtomicAddSizeT ( & v, delta ); } -inline int add ( int & v, int delta ) +EPICS_ATOMIC_INLINE int add ( int & v, int delta ) { return epicsAtomicAddIntT ( & v, delta ); } /************* sub ***************/ -inline size_t subtract ( size_t & v, size_t delta ) +EPICS_ATOMIC_INLINE size_t subtract ( size_t & v, size_t delta ) { return epicsAtomicSubSizeT ( & v, delta ); } -inline int subtract ( int & v, int delta ) +EPICS_ATOMIC_INLINE int subtract ( int & v, int delta ) { return epicsAtomicAddIntT ( & v, -delta ); } /************* set ***************/ -inline void set ( size_t & v , size_t newValue ) +EPICS_ATOMIC_INLINE void set ( size_t & v , size_t newValue ) { epicsAtomicSetSizeT ( & v, newValue ); } -inline void set ( int & v, int newValue ) +EPICS_ATOMIC_INLINE void set ( int & v, int newValue ) { epicsAtomicSetIntT ( & v, newValue ); } -inline void set ( EpicsAtomicPtrT & v, EpicsAtomicPtrT newValue ) +EPICS_ATOMIC_INLINE void set ( EpicsAtomicPtrT & v, EpicsAtomicPtrT newValue ) { epicsAtomicSetPtrT ( & v, newValue ); } /************* get ***************/ -inline size_t get ( const size_t & v ) +EPICS_ATOMIC_INLINE size_t get ( const size_t & v ) { return epicsAtomicGetSizeT ( & v ); } -inline int get ( const int & v ) +EPICS_ATOMIC_INLINE int get ( const int & v ) { return epicsAtomicGetIntT ( & v ); } -inline EpicsAtomicPtrT get ( const EpicsAtomicPtrT & v ) +EPICS_ATOMIC_INLINE EpicsAtomicPtrT get ( const EpicsAtomicPtrT & v ) { return epicsAtomicGetPtrT ( & v ); } /************* cas ***************/ -inline size_t compareAndSwap ( size_t & v, - size_t oldVal, size_t newVal ) +EPICS_ATOMIC_INLINE size_t compareAndSwap ( size_t & v, + size_t oldVal, size_t newVal ) { return epicsAtomicCmpAndSwapSizeT ( & v, oldVal, newVal ); } -inline int compareAndSwap ( int & v, int oldVal, int newVal ) +EPICS_ATOMIC_INLINE int compareAndSwap ( int & v, int oldVal, int newVal ) { return epicsAtomicCmpAndSwapIntT ( & v, oldVal, newVal ); } -inline EpicsAtomicPtrT compareAndSwap ( EpicsAtomicPtrT & v, - EpicsAtomicPtrT oldVal, - EpicsAtomicPtrT newVal ) +EPICS_ATOMIC_INLINE EpicsAtomicPtrT compareAndSwap ( EpicsAtomicPtrT & v, + EpicsAtomicPtrT oldVal, + EpicsAtomicPtrT newVal ) { return epicsAtomicCmpAndSwapPtrT ( & v, oldVal, newVal ); } diff --git a/src/libCom/osi/os/WIN32/epicsAtomicOSD.cpp b/src/libCom/osi/os/WIN32/epicsAtomicOSD.cpp deleted file mode 100644 index e3f684e29..000000000 --- a/src/libCom/osi/os/WIN32/epicsAtomicOSD.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -/*************************************************************************\ -* Copyright (c) 2011 LANS LLC, as Operator of -* Los Alamos National Laboratory. -* EPICS BASE is distributed subject to a Software License Agreement found -* in file LICENSE that is included with this distribution. -\*************************************************************************/ - -/* - * Author Jeffrey O. Hill - * johill@lanl.gov - */ - -#define epicsExportSharedSymbols -#include "epicsAtomic.h" - -// if the compiler is unable to inline then instantiate out-of-line -#ifndef EPICS_ATOMIC_INLINE -# define EPICS_ATOMIC_INLINE -# include "epicsAtomicOSD.h" -#endif - diff --git a/src/libCom/osi/os/default/epicsAtomicOSD.c b/src/libCom/osi/os/default/epicsAtomicOSD.c new file mode 100644 index 000000000..e69de29bb diff --git a/src/libCom/osi/os/posix/epicsAtomicOSD.cpp b/src/libCom/osi/os/posix/epicsAtomicOSD.cpp index 6e94cbcc4..1cc227fcd 100644 --- a/src/libCom/osi/os/posix/epicsAtomicOSD.cpp +++ b/src/libCom/osi/os/posix/epicsAtomicOSD.cpp @@ -19,14 +19,6 @@ #include "epicsAssert.h" #include "epicsAtomic.h" -// if the compiler is unable to inline then instantiate out-of-line -#ifndef EPICS_ATOMIC_INLINE -# define EPICS_ATOMIC_INLINE -# include "epicsAtomicOSD.h" -#endif - -#ifndef EPICS_ATOMIC_LOCK - /* * Slow, but probably correct on all systems. * Useful only if something more efficient isn`t @@ -69,31 +61,14 @@ void epicsAtomicUnlock ( EpicsAtomicLockKey * ) assert ( status == 0 ); } -#endif // ifndef EPICS_ATOMIC_LOCK -#ifndef EPICS_ATOMIC_READ_MEMORY_BARRIER // Slow, but probably correct on all systems. // Useful only if something more efficient isn`t // provided based on knowledge of the compiler // or OS -void epicsAtomicReadMemoryBarrier () +void epicsAtomicMemoryBarrierFallback (void) { EpicsAtomicLockKey key; epicsAtomicLock ( & key ); epicsAtomicUnlock ( & key ); } -#endif - -#ifndef EPICS_ATOMIC_WRITE_MEMORY_BARRIER -// Slow, but probably correct on all systems. -// Useful only if something more efficient isn`t -// provided based on knowledge of the compiler -// or OS -void epicsAtomicWriteMemoryBarrier () -{ - EpicsAtomicLockKey key; - epicsAtomicLock ( & key ); - epicsAtomicUnlock ( & key ); -} -#endif - diff --git a/src/libCom/osi/os/posix/epicsAtomicOSD.h b/src/libCom/osi/os/posix/epicsAtomicOSD.h index ff972016d..fdc38dfe2 100644 --- a/src/libCom/osi/os/posix/epicsAtomicOSD.h +++ b/src/libCom/osi/os/posix/epicsAtomicOSD.h @@ -16,14 +16,31 @@ #ifndef epicsAtomicOSD_h #define epicsAtomicOSD_h +#include + typedef struct EpicsAtomicLockKey {} EpicsAtomicLockKey; #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ +#ifndef EPICS_ATOMIC_READ_MEMORY_BARRIER +EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier (void) +{ + epicsAtomicMemoryBarrierFallback(); +} +#endif + +#ifndef EPICS_ATOMIC_READ_MEMORY_BARRIER +EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier (void) +{ + epicsAtomicMemoryBarrierFallback(); +} +#endif + epicsShareFunc void epicsAtomicLock ( struct EpicsAtomicLockKey * ); epicsShareFunc void epicsAtomicUnlock ( struct EpicsAtomicLockKey * ); +epicsShareFunc void epicsAtomicMemoryBarrierFallback ( void ); #ifdef __cplusplus } /* end of extern "C" */ diff --git a/src/libCom/osi/os/solaris/epicsAtomicOSD.h b/src/libCom/osi/os/solaris/epicsAtomicOSD.h index 6dbda494d..14a5f1502 100644 --- a/src/libCom/osi/os/solaris/epicsAtomicOSD.h +++ b/src/libCom/osi/os/solaris/epicsAtomicOSD.h @@ -13,6 +13,8 @@ * johill@lanl.gov */ +#include "shareLib.h" + #ifndef epicsAtomicOSD_h #define epicsAtomicOSD_h @@ -31,7 +33,7 @@ extern "C" { #ifndef EPICS_ATOMIC_READ_MEMORY_BARRIER #define EPICS_ATOMIC_READ_MEMORY_BARRIER -EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier () +EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier (void) { membar_consumer (); } @@ -39,7 +41,7 @@ EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier () #ifndef EPICS_ATOMIC_WRITE_MEMORY_BARRIER #define EPICS_ATOMIC_WRITE_MEMORY_BARRIER -EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier () +EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier (void) { membar_producer (); } @@ -47,7 +49,7 @@ EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier () #ifndef EPICS_ATOMIC_CAS_INTT #define EPICS_ATOMIC_CAS_INTT -EPICS_ATOMIC_INLINE int epicsAtomicCmpAndSwapIntT ( int * pTarget, +EPICS_ATOMIC_INLINE int epicsAtomicCmpAndSwapIntT ( int * pTarget, int oldVal, int newVal ) { STATIC_ASSERT ( sizeof ( int ) == sizeof ( unsigned ) ); @@ -59,7 +61,7 @@ EPICS_ATOMIC_INLINE int epicsAtomicCmpAndSwapIntT ( int * pTarget, #ifndef EPICS_ATOMIC_CAS_SIZET #define EPICS_ATOMIC_CAS_SIZET -EPICS_ATOMIC_INLINE size_t epicsAtomicCmpAndSwapSizeT ( +EPICS_ATOMIC_INLINE size_t epicsAtomicCmpAndSwapSizeT ( size_t * pTarget, size_t oldVal, size_t newVal ) { @@ -71,7 +73,7 @@ EPICS_ATOMIC_INLINE size_t epicsAtomicCmpAndSwapSizeT ( #ifndef EPICS_ATOMIC_CAS_PTRT #define EPICS_ATOMIC_CAS_PTRT -EPICS_ATOMIC_INLINE EpicsAtomicPtrT epicsAtomicCmpAndSwapPtrT ( +EPICS_ATOMIC_INLINE EpicsAtomicPtrT epicsAtomicCmpAndSwapPtrT ( EpicsAtomicPtrT * pTarget, EpicsAtomicPtrT oldVal, EpicsAtomicPtrT newVal ) @@ -132,7 +134,7 @@ EPICS_ATOMIC_INLINE int epicsAtomicAddIntT ( int * pTarget, int delta ) #ifndef EPICS_ATOMIC_ADD_SIZET #define EPICS_ATOMIC_ADD_SIZET -EPICS_ATOMIC_INLINE size_t epicsAtomicAddSizeT ( size_t * pTarget, +EPICS_ATOMIC_INLINE size_t epicsAtomicAddSizeT ( size_t * pTarget, size_t delta ) { STATIC_ASSERT ( sizeof ( ulong_t ) == sizeof ( size_t ) ); @@ -143,7 +145,7 @@ EPICS_ATOMIC_INLINE size_t epicsAtomicAddSizeT ( size_t * pTarget, #ifndef EPICS_ATOMIC_SUB_SIZET #define EPICS_ATOMIC_SUB_SIZET -EPICS_ATOMIC_INLINE size_t epicsAtomicSubSizeT ( size_t * pTarget, +EPICS_ATOMIC_INLINE size_t epicsAtomicSubSizeT ( size_t * pTarget, size_t delta ) { STATIC_ASSERT ( sizeof ( ulong_t ) == sizeof ( size_t ) ); diff --git a/src/libCom/osi/os/vxWorks/epicsAtomicOSD.cpp b/src/libCom/osi/os/vxWorks/epicsAtomicOSD.cpp deleted file mode 100644 index 6a9f529a3..000000000 --- a/src/libCom/osi/os/vxWorks/epicsAtomicOSD.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -/*************************************************************************\ -* Copyright (c) 2011 LANS LLC, as Operator of -* Los Alamos National Laboratory. -* EPICS BASE is distributed subject to a Software License Agreement found -* in file LICENSE that is included with this distribution. -\*************************************************************************/ - -/* - * Author Jeffrey O. Hill - * johill@lanl.gov - */ - -#define epicsExportSharedSymbols -#include "epicsAtomic.h" - -// if the compiler is unable to inline then instantiate out-of-line -#ifndef EPICS_ATOMIC_INLINE -# define EPICS_ATOMIC_INLINE -# include "epicsAtomicOSD.h" -#endif diff --git a/src/libCom/osi/os/vxWorks/epicsAtomicOSD.h b/src/libCom/osi/os/vxWorks/epicsAtomicOSD.h index 5454e70ba..32a7d5a10 100644 --- a/src/libCom/osi/os/vxWorks/epicsAtomicOSD.h +++ b/src/libCom/osi/os/vxWorks/epicsAtomicOSD.h @@ -38,7 +38,7 @@ extern "C" { #ifndef EPICS_ATOMIC_READ_MEMORY_BARRIER #define EPICS_ATOMIC_READ_MEMORY_BARRIER -EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier () +EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier (void) { VX_MEM_BARRIER_R (); } @@ -46,7 +46,7 @@ EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier () #ifndef EPICS_ATOMIC_WRITE_MEMORY_BARRIER #define EPICS_ATOMIC_WRITE_MEMORY_BARRIER -EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier () +EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier (void) { VX_MEM_BARRIER_W (); } @@ -232,7 +232,7 @@ EPICS_ATOMIC_INLINE void epicsAtomicUnlock ( EpicsAtomicLockKey * pKey ) * no need for memory barrior since prior to vxWorks 6.6 it is a single cpu system * (we are not protecting against multiple access to memory mapped IO) */ -EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier () {} +EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier (void) {} #endif #ifndef EPICS_ATOMIC_WRITE_MEMORY_BARRIER @@ -241,7 +241,7 @@ EPICS_ATOMIC_INLINE void epicsAtomicReadMemoryBarrier () {} * no need for memory barrior since prior to vxWorks 6.6 it is a single cpu system * (we are not protecting against multiple access to memory mapped IO) */ -EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier () {} +EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier (void) {} #endif #ifdef __cplusplus