Lines Matching defs:queue
35 * Implementation of turnstiles used to hold queue of threads blocked on
37 * implement their queues. Turnstiles differ from a sleep queue in that
38 * turnstile queue's are assigned to a lock held by an owning thread. Thus,
74 #include <sys/queue.h>
90 * number chosen because the sleep queue's use the same value for the
114 * the run queue.
268 * If lock holder is actually running or on the run queue
316 int queue;
348 queue = td->td_tsqueue;
349 MPASS(queue == TS_EXCLUSIVE_QUEUE || queue == TS_SHARED_QUEUE);
351 TAILQ_REMOVE(&ts->ts_blocked[queue], td, td_lockq);
352 TAILQ_FOREACH(td1, &ts->ts_blocked[queue], td_lockq) {
359 TAILQ_INSERT_TAIL(&ts->ts_blocked[queue], td, td_lockq);
739 turnstile_wait(struct turnstile *ts, struct thread *owner, int queue)
749 MPASS(queue == TS_SHARED_QUEUE || queue == TS_EXCLUSIVE_QUEUE);
778 TAILQ_INSERT_TAIL(&ts->ts_blocked[queue], td, td_lockq);
782 TAILQ_FOREACH(td1, &ts->ts_blocked[queue], td_lockq)
789 TAILQ_INSERT_TAIL(&ts->ts_blocked[queue], td, td_lockq);
801 td->td_tsqueue = queue;
828 turnstile_signal(struct turnstile *ts, int queue)
838 MPASS(queue == TS_SHARED_QUEUE || queue == TS_EXCLUSIVE_QUEUE);
844 td = TAILQ_FIRST(&ts->ts_blocked[queue]);
847 TAILQ_REMOVE(&ts->ts_blocked[queue], td, td_lockq);
879 turnstile_broadcast(struct turnstile *ts, int queue)
891 * turnstile from the hash queue.
895 MPASS(queue == TS_SHARED_QUEUE || queue == TS_EXCLUSIVE_QUEUE);
901 TAILQ_CONCAT(&ts->ts_pending, &ts->ts_blocked[queue], td_lockq);
995 * turnstile_wait() or sitting on a run queue waiting to resume
1067 turnstile_head(struct turnstile *ts, int queue)
1072 MPASS(queue == TS_SHARED_QUEUE || queue == TS_EXCLUSIVE_QUEUE);
1075 return (TAILQ_FIRST(&ts->ts_blocked[queue]));
1079 * Returns true if a sub-queue of a turnstile is empty.
1082 turnstile_empty(struct turnstile *ts, int queue)
1087 MPASS(queue == TS_SHARED_QUEUE || queue == TS_EXCLUSIVE_QUEUE);
1090 return (TAILQ_EMPTY(&ts->ts_blocked[queue]));
1103 print_queue(struct threadqueue *queue, const char *header, const char *prefix)
1108 if (TAILQ_EMPTY(queue)) {
1112 TAILQ_FOREACH(td, queue, td_lockq) {
1195 db_printf("on a run queue\n");