1#ifndef FIO_TP_H
2#define FIO_TP_H
3
4#include "../flist.h"
5
6struct tp_work;
7typedef int (tp_work_fn)(struct tp_work *);
8
9struct tp_work {
10	struct flist_head list;
11	tp_work_fn *fn;
12	int wait;
13	int prio;
14	pthread_cond_t cv;
15	pthread_mutex_t lock;
16	volatile int done;
17};
18
19struct tp_data {
20	pthread_t thread;
21	pthread_cond_t cv;
22	pthread_mutex_t lock;
23	struct flist_head work;
24	volatile int thread_exit;
25	pthread_cond_t sleep_cv;
26	volatile int sleeping;
27};
28
29extern void tp_init(struct tp_data **);
30extern void tp_exit(struct tp_data **);
31extern void tp_queue_work(struct tp_data *, struct tp_work *);
32
33#endif
34