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 /kernel | |
| 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.
Diffstat (limited to 'kernel')
| -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 ( ; ; ) { |
