update rcu
authorcompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Thu, 8 May 2008 11:09:06 +0000 (11:09 +0000)
committercompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Thu, 8 May 2008 11:09:06 +0000 (11:09 +0000)
git-svn-id: http://ltt.polymtl.ca/svn@2907 04897980-b3bd-0310-b5e0-8ef037075253

tests/kernel/test-cmpxchg-nolock2.c
tests/kernel/test-rcu-speed.c

index fcae83e44fd546acefd4bd1e910d58b5bb207120..5a19f73569e981a0b1fb80994653b274092e95fc 100644 (file)
@@ -100,6 +100,64 @@ static void do_test_cmpxchg(void)
        printk(KERN_ALERT "-> non locked cmpxchg takes %llu cycles\n", time);
        printk(KERN_ALERT "test end\n");
 }
+static void do_test_sync_inc(void)
+{
+       int ret;
+       long flags;
+       unsigned int i;
+       cycles_t time1, time2, time;
+       long rem;
+       atomic_t val;
+
+       local_irq_save(flags);
+       preempt_disable();
+       time1 = get_cycles();
+       for (i = 0; i < NR_LOOPS; i++) {
+               ret = atomic_add_return(10, &val);
+       }
+       time2 = get_cycles();
+       local_irq_restore(flags);
+       preempt_enable();
+       time = time2 - time1;
+
+       printk(KERN_ALERT "test results: time for locked add return\n");
+       printk(KERN_ALERT "number of loops: %d\n", NR_LOOPS);
+       printk(KERN_ALERT "total time: %llu\n", time);
+       time = div_long_long_rem(time, NR_LOOPS, &rem);
+       printk(KERN_ALERT "-> locked add return takes %llu cycles\n", time);
+       printk(KERN_ALERT "test end\n");
+}
+
+
+static void do_test_inc(void)
+{
+       int ret;
+       long flags;
+       unsigned int i;
+       cycles_t time1, time2, time;
+       long rem;
+       local_t loc_val;
+
+       local_irq_save(flags);
+       preempt_disable();
+       time1 = get_cycles();
+       for (i = 0; i < NR_LOOPS; i++) {
+               ret = local_add_return(10, &loc_val);
+       }
+       time2 = get_cycles();
+       local_irq_restore(flags);
+       preempt_enable();
+       time = time2 - time1;
+
+       printk(KERN_ALERT "test results: time for non locked add return\n");
+       printk(KERN_ALERT "number of loops: %d\n", NR_LOOPS);
+       printk(KERN_ALERT "total time: %llu\n", time);
+       time = div_long_long_rem(time, NR_LOOPS, &rem);
+       printk(KERN_ALERT "-> non locked add return takes %llu cycles\n", time);
+       printk(KERN_ALERT "test end\n");
+}
+
+
 
 /*
  * This test will have a higher standard deviation due to incoming interrupts.
@@ -195,6 +253,8 @@ static int ltt_test_init(void)
        do_testbaseline();
        do_test_sync_cmpxchg();
        do_test_cmpxchg();
+       do_test_sync_inc();
+       do_test_inc();
        do_test_enable_int();
        do_test_disable_int();
        do_test_int();
index 508821d65e182c4afa8f72b11aaca9cf6a722b4f..15fbe7029c3f08874e786c64d95d7b94a52ef3b4 100644 (file)
@@ -56,8 +56,8 @@ static void do_test_spinlock(void)
        spin_lock_irqsave(&mylock, flags);
        time1 = get_cycles();
        for (i = 0; i < NR_LOOPS; i++) {
-               spin_unlock_irqrestore(&mylock, flags);
-               spin_lock_irqsave(&mylock, flags);
+               spin_unlock(&mylock);
+               spin_lock(&mylock);
        }
        time2 = get_cycles();
        spin_unlock_irqrestore(&mylock, flags);
This page took 0.0261439999999999 seconds and 4 git commands to generate.