Lines Matching refs:lock
34 #include <sys/lock.h>
60 #define rw_init(lock, desc, type, arg) do { \
63 for (_name = #lock; *_name != '\0'; _name++) { \
68 _name = #lock; \
69 sx_init_flags((lock), _name, RW_FLAGS); \
71 #define rw_destroy(lock) sx_destroy(lock)
72 #define rw_enter(lock, how) do { \
74 sx_slock(lock); \
76 sx_xlock(lock); \
79 #define rw_tryenter(lock, how) \
80 ((how) == RW_READER ? sx_try_slock(lock) : sx_try_xlock(lock))
81 #define rw_exit(lock) sx_unlock(lock)
82 #define rw_downgrade(lock) sx_downgrade(lock)
83 #define rw_tryupgrade(lock) sx_try_upgrade(lock)
84 #define rw_read_held(lock) \
85 ((lock)->sx_lock != SX_LOCK_UNLOCKED && \
86 ((lock)->sx_lock & SX_LOCK_SHARED))
87 #define rw_write_held(lock) sx_xlocked(lock)
88 #define rw_lock_held(lock) (rw_read_held(lock) || rw_write_held(lock))
89 #define rw_iswriter(lock) sx_xlocked(lock)
90 #define rw_owner(lock) sx_xholder(lock)