summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2018-07-25 22:37:00 +0200
committerLioncash <mathew1800@gmail.com>2018-07-25 22:57:16 +0200
commitc664f8a2573426213c6f4c2f8fa40ad7e0d8443e (patch)
tree28fd6c402290199f38d49af3db66409e3a33098f
parentMerge pull request #801 from lioncash/time (diff)
downloadyuzu-c664f8a2573426213c6f4c2f8fa40ad7e0d8443e.tar
yuzu-c664f8a2573426213c6f4c2f8fa40ad7e0d8443e.tar.gz
yuzu-c664f8a2573426213c6f4c2f8fa40ad7e0d8443e.tar.bz2
yuzu-c664f8a2573426213c6f4c2f8fa40ad7e0d8443e.tar.lz
yuzu-c664f8a2573426213c6f4c2f8fa40ad7e0d8443e.tar.xz
yuzu-c664f8a2573426213c6f4c2f8fa40ad7e0d8443e.tar.zst
yuzu-c664f8a2573426213c6f4c2f8fa40ad7e0d8443e.zip
-rw-r--r--src/core/CMakeLists.txt2
-rw-r--r--src/core/hle/service/pm/pm.cpp70
-rw-r--r--src/core/hle/service/pm/pm.h16
-rw-r--r--src/core/hle/service/service.cpp2
4 files changed, 90 insertions, 0 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 833605475..8f40458fd 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -201,6 +201,8 @@ add_library(core STATIC
hle/service/pctl/module.h
hle/service/pctl/pctl.cpp
hle/service/pctl/pctl.h
+ hle/service/pm/pm.cpp
+ hle/service/pm/pm.h
hle/service/prepo/prepo.cpp
hle/service/prepo/prepo.h
hle/service/service.cpp
diff --git a/src/core/hle/service/pm/pm.cpp b/src/core/hle/service/pm/pm.cpp
new file mode 100644
index 000000000..e20a25689
--- /dev/null
+++ b/src/core/hle/service/pm/pm.cpp
@@ -0,0 +1,70 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/service/service.h"
+
+namespace Service::PM {
+
+class BootMode final : public ServiceFramework<BootMode> {
+public:
+ explicit BootMode() : ServiceFramework{"pm:bm"} {
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "GetBootMode"},
+ {1, nullptr, "SetMaintenanceBoot"},
+ };
+ RegisterHandlers(functions);
+ }
+};
+
+class DebugMonitor final : public ServiceFramework<DebugMonitor> {
+public:
+ explicit DebugMonitor() : ServiceFramework{"pm:dmnt"} {
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "IsDebugMode"},
+ {1, nullptr, "GetDebugProcesses"},
+ {2, nullptr, "StartDebugProcess"},
+ {3, nullptr, "GetTitlePid"},
+ {4, nullptr, "EnableDebugForTitleId"},
+ {5, nullptr, "GetApplicationPid"},
+ {6, nullptr, "EnableDebugForApplication"},
+ };
+ RegisterHandlers(functions);
+ }
+};
+
+class Info final : public ServiceFramework<Info> {
+public:
+ explicit Info() : ServiceFramework{"pm:info"} {
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "GetTitleId"},
+ };
+ RegisterHandlers(functions);
+ }
+};
+
+class Shell final : public ServiceFramework<Shell> {
+public:
+ explicit Shell() : ServiceFramework{"pm:shell"} {
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "LaunchProcess"},
+ {1, nullptr, "TerminateProcessByPid"},
+ {2, nullptr, "TerminateProcessByTitleId"},
+ {3, nullptr, "GetProcessEventWaiter"},
+ {4, nullptr, "GetProcessEventType"},
+ {5, nullptr, "NotifyBootFinished"},
+ {6, nullptr, "GetApplicationPid"},
+ {7, nullptr, "BoostSystemMemoryResourceLimit"},
+ };
+ RegisterHandlers(functions);
+ }
+};
+
+void InstallInterfaces(SM::ServiceManager& sm) {
+ std::make_shared<BootMode>()->InstallAsService(sm);
+ std::make_shared<DebugMonitor>()->InstallAsService(sm);
+ std::make_shared<Info>()->InstallAsService(sm);
+ std::make_shared<Shell>()->InstallAsService(sm);
+}
+
+} // namespace Service::PM
diff --git a/src/core/hle/service/pm/pm.h b/src/core/hle/service/pm/pm.h
new file mode 100644
index 000000000..9fc19fed6
--- /dev/null
+++ b/src/core/hle/service/pm/pm.h
@@ -0,0 +1,16 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+namespace Service::SM {
+class ServiceManager;
+}
+
+namespace Service::PM {
+
+/// Registers all PM services with the specified service manager.
+void InstallInterfaces(SM::ServiceManager& service_manager);
+
+} // namespace Service::PM
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index 0d036bfaa..e3ff5f705 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -32,6 +32,7 @@
#include "core/hle/service/ns/ns.h"
#include "core/hle/service/nvdrv/nvdrv.h"
#include "core/hle/service/pctl/pctl.h"
+#include "core/hle/service/pm/pm.h"
#include "core/hle/service/prepo/prepo.h"
#include "core/hle/service/service.h"
#include "core/hle/service/set/settings.h"
@@ -199,6 +200,7 @@ void Init(std::shared_ptr<SM::ServiceManager>& sm) {
Nvidia::InstallInterfaces(*sm);
PCTL::InstallInterfaces(*sm);
PlayReport::InstallInterfaces(*sm);
+ PM::InstallInterfaces(*sm);
Sockets::InstallInterfaces(*sm);
SPL::InstallInterfaces(*sm);
SSL::InstallInterfaces(*sm);