lkml.org 
[lkml]   [2009]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH tip/core/rcu 1/3] rcutorture: Occasionally delay readers enough to make RCU force_quiescent_state
    Date
    From: Josh Triplett <josh@joshtriplett.org>

    rcutorture already delays readers, but never for long enough to make RCU
    force a quiescent state. Add an occasional delay of 50ms.

    Signed-off-by: Josh Triplett <josh@joshtriplett.org>
    ---
    kernel/rcutorture.c | 15 +++++++++------
    1 files changed, 9 insertions(+), 6 deletions(-)

    diff --git a/kernel/rcutorture.c b/kernel/rcutorture.c
    index b33db53..328a825 100644
    --- a/kernel/rcutorture.c
    +++ b/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)
    --
    1.5.2.5


    \
     
     \ /
      Last update: 2009-09-09 00:57    [W:0.023 / U:0.536 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site