Lines Matching refs: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.
267 * If lock holder is actually running or on the run queue
315 int queue;
347 queue = td->td_tsqueue;
348 MPASS(queue == TS_EXCLUSIVE_QUEUE || queue == TS_SHARED_QUEUE);
350 TAILQ_REMOVE(&ts->ts_blocked[queue], td, td_lockq);
351 TAILQ_FOREACH(td1, &ts->ts_blocked[queue], td_lockq) {
358 TAILQ_INSERT_TAIL(&ts->ts_blocked[queue], td, td_lockq);
738 turnstile_wait(struct turnstile *ts, struct thread *owner, int queue)
748 MPASS(queue == TS_SHARED_QUEUE || queue == TS_EXCLUSIVE_QUEUE);
777 TAILQ_INSERT_TAIL(&ts->ts_blocked[queue], td, td_lockq);
781 TAILQ_FOREACH(td1, &ts->ts_blocked[queue], td_lockq)
788 TAILQ_INSERT_TAIL(&ts->ts_blocked[queue], td, td_lockq);
800 td->td_tsqueue = queue;
827 turnstile_signal(struct turnstile *ts, int queue)
837 MPASS(queue == TS_SHARED_QUEUE || queue == TS_EXCLUSIVE_QUEUE);
843 td = TAILQ_FIRST(&ts->ts_blocked[queue]);
846 TAILQ_REMOVE(&ts->ts_blocked[queue], td, td_lockq);
878 turnstile_broadcast(struct turnstile *ts, int queue)
890 * turnstile from the hash queue.
894 MPASS(queue == TS_SHARED_QUEUE || queue == TS_EXCLUSIVE_QUEUE);
900 TAILQ_CONCAT(&ts->ts_pending, &ts->ts_blocked[queue], td_lockq);
994 * turnstile_wait() or sitting on a run queue waiting to resume
1066 turnstile_head(struct turnstile *ts, int queue)
1071 MPASS(queue == TS_SHARED_QUEUE || queue == TS_EXCLUSIVE_QUEUE);
1074 return (TAILQ_FIRST(&ts->ts_blocked[queue]));
1078 * Returns true if a sub-queue of a turnstile is empty.
1081 turnstile_empty(struct turnstile *ts, int queue)
1086 MPASS(queue == TS_SHARED_QUEUE || queue == TS_EXCLUSIVE_QUEUE);
1089 return (TAILQ_EMPTY(&ts->ts_blocked[queue]));
1102 print_queue(struct threadqueue *queue, const char *header, const char *prefix)
1107 if (TAILQ_EMPTY(queue)) {
1111 TAILQ_FOREACH(td, queue, td_lockq) {
1194 db_printf("on a run queue\n");