Home | History | Annotate | Download | only in lib
      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