27 void workerMain(
void *
arg)
30 unsigned int nrun, ocnt;
138 epicsJob *job = calloc(1,
sizeof(*job));
158 if (!job || !job->
pool) {
200 pool = job->
pool = newpool;
epicsEventId workerWakeup
int epicsJobUnqueue(epicsJob *job)
#define CHECKCOUNT(pPool)
#define assert(exp)
Declare that a condition should be true.
int epicsJobQueue(epicsJob *job)
#define CONTAINER(ptr, structure, member)
Find parent object from a member pointer.
unsigned int freewhendone
void epicsJobDestroy(epicsJob *job)
int createPoolThread(epicsThreadPool *pool)
ELLNODE * ellGet(ELLLIST *pList)
Deletes and returns the first node from a list.
void epicsStdCall epicsMutexUnlock(epicsMutexId pmutexNode)
Release the semaphore.
Miscellaneous macro definitions.
LIBCOM_API void epicsEventMustWait(epicsEventId id)
Wait for an event (see epicsEventWait()).
epicsThreadId epicsStdCall epicsThreadCreate(const char *name, unsigned int priority, unsigned int stackSize, EPICSTHREADFUNC funptr, void *parm)
epicsJob * epicsJobCreate(epicsThreadPool *pool, epicsJobFunction func, void *arg)
int epicsJobMove(epicsJob *job, epicsThreadPool *newpool)
unsigned int threadsWaking
A doubly-linked list library.
void ellAdd(ELLLIST *pList, ELLNODE *pNode)
Adds a node to the end of a list.
unsigned int threadsAreAwake
#define epicsEventSignal(ID)
A synonym for epicsEventTrigger().
APIs for the epicsMutex mutual exclusion semaphore.
unsigned int workerPriority
epicsEventId shutdownEvent
epicsThreadPoolConfig conf
unsigned int observerCount
APIs for the epicsEvent binary semaphore.
unsigned int threadsRunning
unsigned int threadsSleeping
void(* epicsJobFunction)(void *arg, epicsJobMode mode)
C++ and C descriptions for a thread.
#define epicsMutexMustLock(ID)
Claim a semaphore (see epicsMutexLock()).
void ellDelete(ELLLIST *pList, ELLNODE *pNode)
Deletes a node from a list.
void * epicsJobArgSelfMagic
epicsEventId observerWakeup