Commit | Line | Data |
---|---|---|
e73f8959 ON |
1 | #ifndef _LINUX_TASK_WORK_H |
2 | #define _LINUX_TASK_WORK_H | |
3 | ||
4 | #include <linux/list.h> | |
5 | #include <linux/sched.h> | |
6 | ||
7 | struct task_work; | |
8 | typedef void (*task_work_func_t)(struct task_work *); | |
9 | ||
10 | struct task_work { | |
158e1645 | 11 | struct task_work *next; |
e73f8959 | 12 | task_work_func_t func; |
e73f8959 ON |
13 | }; |
14 | ||
15 | static inline void | |
41f9d29f | 16 | init_task_work(struct task_work *twork, task_work_func_t func) |
e73f8959 ON |
17 | { |
18 | twork->func = func; | |
e73f8959 ON |
19 | } |
20 | ||
21 | int task_work_add(struct task_struct *task, struct task_work *twork, bool); | |
22 | struct task_work *task_work_cancel(struct task_struct *, task_work_func_t); | |
23 | void task_work_run(void); | |
24 | ||
25 | static inline void exit_task_work(struct task_struct *task) | |
26 | { | |
158e1645 | 27 | if (unlikely(task->task_works)) |
e73f8959 ON |
28 | task_work_run(); |
29 | } | |
30 | ||
31 | #endif /* _LINUX_TASK_WORK_H */ |