diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_memory_manager.cpp (renamed from src/core/hle/kernel/memory/memory_manager.cpp) | 32 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_memory_manager.h (renamed from src/core/hle/kernel/memory/memory_manager.h) | 10 | ||||
| -rw-r--r-- | src/core/hle/kernel/kernel.cpp | 16 | ||||
| -rw-r--r-- | src/core/hle/kernel/kernel.h | 16 | ||||
| -rw-r--r-- | src/core/hle/kernel/memory/page_table.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/memory/page_table.h | 6 | ||||
| -rw-r--r-- | src/core/hle/kernel/process.cpp | 9 |
8 files changed, 48 insertions, 47 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 70dab3f74..2976187c0 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt | |||
| @@ -170,6 +170,8 @@ add_library(core STATIC | |||
| 170 | hle/kernel/k_memory_block_manager.cpp | 170 | hle/kernel/k_memory_block_manager.cpp |
| 171 | hle/kernel/k_memory_block_manager.h | 171 | hle/kernel/k_memory_block_manager.h |
| 172 | hle/kernel/k_memory_layout.h | 172 | hle/kernel/k_memory_layout.h |
| 173 | hle/kernel/k_memory_manager.cpp | ||
| 174 | hle/kernel/k_memory_manager.h | ||
| 173 | hle/kernel/k_page_bitmap.h | 175 | hle/kernel/k_page_bitmap.h |
| 174 | hle/kernel/k_page_linked_list.h | 176 | hle/kernel/k_page_linked_list.h |
| 175 | hle/kernel/k_priority_queue.h | 177 | hle/kernel/k_priority_queue.h |
| @@ -200,8 +202,6 @@ add_library(core STATIC | |||
| 200 | hle/kernel/kernel.cpp | 202 | hle/kernel/kernel.cpp |
| 201 | hle/kernel/kernel.h | 203 | hle/kernel/kernel.h |
| 202 | hle/kernel/memory_types.h | 204 | hle/kernel/memory_types.h |
| 203 | hle/kernel/memory/memory_manager.cpp | ||
| 204 | hle/kernel/memory/memory_manager.h | ||
| 205 | hle/kernel/memory/page_heap.cpp | 205 | hle/kernel/memory/page_heap.cpp |
| 206 | hle/kernel/memory/page_heap.h | 206 | hle/kernel/memory/page_heap.h |
| 207 | hle/kernel/memory/page_table.cpp | 207 | hle/kernel/memory/page_table.cpp |
diff --git a/src/core/hle/kernel/memory/memory_manager.cpp b/src/core/hle/kernel/k_memory_manager.cpp index 00d5b15f3..5ea11a918 100644 --- a/src/core/hle/kernel/memory/memory_manager.cpp +++ b/src/core/hle/kernel/k_memory_manager.cpp | |||
| @@ -8,20 +8,20 @@ | |||
| 8 | #include "common/assert.h" | 8 | #include "common/assert.h" |
| 9 | #include "common/common_types.h" | 9 | #include "common/common_types.h" |
| 10 | #include "common/scope_exit.h" | 10 | #include "common/scope_exit.h" |
| 11 | #include "core/hle/kernel/k_memory_manager.h" | ||
| 11 | #include "core/hle/kernel/k_page_linked_list.h" | 12 | #include "core/hle/kernel/k_page_linked_list.h" |
| 12 | #include "core/hle/kernel/memory/memory_manager.h" | ||
| 13 | #include "core/hle/kernel/svc_results.h" | 13 | #include "core/hle/kernel/svc_results.h" |
| 14 | 14 | ||
| 15 | namespace Kernel::Memory { | 15 | namespace Kernel { |
| 16 | 16 | ||
| 17 | std::size_t MemoryManager::Impl::Initialize(Pool new_pool, u64 start_address, u64 end_address) { | 17 | std::size_t KMemoryManager::Impl::Initialize(Pool new_pool, u64 start_address, u64 end_address) { |
| 18 | const auto size{end_address - start_address}; | 18 | const auto size{end_address - start_address}; |
| 19 | 19 | ||
| 20 | // Calculate metadata sizes | 20 | // Calculate metadata sizes |
| 21 | const auto ref_count_size{(size / PageSize) * sizeof(u16)}; | 21 | const auto ref_count_size{(size / PageSize) * sizeof(u16)}; |
| 22 | const auto optimize_map_size{(Common::AlignUp((size / PageSize), 64) / 64) * sizeof(u64)}; | 22 | const auto optimize_map_size{(Common::AlignUp((size / PageSize), 64) / 64) * sizeof(u64)}; |
| 23 | const auto manager_size{Common::AlignUp(optimize_map_size + ref_count_size, PageSize)}; | 23 | const auto manager_size{Common::AlignUp(optimize_map_size + ref_count_size, PageSize)}; |
| 24 | const auto page_heap_size{PageHeap::CalculateManagementOverheadSize(size)}; | 24 | const auto page_heap_size{Memory::PageHeap::CalculateManagementOverheadSize(size)}; |
| 25 | const auto total_metadata_size{manager_size + page_heap_size}; | 25 | const auto total_metadata_size{manager_size + page_heap_size}; |
| 26 | ASSERT(manager_size <= total_metadata_size); | 26 | ASSERT(manager_size <= total_metadata_size); |
| 27 | ASSERT(Common::IsAligned(total_metadata_size, PageSize)); | 27 | ASSERT(Common::IsAligned(total_metadata_size, PageSize)); |
| @@ -41,13 +41,13 @@ std::size_t MemoryManager::Impl::Initialize(Pool new_pool, u64 start_address, u6 | |||
| 41 | return total_metadata_size; | 41 | return total_metadata_size; |
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | void MemoryManager::InitializeManager(Pool pool, u64 start_address, u64 end_address) { | 44 | void KMemoryManager::InitializeManager(Pool pool, u64 start_address, u64 end_address) { |
| 45 | ASSERT(pool < Pool::Count); | 45 | ASSERT(pool < Pool::Count); |
| 46 | managers[static_cast<std::size_t>(pool)].Initialize(pool, start_address, end_address); | 46 | managers[static_cast<std::size_t>(pool)].Initialize(pool, start_address, end_address); |
| 47 | } | 47 | } |
| 48 | 48 | ||
| 49 | VAddr MemoryManager::AllocateAndOpenContinuous(std::size_t num_pages, std::size_t align_pages, | 49 | VAddr KMemoryManager::AllocateAndOpenContinuous(std::size_t num_pages, std::size_t align_pages, |
| 50 | u32 option) { | 50 | u32 option) { |
| 51 | // Early return if we're allocating no pages | 51 | // Early return if we're allocating no pages |
| 52 | if (num_pages == 0) { | 52 | if (num_pages == 0) { |
| 53 | return {}; | 53 | return {}; |
| @@ -59,7 +59,7 @@ VAddr MemoryManager::AllocateAndOpenContinuous(std::size_t num_pages, std::size_ | |||
| 59 | std::lock_guard lock{pool_locks[pool_index]}; | 59 | std::lock_guard lock{pool_locks[pool_index]}; |
| 60 | 60 | ||
| 61 | // Choose a heap based on our page size request | 61 | // Choose a heap based on our page size request |
| 62 | const s32 heap_index{PageHeap::GetAlignedBlockIndex(num_pages, align_pages)}; | 62 | const s32 heap_index{Memory::PageHeap::GetAlignedBlockIndex(num_pages, align_pages)}; |
| 63 | 63 | ||
| 64 | // Loop, trying to iterate from each block | 64 | // Loop, trying to iterate from each block |
| 65 | // TODO (bunnei): Support multiple managers | 65 | // TODO (bunnei): Support multiple managers |
| @@ -72,7 +72,7 @@ VAddr MemoryManager::AllocateAndOpenContinuous(std::size_t num_pages, std::size_ | |||
| 72 | } | 72 | } |
| 73 | 73 | ||
| 74 | // If we allocated more than we need, free some | 74 | // If we allocated more than we need, free some |
| 75 | const auto allocated_pages{PageHeap::GetBlockNumPages(heap_index)}; | 75 | const auto allocated_pages{Memory::PageHeap::GetBlockNumPages(heap_index)}; |
| 76 | if (allocated_pages > num_pages) { | 76 | if (allocated_pages > num_pages) { |
| 77 | chosen_manager.Free(allocated_block + num_pages * PageSize, allocated_pages - num_pages); | 77 | chosen_manager.Free(allocated_block + num_pages * PageSize, allocated_pages - num_pages); |
| 78 | } | 78 | } |
| @@ -80,8 +80,8 @@ VAddr MemoryManager::AllocateAndOpenContinuous(std::size_t num_pages, std::size_ | |||
| 80 | return allocated_block; | 80 | return allocated_block; |
| 81 | } | 81 | } |
| 82 | 82 | ||
| 83 | ResultCode MemoryManager::Allocate(KPageLinkedList& page_list, std::size_t num_pages, Pool pool, | 83 | ResultCode KMemoryManager::Allocate(KPageLinkedList& page_list, std::size_t num_pages, Pool pool, |
| 84 | Direction dir) { | 84 | Direction dir) { |
| 85 | ASSERT(page_list.GetNumPages() == 0); | 85 | ASSERT(page_list.GetNumPages() == 0); |
| 86 | 86 | ||
| 87 | // Early return if we're allocating no pages | 87 | // Early return if we're allocating no pages |
| @@ -94,7 +94,7 @@ ResultCode MemoryManager::Allocate(KPageLinkedList& page_list, std::size_t num_p | |||
| 94 | std::lock_guard lock{pool_locks[pool_index]}; | 94 | std::lock_guard lock{pool_locks[pool_index]}; |
| 95 | 95 | ||
| 96 | // Choose a heap based on our page size request | 96 | // Choose a heap based on our page size request |
| 97 | const s32 heap_index{PageHeap::GetBlockIndex(num_pages)}; | 97 | const s32 heap_index{Memory::PageHeap::GetBlockIndex(num_pages)}; |
| 98 | if (heap_index < 0) { | 98 | if (heap_index < 0) { |
| 99 | return ResultOutOfMemory; | 99 | return ResultOutOfMemory; |
| 100 | } | 100 | } |
| @@ -113,7 +113,7 @@ ResultCode MemoryManager::Allocate(KPageLinkedList& page_list, std::size_t num_p | |||
| 113 | 113 | ||
| 114 | // Keep allocating until we've allocated all our pages | 114 | // Keep allocating until we've allocated all our pages |
| 115 | for (s32 index{heap_index}; index >= 0 && num_pages > 0; index--) { | 115 | for (s32 index{heap_index}; index >= 0 && num_pages > 0; index--) { |
| 116 | const auto pages_per_alloc{PageHeap::GetBlockNumPages(index)}; | 116 | const auto pages_per_alloc{Memory::PageHeap::GetBlockNumPages(index)}; |
| 117 | 117 | ||
| 118 | while (num_pages >= pages_per_alloc) { | 118 | while (num_pages >= pages_per_alloc) { |
| 119 | // Allocate a block | 119 | // Allocate a block |
| @@ -149,8 +149,8 @@ ResultCode MemoryManager::Allocate(KPageLinkedList& page_list, std::size_t num_p | |||
| 149 | return RESULT_SUCCESS; | 149 | return RESULT_SUCCESS; |
| 150 | } | 150 | } |
| 151 | 151 | ||
| 152 | ResultCode MemoryManager::Free(KPageLinkedList& page_list, std::size_t num_pages, Pool pool, | 152 | ResultCode KMemoryManager::Free(KPageLinkedList& page_list, std::size_t num_pages, Pool pool, |
| 153 | Direction dir) { | 153 | Direction dir) { |
| 154 | // Early return if we're freeing no pages | 154 | // Early return if we're freeing no pages |
| 155 | if (!num_pages) { | 155 | if (!num_pages) { |
| 156 | return RESULT_SUCCESS; | 156 | return RESULT_SUCCESS; |
| @@ -173,4 +173,4 @@ ResultCode MemoryManager::Free(KPageLinkedList& page_list, std::size_t num_pages | |||
| 173 | return RESULT_SUCCESS; | 173 | return RESULT_SUCCESS; |
| 174 | } | 174 | } |
| 175 | 175 | ||
| 176 | } // namespace Kernel::Memory | 176 | } // namespace Kernel |
diff --git a/src/core/hle/kernel/memory/memory_manager.h b/src/core/hle/kernel/k_memory_manager.h index d090979bd..377f642d8 100644 --- a/src/core/hle/kernel/memory/memory_manager.h +++ b/src/core/hle/kernel/k_memory_manager.h | |||
| @@ -17,9 +17,9 @@ namespace Kernel { | |||
| 17 | class KPageLinkedList; | 17 | class KPageLinkedList; |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | namespace Kernel::Memory { | 20 | namespace Kernel { |
| 21 | 21 | ||
| 22 | class MemoryManager final : NonCopyable { | 22 | class KMemoryManager final : NonCopyable { |
| 23 | public: | 23 | public: |
| 24 | enum class Pool : u32 { | 24 | enum class Pool : u32 { |
| 25 | Application = 0, | 25 | Application = 0, |
| @@ -41,7 +41,7 @@ public: | |||
| 41 | Mask = (0xF << Shift), | 41 | Mask = (0xF << Shift), |
| 42 | }; | 42 | }; |
| 43 | 43 | ||
| 44 | MemoryManager() = default; | 44 | KMemoryManager() = default; |
| 45 | 45 | ||
| 46 | constexpr std::size_t GetSize(Pool pool) const { | 46 | constexpr std::size_t GetSize(Pool pool) const { |
| 47 | return managers[static_cast<std::size_t>(pool)].GetSize(); | 47 | return managers[static_cast<std::size_t>(pool)].GetSize(); |
| @@ -84,7 +84,7 @@ private: | |||
| 84 | using RefCount = u16; | 84 | using RefCount = u16; |
| 85 | 85 | ||
| 86 | private: | 86 | private: |
| 87 | PageHeap heap; | 87 | Memory::PageHeap heap; |
| 88 | Pool pool{}; | 88 | Pool pool{}; |
| 89 | 89 | ||
| 90 | public: | 90 | public: |
| @@ -118,4 +118,4 @@ private: | |||
| 118 | std::array<Impl, MaxManagerCount> managers; | 118 | std::array<Impl, MaxManagerCount> managers; |
| 119 | }; | 119 | }; |
| 120 | 120 | ||
| 121 | } // namespace Kernel::Memory | 121 | } // namespace Kernel |
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index eab73c46c..453695545 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp | |||
| @@ -28,13 +28,13 @@ | |||
| 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" | 30 | #include "core/hle/kernel/k_memory_layout.h" |
| 31 | #include "core/hle/kernel/k_memory_manager.h" | ||
| 31 | #include "core/hle/kernel/k_resource_limit.h" | 32 | #include "core/hle/kernel/k_resource_limit.h" |
| 32 | #include "core/hle/kernel/k_scheduler.h" | 33 | #include "core/hle/kernel/k_scheduler.h" |
| 33 | #include "core/hle/kernel/k_shared_memory.h" | 34 | #include "core/hle/kernel/k_shared_memory.h" |
| 34 | #include "core/hle/kernel/k_slab_heap.h" | 35 | #include "core/hle/kernel/k_slab_heap.h" |
| 35 | #include "core/hle/kernel/k_thread.h" | 36 | #include "core/hle/kernel/k_thread.h" |
| 36 | #include "core/hle/kernel/kernel.h" | 37 | #include "core/hle/kernel/kernel.h" |
| 37 | #include "core/hle/kernel/memory/memory_manager.h" | ||
| 38 | #include "core/hle/kernel/physical_core.h" | 38 | #include "core/hle/kernel/physical_core.h" |
| 39 | #include "core/hle/kernel/process.h" | 39 | #include "core/hle/kernel/process.h" |
| 40 | #include "core/hle/kernel/service_thread.h" | 40 | #include "core/hle/kernel/service_thread.h" |
| @@ -277,14 +277,14 @@ struct KernelCore::Impl { | |||
| 277 | constexpr PAddr time_addr{layout.System().StartAddress() + hid_size + font_size + irs_size}; | 277 | constexpr PAddr time_addr{layout.System().StartAddress() + hid_size + font_size + irs_size}; |
| 278 | 278 | ||
| 279 | // Initialize memory manager | 279 | // Initialize memory manager |
| 280 | memory_manager = std::make_unique<Memory::MemoryManager>(); | 280 | memory_manager = std::make_unique<KMemoryManager>(); |
| 281 | memory_manager->InitializeManager(Memory::MemoryManager::Pool::Application, | 281 | memory_manager->InitializeManager(KMemoryManager::Pool::Application, |
| 282 | layout.Application().StartAddress(), | 282 | layout.Application().StartAddress(), |
| 283 | layout.Application().EndAddress()); | 283 | layout.Application().EndAddress()); |
| 284 | memory_manager->InitializeManager(Memory::MemoryManager::Pool::Applet, | 284 | memory_manager->InitializeManager(KMemoryManager::Pool::Applet, |
| 285 | layout.Applet().StartAddress(), | 285 | layout.Applet().StartAddress(), |
| 286 | layout.Applet().EndAddress()); | 286 | layout.Applet().EndAddress()); |
| 287 | memory_manager->InitializeManager(Memory::MemoryManager::Pool::System, | 287 | memory_manager->InitializeManager(KMemoryManager::Pool::System, |
| 288 | layout.System().StartAddress(), | 288 | layout.System().StartAddress(), |
| 289 | layout.System().EndAddress()); | 289 | layout.System().EndAddress()); |
| 290 | 290 | ||
| @@ -348,7 +348,7 @@ struct KernelCore::Impl { | |||
| 348 | std::atomic<u32> next_host_thread_id{Core::Hardware::NUM_CPU_CORES}; | 348 | std::atomic<u32> next_host_thread_id{Core::Hardware::NUM_CPU_CORES}; |
| 349 | 349 | ||
| 350 | // Kernel memory management | 350 | // Kernel memory management |
| 351 | std::unique_ptr<Memory::MemoryManager> memory_manager; | 351 | std::unique_ptr<KMemoryManager> memory_manager; |
| 352 | std::unique_ptr<KSlabHeap<Page>> user_slab_heap_pages; | 352 | std::unique_ptr<KSlabHeap<Page>> user_slab_heap_pages; |
| 353 | 353 | ||
| 354 | // Shared memory for services | 354 | // Shared memory for services |
| @@ -573,11 +573,11 @@ KThread* KernelCore::GetCurrentEmuThread() const { | |||
| 573 | return impl->GetCurrentEmuThread(); | 573 | return impl->GetCurrentEmuThread(); |
| 574 | } | 574 | } |
| 575 | 575 | ||
| 576 | Memory::MemoryManager& KernelCore::MemoryManager() { | 576 | KMemoryManager& KernelCore::MemoryManager() { |
| 577 | return *impl->memory_manager; | 577 | return *impl->memory_manager; |
| 578 | } | 578 | } |
| 579 | 579 | ||
| 580 | const Memory::MemoryManager& KernelCore::MemoryManager() const { | 580 | const KMemoryManager& KernelCore::MemoryManager() const { |
| 581 | return *impl->memory_manager; | 581 | return *impl->memory_manager; |
| 582 | } | 582 | } |
| 583 | 583 | ||
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h index 498f94417..56906f2da 100644 --- a/src/core/hle/kernel/kernel.h +++ b/src/core/hle/kernel/kernel.h | |||
| @@ -27,22 +27,18 @@ struct EventType; | |||
| 27 | 27 | ||
| 28 | namespace Kernel { | 28 | namespace Kernel { |
| 29 | 29 | ||
| 30 | namespace Memory { | ||
| 31 | class MemoryManager; | ||
| 32 | |||
| 33 | } // namespace Memory | ||
| 34 | |||
| 35 | class ClientPort; | 30 | class ClientPort; |
| 36 | class GlobalSchedulerContext; | 31 | class GlobalSchedulerContext; |
| 37 | class HandleTable; | 32 | class HandleTable; |
| 38 | class PhysicalCore; | 33 | class KMemoryManager; |
| 39 | class Process; | ||
| 40 | class KResourceLimit; | 34 | class KResourceLimit; |
| 41 | class KScheduler; | 35 | class KScheduler; |
| 42 | class KSharedMemory; | 36 | class KSharedMemory; |
| 37 | class KThread; | ||
| 38 | class PhysicalCore; | ||
| 39 | class Process; | ||
| 43 | class ServiceThread; | 40 | class ServiceThread; |
| 44 | class Synchronization; | 41 | class Synchronization; |
| 45 | class KThread; | ||
| 46 | class TimeManager; | 42 | class TimeManager; |
| 47 | 43 | ||
| 48 | template <typename T> | 44 | template <typename T> |
| @@ -180,10 +176,10 @@ public: | |||
| 180 | void RegisterHostThread(); | 176 | void RegisterHostThread(); |
| 181 | 177 | ||
| 182 | /// Gets the virtual memory manager for the kernel. | 178 | /// Gets the virtual memory manager for the kernel. |
| 183 | Memory::MemoryManager& MemoryManager(); | 179 | KMemoryManager& MemoryManager(); |
| 184 | 180 | ||
| 185 | /// Gets the virtual memory manager for the kernel. | 181 | /// Gets the virtual memory manager for the kernel. |
| 186 | const Memory::MemoryManager& MemoryManager() const; | 182 | const KMemoryManager& MemoryManager() const; |
| 187 | 183 | ||
| 188 | /// Gets the slab heap allocated for user space pages. | 184 | /// Gets the slab heap allocated for user space pages. |
| 189 | KSlabHeap<Page>& GetUserSlabHeapPages(); | 185 | KSlabHeap<Page>& GetUserSlabHeapPages(); |
diff --git a/src/core/hle/kernel/memory/page_table.cpp b/src/core/hle/kernel/memory/page_table.cpp index c1efc23de..ef9d97413 100644 --- a/src/core/hle/kernel/memory/page_table.cpp +++ b/src/core/hle/kernel/memory/page_table.cpp | |||
| @@ -62,7 +62,7 @@ PageTable::PageTable(Core::System& system) : system{system} {} | |||
| 62 | 62 | ||
| 63 | ResultCode PageTable::InitializeForProcess(FileSys::ProgramAddressSpaceType as_type, | 63 | ResultCode PageTable::InitializeForProcess(FileSys::ProgramAddressSpaceType as_type, |
| 64 | bool enable_aslr, VAddr code_addr, std::size_t code_size, | 64 | bool enable_aslr, VAddr code_addr, std::size_t code_size, |
| 65 | Memory::MemoryManager::Pool pool) { | 65 | KMemoryManager::Pool pool) { |
| 66 | 66 | ||
| 67 | const auto GetSpaceStart = [this](KAddressSpaceInfo::Type type) { | 67 | const auto GetSpaceStart = [this](KAddressSpaceInfo::Type type) { |
| 68 | return KAddressSpaceInfo::GetAddressSpaceStart(address_space_width, type); | 68 | return KAddressSpaceInfo::GetAddressSpaceStart(address_space_width, type); |
diff --git a/src/core/hle/kernel/memory/page_table.h b/src/core/hle/kernel/memory/page_table.h index 736583b81..a9e850e01 100644 --- a/src/core/hle/kernel/memory/page_table.h +++ b/src/core/hle/kernel/memory/page_table.h | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | #include "common/page_table.h" | 11 | #include "common/page_table.h" |
| 12 | #include "core/file_sys/program_metadata.h" | 12 | #include "core/file_sys/program_metadata.h" |
| 13 | #include "core/hle/kernel/k_memory_block.h" | 13 | #include "core/hle/kernel/k_memory_block.h" |
| 14 | #include "core/hle/kernel/memory/memory_manager.h" | 14 | #include "core/hle/kernel/k_memory_manager.h" |
| 15 | #include "core/hle/result.h" | 15 | #include "core/hle/result.h" |
| 16 | 16 | ||
| 17 | namespace Core { | 17 | namespace Core { |
| @@ -30,7 +30,7 @@ public: | |||
| 30 | 30 | ||
| 31 | ResultCode InitializeForProcess(FileSys::ProgramAddressSpaceType as_type, bool enable_aslr, | 31 | ResultCode InitializeForProcess(FileSys::ProgramAddressSpaceType as_type, bool enable_aslr, |
| 32 | VAddr code_addr, std::size_t code_size, | 32 | VAddr code_addr, std::size_t code_size, |
| 33 | Memory::MemoryManager::Pool pool); | 33 | KMemoryManager::Pool pool); |
| 34 | ResultCode MapProcessCode(VAddr addr, std::size_t pages_count, KMemoryState state, | 34 | ResultCode MapProcessCode(VAddr addr, std::size_t pages_count, KMemoryState state, |
| 35 | KMemoryPermission perm); | 35 | KMemoryPermission perm); |
| 36 | ResultCode MapProcessCodeMemory(VAddr dst_addr, VAddr src_addr, std::size_t size); | 36 | ResultCode MapProcessCodeMemory(VAddr dst_addr, VAddr src_addr, std::size_t size); |
| @@ -271,7 +271,7 @@ private: | |||
| 271 | bool is_kernel{}; | 271 | bool is_kernel{}; |
| 272 | bool is_aslr_enabled{}; | 272 | bool is_aslr_enabled{}; |
| 273 | 273 | ||
| 274 | MemoryManager::Pool memory_pool{MemoryManager::Pool::Application}; | 274 | KMemoryManager::Pool memory_pool{KMemoryManager::Pool::Application}; |
| 275 | 275 | ||
| 276 | Common::PageTable page_table_impl; | 276 | Common::PageTable page_table_impl; |
| 277 | 277 | ||
diff --git a/src/core/hle/kernel/process.cpp b/src/core/hle/kernel/process.cpp index f83977a8e..e0359eb3c 100644 --- a/src/core/hle/kernel/process.cpp +++ b/src/core/hle/kernel/process.cpp | |||
| @@ -274,7 +274,7 @@ ResultCode Process::LoadFromMetadata(const FileSys::ProgramMetadata& metadata, | |||
| 274 | // Set initial resource limits | 274 | // Set initial resource limits |
| 275 | resource_limit->SetLimitValue( | 275 | resource_limit->SetLimitValue( |
| 276 | LimitableResource::PhysicalMemory, | 276 | LimitableResource::PhysicalMemory, |
| 277 | kernel.MemoryManager().GetSize(Memory::MemoryManager::Pool::Application)); | 277 | kernel.MemoryManager().GetSize(KMemoryManager::Pool::Application)); |
| 278 | KScopedResourceReservation memory_reservation(resource_limit, LimitableResource::PhysicalMemory, | 278 | KScopedResourceReservation memory_reservation(resource_limit, LimitableResource::PhysicalMemory, |
| 279 | code_size + system_resource_size); | 279 | code_size + system_resource_size); |
| 280 | if (!memory_reservation.Succeeded()) { | 280 | if (!memory_reservation.Succeeded()) { |
| @@ -285,7 +285,7 @@ ResultCode Process::LoadFromMetadata(const FileSys::ProgramMetadata& metadata, | |||
| 285 | // Initialize proces address space | 285 | // Initialize proces address space |
| 286 | if (const ResultCode result{ | 286 | if (const ResultCode result{ |
| 287 | page_table->InitializeForProcess(metadata.GetAddressSpaceType(), false, 0x8000000, | 287 | page_table->InitializeForProcess(metadata.GetAddressSpaceType(), false, 0x8000000, |
| 288 | code_size, Memory::MemoryManager::Pool::Application)}; | 288 | code_size, KMemoryManager::Pool::Application)}; |
| 289 | result.IsError()) { | 289 | result.IsError()) { |
| 290 | return result; | 290 | return result; |
| 291 | } | 291 | } |
| @@ -323,6 +323,11 @@ ResultCode Process::LoadFromMetadata(const FileSys::ProgramMetadata& metadata, | |||
| 323 | UNREACHABLE(); | 323 | UNREACHABLE(); |
| 324 | } | 324 | } |
| 325 | 325 | ||
| 326 | // Set initial resource limits | ||
| 327 | resource_limit->SetLimitValue( | ||
| 328 | LimitableResource::PhysicalMemory, | ||
| 329 | kernel.MemoryManager().GetSize(KMemoryManager::Pool::Application)); | ||
| 330 | |||
| 326 | resource_limit->SetLimitValue(LimitableResource::Threads, 608); | 331 | resource_limit->SetLimitValue(LimitableResource::Threads, 608); |
| 327 | resource_limit->SetLimitValue(LimitableResource::Events, 700); | 332 | resource_limit->SetLimitValue(LimitableResource::Events, 700); |
| 328 | resource_limit->SetLimitValue(LimitableResource::TransferMemory, 128); | 333 | resource_limit->SetLimitValue(LimitableResource::TransferMemory, 128); |