summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/k_memory_manager.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2021-02-19 02:55:46 +0100
committerbunnei <bunneidev@gmail.com>2021-03-21 22:45:02 +0100
commita439867f2c09f536e01ffdd4da9c01604cb9df45 (patch)
tree06e421fed35157a81fd973567b095db8d024cac6 /src/core/hle/kernel/k_memory_manager.cpp
parenthle: kernel: KMemoryManager: Add aliases. (diff)
downloadyuzu-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.cpp12
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