2002-09-24 08:42:43

by Anders Fugmann

[permalink] [raw]
Subject: Q: Scheduler and need_resched

Hi.

I got a small question of what happens codevice when the quantum of a
task is expired (counter == 0 -> need_resched == 1). Of cource schedule
is invoked somehow, but from where? How is the "flow". I see from where
do_timer is called, and that it schedules a BH, but then I'm stuck.

I have a feeling that some function is called (at least) each timer
tick, which tests if schedules sould be called (a test on need_resched
amongst others). I just cannot seem to find this function.

Any pointer appriciated.
Anders Fugmann






2002-09-24 09:32:31

by Anders Fugmann

[permalink] [raw]
Subject: Re: Q: Scheduler and need_resched

Anders Fugmann wrote:
> Hi.
>
> I got a small question of what happens codevice when the quantum of a
> task is expired (counter == 0 -> need_resched == 1). Of cource schedule
> is invoked somehow, but from where? How is the "flow". I see from where
> do_timer is called, and that it schedules a BH, but then I'm stuck.
>
> Any pointer appriciated.
> Anders Fugmann

Solved.
By the help of the kernel newbies pages, I was pointed to the page
http://kernelnewbies.org/wiki/moin.cgi/Karthick, which pointed at
the label '_ret_with_reschedule' in entry.S.

This piece of assembler is called after each interrupt, and tests the
need_resched flag to see is scheduling is nessesary.

Anyway, thanks for your time.
Anders Fugmann