#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