From 0c12e05150561b25e676a43772c9b7edd96b7b0d Mon Sep 17 00:00:00 2001 From: compudj Date: Thu, 8 May 2008 11:09:06 +0000 Subject: [PATCH] update rcu git-svn-id: http://ltt.polymtl.ca/svn@2907 04897980-b3bd-0310-b5e0-8ef037075253 --- tests/kernel/test-cmpxchg-nolock2.c | 60 +++++++++++++++++++++++++++++ tests/kernel/test-rcu-speed.c | 4 +- 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/tests/kernel/test-cmpxchg-nolock2.c b/tests/kernel/test-cmpxchg-nolock2.c index fcae83e4..5a19f735 100644 --- a/tests/kernel/test-cmpxchg-nolock2.c +++ b/tests/kernel/test-cmpxchg-nolock2.c @@ -100,6 +100,64 @@ static void do_test_cmpxchg(void) printk(KERN_ALERT "-> non locked cmpxchg takes %llu cycles\n", time); printk(KERN_ALERT "test end\n"); } +static void do_test_sync_inc(void) +{ + int ret; + long flags; + unsigned int i; + cycles_t time1, time2, time; + long rem; + atomic_t val; + + local_irq_save(flags); + preempt_disable(); + time1 = get_cycles(); + for (i = 0; i < NR_LOOPS; i++) { + ret = atomic_add_return(10, &val); + } + time2 = get_cycles(); + local_irq_restore(flags); + preempt_enable(); + time = time2 - time1; + + printk(KERN_ALERT "test results: time for locked add return\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 add return takes %llu cycles\n", time); + printk(KERN_ALERT "test end\n"); +} + + +static void do_test_inc(void) +{ + int ret; + long flags; + unsigned int i; + cycles_t time1, time2, time; + long rem; + local_t loc_val; + + local_irq_save(flags); + preempt_disable(); + time1 = get_cycles(); + for (i = 0; i < NR_LOOPS; i++) { + ret = local_add_return(10, &loc_val); + } + time2 = get_cycles(); + local_irq_restore(flags); + preempt_enable(); + time = time2 - time1; + + printk(KERN_ALERT "test results: time for non locked add return\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 add return takes %llu cycles\n", time); + printk(KERN_ALERT "test end\n"); +} + + /* * This test will have a higher standard deviation due to incoming interrupts. @@ -195,6 +253,8 @@ static int ltt_test_init(void) do_testbaseline(); do_test_sync_cmpxchg(); do_test_cmpxchg(); + do_test_sync_inc(); + do_test_inc(); do_test_enable_int(); do_test_disable_int(); do_test_int(); diff --git a/tests/kernel/test-rcu-speed.c b/tests/kernel/test-rcu-speed.c index 508821d6..15fbe702 100644 --- a/tests/kernel/test-rcu-speed.c +++ b/tests/kernel/test-rcu-speed.c @@ -56,8 +56,8 @@ static void do_test_spinlock(void) spin_lock_irqsave(&mylock, flags); time1 = get_cycles(); for (i = 0; i < NR_LOOPS; i++) { - spin_unlock_irqrestore(&mylock, flags); - spin_lock_irqsave(&mylock, flags); + spin_unlock(&mylock); + spin_lock(&mylock); } time2 = get_cycles(); spin_unlock_irqrestore(&mylock, flags); -- 2.34.1