Lines Matching refs:tq

90 #define	TQ_LOCK(tq)							\  argument
92 if ((tq)->tq_spin) \
93 mtx_lock_spin(&(tq)->tq_mutex); \
95 mtx_lock(&(tq)->tq_mutex); \
97 #define TQ_ASSERT_LOCKED(tq) mtx_assert(&(tq)->tq_mutex, MA_OWNED) argument
99 #define TQ_UNLOCK(tq) \ argument
101 if ((tq)->tq_spin) \
102 mtx_unlock_spin(&(tq)->tq_mutex); \
104 mtx_unlock(&(tq)->tq_mutex); \
106 #define TQ_ASSERT_UNLOCKED(tq) mtx_assert(&(tq)->tq_mutex, MA_NOTOWNED) argument
122 TQ_SLEEP(struct taskqueue *tq, void *p, const char *wm) in TQ_SLEEP() argument
124 if (tq->tq_spin) in TQ_SLEEP()
125 return (msleep_spin(p, (struct mtx *)&tq->tq_mutex, wm, 0)); in TQ_SLEEP()
126 return (msleep(p, &tq->tq_mutex, 0, wm, 0)); in TQ_SLEEP()
199 taskqueue_terminate(struct thread **pp, struct taskqueue *tq) in taskqueue_terminate() argument
202 while (tq->tq_tcount > 0 || tq->tq_callouts > 0) { in taskqueue_terminate()
203 wakeup(tq); in taskqueue_terminate()
204 TQ_SLEEP(tq, pp, "tq_destroy"); in taskqueue_terminate()
674 struct taskqueue *tq; in _taskqueue_start_threads() local
681 tq = *tqp; in _taskqueue_start_threads()
683 tq->tq_threads = malloc(sizeof(struct thread *) * count, M_TASKQUEUE, in _taskqueue_start_threads()
685 if (tq->tq_threads == NULL) { in _taskqueue_start_threads()
693 &tq->tq_threads[i], RFSTOPPED, 0, "%s", ktname); in _taskqueue_start_threads()
696 &tq->tq_threads[i], RFSTOPPED, 0, in _taskqueue_start_threads()
702 tq->tq_threads[i] = NULL; /* paranoid */ in _taskqueue_start_threads()
704 tq->tq_tcount++; in _taskqueue_start_threads()
706 if (tq->tq_tcount == 0) { in _taskqueue_start_threads()
707 free(tq->tq_threads, M_TASKQUEUE); in _taskqueue_start_threads()
708 tq->tq_threads = NULL; in _taskqueue_start_threads()
712 if (tq->tq_threads[i] == NULL) in _taskqueue_start_threads()
714 td = tq->tq_threads[i]; in _taskqueue_start_threads()
789 taskqueue_run_callback(struct taskqueue *tq, in taskqueue_run_callback() argument
794 TQ_ASSERT_UNLOCKED(tq); in taskqueue_run_callback()
795 tq_callback = tq->tq_callbacks[cb_type]; in taskqueue_run_callback()
797 tq_callback(tq->tq_cb_contexts[cb_type]); in taskqueue_run_callback()
803 struct taskqueue **tqp, *tq; in taskqueue_thread_loop() local
806 tq = *tqp; in taskqueue_thread_loop()
807 taskqueue_run_callback(tq, TASKQUEUE_CALLBACK_TYPE_INIT); in taskqueue_thread_loop()
808 TQ_LOCK(tq); in taskqueue_thread_loop()
809 while ((tq->tq_flags & TQ_FLAGS_ACTIVE) != 0) { in taskqueue_thread_loop()
811 taskqueue_run_locked(tq); in taskqueue_thread_loop()
817 if ((tq->tq_flags & TQ_FLAGS_ACTIVE) == 0) in taskqueue_thread_loop()
819 TQ_SLEEP(tq, tq, "-"); in taskqueue_thread_loop()
821 taskqueue_run_locked(tq); in taskqueue_thread_loop()
827 TQ_UNLOCK(tq); in taskqueue_thread_loop()
828 taskqueue_run_callback(tq, TASKQUEUE_CALLBACK_TYPE_SHUTDOWN); in taskqueue_thread_loop()
829 TQ_LOCK(tq); in taskqueue_thread_loop()
832 tq->tq_tcount--; in taskqueue_thread_loop()
833 wakeup_one(tq->tq_threads); in taskqueue_thread_loop()
834 TQ_UNLOCK(tq); in taskqueue_thread_loop()
841 struct taskqueue **tqp, *tq; in taskqueue_thread_enqueue() local
844 tq = *tqp; in taskqueue_thread_enqueue()
845 wakeup_any(tq); in taskqueue_thread_enqueue()