diff options
author | bunnei <bunneidev@gmail.com> | 2018-10-14 20:37:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-14 20:37:58 +0200 |
commit | 2f8ca32020d2b32abfcb96d433ca79c4974e15be (patch) | |
tree | 8a63f146f9b1a4f647900866f84142c08784611b /src/core/hle/kernel/svc.cpp | |
parent | Merge pull request #1495 from ogniK5377/break-stop (diff) | |
parent | svc: Implement svcGetProcessInfo (diff) | |
download | yuzu-2f8ca32020d2b32abfcb96d433ca79c4974e15be.tar yuzu-2f8ca32020d2b32abfcb96d433ca79c4974e15be.tar.gz yuzu-2f8ca32020d2b32abfcb96d433ca79c4974e15be.tar.bz2 yuzu-2f8ca32020d2b32abfcb96d433ca79c4974e15be.tar.lz yuzu-2f8ca32020d2b32abfcb96d433ca79c4974e15be.tar.xz yuzu-2f8ca32020d2b32abfcb96d433ca79c4974e15be.tar.zst yuzu-2f8ca32020d2b32abfcb96d433ca79c4974e15be.zip |
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
-rw-r--r-- | src/core/hle/kernel/svc.cpp | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 198865fd0..7a053da1e 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp @@ -1098,6 +1098,29 @@ static ResultCode ClearEvent(Handle handle) { return RESULT_SUCCESS; } +static ResultCode GetProcessInfo(u64* out, Handle process_handle, u32 type) { + LOG_DEBUG(Kernel_SVC, "called, handle=0x{:08X}, type=0x{:X}", process_handle, type); + + // This function currently only allows retrieving a process' status. + enum class InfoType { + Status, + }; + + const auto& kernel = Core::System::GetInstance().Kernel(); + const auto process = kernel.HandleTable().Get<Process>(process_handle); + if (!process) { + return ERR_INVALID_HANDLE; + } + + const auto info_type = static_cast<InfoType>(type); + if (info_type != InfoType::Status) { + return ERR_INVALID_ENUM_VALUE; + } + + *out = static_cast<u64>(process->GetStatus()); + return RESULT_SUCCESS; +} + namespace { struct FunctionDef { using Func = void(); @@ -1233,7 +1256,7 @@ static const FunctionDef SVC_Table[] = { {0x79, nullptr, "CreateProcess"}, {0x7A, nullptr, "StartProcess"}, {0x7B, nullptr, "TerminateProcess"}, - {0x7C, nullptr, "GetProcessInfo"}, + {0x7C, SvcWrap<GetProcessInfo>, "GetProcessInfo"}, {0x7D, nullptr, "CreateResourceLimit"}, {0x7E, nullptr, "SetResourceLimitLimitValue"}, {0x7F, nullptr, "CallSecureMonitor"}, |