From fc4e6c9f86bd0f2b875b74958302c90dbfee5e3c Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Tue, 8 Sep 2009 15:54:35 -0700 Subject: [PATCH] --- yaml --- r: 164335 b: refs/heads/master c: b8d57a76d9f92aa63b4f12990da5697b17000b0c h: refs/heads/master i: 164333: 12d69845908a320c090bb6231df43ccada575edd 164331: 05bb98dd2fd146142239aa9de5ea3ee85cf58489 164327: 0cf2368d1d586a3cbfb744fd88f8092e0181c6e5 164319: ac2d503becdd7a943fd239f3fe99a4a7e924c3a2 v: v3 --- [refs] | 2 +- trunk/kernel/rcutorture.c | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index f558b06fc964..5333c8ab773f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b835db1f9cadaf008750a32664e35a207782c95e +refs/heads/master: b8d57a76d9f92aa63b4f12990da5697b17000b0c diff --git a/trunk/kernel/rcutorture.c b/trunk/kernel/rcutorture.c index b33db539a8ad..328a8257c885 100644 --- a/trunk/kernel/rcutorture.c +++ b/trunk/kernel/rcutorture.c @@ -281,14 +281,17 @@ static int rcu_torture_read_lock(void) __acquires(RCU) static void rcu_read_delay(struct rcu_random_state *rrsp) { - long delay; - const long longdelay = 200; + const unsigned long shortdelay_us = 200; + const unsigned long longdelay_ms = 50; - /* We want there to be long-running readers, but not all the time. */ + /* We want a short delay sometimes to make a reader delay the grace + * period, and we want a long delay occasionally to trigger + * force_quiescent_state. */ - delay = rcu_random(rrsp) % (nrealreaders * 2 * longdelay); - if (!delay) - udelay(longdelay); + if (!(rcu_random(rrsp) % (nrealreaders * 2000 * longdelay_ms))) + mdelay(longdelay_ms); + if (!(rcu_random(rrsp) % (nrealreaders * 2 * shortdelay_us))) + udelay(shortdelay_us); } static void rcu_torture_read_unlock(int idx) __releases(RCU)