update
[lttv.git] / tests / kernel / test-cmpxchg-nolock2.c
index 969921156bf79b2cc3b7730b243b320f4e97528a..c1bec8971f7b712dfb35d899c861384df7636ce7 100644 (file)
 
 int test_val;
 
+static void do_test_sync_cmpxchg(void)
+{
+       int ret;
+       long flags;
+       unsigned int i;
+       cycles_t time1, time2, time;
+       long rem;
+
+       local_irq_save(flags);
+       preempt_disable();
+       time1 = get_cycles();
+       for (i = 0; i < NR_LOOPS; i++) {
+#ifdef CONFIG_X86_32
+               ret = sync_cmpxchg(&test_val, 0, 0);
+#else
+               ret = cmpxchg(&test_val, 0, 0);
+#endif
+       }
+       time2 = get_cycles();
+       local_irq_restore(flags);
+       preempt_enable();
+       time = time2 - time1;
+
+       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);
+       printk(KERN_ALERT "-> locked cmpxchg takes %llu cycles\n", time);
+       printk(KERN_ALERT "test end\n");
+}
+
 static void do_test_cmpxchg(void)
 {
        int ret;
@@ -95,7 +126,7 @@ static void do_test_disable_int(void)
        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 "-> disabling interrupts (CTI) takes %llu cycles\n",
+       printk(KERN_ALERT "-> disabling interrupts (CLI) takes %llu cycles\n",
                                time);
        printk(KERN_ALERT "test end\n");
 }
@@ -106,6 +137,7 @@ static int ltt_test_init(void)
 {
        printk(KERN_ALERT "test init\n");
        
+       do_test_sync_cmpxchg();
        do_test_cmpxchg();
        do_test_enable_int();
        do_test_disable_int();
This page took 0.031324 seconds and 4 git commands to generate.