diff options
author | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2008-05-05 14:27:26 -0400 |
---|---|---|
committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2008-05-05 14:27:26 -0400 |
commit | 8f5fecd0290df1bba43f17260534261f6689a39e (patch) | |
tree | c10ec495a59824773aed66c89e7f4017650359d2 | |
parent | 00dc2101d1d50f4cf20035cfcd66e7ce2569f8d6 (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.c | 4 |
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 ( ; ; ) { |