X-Git-Url: http://git.lttng.org/?p=urcu.git;a=blobdiff_plain;f=tests%2Fregression%2Frcutorture.h;fp=tests%2Fregression%2Frcutorture.h;h=441ff79bf349fa301b60e7ee61935e0caa58aba2;hp=01f64569757c5fb2a39afec2074a482d252501b0;hb=54bb03ca7635d54dee1466ef885084333e40064a;hpb=70a1c7c2646f3cae2e9cd8fc6ff8a75a03df8c7a 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; } /*