Lines Matching full: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()
247 dwork->work.work_queue = wq; in linux_queue_delayed_work_on()
281 struct workqueue_struct *wq; in linux_work_fn() local
289 wq = work->work_queue; in linux_work_fn()
295 WQ_EXEC_LOCK(wq); in linux_work_fn()
296 TAILQ_INSERT_TAIL(&wq->exec_head, &exec, entry); in linux_work_fn()
302 WQ_EXEC_UNLOCK(wq); in linux_work_fn()
313 WQ_EXEC_LOCK(wq); in linux_work_fn()
327 TAILQ_REMOVE(&wq->exec_head, &exec, entry); in linux_work_fn()
328 WQ_EXEC_UNLOCK(wq); in linux_work_fn()
661 struct workqueue_struct *wq; in linux_create_workqueue_common() local
669 wq = kmalloc(sizeof(*wq), M_WAITOK | M_ZERO); in linux_create_workqueue_common()
670 wq->taskqueue = taskqueue_create(name, M_WAITOK, in linux_create_workqueue_common()
671 taskqueue_thread_enqueue, &wq->taskqueue); in linux_create_workqueue_common()
672 atomic_set(&wq->draining, 0); in linux_create_workqueue_common()
673 taskqueue_start_threads(&wq->taskqueue, cpus, PWAIT, "%s", name); in linux_create_workqueue_common()
674 TAILQ_INIT(&wq->exec_head); in linux_create_workqueue_common()
675 mtx_init(&wq->exec_mtx, "linux_wq_exec", NULL, MTX_DEF); in linux_create_workqueue_common()
677 return (wq); in linux_create_workqueue_common()
681 linux_destroy_workqueue(struct workqueue_struct *wq) in linux_destroy_workqueue() argument
683 atomic_inc(&wq->draining); in linux_destroy_workqueue()
684 drain_workqueue(wq); in linux_destroy_workqueue()
685 taskqueue_free(wq->taskqueue); in linux_destroy_workqueue()
686 mtx_destroy(&wq->exec_mtx); in linux_destroy_workqueue()
687 kfree(wq); in linux_destroy_workqueue()