diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-10-26 16:01:12 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-26 16:01:12 +0100 |
| commit | 36269e57831e560df6a0da9c9d02c00671b0163d (patch) | |
| tree | 69f6a0c6f08ef5ef2f6fcbb7302537dbce222e6e /dev/kernel/src/UserProcessScheduler.cc | |
| parent | 2117a9b0f4b84f5bd6c99566bcf5849a64104467 (diff) | |
| parent | b6ce6640afaf6c1cc6ad274f3053b2e218a49554 (diff) | |
Merge pull request #68 from nekernel-org/dev
NeKernel: v0.0.6e1
Diffstat (limited to 'dev/kernel/src/UserProcessScheduler.cc')
| -rw-r--r-- | dev/kernel/src/UserProcessScheduler.cc | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc index 07c4a572..ac25c3d8 100644 --- a/dev/kernel/src/UserProcessScheduler.cc +++ b/dev/kernel/src/UserProcessScheduler.cc @@ -21,7 +21,7 @@ #include <KernelKit/ProcessScheduler.h> #include <NeKit/KString.h> #include <NeKit/Utils.h> -#include <SignalKit/SignalGen.h> +#include <SignalKit/Signals.h> ///! BUGS: 0 @@ -462,15 +462,10 @@ UserProcessScheduler& UserProcessScheduler::The() { /***********************************************************************************/ Void UserProcessScheduler::Remove(ProcessID process_id) { - if (process_id < 0 || process_id > kSchedProcessLimitPerTeam) { - return; - } - - if (this->mTeam.mProcessList[process_id].Status == ProcessStatusKind::kInvalid) { - return; - } + if (process_id < 0 || process_id > kSchedProcessLimitPerTeam) return; + if (this->mTeam.mProcessList[process_id].Status == ProcessStatusKind::kInvalid) return; - mTeam.mProcessList[process_id].Exit(0); + mTeam.mProcessList[process_id].Exit(kErrorSuccess); } /// @brief Is it a user scheduler? @@ -586,17 +581,13 @@ ErrorOr<ProcessID> UserProcessHelper::TheCurrentPID() { /// @retval true can be schedulded. /// @retval false cannot be schedulded. Bool UserProcessHelper::CanBeScheduled(const USER_PROCESS& process) { + if (process.Affinity == AffinityKind::kRealTime) return Yes; + if (process.Status != ProcessStatusKind::kRunning) return No; if (process.Affinity == AffinityKind::kInvalid) return No; if (process.StackSize > kSchedMaxStackSz) return No; if (!process.Name[0]) return No; - - // real time processes shouldn't wait that much. - if (process.Affinity == AffinityKind::kRealTime) return Yes; - - if (process.Signal.SignalID == sig_generate_unique<SIGTRAP>()) { - return No; - } + if (process.Signal.SignalID == sig_generate_unique<SIGTRAP>()) return No; return process.PTime < 1; } |
