Lines Matching refs:work
568 struct kthread_work *work; in kthread_worker_fn() local
583 work = NULL; in kthread_worker_fn()
586 work = list_first_entry(&worker->work_list, in kthread_worker_fn()
588 list_del_init(&work->node); in kthread_worker_fn()
590 worker->current_work = work; in kthread_worker_fn()
593 if (work) { in kthread_worker_fn()
595 work->func(work); in kthread_worker_fn()
606 struct kthread_work *work, in insert_kthread_work() argument
611 list_add_tail(&work->node, pos); in insert_kthread_work()
612 work->worker = worker; in insert_kthread_work()
627 struct kthread_work *work) in queue_kthread_work() argument
633 if (list_empty(&work->node)) { in queue_kthread_work()
634 insert_kthread_work(worker, work, &worker->work_list); in queue_kthread_work()
643 struct kthread_work work; member
647 static void kthread_flush_work_fn(struct kthread_work *work) in kthread_flush_work_fn() argument
650 container_of(work, struct kthread_flush_work, work); in kthread_flush_work_fn()
660 void flush_kthread_work(struct kthread_work *work) in flush_kthread_work() argument
663 KTHREAD_WORK_INIT(fwork.work, kthread_flush_work_fn), in flush_kthread_work()
670 worker = work->worker; in flush_kthread_work()
675 if (work->worker != worker) { in flush_kthread_work()
680 if (!list_empty(&work->node)) in flush_kthread_work()
681 insert_kthread_work(worker, &fwork.work, work->node.next); in flush_kthread_work()
682 else if (worker->current_work == work) in flush_kthread_work()
683 insert_kthread_work(worker, &fwork.work, worker->work_list.next); in flush_kthread_work()
704 KTHREAD_WORK_INIT(fwork.work, kthread_flush_work_fn), in flush_kthread_worker()
708 queue_kthread_work(worker, &fwork.work); in flush_kthread_worker()