summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/KernelKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-05-17 09:59:40 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-05-17 09:59:40 +0200
commite42b9ddb9121cd69cfb6b5bc0d7efc31653b72a0 (patch)
treede3eb3c2ce986800c91bae153db2027cc24d91e2 /dev/kernel/KernelKit
parent65a97e32ef586e073988186f1f4932c0193b3409 (diff)
feat(kernel): don't schedule process when it's under signals such as:
ABRT, KILL, TRAP. Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/KernelKit')
-rw-r--r--dev/kernel/KernelKit/KPC.h11
-rw-r--r--dev/kernel/KernelKit/ThreadLocalStorage.inl4
-rw-r--r--dev/kernel/KernelKit/UserProcessScheduler.h7
3 files changed, 12 insertions, 10 deletions
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 <typename T>
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<T*> 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<USER_PROCESS>& CurrentProcess();
+ Ref<USER_PROCESS>& TheCurrentProcess();
SizeT Run() noexcept;
public: