| #ifndef FIO_TP_H |
| #define FIO_TP_H |
| |
| #include "../flist.h" |
| |
| struct tp_work; |
| typedef int (tp_work_fn)(struct tp_work *); |
| |
| struct tp_work { |
| struct flist_head list; |
| tp_work_fn *fn; |
| int wait; |
| int prio; |
| pthread_cond_t cv; |
| pthread_mutex_t lock; |
| volatile int done; |
| }; |
| |
| struct tp_data { |
| pthread_t thread; |
| pthread_cond_t cv; |
| pthread_mutex_t lock; |
| struct flist_head work; |
| volatile int thread_exit; |
| pthread_cond_t sleep_cv; |
| volatile int sleeping; |
| }; |
| |
| extern void tp_init(struct tp_data **); |
| extern void tp_exit(struct tp_data **); |
| extern void tp_queue_work(struct tp_data *, struct tp_work *); |
| |
| #endif |