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

Commit 36fc25a9 authored by Ingo Molnar's avatar Ingo Molnar Committed by Thomas Gleixner
Browse files

ftrace: sched tree fix



Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent f29c73fe
Loading
Loading
Loading
Loading
+21 −14
Original line number Diff line number Diff line
@@ -2414,6 +2414,23 @@ static int sched_balance_self(int cpu, int flag)

#ifdef CONFIG_CONTEXT_SWITCH_TRACER

void ftrace_task(struct task_struct *p, void *__tr, void *__data)
{
#if 0
	/*  
	 * trace timeline tree
	 */
	__trace_special(__tr, __data,
			p->pid, p->se.vruntime, p->se.sum_exec_runtime);
#else
	/*
	 * trace balance metrics
	 */
	__trace_special(__tr, __data,
			p->pid, p->se.avg_overlap, 0);
#endif
}

void ftrace_all_fair_tasks(void *__rq, void *__tr, void *__data)
{
	struct task_struct *p;
@@ -2421,32 +2438,22 @@ void ftrace_all_fair_tasks(void *__rq, void *__tr, void *__data)
	struct rb_node *curr;
	struct rq *rq = __rq;

	curr = first_fair(&rq->cfs);
	if (!curr)
		return;

	if (rq->cfs.curr) {
		p = task_of(rq->cfs.curr);
		__trace_special(__tr, __data,
		      p->pid, p->se.vruntime, p->se.sum_exec_runtime);
		ftrace_task(p, __tr, __data);
	}
	if (rq->cfs.next) {
		p = task_of(rq->cfs.next);
		__trace_special(__tr, __data,
		      p->pid, p->se.vruntime, p->se.sum_exec_runtime);
		ftrace_task(p, __tr, __data);
	}

	while (curr) {
	for (curr = first_fair(&rq->cfs); curr; curr = rb_next(curr)) {
		se = rb_entry(curr, struct sched_entity, run_node);
		if (!entity_is_task(se))
			continue;

		p = task_of(se);

		__trace_special(__tr, __data,
			      p->pid, p->se.vruntime, p->se.sum_exec_runtime);

		curr = rb_next(curr);
		ftrace_task(p, __tr, __data);
	}
}