aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2009-05-07 11:13:42 -0400
committerSteven Rostedt <rostedt@goodmis.org>2009-05-07 11:16:18 -0400
commit29c8000ee7da3a6756d26143991e573eaaf2a9f6 (patch)
tree4c57a374639127ebccd6f4fca0feb02cde21e702 /kernel
parent0ad5d703c6c0fcd385d956555460df95dff7eb7e (diff)
ring-buffer: remove complex calculations in ring-buffer-test
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>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/trace/ring_buffer_benchmark.c37
1 files changed, 7 insertions, 30 deletions
diff --git a/kernel/trace/ring_buffer_benchmark.c b/kernel/trace/ring_buffer_benchmark.c
index a26fc67b63bb..f4ceb453c7dd 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)
185 complete(&read_done); 185 complete(&read_done);
186} 186}
187 187
188/*
189 * If we are a non preempt kernel, the 10 second run will
190 * stop everything while it runs. Instead, we will call cond_resched
191 * and also add any time that was lost by a rescedule.
192 */
193#ifdef CONFIG_PREEMPT
194static void sched_if_needed(struct timeval *start_tv, struct timeval *end_tv)
195{
196}
197#else
198static void sched_if_needed(struct timeval *start_tv, struct timeval *end_tv)
199{
200 struct timeval tv;
201
202 cond_resched();
203 do_gettimeofday(&tv);
204 if (tv.tv_usec < end_tv->tv_usec) {
205 tv.tv_usec += 1000000;
206 tv.tv_sec--;
207 }
208 start_tv->tv_sec += tv.tv_sec - end_tv->tv_sec;
209 start_tv->tv_usec += tv.tv_usec - end_tv->tv_usec;
210 if (start_tv->tv_usec > 1000000) {
211 start_tv->tv_usec -= 1000000;
212 start_tv->tv_sec++;
213 }
214}
215#endif
216
217static void ring_buffer_producer(void) 188static void ring_buffer_producer(void)
218{ 189{
219 struct timeval start_tv; 190 struct timeval start_tv;
@@ -250,7 +221,13 @@ static void ring_buffer_producer(void)
250 if (consumer && !(++cnt % wakeup_interval)) 221 if (consumer && !(++cnt % wakeup_interval))
251 wake_up_process(consumer); 222 wake_up_process(consumer);
252 223
253 sched_if_needed(&start_tv, &end_tv); 224 /*
225 * If we are a non preempt kernel, the 10 second run will
226 * stop everything while it runs. Instead, we will call
227 * cond_resched and also add any time that was lost by a
228 * rescedule.
229 */
230 cond_resched();
254 231
255 } while (end_tv.tv_sec < (start_tv.tv_sec + RUN_TIME) && !kill_test); 232 } while (end_tv.tv_sec < (start_tv.tv_sec + RUN_TIME) && !kill_test);
256 pr_info("End ring buffer hammer\n"); 233 pr_info("End ring buffer hammer\n");