wq 85 kern/kern_workq.c struct workq *wq; wq 87 kern/kern_workq.c wq = malloc(sizeof(*wq), M_DEVBUF, M_NOWAIT); wq 88 kern/kern_workq.c if (wq == NULL) wq 91 kern/kern_workq.c wq->wq_flags = WQ_F_RUNNING; wq 92 kern/kern_workq.c wq->wq_running = 0; wq 93 kern/kern_workq.c wq->wq_busy = 0; wq 94 kern/kern_workq.c wq->wq_max = maxqs; wq 95 kern/kern_workq.c wq->wq_name = name; wq 96 kern/kern_workq.c SIMPLEQ_INIT(&wq->wq_tasklist); wq 99 kern/kern_workq.c kthread_create_deferred(workq_create_thread, wq); wq 101 kern/kern_workq.c return (wq); wq 105 kern/kern_workq.c workq_destroy(struct workq *wq) wq 111 kern/kern_workq.c wq->wq_flags &= ~WQ_F_RUNNING; wq 112 kern/kern_workq.c while (wq->wq_running != 0) { wq 113 kern/kern_workq.c wakeup(wq); wq 114 kern/kern_workq.c tsleep(&wq->wq_running, PWAIT, "wqdestroy", 0); wq 119 kern/kern_workq.c free(wq, M_DEVBUF); wq 123 kern/kern_workq.c workq_add_task(struct workq *wq, int flags, workq_fn func, wq 130 kern/kern_workq.c if (wq == NULL) wq 131 kern/kern_workq.c wq = &workq_syswq; wq 146 kern/kern_workq.c SIMPLEQ_INSERT_TAIL(&wq->wq_tasklist, wqt, wqt_entry); wq 147 kern/kern_workq.c if ((wq->wq_running < wq->wq_max) && (wq->wq_running == wq->wq_busy)) { wq 148 kern/kern_workq.c kthread_create_deferred(workq_create_thread, wq); wq 154 kern/kern_workq.c wakeup_one(wq); wq 162 kern/kern_workq.c struct workq *wq = arg; wq 165 kern/kern_workq.c rv = kthread_create(workq_thread, wq, NULL, "%s", wq->wq_name); wq 167 kern/kern_workq.c printf("unable to create \"%s\" workq thread\n", wq->wq_name); wq 171 kern/kern_workq.c wq->wq_running++; wq 177 kern/kern_workq.c struct workq *wq = arg; wq 182 kern/kern_workq.c while (wq->wq_flags & WQ_F_RUNNING) { wq 183 kern/kern_workq.c while ((wqt = SIMPLEQ_FIRST(&wq->wq_tasklist)) != NULL) { wq 184 kern/kern_workq.c SIMPLEQ_REMOVE_HEAD(&wq->wq_tasklist, wqt_entry); wq 185 kern/kern_workq.c wq->wq_busy++; wq 195 kern/kern_workq.c wq->wq_busy--; wq 198 kern/kern_workq.c tsleep(wq, PWAIT, "bored", 0); wq 200 kern/kern_workq.c wq->wq_running--; wq 202 kern/kern_workq.c wakeup(&wq->wq_running);