Lines Matching refs:wq
95 struct workqueue_struct *wq; in linux_work_exec_unblock() local
99 wq = work->work_queue; in linux_work_exec_unblock()
100 if (unlikely(wq == NULL)) in linux_work_exec_unblock()
103 WQ_EXEC_LOCK(wq); in linux_work_exec_unblock()
104 TAILQ_FOREACH(exec, &wq->exec_head, entry) { in linux_work_exec_unblock()
111 WQ_EXEC_UNLOCK(wq); in linux_work_exec_unblock()
131 linux_queue_work_on(int cpu __unused, struct workqueue_struct *wq, in linux_queue_work_on() argument
142 if (atomic_read(&wq->draining) != 0) in linux_queue_work_on()
152 work->work_queue = wq; in linux_queue_work_on()
153 taskqueue_enqueue(wq->taskqueue, &work->work_task); in linux_queue_work_on()
169 linux_queue_work_on(WORK_CPU_UNBOUND, rwork->wq, &rwork->work); in rcu_work_func()
178 linux_queue_rcu_work(struct workqueue_struct *wq, struct rcu_work *rwork) in linux_queue_rcu_work() argument
182 rwork->wq = wq; in linux_queue_rcu_work()
214 linux_queue_delayed_work_on(int cpu, struct workqueue_struct *wq, in linux_queue_delayed_work_on() argument
226 if (atomic_read(&wq->draining) != 0) in linux_queue_delayed_work_on()
240 dwork->work.work_queue = wq; in linux_queue_delayed_work_on()
274 struct workqueue_struct *wq; in linux_work_fn() local
282 wq = work->work_queue; in linux_work_fn()
288 WQ_EXEC_LOCK(wq); in linux_work_fn()
289 TAILQ_INSERT_TAIL(&wq->exec_head, &exec, entry); in linux_work_fn()
295 WQ_EXEC_UNLOCK(wq); in linux_work_fn()
306 WQ_EXEC_LOCK(wq); in linux_work_fn()
320 TAILQ_REMOVE(&wq->exec_head, &exec, entry); in linux_work_fn()
321 WQ_EXEC_UNLOCK(wq); in linux_work_fn()
654 struct workqueue_struct *wq; in linux_create_workqueue_common() local
662 wq = kmalloc(sizeof(*wq), M_WAITOK | M_ZERO); in linux_create_workqueue_common()
663 wq->taskqueue = taskqueue_create(name, M_WAITOK, in linux_create_workqueue_common()
664 taskqueue_thread_enqueue, &wq->taskqueue); in linux_create_workqueue_common()
665 atomic_set(&wq->draining, 0); in linux_create_workqueue_common()
666 taskqueue_start_threads(&wq->taskqueue, cpus, PWAIT, "%s", name); in linux_create_workqueue_common()
667 TAILQ_INIT(&wq->exec_head); in linux_create_workqueue_common()
668 mtx_init(&wq->exec_mtx, "linux_wq_exec", NULL, MTX_DEF); in linux_create_workqueue_common()
670 return (wq); in linux_create_workqueue_common()
674 linux_destroy_workqueue(struct workqueue_struct *wq) in linux_destroy_workqueue() argument
676 atomic_inc(&wq->draining); in linux_destroy_workqueue()
677 drain_workqueue(wq); in linux_destroy_workqueue()
678 taskqueue_free(wq->taskqueue); in linux_destroy_workqueue()
679 mtx_destroy(&wq->exec_mtx); in linux_destroy_workqueue()
680 kfree(wq); in linux_destroy_workqueue()