From: Paolo Bonzini Date: Tue, 9 Aug 2011 20:49:27 +0000 (-0400) Subject: put thread offline while waiting for the init flag X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=3bf02b5bfebfd44de04262fd520e66423ba16e9a;p=deliverable%2Fuserspace-rcu.git put thread offline while waiting for the init flag Otherwise, the call_rcu thread might end up in a synchronize_rcu that never ends. Signed-off-by: Paolo Bonzini Signed-off-by: Mathieu Desnoyers --- diff --git a/tests/rcutorture.h b/tests/rcutorture.h index 5ba3d2b..4c6f9da 100644 --- a/tests/rcutorture.h +++ b/tests/rcutorture.h @@ -127,9 +127,10 @@ void *rcu_read_perf_test(void *arg) rcu_register_thread(); run_on(me); uatomic_inc(&nthreadsrunning); + put_thread_offline(); while (goflag == GOFLAG_INIT) poll(NULL, 0, 1); - mark_rcu_quiescent_state(); + put_thread_online(); while (goflag == GOFLAG_RUN) { for (i = 0; i < RCU_READ_RUN; i++) { rcu_read_lock(); @@ -286,9 +287,10 @@ void *rcu_read_stress_test(void *arg) int pc; rcu_register_thread(); + put_thread_offline(); while (goflag == GOFLAG_INIT) poll(NULL, 0, 1); - mark_rcu_quiescent_state(); + put_thread_online(); while (goflag == GOFLAG_RUN) { rcu_read_lock(); p = rcu_dereference(rcu_stress_current);