From: Olivier Dion Date: Thu, 21 Dec 2023 15:27:18 +0000 (-0500) Subject: rcutorture: Check histogram of ages X-Git-Url: http://git.lttng.org/?p=urcu.git;a=commitdiff_plain;h=54bb03ca7635d54dee1466ef885084333e40064a rcutorture: Check histogram of ages Ensure that the histogram of ages for all threads are valid after a stress test. Change-Id: Iadc46f47fe8835ac0e2d8967b6a16a83335a9541 Signed-off-by: Olivier Dion Signed-off-by: Mathieu Desnoyers --- diff --git a/tests/regression/rcutorture.h b/tests/regression/rcutorture.h index 01f6456..441ff79 100644 --- a/tests/regression/rcutorture.h +++ b/tests/regression/rcutorture.h @@ -527,6 +527,7 @@ int stresstest(int nreaders) int t; long long *p; long long sum; + int ret; init_per_thread(n_reads_pt, 0LL); for_each_thread(t) { @@ -552,11 +553,19 @@ int stresstest(int nreaders) n_reads, n_updates, n_mberror); rdiag_start(); rdiag("rcu_stress_count:"); + ret = 0; for (i = 0; i <= RCU_STRESS_PIPE_LEN; i++) { sum = 0LL; for_each_thread(t) { sum += per_thread(rcu_stress_count, t)[i]; } + /* + * If any entries past the first two are non-zero, RCU is + * broken. See details above about rcu_stress_count. + */ + if (i > 1 && sum != 0) { + ret = -1; + } rdiag(" %lld", sum); } rdiag_end(); @@ -564,10 +573,9 @@ int stresstest(int nreaders) diag("Deallocating per-CPU call_rcu threads."); free_all_cpu_call_rcu_data(); } - if (!n_mberror) - return 0; - else - return -1; + if (n_mberror) + ret = -1; + return ret; } /*