lkml.org 
[lkml]   [2009]   [May]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH 1/2] ring-buffer: remove complex calculations in ring-buffer-test
From: Steven Rostedt <srostedt@redhat.com>

Ingo Molnar thought that the code to calculate the time in cond_resched
is a bit too ugly and is not needed. This patch removes it and replaces
it with a simple call to cond_resched. I kept the comment that explains
the reason for the cond_resched.

[ Impact: remove ugly code ]

Reported-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
kernel/trace/ring_buffer_benchmark.c | 37 ++++++---------------------------
1 files changed, 7 insertions(+), 30 deletions(-)

diff --git a/kernel/trace/ring_buffer_benchmark.c b/kernel/trace/ring_buffer_benchmark.c
index a26fc67..f4ceb45 100644
--- a/kernel/trace/ring_buffer_benchmark.c
+++ b/kernel/trace/ring_buffer_benchmark.c
@@ -185,35 +185,6 @@ static void ring_buffer_consumer(void)
complete(&read_done);
}

-/*
- * If we are a non preempt kernel, the 10 second run will
- * stop everything while it runs. Instead, we will call cond_resched
- * and also add any time that was lost by a rescedule.
- */
-#ifdef CONFIG_PREEMPT
-static void sched_if_needed(struct timeval *start_tv, struct timeval *end_tv)
-{
-}
-#else
-static void sched_if_needed(struct timeval *start_tv, struct timeval *end_tv)
-{
- struct timeval tv;
-
- cond_resched();
- do_gettimeofday(&tv);
- if (tv.tv_usec < end_tv->tv_usec) {
- tv.tv_usec += 1000000;
- tv.tv_sec--;
- }
- start_tv->tv_sec += tv.tv_sec - end_tv->tv_sec;
- start_tv->tv_usec += tv.tv_usec - end_tv->tv_usec;
- if (start_tv->tv_usec > 1000000) {
- start_tv->tv_usec -= 1000000;
- start_tv->tv_sec++;
- }
-}
-#endif
-
static void ring_buffer_producer(void)
{
struct timeval start_tv;
@@ -250,7 +221,13 @@ static void ring_buffer_producer(void)
if (consumer && !(++cnt % wakeup_interval))
wake_up_process(consumer);

- sched_if_needed(&start_tv, &end_tv);
+ /*
+ * If we are a non preempt kernel, the 10 second run will
+ * stop everything while it runs. Instead, we will call
+ * cond_resched and also add any time that was lost by a
+ * rescedule.
+ */
+ cond_resched();

} while (end_tv.tv_sec < (start_tv.tv_sec + RUN_TIME) && !kill_test);
pr_info("End ring buffer hammer\n");
--
1.6.2.4
--


\
 
 \ /
  Last update: 2009-05-07 18:25    [W:0.232 / U:0.040 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site