summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRemi Pommarel <repk@triplefau.lt>2026-01-23 15:48:07 +0100
committerDominique Martinet <asmadeus@codewreck.org>2026-01-29 07:33:35 +0000
commitca136b2553084120a1f864f14f4bc70f08cb6420 (patch)
tree12c79131e5d29dfffb23d53c694a96c4b199b015
parent63804fed149a6750ffd28610c5c1c98cce6bd377 (diff)
wait: Introduce io_wait_event_killable()
Add io_wait_event_killable(), a variant of wait_event_killable() that uses io_schedule() instead of schedule(). This is to be used in situation where waiting time is to be accounted as IO wait time. Signed-off-by: Remi Pommarel <repk@triplefau.lt> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Message-ID: <1b2870001ecd34fe6c05be2ddfefb3c798b11701.1769179462.git.repk@triplefau.lt> Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
-rw-r--r--include/linux/wait.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/linux/wait.h b/include/linux/wait.h
index f648044466d5..dce055e6add3 100644
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -937,6 +937,21 @@ extern int do_wait_intr_irq(wait_queue_head_t *, wait_queue_entry_t *);
__ret; \
})
+#define __io_wait_event_killable(wq, condition) \
+ ___wait_event(wq, condition, TASK_KILLABLE, 0, 0, io_schedule())
+
+/*
+ * wait_event_killable() - link wait_event_killable but with io_schedule()
+ */
+#define io_wait_event_killable(wq_head, condition) \
+({ \
+ int __ret = 0; \
+ might_sleep(); \
+ if (!(condition)) \
+ __ret = __io_wait_event_killable(wq_head, condition); \
+ __ret; \
+})
+
#define __wait_event_state(wq, condition, state) \
___wait_event(wq, condition, state, 0, 0, schedule())