public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* How to schedule idle_task?
@ 2003-08-08 15:44 Feng Pan
  2003-08-08 21:18 ` Herbert Pötzl
  2003-08-08 22:13 ` George Anzinger
  0 siblings, 2 replies; 3+ messages in thread
From: Feng Pan @ 2003-08-08 15:44 UTC (permalink / raw)
  To: linux-kernel

Hi,

I am trying to force idle_task in schedule() but could not get it to work.
Here is my requirement: I would like the scheduler to prevent any task
with low priority (meaning lower than a cutoff point) from being scheduled
to run, even if there are no high priority tasks running (when this
happens, idle_task should be scheduled to run). They (the low priority
tasks) have to wait until their dynamic priorities boosted to be able to
run.

So here is what I added to schedule():

/*
 * Default process to select..
 */
next = idle_task(this_cpu);
c = -1000;
list_for_each(tmp, &runqueue_head) {
        p = list_entry(tmp, struct task_struct, run_list);
        if (can_schedule(p, this_cpu)) {
                int weight = goodness(p, this_cpu, prev->active_mm);
                if (weight > c)
                        c = weight, next = p;
        }
}


// This is what I added:

        if((c > 2) && (c < CUTOFF_PRIORITY)) {
                //printk("LOW PRIORITY PROCESS (%d)\n", c);
                next = idle_task(this_cpu);
        }


// End

/* Do we need to re-calculate counters? */
if (unlikely(!c))
...
...
...


The problem is that once the idle_task is forced to run, no other tasks
can be scheduled again, and the system hangs, even if there is another
high priority task running. And if I uncomment the printk statement, the
message is printed repeatly.

So the question is, how do I do this properly so that high priority tasks
can still run?

btw, the kernel version is 2.4.21

Thanks

Feng



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2003-08-13 19:22 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-08-08 15:44 How to schedule idle_task? Feng Pan
2003-08-08 21:18 ` Herbert Pötzl
2003-08-08 22:13 ` George Anzinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox