ring-buffer: remove complex calculations in ring-buffer-test
authorSteven Rostedt <srostedt@redhat.com>
Thu, 7 May 2009 15:13:42 +0000 (11:13 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Thu, 7 May 2009 15:16:18 +0000 (11:16 -0400)
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

index a26fc67b63bb88255bc3e2a8a4f778978a7f23ef..f4ceb453c7ddda4c8212fa72ff557802490a9d80 100644 (file)
@@ -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");