diff options
author | Jens Axboe <axboe@kernel.dk> | 2021-04-01 19:53:29 -0600 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2021-04-11 19:30:25 -0600 |
commit | c7aab1a7c52b82d9afd7e03c398eb03dc2aa0507 (patch) | |
tree | 5747e9fde43bf6665d6a82d1f29640a4b966d676 /include/linux/task_work.h | |
parent | b2e720ace221f9be75fefdba7d0ebab9d05fc561 (diff) |
task_work: add helper for more targeted task_work canceling
The only exported helper we have right now is task_work_cancel(), which
cancels any task_work from a given task where func matches the queued
work item. This is a bit too coarse for some use cases. Add a
task_work_cancel_match() that allows to more specifically target
individual work items outside of purely the callback function used.
task_work_cancel() can be trivially implemented on top of that, hence do
so.
Reviewed-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'include/linux/task_work.h')
-rw-r--r-- | include/linux/task_work.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/task_work.h b/include/linux/task_work.h index 0d848a1e9e62..5b8a93f288bb 100644 --- a/include/linux/task_work.h +++ b/include/linux/task_work.h @@ -22,6 +22,8 @@ enum task_work_notify_mode { int task_work_add(struct task_struct *task, struct callback_head *twork, enum task_work_notify_mode mode); +struct callback_head *task_work_cancel_match(struct task_struct *task, + bool (*match)(struct callback_head *, void *data), void *data); struct callback_head *task_work_cancel(struct task_struct *, task_work_func_t); void task_work_run(void); |