update
authorcompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Thu, 8 May 2008 01:05:49 +0000 (01:05 +0000)
committercompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Thu, 8 May 2008 01:05:49 +0000 (01:05 +0000)
git-svn-id: http://ltt.polymtl.ca/svn@2894 04897980-b3bd-0310-b5e0-8ef037075253

tests/kernel/Makefile
tests/kernel/test-cmpxchg-nolock2.c

index 3165679103e0aa264fd8209833d636eeaed4f378..c244a439f16da5ce1e95c9ae4c04b5f310396bb5 100644 (file)
@@ -14,7 +14,7 @@ ifneq ($(CONFIG_LTT),)
 endif
        #obj-m += test-sys_call.o
 #      obj-m += test-bug.o
-       obj-m += test-cmpxchg.o
+       obj-m += test-cmpxchg-nolock2.o
        #obj-m += test-mark-speed.o
        #obj-m += test-mark-speed-edit.o
        #obj-m += test-mark-speed-opt.o
index 3cef7af9c490ba52cb33c53b7ca037805612e5e1..4b7b3cca8ba4de0206f6d56d13e0fe6ee4e5bb4a 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;
This page took 0.025347 seconds and 4 git commands to generate.