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