From 24e2452bd43d466451ab31ef6e6f29ff4adcdc59 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Thu, 7 Jun 2012 13:38:11 -0500 Subject: [PATCH] libCom/test: epicsAtomic tests Added C++ template instances, so this code loads on a vxWorks 5.5.2 system. --- src/libCom/test/epicsAtomicPerform.cpp | 68 ++++++++++++++++++++++++++ src/libCom/test/epicsAtomicTest.cpp | 32 ++++++++++++ 2 files changed, 100 insertions(+) diff --git a/src/libCom/test/epicsAtomicPerform.cpp b/src/libCom/test/epicsAtomicPerform.cpp index 98b6e9939..2ef005efe 100644 --- a/src/libCom/test/epicsAtomicPerform.cpp +++ b/src/libCom/test/epicsAtomicPerform.cpp @@ -481,6 +481,74 @@ void measure () measurePerformance < typename Ten < T > :: Hundred > (); } + +// template instances, needed for vxWorks 5.5.2 + +#ifdef _MSC_VER +# pragma warning ( push ) +# pragma warning ( disable:4660 ) +#endif + +template class AtomicSet < int >; +template class AtomicSet < size_t >; +template class AtomicSet < EpicsAtomicPtrT >; +template class OrdinaryIncr < int >; +template class OrdinaryIncr < size_t >; +template class AtomicIncr < int >; +template class AtomicIncr < size_t >; +template class AtomicCmpAndSwap < int >; +template class AtomicCmpAndSwap < size_t >; +template class AtomicCmpAndSwap < EpicsAtomicPtrT >; + +template class Ten >; +template class Ten >; +template class Ten >; +template class Ten >; +template class Ten >; +template class Ten >; +template class Ten >; +template class Ten >; +template class Ten >; +template class Ten >; + +template class Ten > >; +template class Ten > >; +template class Ten > >; +template class Ten > >; +template class Ten > >; +template class Ten > >; +template class Ten > >; +template class Ten > >; +template class Ten > >; +template class Ten > >; + +template void measurePerformance < Ten < Ten < AtomicSet < int > > > >(void); +template void measurePerformance < Ten < Ten < AtomicSet < size_t > > > >(void); +template void measurePerformance < Ten < Ten < AtomicSet < EpicsAtomicPtrT > > > >(void); +template void measurePerformance < Ten < Ten < OrdinaryIncr < int > > > >(void); +template void measurePerformance < Ten < Ten < OrdinaryIncr < size_t > > > >(void); +template void measurePerformance < Ten < Ten < AtomicIncr < int > > > >(void); +template void measurePerformance < Ten < Ten < AtomicIncr < size_t > > > >(void); +template void measurePerformance < Ten < Ten < AtomicCmpAndSwap < int > > > >(void); +template void measurePerformance < Ten < Ten < AtomicCmpAndSwap < size_t > > > >(void); +template void measurePerformance < Ten < Ten < AtomicCmpAndSwap < EpicsAtomicPtrT > > > >(void); + +template void measure < AtomicSet < int > > (void); +template void measure < AtomicSet < size_t > > (void); +template void measure < AtomicSet < EpicsAtomicPtrT > > (void); +template void measure < OrdinaryIncr < int > > (void); +template void measure < OrdinaryIncr < size_t > > (void); +template void measure < AtomicIncr < int > > (void); +template void measure < AtomicIncr < size_t > > (void); +template void measure < AtomicCmpAndSwap < int > > (void); +template void measure < AtomicCmpAndSwap < size_t > > (void); +template void measure < AtomicCmpAndSwap < EpicsAtomicPtrT > > (void); + +#ifdef _MSC_VER +# pragma warning ( pop ) +#endif + + MAIN ( epicsAtomicPerform ) { testPlan ( 0 ); diff --git a/src/libCom/test/epicsAtomicTest.cpp b/src/libCom/test/epicsAtomicTest.cpp index 6f8237766..78cfa5b95 100644 --- a/src/libCom/test/epicsAtomicTest.cpp +++ b/src/libCom/test/epicsAtomicTest.cpp @@ -217,6 +217,38 @@ void testCAS () "proper number of CAS test thread not set iterations" ); } +// template instances, needed for vxWorks 5.5.2 + +#ifdef _MSC_VER +# pragma warning ( push ) +# pragma warning ( disable:4660 ) +#endif + +template void incr < int > (void *); +template void decr < int > (void *); +template void incr < size_t > (void *); +template void decr < size_t > (void *); +template void add < int > (void *); +template void sub < int > (void *); +template void add < size_t > (void *); +template void sub < size_t > (void *); +template void cas < int > (void *); +template void cas < size_t > (void *); +template void cas < EpicsAtomicPtrT > (void *); + +template void testIncrDecr < int > (void); +template void testIncrDecr < size_t > (void); +template void testAddSub < int > (void); +template void testAddSub < size_t > (void); +template void testCAS < int > (void); +template void testCAS < size_t > (void); +template void testCAS < EpicsAtomicPtrT > (void); + +#ifdef _MSC_VER +# pragma warning ( pop ) +#endif + + MAIN ( epicsAtomicTest ) {