summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/svc.cpp
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2018-10-13 20:31:46 +0200
committerLioncash <mathew1800@gmail.com>2018-10-13 23:00:43 +0200
commit1c7a7ed79ba55c5fdefd729b12d6b8aa86a0779b (patch)
tree642d98d32c3ebf52da69fbc3b47e2f41dfc03a2c /src/core/hle/kernel/svc.cpp
parentMerge pull request #1409 from DarkLordZach/key-derivation (diff)
downloadyuzu-1c7a7ed79ba55c5fdefd729b12d6b8aa86a0779b.tar
yuzu-1c7a7ed79ba55c5fdefd729b12d6b8aa86a0779b.tar.gz
yuzu-1c7a7ed79ba55c5fdefd729b12d6b8aa86a0779b.tar.bz2
yuzu-1c7a7ed79ba55c5fdefd729b12d6b8aa86a0779b.tar.lz
yuzu-1c7a7ed79ba55c5fdefd729b12d6b8aa86a0779b.tar.xz
yuzu-1c7a7ed79ba55c5fdefd729b12d6b8aa86a0779b.tar.zst
yuzu-1c7a7ed79ba55c5fdefd729b12d6b8aa86a0779b.zip
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
-rw-r--r--src/core/hle/kernel/svc.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index e406df829..d9d919e18 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -1092,6 +1092,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();
@@ -1227,7 +1250,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"},