On Fri, Apr 01, 2016 at 05:47:43PM +0100, Will Deacon wrote:
> > +#define smp_cond_load_acquire(ptr, cond_expr)      ({              \
> > +   typeof(ptr) __PTR = (ptr);                              \
> > +   typeof(*ptr) VAL;                                       \
> 
> It's a bit grim having a magic variable name, but I have no better
> suggestion.

Right; we had this discussion and this is the best we could come up
with.

lkml.kernel.org/r/ca+55afzza9eb3hfptspdmemoifem5bwqgow+ib7slvymtet...@mail.gmail.com

> > +   for (;;) {                                              \
> > +           VAL = READ_ONCE(*__PTR);                        \
> > +           if (cond_expr)                                  \
> > +                   break;                                  \
> > +           cpu_relax();                                    \
> > +   }                                                       \
> > +   smp_rmb(); /* ctrl + rmb := acquire */                  \
> > +   VAL;                                                    \
> > +})
> 
> Can you stick some #ifndef guards around this, please?

Oh sure; I'll even compile and boot it when I find a moment ;-)

Reply via email to