summaryrefslogtreecommitdiffhomepage
path: root/dev/zka/KernelKit
diff options
context:
space:
mode:
authorAmlal <amlal@el-mahrouss-logic.com>2024-09-24 23:14:02 +0200
committerAmlal <amlal@el-mahrouss-logic.com>2024-09-24 23:14:02 +0200
commit8f62fbe30655e4d18837f196f01bb203126f474f (patch)
tree0b765ca18723524553ae10249d5dd9a9930abf5a /dev/zka/KernelKit
parentb6adb479cbd704600fcbf663325396b60f3e4439 (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.hxx6
-rw-r--r--dev/zka/KernelKit/UserProcessScheduler.hxx35
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();