move everything out of trunk
[lttv.git] / tests / kernel / test-cmpxchg-nolock2.c
index fcae83e44fd546acefd4bd1e910d58b5bb207120..a0a994035d6d29a894ece903275fdade2df3fcb4 100644 (file)
@@ -8,7 +8,7 @@
 #include <linux/compiler.h>
 #include <linux/init.h>
 #include <linux/module.h>
-#include <linux/calc64.h>
+#include <linux/math64.h>
 #include <asm/timex.h>
 #include <asm/system.h>
 
@@ -18,11 +18,10 @@ int test_val;
 
 static void do_testbaseline(void)
 {
-       int ret;
-       long flags;
+       unsigned long flags;
        unsigned int i;
        cycles_t time1, time2, time;
-       long rem;
+       u32 rem;
 
        local_irq_save(flags);
        preempt_disable();
@@ -38,7 +37,7 @@ static void do_testbaseline(void)
        printk(KERN_ALERT "test results: time for baseline\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);
+       time = div_u64_rem(time, NR_LOOPS, &rem);
        printk(KERN_ALERT "-> baseline takes %llu cycles\n", time);
        printk(KERN_ALERT "test end\n");
 }
@@ -46,10 +45,10 @@ static void do_testbaseline(void)
 static void do_test_sync_cmpxchg(void)
 {
        int ret;
-       long flags;
+       unsigned long flags;
        unsigned int i;
        cycles_t time1, time2, time;
-       long rem;
+       u32 rem;
 
        local_irq_save(flags);
        preempt_disable();
@@ -69,7 +68,7 @@ static void do_test_sync_cmpxchg(void)
        printk(KERN_ALERT "test results: time for locked cmpxchg\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);
+       time = div_u64_rem(time, NR_LOOPS, &rem);
        printk(KERN_ALERT "-> locked cmpxchg takes %llu cycles\n", time);
        printk(KERN_ALERT "test end\n");
 }
@@ -77,10 +76,10 @@ static void do_test_sync_cmpxchg(void)
 static void do_test_cmpxchg(void)
 {
        int ret;
-       long flags;
+       unsigned long flags;
        unsigned int i;
        cycles_t time1, time2, time;
-       long rem;
+       u32 rem;
 
        local_irq_save(flags);
        preempt_disable();
@@ -96,20 +95,78 @@ static void do_test_cmpxchg(void)
        printk(KERN_ALERT "test results: time for non locked cmpxchg\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);
+       time = div_u64_rem(time, NR_LOOPS, &rem);
        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;
+       unsigned long flags;
+       unsigned int i;
+       cycles_t time1, time2, time;
+       u32 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_u64_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;
+       unsigned long flags;
+       unsigned int i;
+       cycles_t time1, time2, time;
+       u32 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_u64_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.
  */
 static void do_test_enable_int(void)
 {
-       long flags;
+       unsigned long flags;
        unsigned int i;
        cycles_t time1, time2, time;
-       long rem;
+       u32 rem;
 
        local_irq_save(flags);
        preempt_disable();
@@ -125,7 +182,7 @@ static void do_test_enable_int(void)
        printk(KERN_ALERT "test results: time for enabling interrupts (STI)\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);
+       time = div_u64_rem(time, NR_LOOPS, &rem);
        printk(KERN_ALERT "-> enabling interrupts (STI) takes %llu cycles\n",
                                        time);
        printk(KERN_ALERT "test end\n");
@@ -136,7 +193,7 @@ static void do_test_disable_int(void)
        unsigned long flags, flags2;
        unsigned int i;
        cycles_t time1, time2, time;
-       long rem;
+       u32 rem;
 
        local_irq_save(flags);
        preempt_disable();
@@ -152,7 +209,7 @@ static void do_test_disable_int(void)
        printk(KERN_ALERT "test results: time for disabling interrupts (CLI)\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);
+       time = div_u64_rem(time, NR_LOOPS, &rem);
        printk(KERN_ALERT "-> disabling interrupts (CLI) takes %llu cycles\n",
                                time);
        printk(KERN_ALERT "test end\n");
@@ -160,10 +217,10 @@ static void do_test_disable_int(void)
 
 static void do_test_int(void)
 {
-       long flags;
+       unsigned long flags;
        unsigned int i;
        cycles_t time1, time2, time;
-       long rem;
+       u32 rem;
 
        local_irq_save(flags);
        preempt_disable();
@@ -180,7 +237,7 @@ static void do_test_int(void)
        printk(KERN_ALERT "test results: time for disabling/enabling interrupts (STI/CLI)\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);
+       time = div_u64_rem(time, NR_LOOPS, &rem);
        printk(KERN_ALERT "-> enabling/disabling interrupts (STI/CLI) takes %llu cycles\n",
                                        time);
        printk(KERN_ALERT "test end\n");
@@ -195,6 +252,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();
This page took 0.024966 seconds and 4 git commands to generate.