This is Unofficial EPICS BASE Doxygen Site
timerQueueActive Class Reference

#include "timerPrivate.h"

+ Inheritance diagram for timerQueueActive:
+ Collaboration diagram for timerQueueActive:

Public Types

typedef epicsSingleton< timerQueueActiveMgr >::reference RefMgr
 

Public Member Functions

 timerQueueActive (RefMgr &, bool okToShare, unsigned priority)
 
void start ()
 
epicsTimer & createTimer ()
 
epicsTimerForCcreateTimerForC (epicsTimerCallback pCallback, void *pArg)
 
void show (unsigned int level) const
 
bool sharingOK () const
 
unsigned threadPriority () const
 
- Public Member Functions inherited from timerQueueActiveMgrPrivate
 timerQueueActiveMgrPrivate ()
 

Protected Member Functions

 ~timerQueueActive ()
 
- Protected Member Functions inherited from timerQueueActiveMgrPrivate
virtual ~timerQueueActiveMgrPrivate ()=0
 

Protected Attributes

RefMgr _refMgr
 

Detailed Description

Definition at line 128 of file timerPrivate.h.

Member Typedef Documentation

Definition at line 132 of file timerPrivate.h.

Constructor & Destructor Documentation

timerQueueActive::timerQueueActive ( RefMgr refMgr,
bool  okToShare,
unsigned  priority 
)

Definition at line 44 of file timerQueueActive.cpp.

45  :
46  _refMgr ( refMgr ), queue ( *this ), thread ( *this, "timerQueue",
48  sleepQuantum ( epicsThreadSleepQuantum() ), okToShare ( okToShareIn ),
49  exitFlag ( 0 ), terminateFlag ( false )
50 {
51 }
LIBCOM_API double epicsStdCall epicsThreadSleepQuantum(void)
Query a value approximating the OS timer/scheduler resolution.
Definition: osdThread.c:981
LIBCOM_API unsigned int epicsStdCall epicsThreadGetStackSize(epicsThreadStackSizeClass size)
Definition: osdThread.c:466
timerQueueActive::~timerQueueActive ( )
protected

Definition at line 58 of file timerQueueActive.cpp.

59 {
60  this->terminateFlag = true;
61  this->rescheduleEvent.signal ();
62  while ( ! epics::atomic::get(this->exitFlag) ) {
63  this->exitEvent.wait ( 1.0 );
64  }
65  // in case other threads are waiting here also
66  this->exitEvent.signal ();
67 }
Definition: caget.c:48

Member Function Documentation

epicsTimer & timerQueueActive::createTimer ( )

Definition at line 112 of file timerQueueActive.cpp.

113 {
114  return this->queue.createTimer();
115 }
epicsTimer & createTimer()
Definition: timerQueue.cpp:204
epicsTimerForC & timerQueueActive::createTimerForC ( epicsTimerCallback  pCallback,
void *  pArg 
)

Definition at line 117 of file timerQueueActive.cpp.

118 {
119  return this->queue.createTimerForC ( pCallback, pArg );
120 }
epicsTimerForC & createTimerForC(epicsTimerCallback pCallback, void *pArg)
Definition: timerQueue.cpp:209
bool timerQueueActive::sharingOK ( ) const
inline

Definition at line 228 of file timerPrivate.h.

229 {
230  return this->okToShare;
231 }
void timerQueueActive::show ( unsigned int  level) const

Definition at line 132 of file timerQueueActive.cpp.

133 {
134  printf ( "EPICS threaded timer queue at %p\n",
135  static_cast <const void *> ( this ) );
136  if ( level > 0u ) {
137  // specifying level one here avoids recursive
138  // show callback
139  this->thread.show ( 1u );
140  this->queue.show ( level - 1u );
141  printf ( "reschedule event\n" );
142  this->rescheduleEvent.show ( level - 1u );
143  printf ( "exit event\n" );
144  this->exitEvent.show ( level - 1u );
145  printf ( "exitFlag = %c, terminateFlag = %c\n",
146  epics::atomic::get(this->exitFlag) ? 'T' : 'F',
147  this->terminateFlag ? 'T' : 'F' );
148  }
149 }
void show(unsigned int level) const
Definition: timerQueue.cpp:214
#define printf
Definition: epicsStdio.h:41
Definition: caget.c:48
void timerQueueActive::start ( )

Definition at line 53 of file timerQueueActive.cpp.

54 {
55  this->thread.start ();
56 }
unsigned timerQueueActive::threadPriority ( ) const
inline

Definition at line 233 of file timerPrivate.h.

234 {
235  return thread.getPriority ();
236 }

Member Data Documentation

RefMgr timerQueueActive::_refMgr
protected

Definition at line 142 of file timerPrivate.h.


The documentation for this class was generated from the following files: