From: compudj Date: Mon, 19 Mar 2007 04:05:38 +0000 (+0000) Subject: add teest tsc sync X-Git-Tag: v0.12.20~1050 X-Git-Url: http://git.lttng.org./?a=commitdiff_plain;h=feca19f00ec3c73fa9e5cc2c9876681f9ed4dddb;p=lttv.git add teest tsc sync git-svn-id: http://ltt.polymtl.ca/svn@2439 04897980-b3bd-0310-b5e0-8ef037075253 --- diff --git a/tests/kernel/test-tsc-sync.c b/tests/kernel/test-tsc-sync.c index 5ca7e57e..200839ab 100644 --- a/tests/kernel/test-tsc-sync.c +++ b/tests/kernel/test-tsc-sync.c @@ -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) {