1 #ifndef __TOOLS_LINUX_RWSEM_H
2 #define __TOOLS_LINUX_RWSEM_H
10 #define __RWSEM_INITIALIZER(name) \
11 { .lock = PTHREAD_RWLOCK_INITIALIZER }
13 #define DECLARE_RWSEM(name) \
14 struct rw_semaphore name = __RWSEM_INITIALIZER(name)
16 static inline void init_rwsem(struct rw_semaphore *lock)
18 pthread_rwlock_init(&lock->lock, NULL);
21 #define down_read(l) pthread_rwlock_rdlock(&(l)->lock)
22 #define down_read_trylock(l) (!pthread_rwlock_tryrdlock(&(l)->lock))
23 #define up_read(l) pthread_rwlock_unlock(&(l)->lock)
25 #define down_write(l) pthread_rwlock_wrlock(&(l)->lock)
26 #define up_write(l) pthread_rwlock_unlock(&(l)->lock)
28 #endif /* __TOOLS_LINUX_RWSEM_H */