|
@@ -547,6 +547,25 @@ static struct rcu_torture_ops srcu_ops = {
|
|
|
.name = "srcu"
|
|
|
};
|
|
|
|
|
|
+static void srcu_torture_synchronize_expedited(void)
|
|
|
+{
|
|
|
+ synchronize_srcu_expedited(&srcu_ctl);
|
|
|
+}
|
|
|
+
|
|
|
+static struct rcu_torture_ops srcu_expedited_ops = {
|
|
|
+ .init = srcu_torture_init,
|
|
|
+ .cleanup = srcu_torture_cleanup,
|
|
|
+ .readlock = srcu_torture_read_lock,
|
|
|
+ .read_delay = srcu_read_delay,
|
|
|
+ .readunlock = srcu_torture_read_unlock,
|
|
|
+ .completed = srcu_torture_completed,
|
|
|
+ .deferred_free = rcu_sync_torture_deferred_free,
|
|
|
+ .sync = srcu_torture_synchronize_expedited,
|
|
|
+ .cb_barrier = NULL,
|
|
|
+ .stats = srcu_torture_stats,
|
|
|
+ .name = "srcu_expedited"
|
|
|
+};
|
|
|
+
|
|
|
/*
|
|
|
* Definitions for sched torture testing.
|
|
|
*/
|
|
@@ -592,7 +611,7 @@ static struct rcu_torture_ops sched_ops = {
|
|
|
.name = "sched"
|
|
|
};
|
|
|
|
|
|
-static struct rcu_torture_ops sched_ops_sync = {
|
|
|
+static struct rcu_torture_ops sched_sync_ops = {
|
|
|
.init = rcu_sync_torture_init,
|
|
|
.cleanup = NULL,
|
|
|
.readlock = sched_torture_read_lock,
|
|
@@ -1098,8 +1117,8 @@ rcu_torture_init(void)
|
|
|
int firsterr = 0;
|
|
|
static struct rcu_torture_ops *torture_ops[] =
|
|
|
{ &rcu_ops, &rcu_sync_ops, &rcu_bh_ops, &rcu_bh_sync_ops,
|
|
|
- &sched_expedited_ops,
|
|
|
- &srcu_ops, &sched_ops, &sched_ops_sync, };
|
|
|
+ &srcu_ops, &srcu_expedited_ops,
|
|
|
+ &sched_ops, &sched_sync_ops, &sched_expedited_ops, };
|
|
|
|
|
|
mutex_lock(&fullstop_mutex);
|
|
|
|