* Paolo Bonzini ([email protected]) wrote:
> Signed-off-by: Paolo Bonzini <[email protected]>
> ---
>         Not a correctness issue, and it will just save a syscall in
>         rare cases.  Can be committed separately, or squashed in patch 8
>         (that would be my favorite option), or left out altogether.
> 
>  urcu-call-rcu-impl.h |    3 +++
>  1 files changed, 3 insertions(+), 0 deletions(-)
> 
> diff --git a/urcu-call-rcu-impl.h b/urcu-call-rcu-impl.h
> index 165956e..c45928a 100644
> --- a/urcu-call-rcu-impl.h
> +++ b/urcu-call-rcu-impl.h
> @@ -214,6 +214,9 @@ static void *call_rcu_thread(void *arg)
>                               if (&crdp->cbs.head
>                                   == _CMM_LOAD_SHARED(crdp->cbs.tail))
>                                       break;
> +                                /* False alarm... another bunch is ready.  */
> +                             cmm_smp_mb();
> +                             uatomic_or(&crdp->flags, URCU_CALL_RCU_BUSY);

Would this be equivalent to not setting:

  uatomic_set(&crdp->futex, 0);

before breaking the loop, but then not decrementing

  uatomic_dec(&crdp->futex);

at the next loop iteration ?

Mathieu


>                       }
>                       while ((cbs = _CMM_LOAD_SHARED(crdp->cbs.head)) == NULL)
>                               poll(NULL, 0, 1);
> -- 
> 1.7.4.4
> 
> 
> _______________________________________________
> ltt-dev mailing list
> [email protected]
> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
> 

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com

_______________________________________________
ltt-dev mailing list
[email protected]
http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev

Reply via email to