On 2019/6/11 3:14 上午, Kent Overstreet wrote: > Signed-off-by: Kent Overstreet <kent.overstreet@xxxxxxxxx> Acked-by: Coly Li <colyli@xxxxxxx> Thanks. Coly Li > --- > include/linux/closure.h | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/include/linux/closure.h b/include/linux/closure.h > index 308e38028c..abacb91c35 100644 > --- a/include/linux/closure.h > +++ b/include/linux/closure.h > @@ -379,4 +379,26 @@ static inline void closure_call(struct closure *cl, closure_fn fn, > continue_at_nobarrier(cl, fn, wq); > } > > +#define __closure_wait_event(waitlist, _cond) \ > +do { \ > + struct closure cl; \ > + \ > + closure_init_stack(&cl); \ > + \ > + while (1) { \ > + closure_wait(waitlist, &cl); \ > + if (_cond) \ > + break; \ > + closure_sync(&cl); \ > + } \ > + closure_wake_up(waitlist); \ > + closure_sync(&cl); \ > +} while (0) > + > +#define closure_wait_event(waitlist, _cond) \ > +do { \ > + if (!(_cond)) \ > + __closure_wait_event(waitlist, _cond); \ > +} while (0) > + > #endif /* _LINUX_CLOSURE_H */ > -- Coly Li