[ltt-dev] [URCU RFC patch 2/3] call_rcu: use futex for wakeup scheme
Paolo Bonzini
pbonzini at redhat.com
Wed Jun 8 03:04:36 EDT 2011
On 06/06/2011 07:46 PM, Mathieu Desnoyers wrote:
> +static void call_rcu_wait(struct call_rcu_data *crdp)
> +{
> + /* Read call_rcu list before read futex */
> + cmm_smp_mb();
> + if (uatomic_read(&crdp->futex) == -1)
> + futex_async(&crdp->futex, FUTEX_WAIT, -1,
> + NULL, NULL, 0);
> +}
> +
> +static void call_rcu_wake_up(struct call_rcu_data *crdp)
> +{
> + /* Write to call_rcu list before reading/writing futex */
> + cmm_smp_mb();
> + if (unlikely(uatomic_read(&crdp->futex) == -1)) {
> + uatomic_set(&crdp->futex, 0);
> + futex_async(&crdp->futex, FUTEX_WAKE, 1,
> + NULL, NULL, 0);
> + }
> +}
I don't see crdp->futex ever set to -1, am I missing something obvious?
Paolo
More information about the lttng-dev
mailing list