lkml.org 
[lkml]   [2010]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH RFC tip/core/rcu 25/30] rcutorture: add random preemption
    Date
    From: Lai Jiangshan <laijs@cn.fujitsu.com>

    Add random preemption to help we to torture the preemptable rcu.

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

    Added comment to preempt_schedule() call indicating that no quiescent
    states happen if preemption is disabled.

    Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    ---
    kernel/rcutorture.c | 6 ++++++
    1 files changed, 6 insertions(+), 0 deletions(-)

    diff --git a/kernel/rcutorture.c b/kernel/rcutorture.c
    index 6535ac8..430cb7f 100644
    --- a/kernel/rcutorture.c
    +++ b/kernel/rcutorture.c
    @@ -304,6 +304,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(); /* No QS if preempt_disable() in effect */
    +#endif
    }

    static void rcu_torture_read_unlock(int idx) __releases(RCU)
    @@ -537,6 +541,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)
    --
    1.7.0.6


    \
     
     \ /
      Last update: 2010-07-14 22:17    [W:3.138 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site