From feca19f00ec3c73fa9e5cc2c9876681f9ed4dddb Mon Sep 17 00:00:00 2001 From: compudj Date: Mon, 19 Mar 2007 04:05:38 +0000 Subject: [PATCH] add teest tsc sync git-svn-id: http://ltt.polymtl.ca/svn@2439 04897980-b3bd-0310-b5e0-8ef037075253 --- tests/kernel/test-tsc-sync.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) 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) { -- 2.34.1