Messages in this thread | | | Date | Mon, 27 Oct 2014 14:41:03 +0100 | From | Peter Zijlstra <> | Subject | Re: [PATCH 00/11] nested sleeps, fixes and debug infrastructure |
| |
On Thu, Oct 02, 2014 at 02:15:53PM +0200, Peter Zijlstra wrote: > On Thu, Oct 02, 2014 at 12:22:51PM +0200, Peter Zijlstra wrote:
> > +#define __wait_event_freezable(wq, condition) \ > > + (void)___wait_event(wq, condition, TASK_INTERRUPTIBLE, 0, 0, \ > > + schedule(); try_to_freeze()) > > + > > +/** > > + * wait_event - sleep until a condition gets true or freeze (for kthreads) > > + * @wq: the waitqueue to wait on > > + * @condition: a C expression for the event to wait for > > + * > > + * The process is put to sleep (TASK_INTERRUPTIBLE -- so as not to contribute > > + * to system load) until the @condition evaluates to true. The > > + * @condition is checked each time the waitqueue @wq is woken up. > > + * > > + * wake_up() has to be called after changing any variable that could > > + * change the result of the wait condition. > > + */ > > +#define wait_event_freezable(wq, condition) \ > > +do { \ > > + WARN_ON_ONCE(!(current->flags & PF_KTHREAD)); \ > > + might_sleep(); \ > > + if (condition) \ > > + break; \ > > + __wait_event_freezable(wq, condition); \ > > +} while (0) > > + > > #define __wait_event_timeout(wq, condition, timeout) \ > > ___wait_event(wq, ___wait_cond_timeout(condition), \ > > TASK_UNINTERRUPTIBLE, 0, timeout, \ > > Bah, that doesn't compile, because there already appears to be one, > hidden in freezer.h. Now I can't actually tell if it does the same thing > or not. > > Rafael?
Ping?
| |