1 | #ifndef _PERF_RWSEM_H |
2 | #define _PERF_RWSEM_H |
3 | |
4 | #include <pthread.h> |
5 | #include "mutex.h" |
6 | |
7 | /* |
8 | * Mutexes have additional error checking. Enable to use a mutex rather than a |
9 | * rwlock for debugging. |
10 | */ |
11 | #define RWS_ERRORCHECK 0 |
12 | |
13 | struct rw_semaphore { |
14 | #if RWS_ERRORCHECK |
15 | struct mutex mtx; |
16 | #else |
17 | pthread_rwlock_t lock; |
18 | #endif |
19 | }; |
20 | |
21 | int init_rwsem(struct rw_semaphore *sem); |
22 | int exit_rwsem(struct rw_semaphore *sem); |
23 | |
24 | int down_read(struct rw_semaphore *sem); |
25 | int up_read(struct rw_semaphore *sem); |
26 | |
27 | int down_write(struct rw_semaphore *sem); |
28 | int up_write(struct rw_semaphore *sem); |
29 | |
30 | #endif /* _PERF_RWSEM_H */ |
31 | |