From: Sergey Senozhatsky Date: Tue, 10 Jun 2025 04:52:28 +0000 (+0900) Subject: sched/wait: Add wait_event_state_exclusive() X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=dd6a5a71c811289eec234e78cb9ca34d055d2ad5;p=thirdparty%2Fkernel%2Fstable.git sched/wait: Add wait_event_state_exclusive() Allows exclusive waits with a custom @state. Signed-off-by: Sergey Senozhatsky Acked-by: Peter Zijlstra (Intel) Signed-off-by: Miklos Szeredi --- diff --git a/include/linux/wait.h b/include/linux/wait.h index 09855d8194180..f648044466d5f 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h @@ -965,6 +965,18 @@ extern int do_wait_intr_irq(wait_queue_head_t *, wait_queue_entry_t *); __ret; \ }) +#define __wait_event_state_exclusive(wq, condition, state) \ + ___wait_event(wq, condition, state, 1, 0, schedule()) + +#define wait_event_state_exclusive(wq, condition, state) \ +({ \ + int __ret = 0; \ + might_sleep(); \ + if (!(condition)) \ + __ret = __wait_event_state_exclusive(wq, condition, state); \ + __ret; \ +}) + #define __wait_event_killable_timeout(wq_head, condition, timeout) \ ___wait_event(wq_head, ___wait_cond_timeout(condition), \ TASK_KILLABLE, 0, timeout, \