update tests
authorcompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Tue, 10 Jul 2007 06:58:42 +0000 (06:58 +0000)
committercompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Tue, 10 Jul 2007 06:58:42 +0000 (06:58 +0000)
git-svn-id: http://ltt.polymtl.ca/svn@2547 04897980-b3bd-0310-b5e0-8ef037075253

tests/kernel/Makefile
tests/kernel/marker-example.c
tests/kernel/probe-example.c
tests/kernel/test-cmpxchg-nolock2.c [new file with mode: 0644]
tests/kernel/test-compact.c

index 5b9431634e534151d2b737424659a78b6b6d7ebf..af5ffd813a5d98c07a3af620e85ea203cf9cfe0c 100644 (file)
@@ -3,20 +3,27 @@ ifneq ($(CONFIG_LTT),)
        #obj-m += ltt-facility-loader-tests.o
 #      #obj-m += test-time-probe.o 
        #obj-m += test-time-probe2.o 
-       obj-m += test-compact.o 
+       #obj-m += test-compact.o 
 #      obj-m += ltt-facility-loader-compact.o
 #      obj-m += test-instrument-size-small.o
 #      obj-m += test-instrument-size-med.o
 #      obj-m += test-instrument-size-big.o
 #      obj-m += test-printk-effect.o
-       obj-m += ltt-probe-tests.o
-       obj-m += test-time-probe3.o
+       #obj-m += ltt-probe-tests.o
+       #obj-m += test-time-probe3.o
 endif
-       obj-m += probe-example.o
-       obj-m += marker-example.o
+       #obj-m += cond_call.o
+       #obj-m += cond_call2.o
+       obj-m += test-irq-latency.o
+       #obj-m += list-mark.o
+       #obj-m += test-rodata.o
+       #obj-m += test-tlb.o
+       #obj-m += test-init.o
+       #obj-m += probe-example.o
+       #obj-m += marker-example.o
 #      obj-m += test-async-tsc.o
-       obj-m += test-tsc-sync.o
-       obj-m += test-tsc.o
+       #obj-m += test-tsc-sync.o
+       #obj-m += test-tsc.o
 #      obj-m += test-hpet.o
        #obj-m += test-debugfs.o
 #      obj-m += test-mod.o
@@ -27,6 +34,7 @@ endif
        #obj-m += test-ser.o
 #      obj-m += test-cmpxchg.o
 #      obj-m += test-cmpxchg-nolock.o
+       obj-m += test-cmpxchg-nolock2.o
 #      obj-m += test-spinlock.o
 #      obj-m += test-inc.o
 #      obj-m += test-inc-nolock.o
index 9ae10d9e47162b94882048641ec47ae8738c774e..13c49b7b9799d76755e0e9b5c243132ddc24c108 100644 (file)
@@ -19,10 +19,9 @@ static int my_open(struct inode *inode, struct file *file)
 {
        int i;
 
-       MARK(subsystem_event, "%d %s %*.*r", 123, "example string",
-               sizeof(current), __alignof__(current), current);
+       trace_mark(subsystem_event, "%d %s", 123, "example string");
        for (i=0; i<10; i++) {
-               MARK(subsystem_eventb, MARK_NOARGS);
+               trace_mark(subsystem_eventb, MARK_NOARGS);
        }
        return -EPERM;
 }
index 5e7093c71acab88172e06cb95674abd4d187cbdf..e3d9a300551c9f871613f15aac5f9ecb40b59f47 100644 (file)
@@ -29,19 +29,14 @@ void probe_subsystem_event(const struct __mark_marker_c *mdata,
        /* Declare args */
        unsigned int value;
        const char *mystr;
-       int task_size, task_alignment;
-       struct task_struct *task;
 
        /* Assign args */
        va_start(ap, format);
        value = va_arg(ap, typeof(value));
        mystr = va_arg(ap, typeof(mystr));
-       task_size = va_arg(ap, typeof(task_size));
-       task_alignment = va_arg(ap, typeof(task_alignment));
-       task = va_arg(ap, typeof(task));
 
        /* Call printk */
-       printk("Value %u, string %s, current ptr %p\n", value, mystr, current);
+       printk("Value %u, string %s\n", value, mystr);
 
        /* or count, check rights, serialize data in a buffer */
 
@@ -60,7 +55,7 @@ void probe_subsystem_eventb(const struct __mark_marker_c *mdata,
 static struct probe_data probe_array[] =
 {
        {       .name = "subsystem_event",
-               .format = "%d %s %*.*r",
+               .format = "%d %s",
                .probe_func = probe_subsystem_event },
        {       .name = "subsystem_eventb",
                .format = MARK_NOARGS,
diff --git a/tests/kernel/test-cmpxchg-nolock2.c b/tests/kernel/test-cmpxchg-nolock2.c
new file mode 100644 (file)
index 0000000..9699211
--- /dev/null
@@ -0,0 +1,126 @@
+/* test-cmpxchg-nolock.c
+ *
+ * Compare local cmpxchg with irq disable / enable.
+ */
+
+
+#include <linux/jiffies.h>
+#include <linux/compiler.h>
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/calc64.h>
+#include <asm/timex.h>
+#include <asm/system.h>
+
+#define NR_LOOPS 20000
+
+int test_val;
+
+static void do_test_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++) {
+               ret = cmpxchg_local(&test_val, 0, 0);
+       }
+       time2 = get_cycles();
+       local_irq_restore(flags);
+       preempt_enable();
+       time = time2 - time1;
+
+       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);
+       printk(KERN_ALERT "-> non locked cmpxchg 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 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++) {
+               local_irq_restore(flags);
+       }
+       time2 = get_cycles();
+       local_irq_restore(flags);
+       preempt_enable();
+       time = time2 - time1;
+
+       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);
+       printk(KERN_ALERT "-> enabling interrupts (STI) takes %llu cycles\n",
+                                       time);
+       printk(KERN_ALERT "test end\n");
+}
+
+static void do_test_disable_int(void)
+{
+       unsigned long flags, flags2;
+       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++) {
+               local_irq_save(flags2);
+       }
+       time2 = get_cycles();
+       local_irq_restore(flags);
+       preempt_enable();
+       time = time2 - time1;
+
+       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);
+       printk(KERN_ALERT "-> disabling interrupts (CTI) takes %llu cycles\n",
+                               time);
+       printk(KERN_ALERT "test end\n");
+}
+
+
+
+static int ltt_test_init(void)
+{
+       printk(KERN_ALERT "test init\n");
+       
+       do_test_cmpxchg();
+       do_test_enable_int();
+       do_test_disable_int();
+       return -EAGAIN; /* Fail will directly unload the module */
+}
+
+static void ltt_test_exit(void)
+{
+       printk(KERN_ALERT "test exit\n");
+}
+
+module_init(ltt_test_init)
+module_exit(ltt_test_exit)
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Mathieu Desnoyers");
+MODULE_DESCRIPTION("Cmpxchg vs int Test");
+
index d3f4472e17012b1cfae553aa68a5f93ec1033631..0658a8647d15f2bc73c2b12a96f1909d7aad1928 100644 (file)
@@ -6,7 +6,7 @@
 
 #include <linux/init.h>
 #include <linux/module.h>
-#include <ltt/ltt-tracer.h>
+#include <linux/ltt-tracer.h>
 #include <linux/timex.h>
 #include <linux/marker.h>
 #include <linux/proc_fs.h>
This page took 0.028108 seconds and 4 git commands to generate.