diff options
| author | Amlal <amlal@nekernel.org> | 2025-04-24 17:34:39 +0200 |
|---|---|---|
| committer | Amlal <amlal@nekernel.org> | 2025-04-24 17:34:39 +0200 |
| commit | 69703f6fdd788276e84cbe2714c91fcfdb9e76cb (patch) | |
| tree | 675324d487a8afbc80f429df96c0bb843628c001 /dev/kernel/KernelKit | |
| parent | c4db7babb3e1c664355e9b1375264fd9343835f2 (diff) | |
dev, kernel: scheduler and heap related work.
- Replacing USER_HEAP_LIST with HEAP_HEAP_TREE.
- Reworked Signal struct.
- Add Team spinner inside ARM64 HAL too.
Signed-off-by: Amlal <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/KernelKit')
| -rw-r--r-- | dev/kernel/KernelKit/UserProcessScheduler.h | 25 | ||||
| -rw-r--r-- | dev/kernel/KernelKit/UserProcessScheduler.inl | 4 |
2 files changed, 21 insertions, 8 deletions
diff --git a/dev/kernel/KernelKit/UserProcessScheduler.h b/dev/kernel/KernelKit/UserProcessScheduler.h index ec16a0e2..3811a2e2 100644 --- a/dev/kernel/KernelKit/UserProcessScheduler.h +++ b/dev/kernel/KernelKit/UserProcessScheduler.h @@ -67,26 +67,39 @@ namespace Kernel SizeT MemoryLimit{kSchedMaxMemoryLimit}; SizeT UsedMemory{0UL}; - struct USER_HEAP_LIST final + struct USER_HEAP_TREE final { VoidPtr MemoryEntry{nullptr}; SizeT MemoryEntrySize{0UL}; SizeT MemoryEntryPad{0UL}; - struct USER_HEAP_LIST* MemoryPrev{nullptr}; - struct USER_HEAP_LIST* MemoryNext{nullptr}; + enum + { + kInvalidMemory = 0, + kRedMemory = 100, + kBlackMemory = 101, + kCountMemory = 2, + }; + + Int32 MemoryColor{kBlackMemory}; + + struct USER_HEAP_TREE* MemoryParent{nullptr}; + struct USER_HEAP_TREE* MemoryChild{nullptr}; + + struct USER_HEAP_TREE* MemoryPrev{nullptr}; + struct USER_HEAP_TREE* MemoryNext{nullptr}; }; struct USER_PROCESS_SIGNAL final { UIntPtr SignalArg; - ProcessStatusKind PreviousStatus; + ProcessStatusKind Status; UIntPtr SignalID; }; USER_PROCESS_SIGNAL Signal; - USER_HEAP_LIST* ProcessMemoryHeap{nullptr}; - UserProcessTeam* ProcessParentTeam; + USER_HEAP_TREE* HeapTree{nullptr}; + UserProcessTeam* ParentTeam; VoidPtr VMRegister{0UL}; diff --git a/dev/kernel/KernelKit/UserProcessScheduler.inl b/dev/kernel/KernelKit/UserProcessScheduler.inl index e31b5462..63cdc795 100644 --- a/dev/kernel/KernelKit/UserProcessScheduler.inl +++ b/dev/kernel/KernelKit/UserProcessScheduler.inl @@ -23,13 +23,13 @@ namespace Kernel if (!ptr) return No; - if (!this->ProcessMemoryHeap) + if (!this->HeapTree) { kout << "USER_PROCESS's heap is empty.\r"; return No; } - USER_HEAP_LIST* entry = this->ProcessMemoryHeap; + USER_HEAP_TREE* entry = this->HeapTree; while (entry != nullptr) { |
