<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
From: Joe Korty &lt;joe.korty@ccur.com&gt;

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 due to some SCHED_OTHER code in schedule() which was being run for tasks
of every policy.


---

 25-akpm/kernel/sched.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

diff -puN kernel/sched.c~SCHED_FIFO-fix kernel/sched.c
--- 25/kernel/sched.c~SCHED_FIFO-fix	Tue Mar 23 15:54:10 2004
+++ 25-akpm/kernel/sched.c	Tue Mar 23 15:54:10 2004
@@ -1678,7 +1678,7 @@ need_resched:
 	queue = array-&gt;queue + idx;
 	next = list_entry(queue-&gt;next, task_t, run_list);
 
-	if (next-&gt;activated &gt; 0) {
+	if (!rt_task(next) &amp;&amp; next-&gt;activated &gt; 0) {
 		unsigned long long delta = now - next-&gt;timestamp;
 
 		if (next-&gt;activated == 1)

_
</pre></body></html>