]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - kernel/rcutorture.c
[PATCH] cpuset memory spread basic implementation
[linux-2.6-omap-h63xx.git] / kernel / rcutorture.c
index 773219907dd8a96698f6c0390778538071e2e890..9a1fa8894b95f54c7160dd351c7f7c8f55f725c5 100644 (file)
@@ -114,16 +114,16 @@ rcu_torture_alloc(void)
 {
        struct list_head *p;
 
-       spin_lock(&rcu_torture_lock);
+       spin_lock_bh(&rcu_torture_lock);
        if (list_empty(&rcu_torture_freelist)) {
                atomic_inc(&n_rcu_torture_alloc_fail);
-               spin_unlock(&rcu_torture_lock);
+               spin_unlock_bh(&rcu_torture_lock);
                return NULL;
        }
        atomic_inc(&n_rcu_torture_alloc);
        p = rcu_torture_freelist.next;
        list_del_init(p);
-       spin_unlock(&rcu_torture_lock);
+       spin_unlock_bh(&rcu_torture_lock);
        return container_of(p, struct rcu_torture, rtort_free);
 }
 
@@ -134,9 +134,9 @@ static void
 rcu_torture_free(struct rcu_torture *p)
 {
        atomic_inc(&n_rcu_torture_free);
-       spin_lock(&rcu_torture_lock);
+       spin_lock_bh(&rcu_torture_lock);
        list_add_tail(&p->rtort_free, &rcu_torture_freelist);
-       spin_unlock(&rcu_torture_lock);
+       spin_unlock_bh(&rcu_torture_lock);
 }
 
 static void
@@ -441,6 +441,16 @@ rcu_torture_shuffle(void *arg)
        return 0;
 }
 
+static inline void
+rcu_torture_print_module_parms(char *tag)
+{
+       printk(KERN_ALERT TORTURE_FLAG "--- %s: nreaders=%d "
+               "stat_interval=%d verbose=%d test_no_idle_hz=%d "
+               "shuffle_interval = %d\n",
+               tag, nrealreaders, stat_interval, verbose, test_no_idle_hz,
+               shuffle_interval);
+}
+
 static void
 rcu_torture_cleanup(void)
 {
@@ -483,9 +493,10 @@ rcu_torture_cleanup(void)
        rcu_barrier();
 
        rcu_torture_stats_print();  /* -After- the stats thread is stopped! */
-       printk(KERN_ALERT TORTURE_FLAG
-              "--- End of test: %s\n",
-              atomic_read(&n_rcu_torture_error) == 0 ? "SUCCESS" : "FAILURE");
+       if (atomic_read(&n_rcu_torture_error))
+               rcu_torture_print_module_parms("End of test: FAILURE");
+       else
+               rcu_torture_print_module_parms("End of test: SUCCESS");
 }
 
 static int
@@ -501,11 +512,7 @@ rcu_torture_init(void)
                nrealreaders = nreaders;
        else
                nrealreaders = 2 * num_online_cpus();
-       printk(KERN_ALERT TORTURE_FLAG "--- Start of test: nreaders=%d "
-               "stat_interval=%d verbose=%d test_no_idle_hz=%d "
-               "shuffle_interval = %d\n",
-               nrealreaders, stat_interval, verbose, test_no_idle_hz,
-               shuffle_interval);
+       rcu_torture_print_module_parms("Start of test");
        fullstop = 0;
 
        /* Set up the freelist. */