aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/svc.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-01-01 16:01:06 -0500
committerbunnei <bunneidev@gmail.com>2018-01-01 16:01:06 -0500
commit72f671fd7a72d75d6fd697673bee1be18a6dda8b (patch)
treef03e2b4f75df1f50cbbbe29a70420d32b7467e90 /src/core/hle/svc.cpp
parente9710a2cf7ef7b9d98f9d8a7ed6f8ac5a04921ab (diff)
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 fa6fd9ab1b..6ec151d946 100644
--- a/src/core/hle/svc.cpp
+++ b/src/core/hle/svc.cpp
@@ -194,16 +194,38 @@ static void OutputDebugString(VAddr address, s32 len) {
LOG_DEBUG(Debug_Emulated, "%.*s", len, string.data());
}
+/// Gets system/memory information for the current process
static ResultCode GetInfo(u64* result, u64 info_id, u64 handle, u64 info_sub_id) {
- LOG_TRACE(Kernel_SVC, "called, info_id=0x%X, info_sub_id=0x%X, handle=0x%08X", info_id, info_sub_id, handle);
+ LOG_TRACE(Kernel_SVC, "called info_id=0x%X, info_sub_id=0x%X, handle=0x%08X", info_id,
+ info_sub_id, handle);
- if (!handle) {
- switch (info_id) {
- case 0xB:
- *result = 0; // Used for PRNG seed
- return RESULT_SUCCESS;
- }
+ auto& vm_manager = Kernel::g_current_process->vm_manager;
+ switch (static_cast<GetInfoType>(info_id)) {
+ case GetInfoType::TotalMemoryUsage:
+ *result = vm_manager.GetTotalMemoryUsage();
+ break;
+ case GetInfoType::TotalHeapUsage:
+ *result = vm_manager.GetTotalHeapUsage();
+ break;
+ case GetInfoType::RandomEntropy:
+ *result = 0;
+ break;
+ case GetInfoType::AddressSpaceBaseAddr:
+ *result = vm_manager.GetAddressSpaceBaseAddr();
+ break;
+ case GetInfoType::AddressSpaceSize:
+ *result = vm_manager.GetAddressSpaceSize();
+ break;
+ case GetInfoType::NewMapRegionBaseAddr:
+ *result = vm_manager.GetNewMapRegionBaseAddr();
+ break;
+ case GetInfoType::NewMapRegionSize:
+ *result = vm_manager.GetNewMapRegionSize();
+ break;
+ default:
+ UNIMPLEMENTED();
}
+
return RESULT_SUCCESS;
}