Re: Who (and when) is calling the scheduler ? -- More confusion ...

Anton Ghiugan (ghiugan@lucent.com)
Thu, 27 Aug 1998 11:57:42 -0400


Alan Cox wrote:
>
> > normal flow of the others bottom half routines at any time. As a particular
> > case, kernel
> > timers can occur at any time (the preseted time actually), even in the middle of
>
> The actual timer interrupt can, but that just queues TIMER_BH. The best
> advice is to trace the code in ret_from_syscall, and be aware thats also
> the IRQ return path

Now I am totally confused! On one hand you tell me that the timer interrupt
will actually run the TIMER_BH if it is not already running, and on the other
hand to tell me that it is only queueing the TIMER_BH (what exactly this means?
will the timer interrupt add a new entry in the queue? what entry is that?)

IMHO the timer interrupt SHOULD do the following things:

-- update `jiffies' variable along with other timming variables (if
any)
-- run those task from the TIMER_BH that are supposed to be run NOW (or
those who has "expired" in the past)
-- call the scheduler

Because the timer interrupt is asyncronus in respect with the normal flow of
instructions
in the computer, it is possible that it may occur in the middle of the task
processing of a bottom
half, wich can belong to no process (like NET_BH), and in this case I am not so
sure that you
should call the scheduler until the bottom half is not finished; maybe setting a
bit "somewhere"
and leting the bottom half to know that it has been interrupted is not a bad
idea. By doing so,
at the end of processing all tasks in the bottom half queue the OS will know hw
has to call the
scheduler and so on.

Waiting for your comments,

Anton Ghiugan

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html