Andrew,
The following fixes a problem where a SCHED_FIFO task would on occasion
be moved to the end of its runqueue when returned to from a preemption.
Cause was do to some SCHED_OTHER code in schedule() which was being
run for tasks of every policy.
Regards,
Joe
--- 2.6.3/kernel/sched.c.orig 2004-02-17 22:59:10.000000000 -0500
+++ 2.6.3/kernel/sched.c 2004-03-23 18:34:19.000000000 -0500
@@ -1677,7 +1677,7 @@
queue = array->queue + idx;
next = list_entry(queue->next, task_t, run_list);
- if (next->activated > 0) {
+ if (!rt_task(next) && next->activated > 0) {
unsigned long long delta = now - next->timestamp;
if (next->activated == 1)
* Joe Korty <[email protected]> wrote:
> Andrew,
> The following fixes a problem where a SCHED_FIFO task would on
> occasion be moved to the end of its runqueue when returned to from a
> preemption. Cause was do to some SCHED_OTHER code in schedule() which
> was being run for tasks of every policy.
yes, indeed this is a bug.
> - if (next->activated > 0) {
> + if (!rt_task(next) && next->activated > 0) {
the patch looks good. Andrew, please apply.
Ingo