Re: when/how is the schedule() function actually called?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Valdis,

Thanks for getting back to me!
I should've looked into newer versions. (Was looking at 2.6.34 because the latest book I have on linux kernel, Linux
Kernel Development, 3rd Edition by Robert Love, is based on that version.)

I do have the same question for the latest version.
Here:
https://github.com/torvalds/linux/blob/4df7c5fde316820286dfa6d203a1005d7fbe007d/kernel/sched/core.c#L5632
the scheduler_tick() is calling curr->sched_class->task_tick(rq, curr, 0);
https://github.com/torvalds/linux/blob/4df7c5fde316820286dfa6d203a1005d7fbe007d/kernel/sched/core.c#L5651
This is calling entity_tick(),
https://github.com/torvalds/linux/blob/4df7c5fde316820286dfa6d203a1005d7fbe007d/kernel/sched/fair.c#L5447
and then resched_curr(),
https://github.com/torvalds/linux/blob/4df7c5fde316820286dfa6d203a1005d7fbe007d/kernel/sched/core.c#L1040

As the comment says, resched_curr() is still just setting the need_resched flag on a uniprocessor.
It is not calling the schedule() function.
When/how is the schedule() function actually called?

Appreciate any explanation/guidance on this!
Thanks!


On Sat, Dec 9, 2023 at 1:45 AM Valdis Klētnieks <valdis.kletnieks@xxxxxx> wrote:
On Sat, 09 Dec 2023 00:16:32 +0800, Dawei Li said:
> Greetings!

> (Although I am using the 2.6.34 version, I believe the question is generally
> applicable to any kernel version.)

That is, in general, a bad assumption when you are looking at kernel versions
old enough that they count as digital archaeology....

[/usr/src/linux-next] git show v2.6.34
tag v2.6.34
Tagger: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Date:   Sun May 16 14:17:44 2010 -0700
[/usr/src/linux-next] git diff --shortstat  v2.6.34..next-20231205
 96965 files changed, 32056985 insertions(+), 7606202 deletions(-)

Given that next-20231205 has just over 33 million lines of code, we're well
into territory where there's a vanishing small percentage of code still
remaining unchanged from 2010.

And yes, that means that even basic functions schedule() and friends have been
reworked in he past decade and a half....

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]

  Powered by Linux