RW_LOCK_READ
if (v == (RW_LOCK_READ | RW_LOCK_WRITE_SPINNER)) {
if (!(v & RW_LOCK_READ)) {
if (!(v & RW_LOCK_READ))
LOCKSTAT_WRITER, (state & RW_LOCK_READ) == 0,
(state & RW_LOCK_READ) == 0 ? 0 : RW_READERS(state));
LOCKSTAT_WRITER, (state & RW_LOCK_READ) == 0,
(state & RW_LOCK_READ) == 0 ? 0 : RW_READERS(state));
((v) & RW_LOCK_READ ? NULL : \
(!(rw->rw_lock & RW_LOCK_READ) && (what & RA_RLOCKED ||
if (!(rw->rw_lock & RW_LOCK_READ) && !(what & RA_RLOCKED)) {
} else if (rw->rw_lock & RW_LOCK_READ)
if (rw->rw_lock & RW_LOCK_READ) {
return ((x & RW_LOCK_READ) != 0 ? (RW_READERS(x) != 0) :
if ((v & (RW_LOCK_READ | RW_LOCK_WRITE_WAITERS | RW_LOCK_WRITE_SPINNER))
== RW_LOCK_READ)
if (!fp && td->td_rw_rlocks && (v & RW_LOCK_READ))
if ((v & RW_LOCK_READ) == 0) {
if (!(v & RW_LOCK_READ))
LOCKSTAT_READER, (state & RW_LOCK_READ) == 0,
(state & RW_LOCK_READ) == 0 ? 0 : RW_READERS(state));
LOCKSTAT_READER, (state & RW_LOCK_READ) == 0,
(state & RW_LOCK_READ) == 0 ? 0 : RW_READERS(state));
if (!(x & RW_LOCK_READ))
(RW_LOCK_READ | RW_LOCK_READ_WAITERS | RW_LOCK_WRITE_WAITERS | \
#define RW_READERS_LOCK(x) ((x) << RW_READERS_SHIFT | RW_LOCK_READ)