[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