1 #ifndef _PERF_RWSEM_H 1 #ifndef _PERF_RWSEM_H 2 #define _PERF_RWSEM_H 2 #define _PERF_RWSEM_H 3 3 4 #include <pthread.h> 4 #include <pthread.h> 5 #include "mutex.h" 5 #include "mutex.h" 6 6 7 /* 7 /* 8 * Mutexes have additional error checking. Ena 8 * Mutexes have additional error checking. Enable to use a mutex rather than a 9 * rwlock for debugging. 9 * rwlock for debugging. 10 */ 10 */ 11 #define RWS_ERRORCHECK 0 11 #define RWS_ERRORCHECK 0 12 12 13 struct rw_semaphore { 13 struct rw_semaphore { 14 #if RWS_ERRORCHECK 14 #if RWS_ERRORCHECK 15 struct mutex mtx; 15 struct mutex mtx; 16 #else 16 #else 17 pthread_rwlock_t lock; 17 pthread_rwlock_t lock; 18 #endif 18 #endif 19 }; 19 }; 20 20 21 int init_rwsem(struct rw_semaphore *sem); 21 int init_rwsem(struct rw_semaphore *sem); 22 int exit_rwsem(struct rw_semaphore *sem); 22 int exit_rwsem(struct rw_semaphore *sem); 23 23 24 int down_read(struct rw_semaphore *sem); 24 int down_read(struct rw_semaphore *sem); 25 int up_read(struct rw_semaphore *sem); 25 int up_read(struct rw_semaphore *sem); 26 26 27 int down_write(struct rw_semaphore *sem); 27 int down_write(struct rw_semaphore *sem); 28 int up_write(struct rw_semaphore *sem); 28 int up_write(struct rw_semaphore *sem); 29 29 30 #endif /* _PERF_RWSEM_H */ 30 #endif /* _PERF_RWSEM_H */ 31 31
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.