Lines Matching refs:tq
88 #define TQ_LOCK(tq) \ argument
90 if ((tq)->tq_spin) \
91 mtx_lock_spin(&(tq)->tq_mutex); \
93 mtx_lock(&(tq)->tq_mutex); \
95 #define TQ_ASSERT_LOCKED(tq) mtx_assert(&(tq)->tq_mutex, MA_OWNED) argument
97 #define TQ_UNLOCK(tq) \ argument
99 if ((tq)->tq_spin) \
100 mtx_unlock_spin(&(tq)->tq_mutex); \
102 mtx_unlock(&(tq)->tq_mutex); \
104 #define TQ_ASSERT_UNLOCKED(tq) mtx_assert(&(tq)->tq_mutex, MA_NOTOWNED) argument
119 TQ_SLEEP(struct taskqueue *tq, void *p, const char *wm) in TQ_SLEEP() argument
121 if (tq->tq_spin) in TQ_SLEEP()
122 return (msleep_spin(p, (struct mtx *)&tq->tq_mutex, wm, 0)); in TQ_SLEEP()
123 return (msleep(p, &tq->tq_mutex, 0, wm, 0)); in TQ_SLEEP()
206 taskqueue_terminate(struct thread **pp, struct taskqueue *tq) in taskqueue_terminate() argument
209 while (tq->tq_tcount > 0 || tq->tq_callouts > 0) { in taskqueue_terminate()
210 wakeup(tq); in taskqueue_terminate()
211 TQ_SLEEP(tq, pp, "tq_destroy"); in taskqueue_terminate()
705 struct taskqueue *tq; in _taskqueue_start_threads() local
712 tq = *tqp; in _taskqueue_start_threads()
714 tq->tq_threads = malloc(sizeof(struct thread *) * count, M_TASKQUEUE, in _taskqueue_start_threads()
716 if (tq->tq_threads == NULL) { in _taskqueue_start_threads()
724 &tq->tq_threads[i], RFSTOPPED, 0, "%s", ktname); in _taskqueue_start_threads()
727 &tq->tq_threads[i], RFSTOPPED, 0, in _taskqueue_start_threads()
733 tq->tq_threads[i] = NULL; /* paranoid */ in _taskqueue_start_threads()
735 tq->tq_tcount++; in _taskqueue_start_threads()
737 if (tq->tq_tcount == 0) { in _taskqueue_start_threads()
738 free(tq->tq_threads, M_TASKQUEUE); in _taskqueue_start_threads()
739 tq->tq_threads = NULL; in _taskqueue_start_threads()
743 if (tq->tq_threads[i] == NULL) in _taskqueue_start_threads()
745 td = tq->tq_threads[i]; in _taskqueue_start_threads()
807 taskqueue_run_callback(struct taskqueue *tq, in taskqueue_run_callback() argument
812 TQ_ASSERT_UNLOCKED(tq); in taskqueue_run_callback()
813 tq_callback = tq->tq_callbacks[cb_type]; in taskqueue_run_callback()
815 tq_callback(tq->tq_cb_contexts[cb_type]); in taskqueue_run_callback()
821 struct taskqueue **tqp, *tq; in taskqueue_thread_loop() local
824 tq = *tqp; in taskqueue_thread_loop()
825 taskqueue_run_callback(tq, TASKQUEUE_CALLBACK_TYPE_INIT); in taskqueue_thread_loop()
826 TQ_LOCK(tq); in taskqueue_thread_loop()
827 while ((tq->tq_flags & TQ_FLAGS_ACTIVE) != 0) { in taskqueue_thread_loop()
829 taskqueue_run_locked(tq); in taskqueue_thread_loop()
835 if ((tq->tq_flags & TQ_FLAGS_ACTIVE) == 0) in taskqueue_thread_loop()
837 TQ_SLEEP(tq, tq, "-"); in taskqueue_thread_loop()
839 taskqueue_run_locked(tq); in taskqueue_thread_loop()
845 TQ_UNLOCK(tq); in taskqueue_thread_loop()
846 taskqueue_run_callback(tq, TASKQUEUE_CALLBACK_TYPE_SHUTDOWN); in taskqueue_thread_loop()
847 TQ_LOCK(tq); in taskqueue_thread_loop()
850 tq->tq_tcount--; in taskqueue_thread_loop()
851 wakeup_one(tq->tq_threads); in taskqueue_thread_loop()
852 TQ_UNLOCK(tq); in taskqueue_thread_loop()
859 struct taskqueue **tqp, *tq; in taskqueue_thread_enqueue() local
862 tq = *tqp; in taskqueue_thread_enqueue()
863 wakeup_any(tq); in taskqueue_thread_enqueue()