68typedef void (*EPICSTHREADFUNC)(
void *parm);
73#define epicsThreadPriorityMax 99
74#define epicsThreadPriorityMin 0
77#define epicsThreadPriorityLow 10
78#define epicsThreadPriorityMedium 50
79#define epicsThreadPriorityHigh 90
82#define epicsThreadPriorityCAServerLow 20
83#define epicsThreadPriorityCAServerHigh 40
84#define epicsThreadPriorityScanLow 60
85#define epicsThreadPriorityScanHigh 70
86#define epicsThreadPriorityIocsh 91
87#define epicsThreadPriorityBaseMax 91
92 epicsThreadStackSmall, epicsThreadStackMedium, epicsThreadStackBig
96 epicsThreadBooleanStatusFail, epicsThreadBooleanStatusSuccess
97} epicsThreadBooleanStatus;
111#define EPICS_THREAD_ONCE_INIT 0
173#define EPICS_THREAD_OPTS_INIT { \
174 epicsThreadPriorityLow, epicsThreadStackMedium, 0}
185 EPICSTHREADFUNC
funptr,
void * parm,
189 const char * name,
unsigned int priority,
unsigned int stackSize,
190 EPICSTHREADFUNC
funptr,
void * parm );
195 const char * name,
unsigned int priority,
unsigned int stackSize,
196 EPICSTHREADFUNC
funptr,
void * parm );
199#define EPICS_THREAD_CAN_JOIN
217LIBCOM_API epicsThreadBooleanStatus epicsStdCall
223LIBCOM_API epicsThreadBooleanStatus epicsStdCall
364 virtual void show (
unsigned int level )
const;
367extern "C" void epicsThreadCallEntryPoint (
void * );
384 unsigned int priority=epicsThreadPriorityLow );
406 void setPriority (
unsigned int )
throw ();
420 static void setOkToBlock (
bool isOkToBlock )
throw ();
430 bool * pThreadDestroyed;
436 bool beginWait ()
throw ();
439 friend void epicsThreadCallEntryPoint (
void * );
440 void printLastChanceExceptionMessage (
444 class exitException {};
451 static void throwUnableToCreateThreadPrivate ();
460 T * get ()
const throw ();
461 void set (T *)
throw ();
468#include "osdThread.h"
476 if ( this->
id == 0 ) {
477 epicsThreadPrivateBase::throwUnableToCreateThreadPrivate ();
Provides an RAII style lock/unlock of a mutex.
The C++ API for an epicsMutex.
epicsThread(epicsThreadRunable &, const char *name, unsigned int stackSize, unsigned int priority=epicsThreadPriorityLow)
Interface used with class epicsThread.
virtual void show(unsigned int level) const
Optional. Called via epicsThread::show()
Compiler specific declarations.
APIs for the epicsEvent binary semaphore.
APIs for the epicsMutex mutual exclusion semaphore.
LIBCOM_API epicsThreadId epicsStdCall epicsThreadGetId(const char *name)
LIBCOM_API epicsThreadBooleanStatus epicsStdCall epicsThreadHighestPriorityLevelBelow(unsigned int priority, unsigned *pPriorityJustBelow)
LIBCOM_API epicsThreadId epicsStdCall epicsThreadGetIdSelf(void)
LIBCOM_API void epicsThreadMustJoin(epicsThreadId id)
LIBCOM_API int epicsStdCall epicsThreadIsOkToBlock(void)
LIBCOM_API unsigned int epicsStdCall epicsThreadGetPrioritySelf(void)
LIBCOM_API void epicsStdCall epicsThreadSetOkToBlock(int isOkToBlock)
LIBCOM_API unsigned int epicsStdCall epicsThreadGetPriority(epicsThreadId id)
LIBCOM_API int epicsThreadGetCPUs(void)
LIBCOM_API epicsThreadId epicsStdCall epicsThreadMustCreate(const char *name, unsigned int priority, unsigned int stackSize, EPICSTHREADFUNC funptr, void *parm)
LIBCOM_API epicsThreadPrivateId epicsStdCall epicsThreadPrivateCreate(void)
LIBCOM_API int epicsThreadHookDelete(EPICS_THREAD_HOOK_ROUTINE hook)
LIBCOM_API unsigned int epicsStdCall epicsThreadGetStackSize(epicsThreadStackSizeClass size)
LIBCOM_API void epicsStdCall epicsThreadSleep(double seconds)
Block the calling thread for at least the specified time.
LIBCOM_API void epicsThreadMap(EPICS_THREAD_HOOK_ROUTINE func)
LIBCOM_API int epicsThreadHookAdd(EPICS_THREAD_HOOK_ROUTINE hook)
LIBCOM_API void epicsStdCall epicsThreadExitMain(void) EPICS_DEPRECATED
LIBCOM_API void epicsThreadHooksShow(void)
LIBCOM_API int epicsStdCall epicsThreadIsSuspended(epicsThreadId id)
LIBCOM_API epicsThreadId epicsThreadCreateOpt(const char *name, EPICSTHREADFUNC funptr, void *parm, const epicsThreadOpts *opts)
Allocate and start a new OS thread.
struct epicsThreadPrivateOSD * epicsThreadPrivateId
LIBCOM_API void epicsStdCall epicsThreadPrivateSet(epicsThreadPrivateId, void *)
LIBCOM_API double epicsStdCall epicsThreadSleepQuantum(void)
Query a value approximating the OS timer/scheduler resolution.
LIBCOM_API epicsThreadId epicsStdCall epicsThreadCreate(const char *name, unsigned int priority, unsigned int stackSize, EPICSTHREADFUNC funptr, void *parm)
LIBCOM_API void epicsStdCall epicsThreadShowAll(unsigned int level)
epicsThreadStackSizeClass
LIBCOM_API void *epicsStdCall epicsThreadPrivateGet(epicsThreadPrivateId)
LIBCOM_API int epicsStdCall epicsThreadIsEqual(epicsThreadId id1, epicsThreadId id2)
LIBCOM_API void epicsStdCall epicsThreadSuspendSelf(void)
void(* EPICS_THREAD_HOOK_ROUTINE)(epicsThreadId id)
LIBCOM_API void epicsThreadRealtimeLock(void)
LIBCOM_API const char *epicsStdCall epicsThreadGetNameSelf(void)
LIBCOM_API void epicsStdCall epicsThreadResume(epicsThreadId id)
LIBCOM_API epicsThreadBooleanStatus epicsStdCall epicsThreadLowestPriorityLevelAbove(unsigned int priority, unsigned *pPriorityJustAbove)
LIBCOM_API void epicsStdCall epicsThreadGetName(epicsThreadId id, char *name, size_t size)
LIBCOM_API void epicsStdCall epicsThreadOnce(epicsThreadOnceId *id, EPICSTHREADFUNC, void *arg)
LIBCOM_API void epicsStdCall epicsThreadShow(epicsThreadId id, unsigned int level)
LIBCOM_API void epicsStdCall epicsThreadSetPriority(epicsThreadId id, unsigned int priority)
LIBCOM_API void epicsStdCall epicsThreadPrivateDelete(epicsThreadPrivateId id)