Move mb() outside of the synchronize C.S.
authorMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Wed, 16 Sep 2009 16:44:27 +0000 (12:44 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Wed, 16 Sep 2009 16:44:27 +0000 (12:44 -0400)
Will be useful for future Q.S. merging. Does not change the RCU g.p. guarantee.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
urcu-qsbr.c

index e077eac8f2b4b4bc7c44cadaf0f96d012be60fe3..b387536adc6ef923d8254934b41955389002f0fc 100644 (file)
@@ -156,12 +156,12 @@ void synchronize_rcu(void)
        if (was_online)
                _rcu_thread_offline();
 
-       internal_urcu_lock();
        force_mb_all_threads();
+       internal_urcu_lock();
        STORE_SHARED(urcu_gp_ctr, urcu_gp_ctr + 2);
        wait_for_quiescent_state();
-       force_mb_all_threads();
        internal_urcu_unlock();
+       force_mb_all_threads();
 
        if (was_online)
                _rcu_thread_online();
This page took 0.02583 seconds and 4 git commands to generate.