add teest tsc sync
authorcompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Mon, 19 Mar 2007 04:05:38 +0000 (04:05 +0000)
committercompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Mon, 19 Mar 2007 04:05:38 +0000 (04:05 +0000)
git-svn-id: http://ltt.polymtl.ca/svn@2439 04897980-b3bd-0310-b5e0-8ef037075253

tests/kernel/test-tsc-sync.c

index 5ca7e57e9e27391467d060b65f40aa8b3da7cc87..200839abb7226cf24a17f175f9f4ae51ae4730ba 100644 (file)
@@ -13,18 +13,29 @@ static DEFINE_PER_CPU(cycles_t, count) = 0;
 
 static struct timer_list test_timer;
 
+static atomic_t kernel_threads_to_run;
+
+
 /* IPI called on each CPU. */
 static void test_each(void *info)
 {
+       unsigned long flags;
+       local_irq_save(flags);
+       atomic_dec(&kernel_threads_to_run);
+       while(atomic_read(&kernel_threads_to_run))
+               cpu_relax();
        __get_cpu_var(count) = get_cycles();
+       local_irq_restore(flags);
 }
 
 static void do_test_timer(unsigned long data)
 {
        int cpu;
 
-       /* Increment the counters */
-       on_each_cpu(test_each, NULL, 0, 1);
+       atomic_set(&kernel_threads_to_run, num_online_cpus());
+
+       smp_call_function(test_each, NULL, 0, 0);
+       test_each(NULL);
        /* Read all the counters */
        printk("Counters read from CPU %d\n", smp_processor_id());
        for_each_online_cpu(cpu) {
This page took 0.024172 seconds and 4 git commands to generate.