Lines Matching refs:taskq
409 struct usb_taskq *taskq; in usb_once_init() local
419 taskq = &usb_taskq[i]; in usb_once_init()
421 TAILQ_INIT(&taskq->tasks); in usb_once_init()
426 mutex_init(&taskq->lock, MUTEX_DEFAULT, IPL_USB); in usb_once_init()
427 cv_init(&taskq->cv, "usbtsk"); in usb_once_init()
428 taskq->name = taskq_names[i]; in usb_once_init()
429 taskq->current_task = NULL; in usb_once_init()
431 usb_task_thread, taskq, &taskq->task_thread_lwp, in usb_once_init()
432 "%s", taskq->name)) { in usb_once_init()
433 printf("unable to create task thread: %s\n", taskq->name); in usb_once_init()
567 struct usb_taskq *taskq; in usb_add_task() local
574 taskq = &usb_taskq[queue]; in usb_add_task()
575 mutex_enter(&taskq->lock); in usb_add_task()
579 TAILQ_INSERT_TAIL(&taskq->tasks, task, next); in usb_add_task()
580 cv_signal(&taskq->cv); in usb_add_task()
584 mutex_exit(&taskq->lock); in usb_add_task()
608 struct usb_taskq *taskq = &usb_taskq[queue]; in usb_rem_task() local
609 mutex_enter(&taskq->lock); in usb_rem_task()
611 TAILQ_REMOVE(&taskq->tasks, task, next); in usb_rem_task()
613 mutex_exit(&taskq->lock); in usb_rem_task()
618 mutex_exit(&taskq->lock); in usb_rem_task()
647 struct usb_taskq *taskq; in usb_rem_task_wait() local
658 taskq = &usb_taskq[queue]; in usb_rem_task_wait()
659 mutex_enter(&taskq->lock); in usb_rem_task_wait()
669 while (taskq->current_task == task) in usb_rem_task_wait()
670 cv_wait(&taskq->cv, &taskq->lock); in usb_rem_task_wait()
679 TAILQ_REMOVE(&taskq->tasks, task, next); in usb_rem_task_wait()
683 mutex_exit(&taskq->lock); in usb_rem_task_wait()
774 struct usb_taskq *taskq; in usb_task_thread() local
777 taskq = arg; in usb_task_thread()
781 (uintptr_t)taskq, 0, 0, 0); in usb_task_thread()
783 mutex_enter(&taskq->lock); in usb_task_thread()
785 task = TAILQ_FIRST(&taskq->tasks); in usb_task_thread()
787 cv_wait(&taskq->cv, &taskq->lock); in usb_task_thread()
788 task = TAILQ_FIRST(&taskq->tasks); in usb_task_thread()
793 TAILQ_REMOVE(&taskq->tasks, task, next); in usb_task_thread()
795 taskq->current_task = task; in usb_task_thread()
796 mutex_exit(&taskq->lock); in usb_task_thread()
807 mutex_enter(&taskq->lock); in usb_task_thread()
808 KASSERTMSG(taskq->current_task == task, in usb_task_thread()
809 "somebody scribbled on usb taskq %p", taskq); in usb_task_thread()
810 taskq->current_task = NULL; in usb_task_thread()
811 cv_broadcast(&taskq->cv); in usb_task_thread()
814 mutex_exit(&taskq->lock); in usb_task_thread()