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);