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