mutex.h revision 64d4d313ef4f537408d28fac863cf2a2b0f00175
107739b57f09886b41323c605b0dbda7d2c12522bJens Axboe#ifndef FIO_MUTEX_H
207739b57f09886b41323c605b0dbda7d2c12522bJens Axboe#define FIO_MUTEX_H
307739b57f09886b41323c605b0dbda7d2c12522bJens Axboe
407739b57f09886b41323c605b0dbda7d2c12522bJens Axboe#include <pthread.h>
507739b57f09886b41323c605b0dbda7d2c12522bJens Axboe
6cdd18ad87ed9a3639b76c41cfc9682ad7cce652eJens Axboestruct fio_mutex {
707739b57f09886b41323c605b0dbda7d2c12522bJens Axboe	pthread_mutex_t lock;
807739b57f09886b41323c605b0dbda7d2c12522bJens Axboe	pthread_cond_t cond;
964d4d313ef4f537408d28fac863cf2a2b0f00175Jens Axboe	int value;
1007739b57f09886b41323c605b0dbda7d2c12522bJens Axboe
11cdd18ad87ed9a3639b76c41cfc9682ad7cce652eJens Axboe	int mutex_fd;
1207739b57f09886b41323c605b0dbda7d2c12522bJens Axboe};
1307739b57f09886b41323c605b0dbda7d2c12522bJens Axboe
14cdd18ad87ed9a3639b76c41cfc9682ad7cce652eJens Axboeextern struct fio_mutex *fio_mutex_init(int);
15cdd18ad87ed9a3639b76c41cfc9682ad7cce652eJens Axboeextern void fio_mutex_remove(struct fio_mutex *);
16af4bab56db4f87410c491c356954bbb65171f94dJens Axboeextern void fio_mutex_down(struct fio_mutex *);
1764d4d313ef4f537408d28fac863cf2a2b0f00175Jens Axboeextern void fio_mutex_down_read(struct fio_mutex *);
1864d4d313ef4f537408d28fac863cf2a2b0f00175Jens Axboeextern void fio_mutex_down_write(struct fio_mutex *);
19af4bab56db4f87410c491c356954bbb65171f94dJens Axboeextern void fio_mutex_up(struct fio_mutex *);
2064d4d313ef4f537408d28fac863cf2a2b0f00175Jens Axboeextern void fio_mutex_up_read(struct fio_mutex *);
2164d4d313ef4f537408d28fac863cf2a2b0f00175Jens Axboeextern void fio_mutex_up_write(struct fio_mutex *);
2207739b57f09886b41323c605b0dbda7d2c12522bJens Axboe
2307739b57f09886b41323c605b0dbda7d2c12522bJens Axboe#endif
24