Messages in this thread Patch in this message | | | Date | Fri, 31 Oct 2014 18:41:14 +0100 | From | Peter Zijlstra <> | Subject | Re: [PATCH 2/7] wait: Reimplement wait_event_freezable() |
| |
On Fri, Oct 31, 2014 at 12:10:39PM +0100, Peter Zijlstra wrote: > Provide better implementations of wait_event_freezable() APIs. > > The problem is with freezer_do_not_count(), it hides the thread from > the freezer, even though this thread might not actually freeze/sleep > at all. > > Cc: oleg@redhat.com > Cc: Rafael Wysocki <rjw@rjwysocki.net> > Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> > ---
This would maybe compile better.. gotta run, will test later.
--- a/include/linux/wait.h +++ b/include/linux/wait.h @@ -284,12 +284,13 @@ do { \ * change the result of the wait condition. */ #define wait_event_freezable(wq, condition) \ -do { \ +({ \ + int __ret = 0; \ might_sleep(); \ - if (condition) \ - break; \ - __wait_event_freezable(wq, condition); \ -} while (0) + if (!(condition)) \ + __ret = __wait_event_freezable(wq, condition); \ + __ret; \ +}) #define __wait_event_timeout(wq, condition, timeout) \ ___wait_event(wq, ___wait_cond_timeout(condition), \
| |