19 #include "libComAPI.h" 31 class LIBCOM_API epicsTimerNotify {
33 enum restart_t { noRestart, restart };
36 LIBCOM_API expireStatus ( restart_t );
37 LIBCOM_API expireStatus ( restart_t,
const double & expireDelaySec );
38 LIBCOM_API
bool restart ()
const;
39 LIBCOM_API
double expirationDelay ()
const;
44 virtual ~epicsTimerNotify () = 0;
46 virtual expireStatus expire (
const epicsTime &
currentTime ) = 0;
47 virtual void show (
unsigned int level )
const;
50 class LIBCOM_API epicsTimer {
53 virtual void destroy () = 0;
54 virtual void start ( epicsTimerNotify &,
const epicsTime & ) = 0;
55 virtual void start ( epicsTimerNotify &,
double delaySeconds ) = 0;
60 virtual void cancel () = 0;
62 expireInfo (
bool active,
const epicsTime & expireTime );
66 virtual expireInfo getExpireInfo ()
const = 0;
67 double getExpireDelay ();
68 virtual void show (
unsigned int level )
const = 0;
70 virtual ~epicsTimer () = 0;
73 class epicsTimerQueue {
75 virtual epicsTimer & createTimer () = 0;
76 virtual void show (
unsigned int level )
const = 0;
78 LIBCOM_API
virtual ~epicsTimerQueue () = 0;
81 class epicsTimerQueueActive
82 :
public epicsTimerQueue {
84 static LIBCOM_API epicsTimerQueueActive &
allocate (
86 virtual void release () = 0;
88 LIBCOM_API
virtual ~epicsTimerQueueActive () = 0;
91 class epicsTimerQueueNotify {
95 virtual void reschedule () = 0;
98 virtual double quantum () = 0;
100 LIBCOM_API
virtual ~epicsTimerQueueNotify () = 0;
103 class epicsTimerQueuePassive
104 :
public epicsTimerQueue {
106 static LIBCOM_API epicsTimerQueuePassive & create ( epicsTimerQueueNotify & );
107 LIBCOM_API
virtual ~epicsTimerQueuePassive () = 0;
108 virtual double process (
const epicsTime &
currentTime ) = 0;
111 inline epicsTimer::expireInfo::expireInfo (
bool activeIn,
112 const epicsTime & expireTimeIn ) :
113 active ( activeIn ), expireTime ( expireTimeIn )
117 inline double epicsTimer::getExpireDelay ()
119 epicsTimer::expireInfo info = this->getExpireInfo ();
121 double delay = info.expireTime - epicsTime::getCurrent ();
138 LIBCOM_API epicsTimerQueueId epicsStdCall
140 LIBCOM_API
void epicsStdCall
142 LIBCOM_API epicsTimerId epicsStdCall
145 LIBCOM_API
void epicsStdCall
147 LIBCOM_API
void epicsStdCall
154 LIBCOM_API epicsTimerQueuePassiveId epicsStdCall
157 LIBCOM_API
void epicsStdCall
159 LIBCOM_API epicsTimerId epicsStdCall
162 LIBCOM_API
void epicsStdCall
164 LIBCOM_API
double epicsStdCall
166 LIBCOM_API
void epicsStdCall
170 LIBCOM_API
void epicsStdCall
172 LIBCOM_API
void epicsStdCall
174 LIBCOM_API
void epicsStdCall
176 LIBCOM_API
double epicsStdCall
178 LIBCOM_API
void epicsStdCall
LIBCOM_API void epicsStdCall epicsTimerQueueDestroyTimer(epicsTimerQueueId queueid, epicsTimerId id)
LIBCOM_API void epicsStdCall epicsTimerQueuePassiveDestroyTimer(epicsTimerQueuePassiveId queueid, epicsTimerId id)
LIBCOM_API void epicsStdCall epicsTimerShow(epicsTimerId id, unsigned int level)
LIBCOM_API void epicsStdCall epicsTimerQueuePassiveShow(epicsTimerQueuePassiveId id, unsigned int level)
LIBCOM_API void epicsStdCall epicsTimerQueueRelease(epicsTimerQueueId)
unsigned threadPriority() const
struct epicsTimerQueueActiveForC * epicsTimerQueueId
LIBCOM_API void epicsStdCall epicsTimerStartTime(epicsTimerId id, const epicsTimeStamp *pTime)
struct epicsTimerQueuePassiveForC * epicsTimerQueuePassiveId
LIBCOM_API void epicsStdCall epicsTimerStartDelay(epicsTimerId id, double delaySeconds)
struct epicsTimerForC * epicsTimerId
LIBCOM_API epicsTimerQueueId epicsStdCall epicsTimerQueueAllocate(int okToShare, unsigned int threadPriority)
void(* epicsTimerCallback)(void *pPrivate)
double(* epicsTimerQueueNotifyQuantum)(void *pPrivate)
LIBCOM_API epicsTimerQueuePassiveId epicsStdCall epicsTimerQueuePassiveCreate(epicsTimerQueueNotifyReschedule, epicsTimerQueueNotifyQuantum, void *pPrivate)
char * allocate(unsigned int n)
LIBCOM_API void epicsStdCall epicsTimerQueuePassiveDestroy(epicsTimerQueuePassiveId)
LIBCOM_API void epicsStdCall epicsTimerQueueShow(epicsTimerQueueId id, unsigned int level)
LIBCOM_API void epicsStdCall epicsTimerCancel(epicsTimerId id)
LIBCOM_API epicsTimerId epicsStdCall epicsTimerQueueCreateTimer(epicsTimerQueueId queueid, epicsTimerCallback callback, void *arg)
LIBCOM_API epicsTimerId epicsStdCall epicsTimerQueuePassiveCreateTimer(epicsTimerQueuePassiveId queueid, epicsTimerCallback pCallback, void *pArg)
EPICS time stamp, for use from C code.
LIBCOM_API double epicsStdCall epicsTimerGetExpireDelay(epicsTimerId id)
epicsPlacementDeleteOperator((void *, tsFreeList< epicsTimerForC, 0x20 > &)) private void pPrivate)
EPICS time-stamps (epicsTimeStamp), epicsTime C++ class and C functions for handling wall-clock times...
LIBCOM_API double epicsStdCall epicsTimerQueuePassiveProcess(epicsTimerQueuePassiveId)
C++ and C descriptions for a thread.
#define epicsThreadPriorityMin
void(* epicsTimerQueueNotifyReschedule)(void *pPrivate)