Messages in this thread | | | Date | Thu, 3 Dec 2015 11:41:39 -0800 | From | Davidlohr Bueso <> | Subject | Re: [PATCH 3/4] locking: Introduce smp_cond_acquire() |
| |
On Thu, 03 Dec 2015, Peter Zijlstra wrote:
>+/** >+ * smp_cond_acquire() - Spin wait for cond with ACQUIRE ordering >+ * @cond: boolean expression to wait for >+ * >+ * Equivalent to using smp_load_acquire() on the condition variable but employs >+ * the control dependency of the wait to reduce the barrier on many platforms. >+ * >+ * The control dependency provides a LOAD->STORE order, the additional RMB >+ * provides LOAD->LOAD order, together they provide LOAD->{LOAD,STORE} order, >+ * aka. ACQUIRE. >+ */ >+#define smp_cond_acquire(cond) do { \ >+ while (!(cond)) \ >+ cpu_relax(); \ >+ smp_rmb(); /* ctrl + rmb := acquire */ \ >+} while (0)
So this hides the fact that we actually are waiting on the cond, as opposed to conditional acquiring. Could it be renamed to something like smp_waitcond_acquire()?
Thanks, Davidlohr
| |