]> err.no Git - linux-2.6/blobdiff - kernel/rcutorture.c
[PATCH] make fs/jbd/transaction.c:__journal_temp_unlink_buffer() static
[linux-2.6] / kernel / rcutorture.c
index 0f0ff1556b5d8a739455c3ba4b1f0e622d7db295..e2bda18f6f42779144829a2150b4e6fb8ac4b338 100644 (file)
@@ -464,9 +464,47 @@ static struct rcu_torture_ops srcu_ops = {
        .name = "srcu"
 };
 
+/*
+ * Definitions for sched torture testing.
+ */
+
+static int sched_torture_read_lock(void)
+{
+       preempt_disable();
+       return 0;
+}
+
+static void sched_torture_read_unlock(int idx)
+{
+       preempt_enable();
+}
+
+static int sched_torture_completed(void)
+{
+       return 0;
+}
+
+static void sched_torture_synchronize(void)
+{
+       synchronize_sched();
+}
+
+static struct rcu_torture_ops sched_ops = {
+       .init = rcu_sync_torture_init,
+       .cleanup = NULL,
+       .readlock = sched_torture_read_lock,
+       .readdelay = rcu_read_delay,  /* just reuse rcu's version. */
+       .readunlock = sched_torture_read_unlock,
+       .completed = sched_torture_completed,
+       .deferredfree = rcu_sync_torture_deferred_free,
+       .sync = sched_torture_synchronize,
+       .stats = NULL,
+       .name = "sched"
+};
+
 static struct rcu_torture_ops *torture_ops[] =
        { &rcu_ops, &rcu_sync_ops, &rcu_bh_ops, &rcu_bh_sync_ops, &srcu_ops,
-         NULL };
+         &sched_ops, NULL };
 
 /*
  * RCU torture writer kthread.  Repeatedly substitutes a new structure