aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched.c
diff options
context:
space:
mode:
authorChen, Kenneth W <kenneth.w.chen@intel.com>2006-12-10 05:20:36 -0500
committerLinus Torvalds <torvalds@woody.osdl.org>2006-12-10 12:55:43 -0500
commit62ab616d54371a65f595c199aad1e1755b837d25 (patch)
tree5615868bc04901a48f28ecc3da7cc3de035a5662 /kernel/sched.c
parent06066714f6016cffcb249f6ab21b7919de1bc859 (diff)
[PATCH] sched: optimize activate_task for RT task
RT task does not participate in interactiveness priority and thus shouldn't be bothered with timestamp and p->sleep_type manipulation when task is being put on run queue. Bypass all of the them with a single if (rt_task) test. Signed-off-by: Ken Chen <kenneth.w.chen@intel.com> Acked-by: Ingo Molnar <mingo@elte.hu> Cc: Nick Piggin <nickpiggin@yahoo.com.au> Cc: "Siddha, Suresh B" <suresh.b.siddha@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel/sched.c')
-rw-r--r--kernel/sched.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/kernel/sched.c b/kernel/sched.c
index 66e44b5b53d2..48e35c916326 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -940,6 +940,9 @@ static void activate_task(struct task_struct *p, struct rq *rq, int local)
940{ 940{
941 unsigned long long now; 941 unsigned long long now;
942 942
943 if (rt_task(p))
944 goto out;
945
943 now = sched_clock(); 946 now = sched_clock();
944#ifdef CONFIG_SMP 947#ifdef CONFIG_SMP
945 if (!local) { 948 if (!local) {
@@ -961,8 +964,7 @@ static void activate_task(struct task_struct *p, struct rq *rq, int local)
961 (now - p->timestamp) >> 20); 964 (now - p->timestamp) >> 20);
962 } 965 }
963 966
964 if (!rt_task(p)) 967 p->prio = recalc_task_prio(p, now);
965 p->prio = recalc_task_prio(p, now);
966 968
967 /* 969 /*
968 * This checks to make sure it's not an uninterruptible task 970 * This checks to make sure it's not an uninterruptible task
@@ -987,7 +989,7 @@ static void activate_task(struct task_struct *p, struct rq *rq, int local)
987 } 989 }
988 } 990 }
989 p->timestamp = now; 991 p->timestamp = now;
990 992out:
991 __activate_task(p, rq); 993 __activate_task(p, rq);
992} 994}
993 995