]> git.sesse.net Git - bcachefs-tools-debian/blob - c_src/include/linux/rwsem.h
rust: bump rpassword to v7.x
[bcachefs-tools-debian] / c_src / include / linux / rwsem.h
1 #ifndef __TOOLS_LINUX_RWSEM_H
2 #define __TOOLS_LINUX_RWSEM_H
3
4 #include <pthread.h>
5
6 struct rw_semaphore {
7         pthread_rwlock_t        lock;
8 };
9
10 #define __RWSEM_INITIALIZER(name)                               \
11         { .lock = PTHREAD_RWLOCK_INITIALIZER }
12
13 #define DECLARE_RWSEM(name) \
14         struct rw_semaphore name = __RWSEM_INITIALIZER(name)
15
16 static inline void init_rwsem(struct rw_semaphore *lock)
17 {
18         pthread_rwlock_init(&lock->lock, NULL);
19 }
20
21 #define down_read(l)            pthread_rwlock_rdlock(&(l)->lock)
22 #define down_read_killable(l)   (pthread_rwlock_rdlock(&(l)->lock), 0)
23 #define down_read_trylock(l)    (!pthread_rwlock_tryrdlock(&(l)->lock))
24 #define up_read(l)              pthread_rwlock_unlock(&(l)->lock)
25
26 #define down_write(l)           pthread_rwlock_wrlock(&(l)->lock)
27 #define up_write(l)             pthread_rwlock_unlock(&(l)->lock)
28
29 #endif /* __TOOLS_LINUX_RWSEM_H */