aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched.c
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-03-02 12:04:55 -0500
committerAndrea Bastoni <bastoni@cs.unc.edu>2010-04-12 14:58:40 -0400
commit5cdc24ae24b6517d594072b27873b1d46416eae3 (patch)
treebab9fcb6fde1bae2b5857cd4838fe5847f927de5 /kernel/sched.c
parentad92e346f66397c431b8856fb1eb15be29415b04 (diff)
Add preemption-and-migration overhead tracing supportwip-pm-ovd
Add per-task accounting (based on shared control page) of information needed to trace preemption and migration overheads from userspace
Diffstat (limited to 'kernel/sched.c')
-rw-r--r--kernel/sched.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/kernel/sched.c b/kernel/sched.c
index 1701eaebb79c..69fb86c87915 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -489,6 +489,9 @@ struct rt_rq {
489struct litmus_rq { 489struct litmus_rq {
490 unsigned long nr_running; 490 unsigned long nr_running;
491 struct task_struct *prev; 491 struct task_struct *prev;
492#ifdef CONFIG_PREEMPT_MIGRAT_OVD
493 unsigned int last_rt_task;
494#endif
492}; 495};
493 496
494#ifdef CONFIG_SMP 497#ifdef CONFIG_SMP
@@ -2766,8 +2769,11 @@ static void finish_task_switch(struct rq *rq, struct task_struct *prev)
2766 */ 2769 */
2767 prev_state = prev->state; 2770 prev_state = prev->state;
2768 finish_arch_switch(prev); 2771 finish_arch_switch(prev);
2772
2769 litmus->finish_switch(prev); 2773 litmus->finish_switch(prev);
2770 prev->rt_param.stack_in_use = NO_CPU; 2774 prev->rt_param.stack_in_use = NO_CPU;
2775 trace_preempt_migrat_ovd(prev, current, rq);
2776
2771 perf_event_task_sched_in(current, cpu_of(rq)); 2777 perf_event_task_sched_in(current, cpu_of(rq));
2772 finish_lock_switch(rq, prev); 2778 finish_lock_switch(rq, prev);
2773 2779