diff options
| author | 2018-12-10 10:09:50 -0500 | |
|---|---|---|
| committer | 2018-12-10 10:09:50 -0500 | |
| commit | 74242a8fb459c656ba26308bc5d08da3fd5db1a1 (patch) | |
| tree | 492582574dc559b463aa51581017c4cf1d8cef0d /src/core/hle/kernel/svc.cpp | |
| parent | Merge pull request #1862 from marcosvitali/tlds (diff) | |
| parent | memory: Convert ASSERT into a DEBUG_ASSERT within GetPointerFromVMA() (diff) | |
| download | yuzu-74242a8fb459c656ba26308bc5d08da3fd5db1a1.tar.gz yuzu-74242a8fb459c656ba26308bc5d08da3fd5db1a1.tar.xz yuzu-74242a8fb459c656ba26308bc5d08da3fd5db1a1.zip | |
Merge pull request #1876 from lioncash/vma
vm_manager: Make vma_map private
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
| -rw-r--r-- | src/core/hle/kernel/svc.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 84df2040e..f43c7201c 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp | |||
| @@ -239,7 +239,7 @@ static ResultCode SetMemoryPermission(VAddr addr, u64 size, u32 prot) { | |||
| 239 | } | 239 | } |
| 240 | 240 | ||
| 241 | const VMManager::VMAHandle iter = vm_manager.FindVMA(addr); | 241 | const VMManager::VMAHandle iter = vm_manager.FindVMA(addr); |
| 242 | if (iter == vm_manager.vma_map.end()) { | 242 | if (!vm_manager.IsValidHandle(iter)) { |
| 243 | LOG_ERROR(Kernel_SVC, "Unable to find VMA for address=0x{:016X}", addr); | 243 | LOG_ERROR(Kernel_SVC, "Unable to find VMA for address=0x{:016X}", addr); |
| 244 | return ERR_INVALID_ADDRESS_STATE; | 244 | return ERR_INVALID_ADDRESS_STATE; |
| 245 | } | 245 | } |
| @@ -1077,19 +1077,23 @@ static ResultCode QueryProcessMemory(MemoryInfo* memory_info, PageInfo* /*page_i | |||
| 1077 | process_handle); | 1077 | process_handle); |
| 1078 | return ERR_INVALID_HANDLE; | 1078 | return ERR_INVALID_HANDLE; |
| 1079 | } | 1079 | } |
| 1080 | auto vma = process->VMManager().FindVMA(addr); | 1080 | |
| 1081 | const auto& vm_manager = process->VMManager(); | ||
| 1082 | const auto vma = vm_manager.FindVMA(addr); | ||
| 1083 | |||
| 1081 | memory_info->attributes = 0; | 1084 | memory_info->attributes = 0; |
| 1082 | if (vma == process->VMManager().vma_map.end()) { | 1085 | if (vm_manager.IsValidHandle(vma)) { |
| 1083 | memory_info->base_address = 0; | ||
| 1084 | memory_info->permission = static_cast<u32>(VMAPermission::None); | ||
| 1085 | memory_info->size = 0; | ||
| 1086 | memory_info->type = static_cast<u32>(MemoryState::Unmapped); | ||
| 1087 | } else { | ||
| 1088 | memory_info->base_address = vma->second.base; | 1086 | memory_info->base_address = vma->second.base; |
| 1089 | memory_info->permission = static_cast<u32>(vma->second.permissions); | 1087 | memory_info->permission = static_cast<u32>(vma->second.permissions); |
| 1090 | memory_info->size = vma->second.size; | 1088 | memory_info->size = vma->second.size; |
| 1091 | memory_info->type = static_cast<u32>(vma->second.meminfo_state); | 1089 | memory_info->type = static_cast<u32>(vma->second.meminfo_state); |
| 1090 | } else { | ||
| 1091 | memory_info->base_address = 0; | ||
| 1092 | memory_info->permission = static_cast<u32>(VMAPermission::None); | ||
| 1093 | memory_info->size = 0; | ||
| 1094 | memory_info->type = static_cast<u32>(MemoryState::Unmapped); | ||
| 1092 | } | 1095 | } |
| 1096 | |||
| 1093 | return RESULT_SUCCESS; | 1097 | return RESULT_SUCCESS; |
| 1094 | } | 1098 | } |
| 1095 | 1099 | ||