summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/kernel.h
diff options
context:
space:
mode:
authorGravatar Fernando S2022-03-16 12:15:33 +0100
committerGravatar GitHub2022-03-16 12:15:33 +0100
commit2db5076ec9abab880ea2cc363f4e5e93c528d801 (patch)
treea87668b7aab0bba9dd73dabf093b9f77b1ad6937 /src/core/hle/kernel/kernel.h
parentMerge pull request #8023 from ameerj/kirby-pop-in (diff)
parentcore: hle: kernel: init_slab_setup: Move CalculateSlabHeapGapSize to global n... (diff)
downloadyuzu-2db5076ec9abab880ea2cc363f4e5e93c528d801.tar.gz
yuzu-2db5076ec9abab880ea2cc363f4e5e93c528d801.tar.xz
yuzu-2db5076ec9abab880ea2cc363f4e5e93c528d801.zip
Merge pull request #8013 from bunnei/kernel-slab-rework-v2
Kernel Memory Updates (Part 6): Use guest memory for slab heaps & update TLS.
Diffstat (limited to 'src/core/hle/kernel/kernel.h')
-rw-r--r--src/core/hle/kernel/kernel.h22
1 files changed, 8 insertions, 14 deletions
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h
index c1254b18d..7087bbda6 100644
--- a/src/core/hle/kernel/kernel.h
+++ b/src/core/hle/kernel/kernel.h
@@ -43,6 +43,7 @@ class KHandleTable;
43class KLinkedListNode; 43class KLinkedListNode;
44class KMemoryLayout; 44class KMemoryLayout;
45class KMemoryManager; 45class KMemoryManager;
46class KPageBuffer;
46class KPort; 47class KPort;
47class KProcess; 48class KProcess;
48class KResourceLimit; 49class KResourceLimit;
@@ -52,6 +53,7 @@ class KSession;
52class KSharedMemory; 53class KSharedMemory;
53class KSharedMemoryInfo; 54class KSharedMemoryInfo;
54class KThread; 55class KThread;
56class KThreadLocalPage;
55class KTransferMemory; 57class KTransferMemory;
56class KWorkerTaskManager; 58class KWorkerTaskManager;
57class KWritableEvent; 59class KWritableEvent;
@@ -194,14 +196,6 @@ public:
194 /// Opens a port to a service previously registered with RegisterNamedService. 196 /// Opens a port to a service previously registered with RegisterNamedService.
195 KClientPort* CreateNamedServicePort(std::string name); 197 KClientPort* CreateNamedServicePort(std::string name);
196 198
197 /// Registers a server session with the gobal emulation state, to be freed on shutdown. This is
198 /// necessary because we do not emulate processes for HLE sessions.
199 void RegisterServerSession(KServerSession* server_session);
200
201 /// Unregisters a server session previously registered with RegisterServerSession when it was
202 /// destroyed during the current emulation session.
203 void UnregisterServerSession(KServerSession* server_session);
204
205 /// Registers all kernel objects with the global emulation state, this is purely for tracking 199 /// Registers all kernel objects with the global emulation state, this is purely for tracking
206 /// leaks after emulation has been shutdown. 200 /// leaks after emulation has been shutdown.
207 void RegisterKernelObject(KAutoObject* object); 201 void RegisterKernelObject(KAutoObject* object);
@@ -239,12 +233,6 @@ public:
239 /// Gets the virtual memory manager for the kernel. 233 /// Gets the virtual memory manager for the kernel.
240 const KMemoryManager& MemoryManager() const; 234 const KMemoryManager& MemoryManager() const;
241 235
242 /// Gets the slab heap allocated for user space pages.
243 KSlabHeap<Page>& GetUserSlabHeapPages();
244
245 /// Gets the slab heap allocated for user space pages.
246 const KSlabHeap<Page>& GetUserSlabHeapPages() const;
247
248 /// Gets the shared memory object for HID services. 236 /// Gets the shared memory object for HID services.
249 Kernel::KSharedMemory& GetHidSharedMem(); 237 Kernel::KSharedMemory& GetHidSharedMem();
250 238
@@ -336,6 +324,10 @@ public:
336 return slab_heap_container->writeable_event; 324 return slab_heap_container->writeable_event;
337 } else if constexpr (std::is_same_v<T, KCodeMemory>) { 325 } else if constexpr (std::is_same_v<T, KCodeMemory>) {
338 return slab_heap_container->code_memory; 326 return slab_heap_container->code_memory;
327 } else if constexpr (std::is_same_v<T, KPageBuffer>) {
328 return slab_heap_container->page_buffer;
329 } else if constexpr (std::is_same_v<T, KThreadLocalPage>) {
330 return slab_heap_container->thread_local_page;
339 } 331 }
340 } 332 }
341 333
@@ -397,6 +389,8 @@ private:
397 KSlabHeap<KTransferMemory> transfer_memory; 389 KSlabHeap<KTransferMemory> transfer_memory;
398 KSlabHeap<KWritableEvent> writeable_event; 390 KSlabHeap<KWritableEvent> writeable_event;
399 KSlabHeap<KCodeMemory> code_memory; 391 KSlabHeap<KCodeMemory> code_memory;
392 KSlabHeap<KPageBuffer> page_buffer;
393 KSlabHeap<KThreadLocalPage> thread_local_page;
400 }; 394 };
401 395
402 std::unique_ptr<SlabHeapContainer> slab_heap_container; 396 std::unique_ptr<SlabHeapContainer> slab_heap_container;