uatomic_set(&gp_futex, 0);
futex_async(&gp_futex, FUTEX_WAKE, 1,
NULL, NULL, 0);
uatomic_set(&gp_futex, 0);
futex_async(&gp_futex, FUTEX_WAKE, 1,
NULL, NULL, 0);
_CMM_STORE_SHARED(rcu_reader.ctr, _CMM_LOAD_SHARED(rcu_gp_ctr));
/*
* Set active readers count for outermost nesting level before
_CMM_STORE_SHARED(rcu_reader.ctr, _CMM_LOAD_SHARED(rcu_gp_ctr));
/*
* Set active readers count for outermost nesting level before
smp_mb_slave(RCU_MB_GROUP);
_CMM_STORE_SHARED(rcu_reader.ctr, rcu_reader.ctr - RCU_GP_COUNT);
/* write rcu_reader.ctr before read futex */
smp_mb_slave(RCU_MB_GROUP);
_CMM_STORE_SHARED(rcu_reader.ctr, rcu_reader.ctr - RCU_GP_COUNT);
/* write rcu_reader.ctr before read futex */