11 #ifndef EPICSTHREADPOOL_H
12 #define EPICSTHREADPOOL_H
17 #include "libComAPI.h"
20 #define S_pool_jobBusy (M_pool| 1)
21 #define S_pool_jobIdle (M_pool| 2)
22 #define S_pool_noPool (M_pool| 3)
23 #define S_pool_paused (M_pool| 4)
24 #define S_pool_noThreads (M_pool| 5)
25 #define S_pool_timeout (M_pool| 6)
32 unsigned int initialThreads;
33 unsigned int maxThreads;
34 unsigned int workerStack;
35 unsigned int workerPriority;
38 typedef struct epicsThreadPool epicsThreadPool;
53 typedef void (*epicsJobFunction)(
void* arg, epicsJobMode mode);
55 typedef struct epicsJob epicsJob;
69 LIBCOM_API
void epicsThreadPoolReleaseShared(epicsThreadPool *pool);
80 LIBCOM_API
void epicsThreadPoolDestroy(epicsThreadPool *);
84 epicsThreadPoolQueueAdd,
85 epicsThreadPoolQueueRun
86 } epicsThreadPoolOption;
88 LIBCOM_API
void epicsThreadPoolControl(epicsThreadPool* pool,
89 epicsThreadPoolOption opt,
98 LIBCOM_API
int epicsThreadPoolWait(epicsThreadPool* pool,
double timeout);
108 #define EPICSJOB_SELF epicsJobArgSelfMagic
109 LIBCOM_API
extern void* epicsJobArgSelfMagic;
117 LIBCOM_API epicsJob* epicsJobCreate(epicsThreadPool* pool,
125 LIBCOM_API
void epicsJobDestroy(epicsJob*);
133 LIBCOM_API
int epicsJobMove(epicsJob* job, epicsThreadPool* pool);
139 LIBCOM_API
int epicsJobQueue(epicsJob*);
147 LIBCOM_API
int epicsJobUnqueue(epicsJob*);
152 LIBCOM_API
void epicsThreadPoolReport(epicsThreadPool *pool, FILE *fd);
155 LIBCOM_API
unsigned int epicsThreadPoolNThreads(epicsThreadPool *);
161 #endif // EPICSTHREADPOOL_H