1 #ifndef FIO_TP_H 2 #define FIO_TP_H 3 4 #include "../flist.h" 5 6 struct tp_work; 7 typedef int (tp_work_fn)(struct tp_work *); 8 9 struct 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 19 struct 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 29 extern void tp_init(struct tp_data **); 30 extern void tp_exit(struct tp_data **); 31 extern void tp_queue_work(struct tp_data *, struct tp_work *); 32 33 #endif 34