rcutorture: Enable SRCU readers from timer handler
Now that it is legal to invoke srcu_read_lock() and srcu_read_unlock() for a given srcu_struct from both process context and {soft,}irq handlers, it is time to test it. This commit therefore enables testing of SRCU readers from rcutorture's timer handler, using in_task() to determine whether or not it is safe to sleep in the SRCU read-side critical sections. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
parent
85ef2bd2a5
commit
5e741fa9e9
|
@ -522,7 +522,7 @@ static void srcu_read_delay(struct torture_random_state *rrsp)
|
|||
|
||||
delay = torture_random(rrsp) %
|
||||
(nrealreaders * 2 * longdelay * uspertick);
|
||||
if (!delay)
|
||||
if (!delay && in_task())
|
||||
schedule_timeout_interruptible(longdelay);
|
||||
else
|
||||
rcu_read_delay(rrsp);
|
||||
|
@ -583,6 +583,7 @@ static struct rcu_torture_ops srcu_ops = {
|
|||
.call = srcu_torture_call,
|
||||
.cb_barrier = srcu_torture_barrier,
|
||||
.stats = srcu_torture_stats,
|
||||
.irq_capable = 1,
|
||||
.name = "srcu"
|
||||
};
|
||||
|
||||
|
@ -615,6 +616,7 @@ static struct rcu_torture_ops srcud_ops = {
|
|||
.call = srcu_torture_call,
|
||||
.cb_barrier = srcu_torture_barrier,
|
||||
.stats = srcu_torture_stats,
|
||||
.irq_capable = 1,
|
||||
.name = "srcud"
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue