summaryrefslogtreecommitdiff
path: root/src/core/hle/svc.cpp
diff options
context:
space:
mode:
authorGravatar bunnei2018-01-01 16:01:06 -0500
committerGravatar bunnei2018-01-01 16:01:06 -0500
commit72f671fd7a72d75d6fd697673bee1be18a6dda8b (patch)
treef03e2b4f75df1f50cbbbe29a70420d32b7467e90 /src/core/hle/svc.cpp
parentvm_manager: Stub out a bunch of interfaces used by svcGetInfo. (diff)
downloadyuzu-72f671fd7a72d75d6fd697673bee1be18a6dda8b.tar.gz
yuzu-72f671fd7a72d75d6fd697673bee1be18a6dda8b.tar.xz
yuzu-72f671fd7a72d75d6fd697673bee1be18a6dda8b.zip
svc: Improve svcGetInfo.
Diffstat (limited to 'src/core/hle/svc.cpp')
-rw-r--r--src/core/hle/svc.cpp36
1 files changed, 29 insertions, 7 deletions
diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp
index fa6fd9ab1..6ec151d94 100644
--- a/src/core/hle/svc.cpp
+++ b/src/core/hle/svc.cpp
@@ -194,16 +194,38 @@ static void OutputDebugString(VAddr address, s32 len) {
194 LOG_DEBUG(Debug_Emulated, "%.*s", len, string.data()); 194 LOG_DEBUG(Debug_Emulated, "%.*s", len, string.data());
195} 195}
196 196
197/// Gets system/memory information for the current process
197static ResultCode GetInfo(u64* result, u64 info_id, u64 handle, u64 info_sub_id) { 198static ResultCode GetInfo(u64* result, u64 info_id, u64 handle, u64 info_sub_id) {
198 LOG_TRACE(Kernel_SVC, "called, info_id=0x%X, info_sub_id=0x%X, handle=0x%08X", info_id, info_sub_id, handle); 199 LOG_TRACE(Kernel_SVC, "called info_id=0x%X, info_sub_id=0x%X, handle=0x%08X", info_id,
200 info_sub_id, handle);
199 201
200 if (!handle) { 202 auto& vm_manager = Kernel::g_current_process->vm_manager;
201 switch (info_id) { 203 switch (static_cast<GetInfoType>(info_id)) {
202 case 0xB: 204 case GetInfoType::TotalMemoryUsage:
203 *result = 0; // Used for PRNG seed 205 *result = vm_manager.GetTotalMemoryUsage();
204 return RESULT_SUCCESS; 206 break;
205 } 207 case GetInfoType::TotalHeapUsage:
208 *result = vm_manager.GetTotalHeapUsage();
209 break;
210 case GetInfoType::RandomEntropy:
211 *result = 0;
212 break;
213 case GetInfoType::AddressSpaceBaseAddr:
214 *result = vm_manager.GetAddressSpaceBaseAddr();
215 break;
216 case GetInfoType::AddressSpaceSize:
217 *result = vm_manager.GetAddressSpaceSize();
218 break;
219 case GetInfoType::NewMapRegionBaseAddr:
220 *result = vm_manager.GetNewMapRegionBaseAddr();
221 break;
222 case GetInfoType::NewMapRegionSize:
223 *result = vm_manager.GetNewMapRegionSize();
224 break;
225 default:
226 UNIMPLEMENTED();
206 } 227 }
228
207 return RESULT_SUCCESS; 229 return RESULT_SUCCESS;
208} 230}
209 231