From 27fd1ba438eecbe184a5deda6d9f468509ec4f42 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Thu, 21 Aug 2025 09:23:13 +0200 Subject: feat: refactor and fixed python scripts. Signed-off-by: Amlal El Mahrouss --- dev/kernel/src/UserProcessScheduler.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'dev/kernel/src/UserProcessScheduler.cc') diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc index 45957c7b..ccd6dc48 100644 --- a/dev/kernel/src/UserProcessScheduler.cc +++ b/dev/kernel/src/UserProcessScheduler.cc @@ -122,7 +122,7 @@ ErrorOr USER_PROCESS::New(SizeT sz, SizeT pad_amount) { hal_write_cr3(vm_register); #else - auto ptr = mm_alloc_ptr(sz, Yes, Yes, pad_amount); + auto ptr = mm_alloc_ptr(sz, Yes, Yes, pad_amount); #endif if (!this->HeapTree) { -- cgit v1.2.3 From a8f2ba9ebe9b17fe5f6367021e32f64d573a4ac0 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Fri, 22 Aug 2025 15:58:34 +0200 Subject: fix: Set UTime when initializing process, not when exiting. Signed-off-by: Amlal El Mahrouss --- dev/kernel/src/UserProcessScheduler.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'dev/kernel/src/UserProcessScheduler.cc') diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc index ccd6dc48..b73c9a3f 100644 --- a/dev/kernel/src/UserProcessScheduler.cc +++ b/dev/kernel/src/UserProcessScheduler.cc @@ -265,7 +265,6 @@ STATIC Void sched_free_ptr_tree(T* tree) { Void USER_PROCESS::Exit(const Int32& exit_code) { this->Status = exit_code > 0 ? ProcessStatusKind::kKilled : ProcessStatusKind::kFrozen; this->LastExitCode = exit_code; - this->UTime = 0; #ifdef __NE_VIRTUAL_MEMORY_SUPPORT__ auto pd = kKernelVM; @@ -424,6 +423,7 @@ ProcessID UserProcessScheduler::Spawn(const Char* name, VoidPtr code, VoidPtr im process.ProcessId = pid; process.Status = ProcessStatusKind::kRunning; process.PTime = 0; + process.UTime = 0; process.RTime = 0; if (!process.FileTree) { -- cgit v1.2.3 From 141786008aa639c313d83a6a06db700ed69ed064 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sat, 23 Aug 2025 09:13:37 +0200 Subject: feat: scheduler: ProcessImage should be friend with KernelScheduler, not helper. feat! scheduler: Introduce ProcessID as only PID type. Signed-off-by: Amlal El Mahrouss --- dev/kernel/KernelKit/CoreProcessScheduler.h | 13 ++++++------- dev/kernel/KernelKit/KernelTaskScheduler.h | 6 +++--- dev/kernel/KernelKit/UserProcessScheduler.h | 6 +++--- dev/kernel/NetworkKit/IPC.h | 2 +- dev/kernel/src/UserProcessScheduler.cc | 12 ++++++------ 5 files changed, 19 insertions(+), 20 deletions(-) (limited to 'dev/kernel/src/UserProcessScheduler.cc') diff --git a/dev/kernel/KernelKit/CoreProcessScheduler.h b/dev/kernel/KernelKit/CoreProcessScheduler.h index ee848ffc..fa124a02 100644 --- a/dev/kernel/KernelKit/CoreProcessScheduler.h +++ b/dev/kernel/KernelKit/CoreProcessScheduler.h @@ -117,11 +117,6 @@ enum class ProcessSubsystem : Int32 { kProcessSubsystemCount = 4, }; -/***********************************************************************************/ -//! @brief Local Process identifier. -/***********************************************************************************/ -typedef Int64 ProcessID; - /***********************************************************************************/ //! @brief Local Process status enum. /***********************************************************************************/ @@ -181,7 +176,11 @@ inline bool operator>=(AffinityKind lhs, AffinityKind rhs) { using PTime = UInt64; using ProcessTime = PTime; -using PID = Int64; + +/***********************************************************************************/ +//! @brief Local Process identifier. +/***********************************************************************************/ +using ProcessID = Int64; /***********************************************************************************/ /// @note For User manager, tells where we run the code. @@ -209,7 +208,7 @@ struct ProcessImage final { friend KERNEL_TASK; friend class UserProcessScheduler; - friend class KernelTaskHelper; + friend class KernelTaskScheduler; ImagePtr fCode{}; ImagePtr fBlob{}; diff --git a/dev/kernel/KernelKit/KernelTaskScheduler.h b/dev/kernel/KernelKit/KernelTaskScheduler.h index 527da9f0..527eec5e 100644 --- a/dev/kernel/KernelKit/KernelTaskScheduler.h +++ b/dev/kernel/KernelKit/KernelTaskScheduler.h @@ -17,7 +17,7 @@ namespace Kernel { class KernelTaskHelper; -typedef PID KID; +typedef ProcessID KID; /// @brief Equivalent of USER_PROCESS, but for kernel tasks. /// @author Amlal @@ -38,9 +38,9 @@ class KERNEL_TASK final { /// @author Amlal class KernelTaskHelper final { public: - STATIC Bool Switch(HAL::StackFramePtr frame_ptr, PID new_kid); + STATIC Bool Switch(HAL::StackFramePtr frame_ptr, ProcessID new_kid); STATIC Bool CanBeScheduled(const KERNEL_TASK& process); - STATIC ErrorOr TheCurrentKID(); + STATIC ErrorOr TheCurrentKID(); STATIC SizeT StartScheduling(); }; } // namespace Kernel \ No newline at end of file diff --git a/dev/kernel/KernelKit/UserProcessScheduler.h b/dev/kernel/KernelKit/UserProcessScheduler.h index 69a631be..a7ef13a9 100644 --- a/dev/kernel/KernelKit/UserProcessScheduler.h +++ b/dev/kernel/KernelKit/UserProcessScheduler.h @@ -79,7 +79,7 @@ class USER_PROCESS final { ProcessTime RTime{0}; //! @brief Process run time. ProcessTime UTime{0}; //! #brief Process used time. - PID ProcessId{kSchedInvalidPID}; + ProcessID ProcessId{kSchedInvalidPID}; Int32 Kind{kExecutableKind}; public: @@ -226,9 +226,9 @@ class UserProcessScheduler final : public ISchedulable { class UserProcessHelper final { public: - STATIC Bool Switch(HAL::StackFramePtr frame_ptr, PID new_pid); + STATIC Bool Switch(HAL::StackFramePtr frame_ptr, ProcessID new_pid); STATIC Bool CanBeScheduled(const USER_PROCESS& process); - STATIC ErrorOr TheCurrentPID(); + STATIC ErrorOr TheCurrentPID(); STATIC SizeT StartScheduling(); }; } // namespace Kernel diff --git a/dev/kernel/NetworkKit/IPC.h b/dev/kernel/NetworkKit/IPC.h index d14356c0..223a112b 100644 --- a/dev/kernel/NetworkKit/IPC.h +++ b/dev/kernel/NetworkKit/IPC.h @@ -20,7 +20,7 @@ /// IA separator. #define kIPCRemoteSeparator ":" -/// Interchange address, consists of PID:TEAM. +/// Interchange address, consists of ProcessID:TEAM. #define kIPCRemoteInvalid "00:00" #define kIPCHeaderMagic (0x4950434) diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc index b73c9a3f..19e509ed 100644 --- a/dev/kernel/src/UserProcessScheduler.cc +++ b/dev/kernel/src/UserProcessScheduler.cc @@ -437,7 +437,7 @@ ProcessID UserProcessScheduler::Spawn(const Char* name, VoidPtr code, VoidPtr im /// @todo File Tree allocation and dispose methods (amlal) } - (Void)(kout << "PID: " << number(process.ProcessId) << kendl); + (Void)(kout << "ProcessID: " << number(process.ProcessId) << kendl); (Void)(kout << "Name: " << process.Name << kendl); return pid; @@ -573,11 +573,11 @@ Ref& UserProcessScheduler::TheCurrentProcess() { /// @brief Current proccess id getter. /// @return USER_PROCESS ID integer. -ErrorOr UserProcessHelper::TheCurrentPID() { - if (!UserProcessScheduler::The().TheCurrentProcess()) return ErrorOr{-kErrorProcessFault}; +ErrorOr UserProcessHelper::TheCurrentPID() { + if (!UserProcessScheduler::The().TheCurrentProcess()) return ErrorOr{-kErrorProcessFault}; kout << "UserProcessHelper::TheCurrentPID: Leaking ProcessId...\r"; - return ErrorOr{UserProcessScheduler::The().TheCurrentProcess().Leak().ProcessId}; + return ErrorOr{UserProcessScheduler::The().TheCurrentProcess().Leak().ProcessId}; } /// @brief Check if process can be schedulded. @@ -613,11 +613,11 @@ SizeT UserProcessHelper::StartScheduling() { /** * \brief Does a context switch in a CPU. * \param the_stack the stackframe of the running app. - * \param new_pid the process's PID. + * \param new_pid the process's ProcessID. */ /***********************************************************************************/ -Bool UserProcessHelper::Switch(HAL::StackFramePtr frame_ptr, PID new_pid) { +Bool UserProcessHelper::Switch(HAL::StackFramePtr frame_ptr, ProcessID new_pid) { (Void)(kout << "IP: " << hex_number(frame_ptr->IP) << kendl); for (SizeT index = 0UL; index < HardwareThreadScheduler::The().Capacity(); ++index) { -- cgit v1.2.3