Lines Matching refs:ts

182 turnstile_pi_inherit(turnstile_t *ts, kthread_t *inheritor, pri_t epri)  in turnstile_pi_inherit()  argument
185 ASSERT(DISP_LOCK_HELD(&TURNSTILE_CHAIN(ts->ts_sobj).tc_lock)); in turnstile_pi_inherit()
190 if (ts->ts_inheritor == NULL) { in turnstile_pi_inherit()
191 ts->ts_inheritor = inheritor; in turnstile_pi_inherit()
192 ts->ts_epri = epri; in turnstile_pi_inherit()
194 ts->ts_prioinv = inheritor->t_prioinv; in turnstile_pi_inherit()
195 inheritor->t_prioinv = ts; in turnstile_pi_inherit()
202 ASSERT(ts->ts_inheritor == inheritor); in turnstile_pi_inherit()
203 if (ts->ts_epri < epri) in turnstile_pi_inherit()
204 ts->ts_epri = epri; in turnstile_pi_inherit()
216 turnstile_pi_tsdelete(turnstile_t *ts, kthread_t *inheritor) in turnstile_pi_tsdelete() argument
224 if (tsp == ts) in turnstile_pi_tsdelete()
240 turnstile_pi_waive(turnstile_t *ts) in turnstile_pi_waive() argument
242 kthread_t *inheritor = ts->ts_inheritor; in turnstile_pi_waive()
248 new_epri = turnstile_pi_tsdelete(ts, inheritor); in turnstile_pi_waive()
251 ts->ts_inheritor = NULL; in turnstile_pi_waive()
284 turnstile_t *ts; in turnstile_lookup() local
289 for (ts = tc->tc_first; ts != NULL; ts = ts->ts_next) in turnstile_lookup()
290 if (ts->ts_sobj == sobj) in turnstile_lookup()
293 return (ts); in turnstile_lookup()
406 turnstile_block(turnstile_t *ts, int qnum, void *sobj, sobj_ops_t *sobj_ops, in turnstile_block() argument
423 if (ts == NULL) { in turnstile_block()
428 ts = t->t_ts; in turnstile_block()
429 ts->ts_sobj = sobj; in turnstile_block()
430 ts->ts_next = tc->tc_first; in turnstile_block()
431 tc->tc_first = ts; in turnstile_block()
432 ASSERT(ts->ts_waiters == 0); in turnstile_block()
440 myts->ts_free = ts->ts_free; in turnstile_block()
441 ts->ts_free = myts; in turnstile_block()
442 t->t_ts = ts; in turnstile_block()
443 ASSERT(ts->ts_sobj == sobj); in turnstile_block()
444 ASSERT(ts->ts_waiters > 0); in turnstile_block()
479 ts->ts_waiters++; in turnstile_block()
480 sleepq_insert(&ts->ts_sleepq[qnum], t); in turnstile_block()
484 panic("turnstile_block(%p): unowned mutex", (void *)ts); in turnstile_block()
660 turnstile_t *ts = t->t_ts; in turnstile_dequeue() local
661 turnstile_chain_t *tc = &TURNSTILE_CHAIN(ts->ts_sobj); in turnstile_dequeue()
667 if ((tsfree = ts->ts_free) != NULL) { in turnstile_dequeue()
668 ASSERT(ts->ts_waiters > 1); in turnstile_dequeue()
671 ts->ts_free = tsfree->ts_free; in turnstile_dequeue()
683 ASSERT(ts->ts_waiters == 1); in turnstile_dequeue()
684 if (ts->ts_inheritor != NULL) { in turnstile_dequeue()
685 (void) turnstile_pi_tsdelete(ts, ts->ts_inheritor); in turnstile_dequeue()
698 ts->ts_inheritor = NULL; in turnstile_dequeue()
701 while (*tspp != ts) in turnstile_dequeue()
703 *tspp = ts->ts_next; in turnstile_dequeue()
704 ASSERT(t->t_ts == ts); in turnstile_dequeue()
706 ts->ts_waiters--; in turnstile_dequeue()
718 turnstile_wakeup(turnstile_t *ts, int qnum, int nthreads, kthread_t *owner) in turnstile_wakeup() argument
720 turnstile_chain_t *tc = &TURNSTILE_CHAIN(ts->ts_sobj); in turnstile_wakeup()
721 sleepq_t *sqp = &ts->ts_sleepq[qnum]; in turnstile_wakeup()
728 if (ts->ts_inheritor != NULL) { in turnstile_wakeup()
729 turnstile_pi_waive(ts); in turnstile_wakeup()
733 ASSERT(t->t_ts == ts); in turnstile_wakeup()
734 ASSERT(ts->ts_waiters > 1 || ts->ts_inheritor == NULL); in turnstile_wakeup()
743 kthread_t *wp = ts->ts_sleepq[TS_WRITER_Q].sq_first; in turnstile_wakeup()
744 kthread_t *rp = ts->ts_sleepq[TS_READER_Q].sq_first; in turnstile_wakeup()
747 turnstile_pi_inherit(ts, t, MAX(wpri, rpri)); in turnstile_wakeup()