summaryrefslogtreecommitdiffhomepage
path: root/Kernel
diff options
context:
space:
mode:
authorAmlal EL Mahrouss <amlalelmahrouss@icloud.com>2024-08-08 17:10:31 +0200
committerAmlal EL Mahrouss <amlalelmahrouss@icloud.com>2024-08-08 17:10:31 +0200
commit5c079a35ae724d9c6be0b8adf0717728a1368c69 (patch)
tree944050de13b26295424dd513d140f34d6ec8b029 /Kernel
parentdf8393cebbae61ed7686be17a28d80c657f49b7e (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.hxx10
-rw-r--r--Kernel/KernelKit/ThreadLocalStorage.hxx10
-rw-r--r--Kernel/Sources/ProcessScheduler.cxx6
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