Loading kernel/sched.c +21 −14 Original line number Original line Diff line number Diff line Loading @@ -2414,6 +2414,23 @@ static int sched_balance_self(int cpu, int flag) #ifdef CONFIG_CONTEXT_SWITCH_TRACER #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) void ftrace_all_fair_tasks(void *__rq, void *__tr, void *__data) { { struct task_struct *p; struct task_struct *p; Loading @@ -2421,32 +2438,22 @@ void ftrace_all_fair_tasks(void *__rq, void *__tr, void *__data) struct rb_node *curr; struct rb_node *curr; struct rq *rq = __rq; struct rq *rq = __rq; curr = first_fair(&rq->cfs); if (!curr) return; if (rq->cfs.curr) { if (rq->cfs.curr) { p = task_of(rq->cfs.curr); p = task_of(rq->cfs.curr); __trace_special(__tr, __data, ftrace_task(p, __tr, __data); p->pid, p->se.vruntime, p->se.sum_exec_runtime); } } if (rq->cfs.next) { if (rq->cfs.next) { p = task_of(rq->cfs.next); p = task_of(rq->cfs.next); __trace_special(__tr, __data, ftrace_task(p, __tr, __data); p->pid, p->se.vruntime, p->se.sum_exec_runtime); } } while (curr) { for (curr = first_fair(&rq->cfs); curr; curr = rb_next(curr)) { se = rb_entry(curr, struct sched_entity, run_node); se = rb_entry(curr, struct sched_entity, run_node); if (!entity_is_task(se)) if (!entity_is_task(se)) continue; continue; p = task_of(se); p = task_of(se); ftrace_task(p, __tr, __data); __trace_special(__tr, __data, p->pid, p->se.vruntime, p->se.sum_exec_runtime); curr = rb_next(curr); } } } } Loading Loading
kernel/sched.c +21 −14 Original line number Original line Diff line number Diff line Loading @@ -2414,6 +2414,23 @@ static int sched_balance_self(int cpu, int flag) #ifdef CONFIG_CONTEXT_SWITCH_TRACER #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) void ftrace_all_fair_tasks(void *__rq, void *__tr, void *__data) { { struct task_struct *p; struct task_struct *p; Loading @@ -2421,32 +2438,22 @@ void ftrace_all_fair_tasks(void *__rq, void *__tr, void *__data) struct rb_node *curr; struct rb_node *curr; struct rq *rq = __rq; struct rq *rq = __rq; curr = first_fair(&rq->cfs); if (!curr) return; if (rq->cfs.curr) { if (rq->cfs.curr) { p = task_of(rq->cfs.curr); p = task_of(rq->cfs.curr); __trace_special(__tr, __data, ftrace_task(p, __tr, __data); p->pid, p->se.vruntime, p->se.sum_exec_runtime); } } if (rq->cfs.next) { if (rq->cfs.next) { p = task_of(rq->cfs.next); p = task_of(rq->cfs.next); __trace_special(__tr, __data, ftrace_task(p, __tr, __data); p->pid, p->se.vruntime, p->se.sum_exec_runtime); } } while (curr) { for (curr = first_fair(&rq->cfs); curr; curr = rb_next(curr)) { se = rb_entry(curr, struct sched_entity, run_node); se = rb_entry(curr, struct sched_entity, run_node); if (!entity_is_task(se)) if (!entity_is_task(se)) continue; continue; p = task_of(se); p = task_of(se); ftrace_task(p, __tr, __data); __trace_special(__tr, __data, p->pid, p->se.vruntime, p->se.sum_exec_runtime); curr = rb_next(curr); } } } } Loading