summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/UserProcessScheduler.cc
diff options
context:
space:
mode:
authorAmlal <amlal@nekernel.org>2025-05-01 12:07:58 +0200
committerAmlal <amlal@nekernel.org>2025-05-01 12:07:58 +0200
commitdc6c85c9344732a12f5e8f74e4cfc374b8bd391f (patch)
tree7a9f3b2a272111dce29c28a5922b968311d086c8 /dev/kernel/src/UserProcessScheduler.cc
parentf3345dfebdc9b1668611e80f30cb5bac69db4a49 (diff)
kernel: scheduler and pef code mgr improvements.
Signed-off-by: Amlal <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/src/UserProcessScheduler.cc')
-rw-r--r--dev/kernel/src/UserProcessScheduler.cc18
1 files changed, 14 insertions, 4 deletions
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;