diff options
author | bunnei <bunneidev@gmail.com> | 2021-02-19 02:55:46 +0100 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2021-03-21 22:45:02 +0100 |
commit | a439867f2c09f536e01ffdd4da9c01604cb9df45 (patch) | |
tree | 06e421fed35157a81fd973567b095db8d024cac6 /src/core/hle/kernel/k_memory_manager.cpp | |
parent | hle: kernel: KMemoryManager: Add aliases. (diff) | |
download | yuzu-a439867f2c09f536e01ffdd4da9c01604cb9df45.tar yuzu-a439867f2c09f536e01ffdd4da9c01604cb9df45.tar.gz yuzu-a439867f2c09f536e01ffdd4da9c01604cb9df45.tar.bz2 yuzu-a439867f2c09f536e01ffdd4da9c01604cb9df45.tar.lz yuzu-a439867f2c09f536e01ffdd4da9c01604cb9df45.tar.xz yuzu-a439867f2c09f536e01ffdd4da9c01604cb9df45.tar.zst yuzu-a439867f2c09f536e01ffdd4da9c01604cb9df45.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/kernel/k_memory_manager.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/core/hle/kernel/k_memory_manager.cpp b/src/core/hle/kernel/k_memory_manager.cpp index 9027602bf..aa71697b2 100644 --- a/src/core/hle/kernel/k_memory_manager.cpp +++ b/src/core/hle/kernel/k_memory_manager.cpp @@ -173,4 +173,16 @@ ResultCode KMemoryManager::Free(KPageLinkedList& page_list, std::size_t num_page return RESULT_SUCCESS; } +std::size_t KMemoryManager::Impl::CalculateManagementOverheadSize(std::size_t region_size) { + const std::size_t ref_count_size = (region_size / PageSize) * sizeof(u16); + const std::size_t optimize_map_size = + (Common::AlignUp((region_size / PageSize), Common::BitSize<u64>()) / + Common::BitSize<u64>()) * + sizeof(u64); + const std::size_t manager_meta_size = + Common::AlignUp(optimize_map_size + ref_count_size, PageSize); + const std::size_t page_heap_size = KPageHeap::CalculateManagementOverheadSize(region_size); + return manager_meta_size + page_heap_size; +} + } // namespace Kernel |