On Thu, Dec 03, 2015 at 09:26:27PM +0100, Peter Zijlstra wrote:
> The best we can do is hardcode a variable name; maybe something like:
> 
> #define smp_cond_acquire(ptr, expr) do {                      \
>       typeof(*ptr) val;                                       \
>       while ((val = READ_ONCE(*ptr)), expr)                   \
>               cpu_relax();                                    \
>       smp_rmb(); /* ctrl + rmb := acquire */                  \
> } while (0)
> 
> Which would let us write:
> 
>   smp_cond_acquire(&lock->val.counter, !(val & _Q_LOCKED_PENDING_MASK));

So I'm thinking that might still be hard to use for you if the LDXR+WFE
has the regular LL/SC constraint of not allowing other loads in.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to