lkml.org 
[lkml]   [2010]   [Jun]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] rcutorture: add random preemption
    Add random preemption to help we to torture the preemptable rcu.

    srcu_read_delay() also calls rcu_read_delay() for shorter delays.

    Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
    ---
    diff --git a/kernel/rcutorture.c b/kernel/rcutorture.c
    index 2e2726d..7c81d07 100644
    --- a/kernel/rcutorture.c
    +++ b/kernel/rcutorture.c
    @@ -303,6 +303,10 @@ static void rcu_read_delay(struct rcu_random_state *rrsp)
    mdelay(longdelay_ms);
    if (!(rcu_random(rrsp) % (nrealreaders * 2 * shortdelay_us)))
    udelay(shortdelay_us);
    +#ifdef CONFIG_PREEMPT
    + if (!preempt_count() && !(rcu_random(rrsp) % (nrealreaders * 20000)))
    + preempt_schedule();
    +#endif
    }

    static void rcu_torture_read_unlock(int idx) __releases(RCU)
    @@ -536,6 +540,8 @@ static void srcu_read_delay(struct rcu_random_state *rrsp)
    delay = rcu_random(rrsp) % (nrealreaders * 2 * longdelay * uspertick);
    if (!delay)
    schedule_timeout_interruptible(longdelay);
    + else
    + rcu_read_delay(rrsp);
    }

    static void srcu_torture_read_unlock(int idx) __releases(&srcu_ctl)

    \
     
     \ /
      Last update: 2010-06-21 11:01    [W:0.023 / U:90.116 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site