diff options
| author | Amlal EL Mahrouss <amlalelmahrouss@icloud.com> | 2024-08-08 17:10:31 +0200 |
|---|---|---|
| committer | Amlal EL Mahrouss <amlalelmahrouss@icloud.com> | 2024-08-08 17:10:31 +0200 |
| commit | 5c079a35ae724d9c6be0b8adf0717728a1368c69 (patch) | |
| tree | 944050de13b26295424dd513d140f34d6ec8b029 /Kernel | |
| parent | df8393cebbae61ed7686be17a28d80c657f49b7e (diff) | |
[FIXES] SEE BELOW.
+ Cleanup SCIBase.hxx, using functions instead of passing arguments to syscall.
+ Update Process scheduler, refactored the code and improved some chunk
of it.
+ Update the THREAD_INFORMATION_BLOCK structure.
Signed-off-by: Amlal EL Mahrouss <amlalelmahrouss@icloud.com>
Diffstat (limited to 'Kernel')
| -rw-r--r-- | Kernel/KernelKit/ProcessScheduler.hxx | 10 | ||||
| -rw-r--r-- | Kernel/KernelKit/ThreadLocalStorage.hxx | 10 | ||||
| -rw-r--r-- | Kernel/Sources/ProcessScheduler.cxx | 6 |
3 files changed, 15 insertions, 11 deletions
diff --git a/Kernel/KernelKit/ProcessScheduler.hxx b/Kernel/KernelKit/ProcessScheduler.hxx index 4b149a52..cd0a7a93 100644 --- a/Kernel/KernelKit/ProcessScheduler.hxx +++ b/Kernel/KernelKit/ProcessScheduler.hxx @@ -143,20 +143,22 @@ namespace Kernel const Int32& GetExitCode() noexcept; public: - Char Name[kProcessLen] = {"Unknown Process"}; + Char Name[kProcessLen] = {"PROCESS"}; ProcessSubsystem SubSystem{ProcessSubsystem::eProcessSubsystemInvalid}; ProcessLevelRing Selector{ProcessLevelRing::kRingStdUser}; HAL::StackFramePtr StackFrame{nullptr}; - AffinityKind Affinity; - ProcessStatus Status; + AffinityKind Affinity{AffinityKind::kStandard}; + ProcessStatus Status{ProcessStatus::kDead}; // Memory, images. HeapPtrKind HeapCursor{nullptr}; ImagePtr Image{nullptr}; HeapPtrKind HeapPtr{nullptr}; + typedef PEFSharedObjectInterface ProcessDLLInterface; + // shared library handle, reserved for kSharedLib only. - PEFSharedObjectInterface* SharedObjectPEF{nullptr}; + ProcessDLLInterface* DLLPtr{nullptr}; // Memory usage. SizeT UsedMemory{0}; diff --git a/Kernel/KernelKit/ThreadLocalStorage.hxx b/Kernel/KernelKit/ThreadLocalStorage.hxx index c6973fd4..a1bc7733 100644 --- a/Kernel/KernelKit/ThreadLocalStorage.hxx +++ b/Kernel/KernelKit/ThreadLocalStorage.hxx @@ -24,10 +24,12 @@ struct THREAD_INFORMATION_BLOCK; struct PACKED THREAD_INFORMATION_BLOCK final { Kernel::Char f_Cookie[kTLSCookieLen]; // Process cookie. - Kernel::UIntPtr f_Code; // Start Address - Kernel::UIntPtr f_Data; // Allocation Heap - Kernel::UIntPtr f_BSS; // Stack Pointer. - Kernel::Int32 f_ID; // Thread execution ID. + Kernel::UIntPtr f_Code; // Start address (Instruction Pointer) + Kernel::UIntPtr f_Data; // Allocated Heap for process. + Kernel::UIntPtr f_Stack; // Application Stack pointer. + Kernel::Int32 f_ID; // Thread execution ID. + Kernel::Int64 f_UsedHeapPercent; // used heap in percent. + Kernel::Int64 f_FreeHeapPercent; // heap free in percent. }; ///! @brief Cookie Sanity check. diff --git a/Kernel/Sources/ProcessScheduler.cxx b/Kernel/Sources/ProcessScheduler.cxx index cacdd060..4d421ee4 100644 --- a/Kernel/Sources/ProcessScheduler.cxx +++ b/Kernel/Sources/ProcessScheduler.cxx @@ -197,11 +197,11 @@ namespace Kernel if (this->Kind == kSharedObjectKind) { bool success = false; - rtl_fini_shared_object(this, this->SharedObjectPEF, &success); + rtl_fini_shared_object(this, this->DLLPtr, &success); if (success) { - this->SharedObjectPEF = nullptr; + this->DLLPtr = nullptr; } } @@ -233,7 +233,7 @@ namespace Kernel } else if (process.Leak().Kind == PROCESS_HEADER_BLOCK::kSharedObjectKind) { - process.Leak().SharedObjectPEF = rtl_init_shared_object(&process.Leak()); + process.Leak().DLLPtr = rtl_init_shared_object(&process.Leak()); process.Leak().HeapPtr = sched_new_heap(kUserHeapUser | kUserHeapRw | kUserHeapShared); } else |
