Lines Matching refs:work
549 struct kthread_work *work; in kthread_worker_fn() local
564 work = NULL; in kthread_worker_fn()
567 work = list_first_entry(&worker->work_list, in kthread_worker_fn()
569 list_del_init(&work->node); in kthread_worker_fn()
571 worker->current_work = work; in kthread_worker_fn()
574 if (work) { in kthread_worker_fn()
576 work->func(work); in kthread_worker_fn()
587 struct kthread_work *work, in insert_kthread_work() argument
592 list_add_tail(&work->node, pos); in insert_kthread_work()
593 work->worker = worker; in insert_kthread_work()
608 struct kthread_work *work) in queue_kthread_work() argument
614 if (list_empty(&work->node)) { in queue_kthread_work()
615 insert_kthread_work(worker, work, &worker->work_list); in queue_kthread_work()
624 struct kthread_work work; member
628 static void kthread_flush_work_fn(struct kthread_work *work) in kthread_flush_work_fn() argument
631 container_of(work, struct kthread_flush_work, work); in kthread_flush_work_fn()
641 void flush_kthread_work(struct kthread_work *work) in flush_kthread_work() argument
644 KTHREAD_WORK_INIT(fwork.work, kthread_flush_work_fn), in flush_kthread_work()
651 worker = work->worker; in flush_kthread_work()
656 if (work->worker != worker) { in flush_kthread_work()
661 if (!list_empty(&work->node)) in flush_kthread_work()
662 insert_kthread_work(worker, &fwork.work, work->node.next); in flush_kthread_work()
663 else if (worker->current_work == work) in flush_kthread_work()
664 insert_kthread_work(worker, &fwork.work, worker->work_list.next); in flush_kthread_work()
685 KTHREAD_WORK_INIT(fwork.work, kthread_flush_work_fn), in flush_kthread_worker()
689 queue_kthread_work(worker, &fwork.work); in flush_kthread_worker()