blob: bb0b8f851ef021256acb15777897686c7450fe02 [file] [log] [blame]
#ifndef _XFS_REPAIR_THREADS_H_
#define _XFS_REPAIR_THREADS_H_
void thread_init(void);
struct work_queue;
typedef void work_func_t(struct work_queue *, xfs_agnumber_t, void *);
typedef struct work_item {
struct work_item *next;
work_func_t *function;
struct work_queue *queue;
xfs_agnumber_t agno;
void *arg;
} work_item_t;
typedef struct work_queue {
work_item_t *next_item;
work_item_t *last_item;
int item_count;
int thread_count;
pthread_t *threads;
xfs_mount_t *mp;
pthread_mutex_t lock;
pthread_cond_t wakeup;
int terminate;
} work_queue_t;
void
create_work_queue(
work_queue_t *wq,
xfs_mount_t *mp,
int nworkers);
void
queue_work(
work_queue_t *wq,
work_func_t func,
xfs_agnumber_t agno,
void *arg);
void
destroy_work_queue(
work_queue_t *wq);
#endif /* _XFS_REPAIR_THREADS_H_ */