diff options
| author | Lioncash <mathew1800@gmail.com> | 2018-12-12 11:34:01 -0500 |
|---|---|---|
| committer | Lioncash <mathew1800@gmail.com> | 2018-12-12 15:07:30 -0500 |
| commit | a8cc03502b41b44150af71535d2b662a7ee3390c (patch) | |
| tree | 71084e1b71b5fd705143bbceb44c46e49f63cac2 /src/core/hle/kernel/vm_manager.cpp | |
| parent | c02b8c895b49b511a4316ee5e7bf1ab9a081869b (diff) | |
vm_manager: Migrate memory querying to the VMManager interface
Gets rid of the need to directly access the managed VMAs outside of the
memory manager itself just for querying memory.
Diffstat (limited to 'src/core/hle/kernel/vm_manager.cpp')
| -rw-r--r-- | src/core/hle/kernel/vm_manager.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/core/hle/kernel/vm_manager.cpp b/src/core/hle/kernel/vm_manager.cpp index e0f204b0b..21bcee192 100644 --- a/src/core/hle/kernel/vm_manager.cpp +++ b/src/core/hle/kernel/vm_manager.cpp @@ -302,6 +302,25 @@ ResultCode VMManager::HeapFree(VAddr target, u64 size) { return RESULT_SUCCESS; } +MemoryInfo VMManager::QueryMemory(VAddr address) const { + const auto vma = FindVMA(address); + MemoryInfo memory_info{}; + + if (IsValidHandle(vma)) { + memory_info.base_address = vma->second.base; + memory_info.permission = static_cast<u32>(vma->second.permissions); + memory_info.size = vma->second.size; + memory_info.state = ToSvcMemoryState(vma->second.meminfo_state); + } else { + memory_info.base_address = 0; + memory_info.permission = static_cast<u32>(VMAPermission::None); + memory_info.size = 0; + memory_info.state = static_cast<u32>(MemoryState::Unmapped); + } + + return memory_info; +} + ResultCode VMManager::MirrorMemory(VAddr dst_addr, VAddr src_addr, u64 size, MemoryState state) { const auto vma = FindVMA(src_addr); |
