RW_LOCK_WRITE_WAITERS
!((v & RW_LOCK_WRITE_WAITERS))) {
setv |= RW_LOCK_WRITE_WAITERS;
if (!(v & RW_LOCK_WRITE_WAITERS)) {
v | RW_LOCK_WRITE_WAITERS))
KASSERT(rw->rw_lock & (RW_LOCK_READ_WAITERS | RW_LOCK_WRITE_WAITERS),
if (v & RW_LOCK_WRITE_WAITERS) {
wwait = v & RW_LOCK_WRITE_WAITERS;
switch (rw->rw_lock & (RW_LOCK_READ_WAITERS | RW_LOCK_WRITE_WAITERS)) {
case RW_LOCK_WRITE_WAITERS:
case RW_LOCK_READ_WAITERS | RW_LOCK_WRITE_WAITERS:
if ((v & (RW_LOCK_READ | RW_LOCK_WRITE_WAITERS | RW_LOCK_WRITE_SPINNER))
if (v & RW_LOCK_WRITE_WAITERS) {
(RW_LOCK_READ | RW_LOCK_READ_WAITERS | RW_LOCK_WRITE_WAITERS | \
#define RW_LOCK_WAITERS (RW_LOCK_READ_WAITERS | RW_LOCK_WRITE_WAITERS)
#define RW_DESTROYED (RW_LOCK_READ_WAITERS | RW_LOCK_WRITE_WAITERS)