* 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
