diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-04-24 15:52:36 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-04-24 15:52:36 +0200 |
| commit | 7faa5e2fcf41c4fbb2241b605e8f2a11738fc4d9 (patch) | |
| tree | 4395820c8cab023c8e794e44e93eabefc26ac9b6 /dev/kernel/src | |
| parent | de88c44c68f3941e003ddaf13042875370f10978 (diff) | |
dev, kernel: scheduler, timer: hw timer and scheduler improvements.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/src')
| -rw-r--r-- | dev/kernel/src/BinaryMutex.cc | 2 | ||||
| -rw-r--r-- | dev/kernel/src/UserProcessScheduler.cc | 11 |
2 files changed, 11 insertions, 2 deletions
diff --git a/dev/kernel/src/BinaryMutex.cc b/dev/kernel/src/BinaryMutex.cc index c149b362..f9faadd2 100644 --- a/dev/kernel/src/BinaryMutex.cc +++ b/dev/kernel/src/BinaryMutex.cc @@ -67,7 +67,7 @@ namespace Kernel /***********************************************************************************/ BOOL BinaryMutex::WaitForProcess(const Int16& sec) noexcept { - HardwareTimer hw_timer(rtl_seconds(sec)); + HardwareTimer hw_timer(rtl_milliseconds(sec)); hw_timer.Wait(); return !this->IsLocked(); diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc index 8df98f87..7aded611 100644 --- a/dev/kernel/src/UserProcessScheduler.cc +++ b/dev/kernel/src/UserProcessScheduler.cc @@ -31,8 +31,10 @@ namespace Kernel STATIC UInt32 kLastExitCode = 0U; + STATIC BOOL kCurrentlySwitching = No; + /***********************************************************************************/ - /// @brief External reference of the thread scheduler. + /// @brief Scheduler itself. /***********************************************************************************/ STATIC UserProcessScheduler kScheduler; @@ -470,6 +472,8 @@ namespace Kernel return 0UL; } + kCurrentlySwitching = Yes; + for (; process_index < mTeam.AsArray().Capacity(); ++process_index) { auto& process = mTeam.AsArray()[process_index]; @@ -502,6 +506,8 @@ namespace Kernel } } + kCurrentlySwitching = No; + return process_index; } @@ -524,6 +530,9 @@ namespace Kernel if (team.AsArray().Count() < 1) return No; + if (kCurrentlySwitching) + return No; + kScheduler.mTeam = team; return Yes; |
