Lines Matching refs:work
32 int task_work_add(struct task_struct *task, struct callback_head *work, in task_work_add() argument
38 kasan_record_aux_stack(work); in task_work_add()
44 work->next = head; in task_work_add()
45 } while (cmpxchg(&task->task_works, head, work) != head); in task_work_add()
78 struct callback_head *work; in task_work_cancel_match() local
90 while ((work = READ_ONCE(*pprev))) { in task_work_cancel_match()
91 if (!match(work, data)) in task_work_cancel_match()
92 pprev = &work->next; in task_work_cancel_match()
93 else if (cmpxchg(pprev, work, work->next) == work) in task_work_cancel_match()
98 return work; in task_work_cancel_match()
134 struct callback_head *work, *head, *next; in task_work_run() local
143 work = READ_ONCE(task->task_works); in task_work_run()
144 if (!work) { in task_work_run()
150 } while (cmpxchg(&task->task_works, work, head) != work); in task_work_run()
152 if (!work) in task_work_run()
163 next = work->next; in task_work_run()
164 work->func(work); in task_work_run()
165 work = next; in task_work_run()
167 } while (work); in task_work_run()