aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern B. Brandenburg <bbb@cs.unc.edu>2008-05-05 14:27:26 -0400
committerBjoern B. Brandenburg <bbb@cs.unc.edu>2008-05-05 14:27:26 -0400
commit8f5fecd0290df1bba43f17260534261f6689a39e (patch)
treec10ec495a59824773aed66c89e7f4017650359d2
parent00dc2101d1d50f4cf20035cfcd66e7ce2569f8d6 (diff)
LITMUS: disable Linux scheduler optimization
This caused LITMUS^RT real-time tasks to be missed, which in turn caused all kinds of inconsistent state.
-rw-r--r--kernel/sched.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/sched.c b/kernel/sched.c
index d9e876fea8..a6dbac6282 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -3602,11 +3602,13 @@ pick_next_task(struct rq *rq, struct task_struct *prev)
3602 * Optimization: we know that if all tasks are in 3602 * Optimization: we know that if all tasks are in
3603 * the fair class we can call that function directly: 3603 * the fair class we can call that function directly:
3604 */ 3604 */
3605 if (likely(rq->nr_running == rq->cfs.nr_running)) { 3605 /* Don't do that for LITMUS.
3606 if (likely(rq->nr_running == rq->cfs.nr_running)) {
3606 p = fair_sched_class.pick_next_task(rq); 3607 p = fair_sched_class.pick_next_task(rq);
3607 if (likely(p)) 3608 if (likely(p))
3608 return p; 3609 return p;
3609 } 3610 }
3611 */
3610 3612
3611 class = sched_class_highest; 3613 class = sched_class_highest;
3612 for ( ; ; ) { 3614 for ( ; ; ) {