Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29c8000e authored by Steven Rostedt's avatar Steven Rostedt Committed by Steven Rostedt
Browse files

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: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 0ad5d703
Loading
Loading
Loading
Loading
+7 −30
Original line number Diff line number Diff line
@@ -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");