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