X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=include%2Flinux%2Ffreezer.h;h=a49b52934c55419a6b282698bc56365733aa67df;hb=dabcbb1bae0f55378060b285062b20f6ec648c6a;hp=aa56cf31f7ff747a4242d7ef55508622e65741ce;hpb=19b4a8d520a6e0176dd52aaa429261ad4fcaa545;p=pandora-kernel.git diff --git a/include/linux/freezer.h b/include/linux/freezer.h index aa56cf31f7ff..a49b52934c55 100644 --- a/include/linux/freezer.h +++ b/include/linux/freezer.h @@ -135,10 +135,25 @@ static inline void set_freezable_with_signal(void) } /* - * Freezer-friendly wrappers around wait_event_interruptible() and - * wait_event_interruptible_timeout(), originally defined in + * Freezer-friendly wrappers around wait_event_interruptible(), + * wait_event_killable() and wait_event_interruptible_timeout(), originally + * defined in */ +#define wait_event_freezekillable(wq, condition) \ +({ \ + int __retval; \ + do { \ + __retval = wait_event_killable(wq, \ + (condition) || freezing(current)); \ + if (__retval && !freezing(current)) \ + break; \ + else if (!(condition)) \ + __retval = -ERESTARTSYS; \ + } while (try_to_freeze()); \ + __retval; \ +}) + #define wait_event_freezable(wq, condition) \ ({ \ int __retval; \ @@ -190,6 +205,9 @@ static inline void set_freezable_with_signal(void) {} #define wait_event_freezable_timeout(wq, condition, timeout) \ wait_event_interruptible_timeout(wq, condition, timeout) +#define wait_event_freezekillable(wq, condition) \ + wait_event_killable(wq, condition) + #endif /* !CONFIG_FREEZER */ #endif /* FREEZER_H_INCLUDED */