mirror of
https://git.h3cjp.net/H3cJP/yuzu.git
synced 2024-11-15 15:32:58 +00:00
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() {
|
void KernelCore::Initialize() {
|
||||||
|
slab_heap_container = std::make_unique<SlabHeapContainer>();
|
||||||
impl->Initialize(*this);
|
impl->Initialize(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -260,15 +260,15 @@ public:
|
||||||
template <typename T>
|
template <typename T>
|
||||||
KSlabHeap<T>& SlabHeap() {
|
KSlabHeap<T>& SlabHeap() {
|
||||||
if constexpr (std::is_same_v<T, Process>) {
|
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>) {
|
} 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>) {
|
} 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>) {
|
} 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>) {
|
} 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{};
|
bool exception_exited{};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
KSlabHeap<Process> slab_heap_Process;
|
/// Helper to encapsulate all slab heaps in a single heap allocated container
|
||||||
KSlabHeap<KThread> slab_heap_KThread;
|
struct SlabHeapContainer {
|
||||||
KSlabHeap<KEvent> slab_heap_KEvent;
|
KSlabHeap<Process> process;
|
||||||
KSlabHeap<KSharedMemory> slab_heap_KSharedMemory;
|
KSlabHeap<KThread> thread;
|
||||||
KSlabHeap<KLinkedListNode> slab_heap_KLinkedListNode;
|
KSlabHeap<KEvent> event;
|
||||||
|
KSlabHeap<KSharedMemory> shared_memory;
|
||||||
|
KSlabHeap<KLinkedListNode> linked_list_node;
|
||||||
|
};
|
||||||
|
|
||||||
|
std::unique_ptr<SlabHeapContainer> slab_heap_container;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Kernel
|
} // namespace Kernel
|
||||||
|
|
Loading…
Reference in a new issue