Lines Matching refs:tq

87 #define	TQ_LOCK(tq)							\  argument
89 if ((tq)->tq_spin) \
90 mtx_lock_spin(&(tq)->tq_mutex); \
92 mtx_lock(&(tq)->tq_mutex); \
94 #define TQ_ASSERT_LOCKED(tq) mtx_assert(&(tq)->tq_mutex, MA_OWNED) argument
96 #define TQ_UNLOCK(tq) \ argument
98 if ((tq)->tq_spin) \
99 mtx_unlock_spin(&(tq)->tq_mutex); \
101 mtx_unlock(&(tq)->tq_mutex); \
103 #define TQ_ASSERT_UNLOCKED(tq) mtx_assert(&(tq)->tq_mutex, MA_NOTOWNED) argument
115 TQ_SLEEP(struct gtaskqueue *tq, void *p, const char *wm) in TQ_SLEEP() argument
117 if (tq->tq_spin) in TQ_SLEEP()
118 return (msleep_spin(p, (struct mtx *)&tq->tq_mutex, wm, 0)); in TQ_SLEEP()
119 return (msleep(p, &tq->tq_mutex, 0, wm, 0)); in TQ_SLEEP()
160 gtaskqueue_terminate(struct thread **pp, struct gtaskqueue *tq) in gtaskqueue_terminate() argument
163 while (tq->tq_tcount > 0 || tq->tq_callouts > 0) { in gtaskqueue_terminate()
164 wakeup(tq); in gtaskqueue_terminate()
165 TQ_SLEEP(tq, pp, "gtq_destroy"); in gtaskqueue_terminate()
451 struct gtaskqueue *tq; in _gtaskqueue_start_threads() local
458 tq = *tqp; in _gtaskqueue_start_threads()
460 tq->tq_threads = malloc(sizeof(struct thread *) * count, M_GTASKQUEUE, in _gtaskqueue_start_threads()
462 if (tq->tq_threads == NULL) { in _gtaskqueue_start_threads()
470 &tq->tq_threads[i], RFSTOPPED, 0, "%s", ktname); in _gtaskqueue_start_threads()
473 &tq->tq_threads[i], RFSTOPPED, 0, in _gtaskqueue_start_threads()
479 tq->tq_threads[i] = NULL; /* paranoid */ in _gtaskqueue_start_threads()
481 tq->tq_tcount++; in _gtaskqueue_start_threads()
484 if (tq->tq_threads[i] == NULL) in _gtaskqueue_start_threads()
486 td = tq->tq_threads[i]; in _gtaskqueue_start_threads()
522 gtaskqueue_run_callback(struct gtaskqueue *tq, in gtaskqueue_run_callback() argument
527 TQ_ASSERT_UNLOCKED(tq); in gtaskqueue_run_callback()
528 tq_callback = tq->tq_callbacks[cb_type]; in gtaskqueue_run_callback()
530 tq_callback(tq->tq_cb_contexts[cb_type]); in gtaskqueue_run_callback()
536 struct gtaskqueue **tqp, *tq; in gtaskqueue_thread_loop() local
539 tq = *tqp; in gtaskqueue_thread_loop()
540 gtaskqueue_run_callback(tq, TASKQUEUE_CALLBACK_TYPE_INIT); in gtaskqueue_thread_loop()
541 TQ_LOCK(tq); in gtaskqueue_thread_loop()
542 while ((tq->tq_flags & TQ_FLAGS_ACTIVE) != 0) { in gtaskqueue_thread_loop()
544 gtaskqueue_run_locked(tq); in gtaskqueue_thread_loop()
550 if ((tq->tq_flags & TQ_FLAGS_ACTIVE) == 0) in gtaskqueue_thread_loop()
552 TQ_SLEEP(tq, tq, "-"); in gtaskqueue_thread_loop()
554 gtaskqueue_run_locked(tq); in gtaskqueue_thread_loop()
560 TQ_UNLOCK(tq); in gtaskqueue_thread_loop()
561 gtaskqueue_run_callback(tq, TASKQUEUE_CALLBACK_TYPE_SHUTDOWN); in gtaskqueue_thread_loop()
562 TQ_LOCK(tq); in gtaskqueue_thread_loop()
565 tq->tq_tcount--; in gtaskqueue_thread_loop()
566 wakeup_one(tq->tq_threads); in gtaskqueue_thread_loop()
567 TQ_UNLOCK(tq); in gtaskqueue_thread_loop()
574 struct gtaskqueue **tqp, *tq; in gtaskqueue_thread_enqueue() local
577 tq = *tqp; in gtaskqueue_thread_enqueue()
578 wakeup_any(tq); in gtaskqueue_thread_enqueue()