diff options
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) { |
