hle: kernel: Move slab heaps to their own container.
This commit is contained in:
parent
89edbe8aa2
commit
cfa7b92563
|
@ -692,6 +692,7 @@ void KernelCore::SetMulticore(bool is_multicore) {
|
|||
}
|
||||
|
||||
void KernelCore::Initialize() {
|
||||
slab_heap_container = std::make_unique<SlabHeapContainer>();
|
||||
impl->Initialize(*this);
|
||||
}
|
||||
|
||||
|
|
|
@ -260,15 +260,15 @@ public:
|
|||
template <typename T>
|
||||
KSlabHeap<T>& SlabHeap() {
|
||||
if constexpr (std::is_same_v<T, Process>) {
|
||||
return slab_heap_Process;
|
||||
return slab_heap_container->process;
|
||||
} else if constexpr (std::is_same_v<T, KThread>) {
|
||||
return slab_heap_KThread;
|
||||
return slab_heap_container->thread;
|
||||
} else if constexpr (std::is_same_v<T, KEvent>) {
|
||||
return slab_heap_KEvent;
|
||||
return slab_heap_container->event;
|
||||
} else if constexpr (std::is_same_v<T, KSharedMemory>) {
|
||||
return slab_heap_KSharedMemory;
|
||||
return slab_heap_container->shared_memory;
|
||||
} else if constexpr (std::is_same_v<T, KLinkedListNode>) {
|
||||
return slab_heap_KLinkedListNode;
|
||||
return slab_heap_container->linked_list_node;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -301,11 +301,16 @@ private:
|
|||
bool exception_exited{};
|
||||
|
||||
private:
|
||||
KSlabHeap<Process> slab_heap_Process;
|
||||
KSlabHeap<KThread> slab_heap_KThread;
|
||||
KSlabHeap<KEvent> slab_heap_KEvent;
|
||||
KSlabHeap<KSharedMemory> slab_heap_KSharedMemory;
|
||||
KSlabHeap<KLinkedListNode> slab_heap_KLinkedListNode;
|
||||
/// Helper to encapsulate all slab heaps in a single heap allocated container
|
||||
struct SlabHeapContainer {
|
||||
KSlabHeap<Process> process;
|
||||
KSlabHeap<KThread> thread;
|
||||
KSlabHeap<KEvent> event;
|
||||
KSlabHeap<KSharedMemory> shared_memory;
|
||||
KSlabHeap<KLinkedListNode> linked_list_node;
|
||||
};
|
||||
|
||||
std::unique_ptr<SlabHeapContainer> slab_heap_container;
|
||||
};
|
||||
|
||||
} // namespace Kernel
|
||||
|
|
Reference in New Issue