Commit | Line | Data |
---|---|---|
07739b57 JA |
1 | #ifndef FIO_MUTEX_H |
2 | #define FIO_MUTEX_H | |
3 | ||
4 | #include <pthread.h> | |
5 | ||
cdd18ad8 | 6 | struct fio_mutex { |
07739b57 JA |
7 | pthread_mutex_t lock; |
8 | pthread_cond_t cond; | |
64d4d313 | 9 | int value; |
4d4e80f2 | 10 | int waiters; |
07739b57 | 11 | |
cdd18ad8 | 12 | int mutex_fd; |
07739b57 JA |
13 | }; |
14 | ||
cdd18ad8 JA |
15 | extern struct fio_mutex *fio_mutex_init(int); |
16 | extern void fio_mutex_remove(struct fio_mutex *); | |
af4bab56 | 17 | extern void fio_mutex_down(struct fio_mutex *); |
656b1393 | 18 | extern int fio_mutex_down_timeout(struct fio_mutex *, unsigned int); |
64d4d313 JA |
19 | extern void fio_mutex_down_read(struct fio_mutex *); |
20 | extern void fio_mutex_down_write(struct fio_mutex *); | |
af4bab56 | 21 | extern void fio_mutex_up(struct fio_mutex *); |
64d4d313 JA |
22 | extern void fio_mutex_up_read(struct fio_mutex *); |
23 | extern void fio_mutex_up_write(struct fio_mutex *); | |
07739b57 | 24 | |
9c5b5290 JA |
25 | static inline struct fio_mutex *fio_mutex_rw_init(void) |
26 | { | |
27 | return fio_mutex_init(0); | |
28 | } | |
29 | ||
4d4e80f2 JA |
30 | static inline int fio_mutex_getval(struct fio_mutex *mutex) |
31 | { | |
32 | return mutex->value; | |
33 | } | |
34 | ||
07739b57 | 35 | #endif |