From c6c4b1b4c392d4e4cdb03992b7c124270e2fb3c6 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Thu, 8 Mar 2001 21:54:45 +0000 Subject: [PATCH] timer queue name changes --- src/libCom/timer/epicsTimer.cpp | 12 +++++----- src/libCom/timer/epicsTimer.h | 18 ++++++++------ src/libCom/timer/timerPrivate.h | 30 ++++++++++++------------ src/libCom/timer/timerQueue.cpp | 2 ++ src/libCom/timer/timerQueueActive.cpp | 6 ++--- src/libCom/timer/timerQueueActiveMgr.cpp | 8 +++---- 6 files changed, 41 insertions(+), 35 deletions(-) diff --git a/src/libCom/timer/epicsTimer.cpp b/src/libCom/timer/epicsTimer.cpp index 793dc3be9..0a20882b0 100644 --- a/src/libCom/timer/epicsTimer.cpp +++ b/src/libCom/timer/epicsTimer.cpp @@ -101,19 +101,19 @@ epicsTimerNotify::expireStatus epicsTimerForC::expire () return noRestart; } -tsFreeList < epicsTimerQueueForC > epicsTimerQueueForC::freeList; -epicsMutex epicsTimerQueueForC::freeListMutex; +tsFreeList < epicsTimerQueueActiveForC > epicsTimerQueueActiveForC::freeList; +epicsMutex epicsTimerQueueActiveForC::freeListMutex; -epicsTimerQueueForC::epicsTimerQueueForC ( bool okToShare, unsigned priority ) : +epicsTimerQueueActiveForC::epicsTimerQueueActiveForC ( bool okToShare, unsigned priority ) : timerQueueActive ( okToShare, priority ) { } -epicsTimerQueueForC::~epicsTimerQueueForC () +epicsTimerQueueActiveForC::~epicsTimerQueueActiveForC () { } -void epicsTimerQueueForC::release () +void epicsTimerQueueActiveForC::release () { queueMgr.release ( *this ); } @@ -205,7 +205,7 @@ extern "C" epicsTimerQueueId epicsShareAPI epicsTimerQueueAllocate ( int okToShare, unsigned int threadPriority ) { try { - epicsTimerQueueForC &tmr = queueMgr.allocate ( okToShare ? true : false, threadPriority ); + epicsTimerQueueActiveForC &tmr = queueMgr.allocate ( okToShare ? true : false, threadPriority ); return &tmr; } catch ( ... ) { diff --git a/src/libCom/timer/epicsTimer.h b/src/libCom/timer/epicsTimer.h index ea88be41d..573ec1024 100644 --- a/src/libCom/timer/epicsTimer.h +++ b/src/libCom/timer/epicsTimer.h @@ -51,15 +51,21 @@ public: class epicsTimerQueue { public: - static epicsShareFunc epicsTimerQueue & allocate ( - bool okToShare, int threadPriority = epicsThreadPriorityMin + 10 ); - virtual void release () = 0; virtual epicsTimer & createTimer ( epicsTimerNotify & ) = 0; virtual void show ( unsigned int level ) const = 0; protected: virtual ~epicsTimerQueue () = 0; }; +class epicsTimerQueueActive : public epicsTimerQueue { +public: + static epicsShareFunc epicsTimerQueueActive & allocate ( + bool okToShare, int threadPriority = epicsThreadPriorityMin + 10 ); + virtual void release () = 0; +protected: + virtual ~epicsTimerQueueActive () = 0; +}; + class epicsTimerQueueNotify { public: // called when a new timer is inserted into the queue and the @@ -67,14 +73,12 @@ public: virtual void reschedule () = 0; }; -class epicsTimerQueuePassive { +class epicsTimerQueuePassive : public epicsTimerQueue { public: static epicsShareFunc epicsTimerQueuePassive & create ( epicsTimerQueueNotify & ); virtual ~epicsTimerQueuePassive () = 0; - virtual epicsTimer & createTimer ( epicsTimerNotify & ) = 0; virtual void process () = 0; virtual double getNextExpireDelay () const = 0; - virtual void show ( unsigned int level ) const = 0; }; inline epicsTimerNotify::expireStatus::expireStatus ( restart_t restart ) : @@ -108,7 +112,7 @@ typedef struct epicsTimerForC * epicsTimerId; typedef void ( *epicsTimerCallback ) ( void *pPrivate ); /* thread managed timer queue */ -typedef struct epicsTimerQueueForC * epicsTimerQueueId; +typedef struct epicsTimerQueueActiveForC * epicsTimerQueueId; epicsShareFunc epicsTimerQueueId epicsShareAPI epicsTimerQueueAllocate ( int okToShare, unsigned int threadPriority ); epicsShareFunc void epicsShareAPI diff --git a/src/libCom/timer/timerPrivate.h b/src/libCom/timer/timerPrivate.h index af5023bc8..6b328cc01 100644 --- a/src/libCom/timer/timerPrivate.h +++ b/src/libCom/timer/timerPrivate.h @@ -96,7 +96,7 @@ private: friend class timerQueueActiveMgr; }; -class timerQueueActive : public epicsTimerQueue, +class timerQueueActive : public epicsTimerQueueActive, public epicsThreadRunable, public epicsTimerQueueNotify, public timerQueueActiveMgrPrivate { public: @@ -119,29 +119,29 @@ private: void reschedule (); }; -struct epicsTimerQueueForC : public timerQueueActive, - public tsDLNode < epicsTimerQueueForC > { +struct epicsTimerQueueActiveForC : public timerQueueActive, + public tsDLNode < epicsTimerQueueActiveForC > { public: - epicsTimerQueueForC ( bool okToShare, unsigned priority ); + epicsTimerQueueActiveForC ( bool okToShare, unsigned priority ); void release (); void * operator new ( size_t size ); void operator delete ( void *pCadaver, size_t size ); protected: - virtual ~epicsTimerQueueForC (); + virtual ~epicsTimerQueueActiveForC (); private: - static tsFreeList < epicsTimerQueueForC > freeList; + static tsFreeList < epicsTimerQueueActiveForC > freeList; static epicsMutex freeListMutex; }; class timerQueueActiveMgr { public: ~timerQueueActiveMgr (); - epicsTimerQueueForC & allocate ( bool okToShare, + epicsTimerQueueActiveForC & allocate ( bool okToShare, int threadPriority = epicsThreadPriorityMin + 10 ); - void release ( epicsTimerQueueForC & ); + void release ( epicsTimerQueueActiveForC & ); private: epicsMutex mutex; - tsDLList < epicsTimerQueueForC > sharedQueueList; + tsDLList < epicsTimerQueueActiveForC > sharedQueueList; }; extern timerQueueActiveMgr queueMgr; @@ -223,16 +223,16 @@ inline timerQueue & timerQueuePassive::getTimerQueue () return this->queue; } -inline void * epicsTimerQueueForC::operator new ( size_t size ) +inline void * epicsTimerQueueActiveForC::operator new ( size_t size ) { - epicsAutoMutex locker ( epicsTimerQueueForC::freeListMutex ); - return epicsTimerQueueForC::freeList.allocate ( size ); + epicsAutoMutex locker ( epicsTimerQueueActiveForC::freeListMutex ); + return epicsTimerQueueActiveForC::freeList.allocate ( size ); } -inline void epicsTimerQueueForC::operator delete ( void *pCadaver, size_t size ) +inline void epicsTimerQueueActiveForC::operator delete ( void *pCadaver, size_t size ) { - epicsAutoMutex locker ( epicsTimerQueueForC::freeListMutex ); - epicsTimerQueueForC::freeList.release ( pCadaver, size ); + epicsAutoMutex locker ( epicsTimerQueueActiveForC::freeListMutex ); + epicsTimerQueueActiveForC::freeList.release ( pCadaver, size ); } #endif // epicsTimerPrivate_h diff --git a/src/libCom/timer/timerQueue.cpp b/src/libCom/timer/timerQueue.cpp index fbfd2348d..b2e82dbae 100644 --- a/src/libCom/timer/timerQueue.cpp +++ b/src/libCom/timer/timerQueue.cpp @@ -31,6 +31,8 @@ #define epicsExportSharedSymbols #include "timerPrivate.h" +epicsTimerQueue::~epicsTimerQueue () {} + timerQueue::timerQueue ( epicsTimerQueueNotify ¬ifyIn ) : notify ( notifyIn ), pExpireTmr ( 0 ), processThread ( 0 ), cancelPending ( false ) diff --git a/src/libCom/timer/timerQueueActive.cpp b/src/libCom/timer/timerQueueActive.cpp index 5ed6d7bd2..dbabafe98 100644 --- a/src/libCom/timer/timerQueueActive.cpp +++ b/src/libCom/timer/timerQueueActive.cpp @@ -33,15 +33,15 @@ timerQueueActiveMgr queueMgr; -epicsTimerQueue::~epicsTimerQueue () {} +epicsTimerQueueActive::~epicsTimerQueueActive () {} -epicsTimerQueue &epicsTimerQueue::allocate ( bool okToShare, int threadPriority ) +epicsTimerQueueActive &epicsTimerQueueActive::allocate ( bool okToShare, int threadPriority ) { return queueMgr.allocate ( okToShare, threadPriority ); } timerQueueActive::timerQueueActive ( bool okToShareIn, unsigned priority ) : - queue ( *this ), thread ( *this, "epicsTimerQueue", + queue ( *this ), thread ( *this, "epicsTimerQueueActive", epicsThreadGetStackSize ( epicsThreadStackMedium ), priority ), okToShare ( okToShareIn ), exitFlag ( false ), terminateFlag ( false ) { diff --git a/src/libCom/timer/timerQueueActiveMgr.cpp b/src/libCom/timer/timerQueueActiveMgr.cpp index 623efd42f..f08bb36cd 100644 --- a/src/libCom/timer/timerQueueActiveMgr.cpp +++ b/src/libCom/timer/timerQueueActiveMgr.cpp @@ -38,12 +38,12 @@ timerQueueActiveMgr::~timerQueueActiveMgr () epicsAutoMutex locker ( this->mutex ); } -epicsTimerQueueForC & timerQueueActiveMgr::allocate ( +epicsTimerQueueActiveForC & timerQueueActiveMgr::allocate ( bool okToShare, int threadPriority ) { epicsAutoMutex locker ( this->mutex ); if ( okToShare ) { - tsDLIterBD < epicsTimerQueueForC > iter = this->sharedQueueList.firstIter (); + tsDLIterBD < epicsTimerQueueActiveForC > iter = this->sharedQueueList.firstIter (); while ( iter.valid () ) { if ( iter->threadPriority () == threadPriority ) { assert ( iter->timerQueueActiveMgrPrivate::referenceCount < UINT_MAX ); @@ -52,7 +52,7 @@ epicsTimerQueueForC & timerQueueActiveMgr::allocate ( } } } - epicsTimerQueueForC *pQueue = new epicsTimerQueueForC ( okToShare, threadPriority ); + epicsTimerQueueActiveForC *pQueue = new epicsTimerQueueActiveForC ( okToShare, threadPriority ); if ( ! pQueue ) { throwWithLocation ( timer::noMemory () ); } @@ -63,7 +63,7 @@ epicsTimerQueueForC & timerQueueActiveMgr::allocate ( return *pQueue; } -void timerQueueActiveMgr::release ( epicsTimerQueueForC &queue ) +void timerQueueActiveMgr::release ( epicsTimerQueueActiveForC &queue ) { epicsAutoMutex locker ( this->mutex ); assert ( queue.timerQueueActiveMgrPrivate::referenceCount > 0u );