[ltt-dev] [PATCH] rcutorture: put thread offline while waiting for the init flag

Paolo Bonzini pbonzini at redhat.com
Tue Aug 9 09:39:25 EDT 2011


Otherwise, the call_rcu thread might end up in a synchronize_rcu that
never ends.

Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
---
 tests/rcutorture.h |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

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);
-- 
1.7.6





More information about the lttng-dev mailing list