From e42b9ddb9121cd69cfb6b5bc0d7efc31653b72a0 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sat, 17 May 2025 09:59:40 +0200 Subject: feat(kernel): don't schedule process when it's under signals such as: ABRT, KILL, TRAP. Signed-off-by: Amlal El Mahrouss --- dev/kernel/KernelKit/KPC.h | 11 ++++++----- dev/kernel/KernelKit/ThreadLocalStorage.inl | 4 ++-- dev/kernel/KernelKit/UserProcessScheduler.h | 7 ++++--- 3 files changed, 12 insertions(+), 10 deletions(-) (limited to 'dev/kernel/KernelKit') diff --git a/dev/kernel/KernelKit/KPC.h b/dev/kernel/KernelKit/KPC.h index 9de1f70f..4c48b53a 100644 --- a/dev/kernel/KernelKit/KPC.h +++ b/dev/kernel/KernelKit/KPC.h @@ -11,13 +11,14 @@ /// @file KPC.h /// @brief Kernel Procedure Code. -#define err_local_ok() \ - (Kernel::UserProcessScheduler::The().CurrentProcess().Leak().GetLocalCode() == \ +#define err_local_ok() \ + (Kernel::UserProcessScheduler::The().TheCurrentProcess().Leak().GetLocalCode() == \ Kernel::kErrorSuccess) -#define err_local_fail() \ - (Kernel::UserProcessScheduler::The().CurrentProcess().Leak().GetLocalCode() != \ +#define err_local_fail() \ + (Kernel::UserProcessScheduler::The().TheCurrentProcess().Leak().GetLocalCode() != \ Kernel::kErrorSuccess) -#define err_local_get() (Kernel::UserProcessScheduler::The().CurrentProcess().Leak().GetLocalCode()) +#define err_local_get() \ + (Kernel::UserProcessScheduler::The().TheCurrentProcess().Leak().GetLocalCode()) #define err_global_ok() (Kernel::kErrorLocalNumber == Kernel::kErrorSuccess) #define err_global_fail() (Kernel::kErrorLocalNumber != Kernel::kErrorSuccess) diff --git a/dev/kernel/KernelKit/ThreadLocalStorage.inl b/dev/kernel/KernelKit/ThreadLocalStorage.inl index 553f8d42..7c7a0b7f 100644 --- a/dev/kernel/KernelKit/ThreadLocalStorage.inl +++ b/dev/kernel/KernelKit/ThreadLocalStorage.inl @@ -15,7 +15,7 @@ template inline T* tls_new_ptr(void) noexcept { using namespace Kernel; - auto ref_process = UserProcessScheduler::The().CurrentProcess(); + auto ref_process = UserProcessScheduler::The().TheCurrentProcess(); MUST_PASS(ref_process); auto pointer = ref_process.Leak().New(sizeof(T)); @@ -33,7 +33,7 @@ inline Kernel::Bool tls_delete_ptr(T* obj) noexcept { if (!obj) return No; - auto ref_process = UserProcessScheduler::The().CurrentProcess(); + auto ref_process = UserProcessScheduler::The().TheCurrentProcess(); MUST_PASS(ref_process); ErrorOr obj_wrapped{obj}; diff --git a/dev/kernel/KernelKit/UserProcessScheduler.h b/dev/kernel/KernelKit/UserProcessScheduler.h index 717788e9..a15e8e38 100644 --- a/dev/kernel/KernelKit/UserProcessScheduler.h +++ b/dev/kernel/KernelKit/UserProcessScheduler.h @@ -76,7 +76,8 @@ class USER_PROCESS final { }; ProcessTime PTime{0}; //! @brief Process allocated tine. - ProcessTime RTime{0}; //! @brief Process Run time + ProcessTime RTime{0}; //! @brief Process run time. + ProcessTime UTime{0}; //! #brief Process used time. PID ProcessId{kSchedInvalidPID}; Int32 Kind{kExecutableKind}; @@ -191,7 +192,7 @@ class UserProcessScheduler final : public ISchedulable { bool operator!(); public: - UserProcessTeam& CurrentTeam(); + UserProcessTeam& TheCurrentTeam(); BOOL SwitchTeam(UserProcessTeam& team); public: @@ -203,7 +204,7 @@ class UserProcessScheduler final : public ISchedulable { Bool HasMP() override; public: - Ref& CurrentProcess(); + Ref& TheCurrentProcess(); SizeT Run() noexcept; public: -- cgit v1.2.3