diff options
| author | 2022-03-16 12:15:33 +0100 | |
|---|---|---|
| committer | 2022-03-16 12:15:33 +0100 | |
| commit | 2db5076ec9abab880ea2cc363f4e5e93c528d801 (patch) | |
| tree | a87668b7aab0bba9dd73dabf093b9f77b1ad6937 /src/core/hle/kernel/kernel.h | |
| parent | Merge pull request #8023 from ameerj/kirby-pop-in (diff) | |
| parent | core: hle: kernel: init_slab_setup: Move CalculateSlabHeapGapSize to global n... (diff) | |
| download | yuzu-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.h | 22 |
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; | |||
| 43 | class KLinkedListNode; | 43 | class KLinkedListNode; |
| 44 | class KMemoryLayout; | 44 | class KMemoryLayout; |
| 45 | class KMemoryManager; | 45 | class KMemoryManager; |
| 46 | class KPageBuffer; | ||
| 46 | class KPort; | 47 | class KPort; |
| 47 | class KProcess; | 48 | class KProcess; |
| 48 | class KResourceLimit; | 49 | class KResourceLimit; |
| @@ -52,6 +53,7 @@ class KSession; | |||
| 52 | class KSharedMemory; | 53 | class KSharedMemory; |
| 53 | class KSharedMemoryInfo; | 54 | class KSharedMemoryInfo; |
| 54 | class KThread; | 55 | class KThread; |
| 56 | class KThreadLocalPage; | ||
| 55 | class KTransferMemory; | 57 | class KTransferMemory; |
| 56 | class KWorkerTaskManager; | 58 | class KWorkerTaskManager; |
| 57 | class KWritableEvent; | 59 | class 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; |