TS_WRITER_Q
turnstile_block(ts, TS_WRITER_Q, mtx, &mutex_syncobj);
turnstile_wakeup(ts, TS_WRITER_Q,
TS_WAITERS(ts, TS_WRITER_Q), NULL);
turnstile_wakeup(ts, TS_WRITER_Q, TS_WAITERS(ts, TS_WRITER_Q), NULL);
queue = TS_WRITER_Q;
wcnt = TS_WAITERS(ts, TS_WRITER_Q);
l = TS_FIRST(ts, TS_WRITER_Q);
turnstile_wakeup(ts, TS_WRITER_Q, 1, l);
turnstile_wakeup(ts, TS_WRITER_Q, wcnt, NULL);
wcnt = TS_WAITERS(ts, TS_WRITER_Q);
sleepq_init(&ts->ts_sleepq[TS_WRITER_Q]);
KASSERT(q == TS_READER_Q || q == TS_WRITER_Q);
KASSERT(LIST_EMPTY(&ts->ts_sleepq[TS_WRITER_Q]));
!LIST_EMPTY(&ts->ts_sleepq[TS_WRITER_Q]));
KASSERT(q == TS_READER_Q || q == TS_WRITER_Q);
wsq = &ts->ts_sleepq[TS_WRITER_Q];
(*pr)("=> %d waiting writers:", TS_WAITERS(ts, TS_WRITER_Q));
(ts)->ts_waiters[TS_WRITER_Q])