/*
* Global grace period counter.
*/
-long urcu_gp_ctr = 0;
+long urcu_gp_ctr = 1;
/*
* Written to only by each individual reader. Read by both the reader and the
void synchronize_rcu(void)
{
- int was_online;
+ long was_online;
- was_online = rcu_reader_qs_gp & 1;
+ was_online = rcu_reader_qs_gp;
/*
* Mark the writer thread offline to make sure we don't wait for
internal_urcu_unlock();
if (was_online)
- _STORE_SHARED(rcu_reader_qs_gp, LOAD_SHARED(urcu_gp_ctr) + 1);
+ _STORE_SHARED(rcu_reader_qs_gp, LOAD_SHARED(urcu_gp_ctr));
smp_mb();
}