From dc6c85c9344732a12f5e8f74e4cfc374b8bd391f Mon Sep 17 00:00:00 2001 From: Amlal Date: Thu, 1 May 2025 12:07:58 +0200 Subject: kernel: scheduler and pef code mgr improvements. Signed-off-by: Amlal --- dev/kernel/src/UserProcessScheduler.cc | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'dev/kernel/src/UserProcessScheduler.cc') diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc index 23ab22fa..5012e8a3 100644 --- a/dev/kernel/src/UserProcessScheduler.cc +++ b/dev/kernel/src/UserProcessScheduler.cc @@ -486,20 +486,30 @@ Bool UserProcessScheduler::HasMP() { /***********************************************************************************/ SizeT UserProcessScheduler::Run() noexcept { - SizeT process_index = 0UL; //! we store this guy to tell the scheduler how many - //! things we have scheduled. - if (mTeam.mProcessCount < 1) { return 0UL; } + if (kCurrentlySwitching) + return 0UL; + kCurrentlySwitching = Yes; + SizeT process_index = 0UL; //! we store this guy to tell the scheduler how many + //! things we have scheduled. + for (; process_index < mTeam.AsArray().Capacity(); ++process_index) { auto& process = mTeam.AsArray()[process_index]; - //! check if the process needs to be run. + //! Check if the process needs to be run. if (UserProcessHelper::CanBeScheduled(process)) { + + if (process.StackSize > kSchedMaxStackSz) { + kout << "The process: " << process.Name << ", has not a valid stack size! Crashing it...\r"; + process.Crash(); + continue; + } + // Set current process header. this->CurrentProcess() = process; -- cgit v1.2.3