Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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
13struct LOCKABLE rw_semaphore {
14#if RWS_ERRORCHECK
15 struct mutex mtx;
16#else
17 pthread_rwlock_t lock;
18#endif
19};
20
21int init_rwsem(struct rw_semaphore *sem);
22int exit_rwsem(struct rw_semaphore *sem);
23
24int down_read(struct rw_semaphore *sem) SHARED_LOCK_FUNCTION(sem);
25int up_read(struct rw_semaphore *sem) UNLOCK_FUNCTION(sem);
26
27int down_write(struct rw_semaphore *sem) EXCLUSIVE_LOCK_FUNCTION(sem);
28int up_write(struct rw_semaphore *sem) UNLOCK_FUNCTION(sem);
29
30#endif /* _PERF_RWSEM_H */