diff options
| author | Amlal <amlal@el-mahrouss-logic.com> | 2024-09-24 23:14:02 +0200 |
|---|---|---|
| committer | Amlal <amlal@el-mahrouss-logic.com> | 2024-09-24 23:14:02 +0200 |
| commit | 8f62fbe30655e4d18837f196f01bb203126f474f (patch) | |
| tree | 0b765ca18723524553ae10249d5dd9a9930abf5a /dev/zka/KernelKit | |
| parent | b6adb479cbd704600fcbf663325396b60f3e4439 (diff) | |
Refactor kernel refactors and worked on fixing the GPF on user mode switch.
TODO: Re-implement the mm_map_page function.
Signed-off-by: Amlal <amlal@el-mahrouss-logic.com>
Diffstat (limited to 'dev/zka/KernelKit')
| -rw-r--r-- | dev/zka/KernelKit/HardwareThreadScheduler.hxx | 6 | ||||
| -rw-r--r-- | dev/zka/KernelKit/UserProcessScheduler.hxx | 35 |
2 files changed, 23 insertions, 18 deletions
diff --git a/dev/zka/KernelKit/HardwareThreadScheduler.hxx b/dev/zka/KernelKit/HardwareThreadScheduler.hxx index 83f6ebd9..3d70e828 100644 --- a/dev/zka/KernelKit/HardwareThreadScheduler.hxx +++ b/dev/zka/KernelKit/HardwareThreadScheduler.hxx @@ -14,7 +14,7 @@ /// @note Last Rev Sun 28 Jul CET 2024 /// @note Last Rev Thu, Aug 1, 2024 9:07:38 AM -#define cMaxHWThreads (8U) +#define cMaxHartInsideSched (8U) namespace Kernel { @@ -37,10 +37,12 @@ namespace Kernel typedef enum ThreadKind ThreadKind; typedef ThreadID ThreadID; + /***********************************************************************************/ /// /// \name HardwareThread /// \brief Abstraction over the CPU's core, used to run processes or threads. /// + /***********************************************************************************/ class HardwareThread final { @@ -131,7 +133,7 @@ namespace Kernel SizeT Count() noexcept; private: - Array<HardwareThread, cMaxHWThreads> fThreadList; + Array<HardwareThread, cMaxHartInsideSched> fThreadList; ThreadID fCurrentThread{0}; }; diff --git a/dev/zka/KernelKit/UserProcessScheduler.hxx b/dev/zka/KernelKit/UserProcessScheduler.hxx index 3a6f03a1..fc82bf38 100644 --- a/dev/zka/KernelKit/UserProcessScheduler.hxx +++ b/dev/zka/KernelKit/UserProcessScheduler.hxx @@ -16,6 +16,9 @@ #define kSchedInvalidPID (-1) #define kSchedProcessLimitPerTeam (16U) +#define kSchedMaxMemoryLimit gib_cast(128) +#define kSchedMaxStackSz mib_cast(8) + //////////////////////////////////////////////////// // LAST REV: Mon Feb 12 13:52:01 CET 2024 @@ -149,48 +152,48 @@ namespace Kernel ProcessStatusKind Status{ProcessStatusKind::kDead}; UInt8* StackReserve{nullptr}; - // Memory, images pointers. + //! @brief Code Image. ImagePtr Image{nullptr}; - SizeT StackSize{mib_cast(8)}; + SizeT StackSize{kSchedMaxStackSz}; - //! @brief Shared library handle, reserved for kDLLKind types of executables only. - IPEFDLLObject* DLLPtr{nullptr}; + //! @brief Shared library handle, reserved for eExecutableDLLKind types of executables only. + IPEFDLLObject* PefDLLDelegate{nullptr}; /// @brief Parent process, reserved for threads only. UserProcess* Parent{nullptr}; // Memory usage. SizeT MemoryCursor{0}; - SizeT MemoryLimit{gib_cast(128)}; + SizeT MemoryLimit{kSchedMaxMemoryLimit}; - struct PROCESS_MEMORY_ENTRY + struct PROCESS_MEMORY_ENTRY final { VoidPtr MemoryEntry; struct PROCESS_MEMORY_ENTRY* MemoryPrev; struct PROCESS_MEMORY_ENTRY* MemoryNext; - }* MemoryEntryList{nullptr}; + }; + + PROCESS_MEMORY_ENTRY* MemoryEntryList{nullptr}; SizeT MemoryPD{0}; enum { - kExeKind = 1, - kDLLKind = 2, - kKindCount, + eExecutableKind, + eExecutableDLLKind, + eExecutableKindCount, }; - ProcessTime PTime{0}; + ProcessTime PTime{0}; //! @brief Process allocated tine. + PID ProcessId{kSchedInvalidPID}; - Int32 Kind{kExeKind}; + Int32 Kind{eExecutableKind}; public: //! @brief boolean operator, check status. - operator bool() - { - return Status != ProcessStatusKind::kDead; - } + operator bool(); ///! @brief Crashes the app, exits with code ~0. Void Crash(); |
