xref: /linux/tools/perf/util/rwsem.h (revision be239684b18e1cdcafcf8c7face4a2f562c745ad)
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