aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/freezer.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/freezer.h')
-rw-r--r--include/linux/freezer.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/include/linux/freezer.h b/include/linux/freezer.h
index 1effc8b56b4e..3672f731f03a 100644
--- a/include/linux/freezer.h
+++ b/include/linux/freezer.h
@@ -134,10 +134,25 @@ static inline void set_freezable_with_signal(void)
134} 134}
135 135
136/* 136/*
137 * Freezer-friendly wrappers around wait_event_interruptible() and 137 * Freezer-friendly wrappers around wait_event_interruptible(),
138 * wait_event_interruptible_timeout(), originally defined in <linux/wait.h> 138 * wait_event_killable() and wait_event_interruptible_timeout(), originally
139 * defined in <linux/wait.h>
139 */ 140 */
140 141
142#define wait_event_freezekillable(wq, condition) \
143({ \
144 int __retval; \
145 do { \
146 __retval = wait_event_killable(wq, \
147 (condition) || freezing(current)); \
148 if (__retval && !freezing(current)) \
149 break; \
150 else if (!(condition)) \
151 __retval = -ERESTARTSYS; \
152 } while (try_to_freeze()); \
153 __retval; \
154})
155
141#define wait_event_freezable(wq, condition) \ 156#define wait_event_freezable(wq, condition) \
142({ \ 157({ \
143 int __retval; \ 158 int __retval; \