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/