summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/kernel.cpp
diff options
context:
space:
mode:
authorGravatar bunnei2021-02-27 12:48:35 -0700
committerGravatar GitHub2021-02-27 12:48:35 -0700
commit09f7c355c6d7e3c7845ba96d9704489d2d5853f4 (patch)
treeb12127263c0e4999f0a6e9edfe7f8f25adef9d37 /src/core/hle/kernel/kernel.cpp
parentMerge pull request #5944 from Morph1984/gc-vibrations (diff)
parenthle: kernel: Migrate PageHeap/PageTable to KPageHeap/KPageTable. (diff)
downloadyuzu-09f7c355c6d7e3c7845ba96d9704489d2d5853f4.tar.gz
yuzu-09f7c355c6d7e3c7845ba96d9704489d2d5853f4.tar.xz
yuzu-09f7c355c6d7e3c7845ba96d9704489d2d5853f4.zip
Merge pull request #5953 from bunnei/memory-refactor-1
Kernel Rework: Memory updates and refactoring (Part 1)
Diffstat (limited to 'src/core/hle/kernel/kernel.cpp')
-rw-r--r--src/core/hle/kernel/kernel.cpp88
1 files changed, 44 insertions, 44 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index 39c5182c5..331cf3a60 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -27,17 +27,17 @@
27#include "core/hardware_properties.h" 27#include "core/hardware_properties.h"
28#include "core/hle/kernel/client_port.h" 28#include "core/hle/kernel/client_port.h"
29#include "core/hle/kernel/handle_table.h" 29#include "core/hle/kernel/handle_table.h"
30#include "core/hle/kernel/k_memory_layout.h"
31#include "core/hle/kernel/k_memory_manager.h"
30#include "core/hle/kernel/k_resource_limit.h" 32#include "core/hle/kernel/k_resource_limit.h"
31#include "core/hle/kernel/k_scheduler.h" 33#include "core/hle/kernel/k_scheduler.h"
34#include "core/hle/kernel/k_shared_memory.h"
35#include "core/hle/kernel/k_slab_heap.h"
32#include "core/hle/kernel/k_thread.h" 36#include "core/hle/kernel/k_thread.h"
33#include "core/hle/kernel/kernel.h" 37#include "core/hle/kernel/kernel.h"
34#include "core/hle/kernel/memory/memory_layout.h"
35#include "core/hle/kernel/memory/memory_manager.h"
36#include "core/hle/kernel/memory/slab_heap.h"
37#include "core/hle/kernel/physical_core.h" 38#include "core/hle/kernel/physical_core.h"
38#include "core/hle/kernel/process.h" 39#include "core/hle/kernel/process.h"
39#include "core/hle/kernel/service_thread.h" 40#include "core/hle/kernel/service_thread.h"
40#include "core/hle/kernel/shared_memory.h"
41#include "core/hle/kernel/svc_results.h" 41#include "core/hle/kernel/svc_results.h"
42#include "core/hle/kernel/time_manager.h" 42#include "core/hle/kernel/time_manager.h"
43#include "core/hle/lock.h" 43#include "core/hle/lock.h"
@@ -271,7 +271,7 @@ struct KernelCore::Impl {
271 271
272 void InitializeMemoryLayout() { 272 void InitializeMemoryLayout() {
273 // Initialize memory layout 273 // Initialize memory layout
274 constexpr Memory::MemoryLayout layout{Memory::MemoryLayout::GetDefaultLayout()}; 274 constexpr KMemoryLayout layout{KMemoryLayout::GetDefaultLayout()};
275 constexpr std::size_t hid_size{0x40000}; 275 constexpr std::size_t hid_size{0x40000};
276 constexpr std::size_t font_size{0x1100000}; 276 constexpr std::size_t font_size{0x1100000};
277 constexpr std::size_t irs_size{0x8000}; 277 constexpr std::size_t irs_size{0x8000};
@@ -282,36 +282,36 @@ struct KernelCore::Impl {
282 constexpr PAddr time_addr{layout.System().StartAddress() + hid_size + font_size + irs_size}; 282 constexpr PAddr time_addr{layout.System().StartAddress() + hid_size + font_size + irs_size};
283 283
284 // Initialize memory manager 284 // Initialize memory manager
285 memory_manager = std::make_unique<Memory::MemoryManager>(); 285 memory_manager = std::make_unique<KMemoryManager>();
286 memory_manager->InitializeManager(Memory::MemoryManager::Pool::Application, 286 memory_manager->InitializeManager(KMemoryManager::Pool::Application,
287 layout.Application().StartAddress(), 287 layout.Application().StartAddress(),
288 layout.Application().EndAddress()); 288 layout.Application().EndAddress());
289 memory_manager->InitializeManager(Memory::MemoryManager::Pool::Applet, 289 memory_manager->InitializeManager(KMemoryManager::Pool::Applet,
290 layout.Applet().StartAddress(), 290 layout.Applet().StartAddress(),
291 layout.Applet().EndAddress()); 291 layout.Applet().EndAddress());
292 memory_manager->InitializeManager(Memory::MemoryManager::Pool::System, 292 memory_manager->InitializeManager(KMemoryManager::Pool::System,
293 layout.System().StartAddress(), 293 layout.System().StartAddress(),
294 layout.System().EndAddress()); 294 layout.System().EndAddress());
295 295
296 hid_shared_mem = Kernel::SharedMemory::Create( 296 hid_shared_mem = Kernel::KSharedMemory::Create(
297 system.Kernel(), system.DeviceMemory(), nullptr, 297 system.Kernel(), system.DeviceMemory(), nullptr, {hid_addr, hid_size / PageSize},
298 {hid_addr, hid_size / Memory::PageSize}, Memory::MemoryPermission::None, 298 KMemoryPermission::None, KMemoryPermission::Read, hid_addr, hid_size,
299 Memory::MemoryPermission::Read, hid_addr, hid_size, "HID:SharedMemory"); 299 "HID:SharedMemory");
300 font_shared_mem = Kernel::SharedMemory::Create( 300 font_shared_mem = Kernel::KSharedMemory::Create(
301 system.Kernel(), system.DeviceMemory(), nullptr, 301 system.Kernel(), system.DeviceMemory(), nullptr, {font_pa, font_size / PageSize},
302 {font_pa, font_size / Memory::PageSize}, Memory::MemoryPermission::None, 302 KMemoryPermission::None, KMemoryPermission::Read, font_pa, font_size,
303 Memory::MemoryPermission::Read, font_pa, font_size, "Font:SharedMemory"); 303 "Font:SharedMemory");
304 irs_shared_mem = Kernel::SharedMemory::Create( 304 irs_shared_mem = Kernel::KSharedMemory::Create(
305 system.Kernel(), system.DeviceMemory(), nullptr, 305 system.Kernel(), system.DeviceMemory(), nullptr, {irs_addr, irs_size / PageSize},
306 {irs_addr, irs_size / Memory::PageSize}, Memory::MemoryPermission::None, 306 KMemoryPermission::None, KMemoryPermission::Read, irs_addr, irs_size,
307 Memory::MemoryPermission::Read, irs_addr, irs_size, "IRS:SharedMemory"); 307 "IRS:SharedMemory");
308 time_shared_mem = Kernel::SharedMemory::Create( 308 time_shared_mem = Kernel::KSharedMemory::Create(
309 system.Kernel(), system.DeviceMemory(), nullptr, 309 system.Kernel(), system.DeviceMemory(), nullptr, {time_addr, time_size / PageSize},
310 {time_addr, time_size / Memory::PageSize}, Memory::MemoryPermission::None, 310 KMemoryPermission::None, KMemoryPermission::Read, time_addr, time_size,
311 Memory::MemoryPermission::Read, time_addr, time_size, "Time:SharedMemory"); 311 "Time:SharedMemory");
312 312
313 // Allocate slab heaps 313 // Allocate slab heaps
314 user_slab_heap_pages = std::make_unique<Memory::SlabHeap<Memory::Page>>(); 314 user_slab_heap_pages = std::make_unique<KSlabHeap<Page>>();
315 315
316 constexpr u64 user_slab_heap_size{0x1ef000}; 316 constexpr u64 user_slab_heap_size{0x1ef000};
317 // Reserve slab heaps 317 // Reserve slab heaps
@@ -353,14 +353,14 @@ struct KernelCore::Impl {
353 std::atomic<u32> next_host_thread_id{Core::Hardware::NUM_CPU_CORES}; 353 std::atomic<u32> next_host_thread_id{Core::Hardware::NUM_CPU_CORES};
354 354
355 // Kernel memory management 355 // Kernel memory management
356 std::unique_ptr<Memory::MemoryManager> memory_manager; 356 std::unique_ptr<KMemoryManager> memory_manager;
357 std::unique_ptr<Memory::SlabHeap<Memory::Page>> user_slab_heap_pages; 357 std::unique_ptr<KSlabHeap<Page>> user_slab_heap_pages;
358 358
359 // Shared memory for services 359 // Shared memory for services
360 std::shared_ptr<Kernel::SharedMemory> hid_shared_mem; 360 std::shared_ptr<Kernel::KSharedMemory> hid_shared_mem;
361 std::shared_ptr<Kernel::SharedMemory> font_shared_mem; 361 std::shared_ptr<Kernel::KSharedMemory> font_shared_mem;
362 std::shared_ptr<Kernel::SharedMemory> irs_shared_mem; 362 std::shared_ptr<Kernel::KSharedMemory> irs_shared_mem;
363 std::shared_ptr<Kernel::SharedMemory> time_shared_mem; 363 std::shared_ptr<Kernel::KSharedMemory> time_shared_mem;
364 364
365 // Threads used for services 365 // Threads used for services
366 std::unordered_set<std::shared_ptr<Kernel::ServiceThread>> service_threads; 366 std::unordered_set<std::shared_ptr<Kernel::ServiceThread>> service_threads;
@@ -578,51 +578,51 @@ KThread* KernelCore::GetCurrentEmuThread() const {
578 return impl->GetCurrentEmuThread(); 578 return impl->GetCurrentEmuThread();
579} 579}
580 580
581Memory::MemoryManager& KernelCore::MemoryManager() { 581KMemoryManager& KernelCore::MemoryManager() {
582 return *impl->memory_manager; 582 return *impl->memory_manager;
583} 583}
584 584
585const Memory::MemoryManager& KernelCore::MemoryManager() const { 585const KMemoryManager& KernelCore::MemoryManager() const {
586 return *impl->memory_manager; 586 return *impl->memory_manager;
587} 587}
588 588
589Memory::SlabHeap<Memory::Page>& KernelCore::GetUserSlabHeapPages() { 589KSlabHeap<Page>& KernelCore::GetUserSlabHeapPages() {
590 return *impl->user_slab_heap_pages; 590 return *impl->user_slab_heap_pages;
591} 591}
592 592
593const Memory::SlabHeap<Memory::Page>& KernelCore::GetUserSlabHeapPages() const { 593const KSlabHeap<Page>& KernelCore::GetUserSlabHeapPages() const {
594 return *impl->user_slab_heap_pages; 594 return *impl->user_slab_heap_pages;
595} 595}
596 596
597Kernel::SharedMemory& KernelCore::GetHidSharedMem() { 597Kernel::KSharedMemory& KernelCore::GetHidSharedMem() {
598 return *impl->hid_shared_mem; 598 return *impl->hid_shared_mem;
599} 599}
600 600
601const Kernel::SharedMemory& KernelCore::GetHidSharedMem() const { 601const Kernel::KSharedMemory& KernelCore::GetHidSharedMem() const {
602 return *impl->hid_shared_mem; 602 return *impl->hid_shared_mem;
603} 603}
604 604
605Kernel::SharedMemory& KernelCore::GetFontSharedMem() { 605Kernel::KSharedMemory& KernelCore::GetFontSharedMem() {
606 return *impl->font_shared_mem; 606 return *impl->font_shared_mem;
607} 607}
608 608
609const Kernel::SharedMemory& KernelCore::GetFontSharedMem() const { 609const Kernel::KSharedMemory& KernelCore::GetFontSharedMem() const {
610 return *impl->font_shared_mem; 610 return *impl->font_shared_mem;
611} 611}
612 612
613Kernel::SharedMemory& KernelCore::GetIrsSharedMem() { 613Kernel::KSharedMemory& KernelCore::GetIrsSharedMem() {
614 return *impl->irs_shared_mem; 614 return *impl->irs_shared_mem;
615} 615}
616 616
617const Kernel::SharedMemory& KernelCore::GetIrsSharedMem() const { 617const Kernel::KSharedMemory& KernelCore::GetIrsSharedMem() const {
618 return *impl->irs_shared_mem; 618 return *impl->irs_shared_mem;
619} 619}
620 620
621Kernel::SharedMemory& KernelCore::GetTimeSharedMem() { 621Kernel::KSharedMemory& KernelCore::GetTimeSharedMem() {
622 return *impl->time_shared_mem; 622 return *impl->time_shared_mem;
623} 623}
624 624
625const Kernel::SharedMemory& KernelCore::GetTimeSharedMem() const { 625const Kernel::KSharedMemory& KernelCore::GetTimeSharedMem() const {
626 return *impl->time_shared_mem; 626 return *impl->time_shared_mem;
627} 627}
628 628