Thanks a lot for Your response.
On Fri, Sep 28, 2001 at 04:03:39 +0400, Andrea Arcangeli wrote:
> > @@ -381,26 +380,22 @@
> > #endif
> >
> > current->nice = 19;
> > - schedule();
> > - __set_current_state(TASK_INTERRUPTIBLE);
>
> buggy (check cpus_allowed).
Why? The next three lines is
for (;;) {
schedule();
__set_current_state(TASK_INTERRUPTIBLE);
And if I misunderstand schedule()'s
still_running:
if (!(prev->cpus_allowed & (1UL << this_cpu)))
goto still_running_back;
Ingo's patch was buggy as well.
> you dropped Ingo's optimization (but you resurrected the strictier /proc
> statistics).
Again, I can't understand. The new loop
for (;;) {
schedule();
__set_current_state(TASK_INTERRUPTIBLE);
do {
do_softirq();
if (current->need_resched)
goto preempt;
} while (softirq_pending(cpu));
continue;
preempt:
__set_current_state(TASK_RUNNING);
}
seems to be _equivalent_ to Ingo's ...
What i am missed? I apologize in advance, if it is
something obvious.
Oleg
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/