]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - sys/gnu/fs/xfs/FreeBSD/support/rwlock.h
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / sys / gnu / fs / xfs / FreeBSD / support / rwlock.h
1 #ifndef __XFS_SUPPORT_RWLOCK_H__
2 #define __XFS_SUPPORT_RWLOCK_H__
3
4 #include <sys/param.h>
5 #include <sys/lock.h>
6 #include <sys/mutex.h>
7 #include <sys/sx.h>
8
9 typedef struct sx rwlock_t;
10 typedef int    wait_queue_head_t;
11
12 #define rwlock_init(lock)       sx_init(lock, "rwlock")
13 #define rwlock_destroy(lock)    sx_destroy(lock)
14 #define read_lock(lock)         sx_slock(lock)
15 #define read_unlock(lock)       sx_sunlock(lock)
16 #define write_lock(lock)        sx_xlock(lock)
17 #define write_trylock(lock)     sx_try_xlock(lock)
18 #define write_unlock(lock)      sx_xunlock(lock)
19 #define rwlock_trypromote(lock) sx_try_upgrade(lock)
20 #define rwlock_demote(lock)     sx_downgrade(lock)
21
22
23 #endif /* __XFS_SUPPORT_RWLOCK_H__ */