RW_LOCK_WRITE_SPINNER
if (v == (RW_LOCK_READ | RW_LOCK_WRITE_SPINNER)) {
if (!(v & RW_LOCK_WRITE_SPINNER)) {
v | RW_LOCK_WRITE_SPINNER)) {
if (!(v & RW_LOCK_WRITE_SPINNER))
setv = v & (RW_LOCK_WAITERS | RW_LOCK_WRITE_SPINNER);
setv &= ~RW_LOCK_WRITE_SPINNER;
if ((v & RW_LOCK_WRITE_SPINNER) ||
setv = v & ~RW_LOCK_WRITE_SPINNER;
if ((v & (RW_LOCK_READ | RW_LOCK_WRITE_WAITERS | RW_LOCK_WRITE_SPINNER))
if ((v & RW_LOCK_WRITE_SPINNER) && RW_READERS(v) == 0) {
if (((v & RW_LOCK_WRITE_SPINNER) && RW_READERS(v) == 0) ||
setv |= (v & RW_LOCK_WRITE_SPINNER);
if (v & RW_LOCK_WRITE_SPINNER)
RW_LOCK_WRITE_SPINNER | RW_LOCK_WRITER_RECURSED)