[Mirror] Some kind of OS: git://git.9front.org/plan9front/plan9front
Find a file
cinap_lenrek eaffa1ef55 kernel: fix EDF scheduler double ready() and more robust double-ready detection
Move the "double-ready" check into queueproc() function,
doing it while holding the runq lock, meaning
all transitions to Ready state are serialized.

We do not just check for double-ready but for any
"illegal" transisions:

ready() on Dead, Moribund, New, Ready, Running and Waitrelease
is not allowed.

ready() on Queueing*, Wakeme, Broken, Stopped and Rendez
is only valid when done from another process.

For rescheduling, we have to go to Scheding state
before calling ready(). (rebalance(), schedinit()...)

The EDF scheduler had this bug where it could ready() multiple
times as it was staying in Waitrelease state after releasing
the edflock. Now it transitions thru Scheding avoiding
the issue.
2024-01-05 02:12:42 +00:00
386 ape: sync flaot.h macros with u.h 2021-02-08 15:45:11 -08:00
68000 add signed fixed size integer typedefs 2018-05-12 19:19:52 +02:00
68020 ape: sync flaot.h macros with u.h 2021-02-08 15:45:11 -08:00
acme mkfiles: add 'mk test' support 2023-02-19 20:44:56 -05:00
adm/timezone timezones: change DST timezone string for South Australia 2019-11-20 11:49:16 +10:30
amd64 libc: change usize to 64-bit for amd64 and arm64, make memory(2) functions use usize 2021-07-25 15:54:22 +00:00
arm ape: sync flaot.h macros with u.h 2021-02-08 15:45:11 -08:00
arm64 libc: change usize to 64-bit for amd64 and arm64, make memory(2) functions use usize 2021-07-25 15:54:22 +00:00
lib /lib/terry: speak no ill of the dead 2023-12-02 18:16:14 +00:00
mips ape: sync flaot.h macros with u.h 2021-02-08 15:45:11 -08:00
power ape: sync flaot.h macros with u.h 2021-02-08 15:45:11 -08:00
power64 add signed fixed size integer typedefs 2018-05-12 19:19:52 +02:00
rc ethermultilink: ignore link-status of primary 2023-12-07 14:48:49 +00:00
sparc ape: sync flaot.h macros with u.h 2021-02-08 15:45:11 -08:00
sparc64 ape: sync flaot.h macros with u.h 2021-02-08 15:45:11 -08:00
spim /spim/include/ape/ureg.h: fixed missing ifndef 2023-03-07 04:26:34 +00:00
sys kernel: fix EDF scheduler double ready() and more robust double-ready detection 2024-01-05 02:12:42 +00:00