RW_ASSERT
RW_ASSERT(rw, n == o);
RW_ASSERT(rw, (o & RW_HAS_WAITERS) != 0);
RW_ASSERT(rw, (rw->rw_owner & ~RW_NODEBUG) == 0);
RW_ASSERT(rw, !cpu_intr_p());
RW_ASSERT(rw, curthread != 0);
RW_ASSERT(rw, op == RW_WRITER);
RW_ASSERT(rw, (op != RW_READER && RW_OWNER(rw) == curthread) ||
RW_ASSERT(rw, curthread != 0);
RW_ASSERT(rw, RW_OWNER(rw) == curthread);
RW_ASSERT(rw, RW_COUNT(rw) != 0);
RW_ASSERT(rw, ts != NULL);
RW_ASSERT(rw, (owner & RW_HAS_WAITERS) != 0);
RW_ASSERT(rw, wcnt != 0);
RW_ASSERT(rw, (owner & RW_WRITE_WANTED) != 0);
RW_ASSERT(rw, rcnt != 0);
RW_ASSERT(rw, curthread != 0);
RW_ASSERT(rw, op == RW_WRITER);
RW_ASSERT(rw, (op != RW_READER && RW_OWNER(rw) == curthread) ||
RW_ASSERT(rw, curthread != 0);
RW_ASSERT(rw, (rw->rw_owner & RW_WRITE_LOCKED) != 0);
RW_ASSERT(rw, RW_OWNER(rw) == curthread);
RW_ASSERT(rw,
RW_ASSERT(rw, RW_COUNT(rw) != 0);
RW_ASSERT(rw, ts != NULL);
RW_ASSERT(rw, wcnt != 0);
RW_ASSERT(rw, (rw->rw_owner & RW_WRITE_WANTED) != 0);
RW_ASSERT(rw, (rw->rw_owner & RW_HAS_WAITERS) != 0);
RW_ASSERT(rw, (rw->rw_owner & RW_WRITE_LOCKED) == 0);
RW_ASSERT(rw, RW_COUNT(rw) != 0);
RW_ASSERT(rw, curthread != 0);
RW_ASSERT(rw, rw_read_held(rw));
RW_ASSERT(rw, (next & RW_WRITE_LOCKED) == 0);
RW_ASSERT(rw, (next & RW_THREAD) != 0);
RW_ASSERT(rw, rw->rw_owner & RW_WRITE_LOCKED);
RW_ASSERT(rw, RW_OWNER(rw) == curthread);
RW_ASSERT(rw, rw_lock_held(rw));