epicsAtomicTest: include some information about build conditions
Give some idea which implementations are being used
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
#ifndef epicsAtomicCD_h
|
||||
#define epicsAtomicCD_h
|
||||
|
||||
#define EPICS_ATOMIC_CMPLR_NAME "CLANG"
|
||||
|
||||
#include "epicsAtomicOSD.h"
|
||||
|
||||
#endif /* epicsAtomicCD_h */
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
#ifndef epicsAtomicCD_h
|
||||
#define epicsAtomicCD_h
|
||||
|
||||
#define EPICS_ATOMIC_CMPLR_NAME "DEFAULT"
|
||||
|
||||
#include "epicsAtomicOSD.h"
|
||||
|
||||
#endif /* epicsAtomicCD_h */
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
# error this header is only for use with the gnu compiler
|
||||
#endif
|
||||
|
||||
#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 )
|
||||
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
|
||||
#ifdef _MSC_EXTENSIONS
|
||||
|
||||
#define EPICS_ATOMIC_CMPLR_NAME "MSVC-INTRINSIC"
|
||||
|
||||
#include <intrin.h>
|
||||
|
||||
#if defined ( _M_IX86 )
|
||||
@@ -102,6 +104,8 @@ EPICS_ATOMIC_INLINE void epicsAtomicWriteMemoryBarrier (void)
|
||||
|
||||
#else /* ifdef _MSC_EXTENSIONS */
|
||||
|
||||
#define EPICS_ATOMIC_CMPLR_NAME "MSVC-DIRECT"
|
||||
|
||||
/*
|
||||
* if unavailable as an intrinsic we will try
|
||||
* for os specific inline solution
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
#ifndef epicsAtomicCD_h
|
||||
#define epicsAtomicCD_h
|
||||
|
||||
#define EPICS_ATOMIC_CMPLR_NAME "SOLSTUDIO"
|
||||
|
||||
#include "epicsAtomicOSD.h"
|
||||
|
||||
#endif /* epicsAtomicCD_h */
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
#ifndef epicsAtomicOSD_h
|
||||
#define epicsAtomicOSD_h
|
||||
|
||||
#define EPICS_ATOMIC_OS_NAME "WIN32"
|
||||
|
||||
#ifdef VC_EXTRALEAN
|
||||
# define VC_EXTRALEAN_DETECTED_epicsAtomicOSD_h
|
||||
#else
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
#include <shareLib.h>
|
||||
|
||||
#define EPICS_ATOMIC_OS_NAME "POSIX"
|
||||
|
||||
typedef struct EpicsAtomicLockKey {} EpicsAtomicLockKey;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
#ifndef epicsAtomicOSD_h
|
||||
#define epicsAtomicOSD_h
|
||||
|
||||
#define EPICS_ATOMIC_OS_NAME "Solaris"
|
||||
|
||||
#if defined ( __SunOS_5_10 )
|
||||
|
||||
/*
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
#include <limits.h>
|
||||
#include <vxAtomicLib.h>
|
||||
|
||||
#define EPICS_ATOMIC_OS_NAME "VX-ATOMICLIB"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
@@ -206,6 +208,8 @@ EPICS_ATOMIC_INLINE int epicsAtomicCmpAndSwapIntT ( int * pTarget,
|
||||
#include "vxLib.h"
|
||||
#include "intLib.h"
|
||||
|
||||
#define EPICS_ATOMIC_OS_NAME "VX-INTLIB"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
@@ -248,11 +248,89 @@ template void testCAS < EpicsAtomicPtrT > (void);
|
||||
# pragma warning ( pop )
|
||||
#endif
|
||||
|
||||
static void testClassify()
|
||||
{
|
||||
testDiag("Classify Build conditions");
|
||||
#ifdef EPICS_ATOMIC_CMPLR_NAME
|
||||
testDiag("Compiler dependent impl name %s", EPICS_ATOMIC_CMPLR_NAME);
|
||||
#else
|
||||
testDiag("Compiler dependent impl name undefined");
|
||||
#endif
|
||||
#ifdef EPICS_ATOMIC_CMPLR_NAME
|
||||
testDiag("OS dependent impl name %s", EPICS_ATOMIC_OS_NAME);
|
||||
#else
|
||||
testDiag("OS dependent impl name undefined");
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
#if GCC_ATOMIC_INTRINSICS_GCC4_OR_BETTER
|
||||
testDiag("GCC using atomic builtin memory barrier");
|
||||
#else
|
||||
testDiag("GCC using asm memory barrier");
|
||||
#endif
|
||||
#if GCC_ATOMIC_INTRINSICS_AVAIL_INT_T || GCC_ATOMIC_INTRINSICS_AVAIL_EARLIER
|
||||
testDiag("GCC use builtin for int");
|
||||
#endif
|
||||
#if GCC_ATOMIC_INTRINSICS_AVAIL_SIZE_T || GCC_ATOMIC_INTRINSICS_AVAIL_EARLIER
|
||||
testDiag("GCC use builtin for size_t");
|
||||
#endif
|
||||
|
||||
#ifndef EPICS_ATOMIC_INCR_INTT
|
||||
testDiag("Use default epicsAtomicIncrIntT()");
|
||||
#endif
|
||||
#ifndef EPICS_ATOMIC_INCR_SIZET
|
||||
testDiag("Use default epicsAtomicIncrSizeT()");
|
||||
#endif
|
||||
#ifndef EPICS_ATOMIC_DECR_INTT
|
||||
testDiag("Use default epicsAtomicDecrIntT()");
|
||||
#endif
|
||||
#ifndef EPICS_ATOMIC_DECR_SIZET
|
||||
testDiag("Use default epicsAtomicDecrSizeT()");
|
||||
#endif
|
||||
#ifndef EPICS_ATOMIC_ADD_INTT
|
||||
testDiag("Use default epicsAtomicAddIntT()");
|
||||
#endif
|
||||
#ifndef EPICS_ATOMIC_ADD_SIZET
|
||||
testDiag("Use default epicsAtomicAddSizeT()");
|
||||
#endif
|
||||
#ifndef EPICS_ATOMIC_SUB_SIZET
|
||||
testDiag("Use default epicsAtomicSubSizeT()");
|
||||
#endif
|
||||
#ifndef EPICS_ATOMIC_SET_INTT
|
||||
testDiag("Use default epicsAtomicSetIntT()");
|
||||
#endif
|
||||
#ifndef EPICS_ATOMIC_SET_SIZET
|
||||
testDiag("Use default epicsAtomicSetSizeT()");
|
||||
#endif
|
||||
#ifndef EPICS_ATOMIC_SET_PTRT
|
||||
testDiag("Use default epicsAtomicSetPtrT()");
|
||||
#endif
|
||||
#ifndef EPICS_ATOMIC_GET_INTT
|
||||
testDiag("Use default epicsAtomicGetIntT()");
|
||||
#endif
|
||||
#ifndef EPICS_ATOMIC_GET_SIZET
|
||||
testDiag("Use default epicsAtomicGetSizeT()");
|
||||
#endif
|
||||
#ifndef EPICS_ATOMIC_GET_PTRT
|
||||
testDiag("Use default epicsAtomicGetPtrT()");
|
||||
#endif
|
||||
#ifndef EPICS_ATOMIC_CAS_INTT
|
||||
testDiag("Use default epicsAtomicCmpAndSwapIntT()");
|
||||
#endif
|
||||
#ifndef EPICS_ATOMIC_CAS_SIZET
|
||||
testDiag("Use default epicsAtomicCmpAndSwapSizeT()");
|
||||
#endif
|
||||
#ifndef EPICS_ATOMIC_CAS_PTRT
|
||||
testDiag("Use default epicsAtomicCmpAndSwapPtrT()");
|
||||
#endif
|
||||
#endif /* __GNUC__ */
|
||||
}
|
||||
|
||||
MAIN ( epicsAtomicTest )
|
||||
{
|
||||
|
||||
testPlan ( 31 );
|
||||
testClassify ();
|
||||
|
||||
testIncrDecr < int > ();
|
||||
testIncrDecr < size_t > ();
|
||||
|
||||
Reference in New Issue
Block a user