diff options
author | bunnei <bunneidev@gmail.com> | 2018-08-07 20:57:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-07 20:57:12 +0200 |
commit | 2d57cbaec144c1ef9b142863aa7c0eda73ac783a (patch) | |
tree | 20daeb9d217732e20f951941b2de2dcc8d55691c | |
parent | Merge pull request #950 from lioncash/hotkey (diff) | |
parent | service/apm: Add the apm:sys service (diff) | |
download | yuzu-2d57cbaec144c1ef9b142863aa7c0eda73ac783a.tar yuzu-2d57cbaec144c1ef9b142863aa7c0eda73ac783a.tar.gz yuzu-2d57cbaec144c1ef9b142863aa7c0eda73ac783a.tar.bz2 yuzu-2d57cbaec144c1ef9b142863aa7c0eda73ac783a.tar.lz yuzu-2d57cbaec144c1ef9b142863aa7c0eda73ac783a.tar.xz yuzu-2d57cbaec144c1ef9b142863aa7c0eda73ac783a.tar.zst yuzu-2d57cbaec144c1ef9b142863aa7c0eda73ac783a.zip |
-rw-r--r-- | src/core/hle/service/apm/apm.cpp | 1 | ||||
-rw-r--r-- | src/core/hle/service/apm/interface.cpp | 25 | ||||
-rw-r--r-- | src/core/hle/service/apm/interface.h | 8 |
3 files changed, 34 insertions, 0 deletions
diff --git a/src/core/hle/service/apm/apm.cpp b/src/core/hle/service/apm/apm.cpp index 7a185c6c8..4109cb7f7 100644 --- a/src/core/hle/service/apm/apm.cpp +++ b/src/core/hle/service/apm/apm.cpp @@ -13,6 +13,7 @@ void InstallInterfaces(SM::ServiceManager& service_manager) { auto module_ = std::make_shared<Module>(); std::make_shared<APM>(module_, "apm")->InstallAsService(service_manager); std::make_shared<APM>(module_, "apm:p")->InstallAsService(service_manager); + std::make_shared<APM_Sys>()->InstallAsService(service_manager); } } // namespace Service::APM diff --git a/src/core/hle/service/apm/interface.cpp b/src/core/hle/service/apm/interface.cpp index ce943d829..4cd8132f5 100644 --- a/src/core/hle/service/apm/interface.cpp +++ b/src/core/hle/service/apm/interface.cpp @@ -74,6 +74,31 @@ void APM::OpenSession(Kernel::HLERequestContext& ctx) { IPC::ResponseBuilder rb{ctx, 2, 0, 1}; rb.Push(RESULT_SUCCESS); rb.PushIpcInterface<ISession>(); + + LOG_DEBUG(Service_APM, "called"); +} + +APM_Sys::APM_Sys() : ServiceFramework{"apm:sys"} { + // clang-format off + static const FunctionInfo functions[] = { + {0, nullptr, "RequestPerformanceMode"}, + {1, &APM_Sys::GetPerformanceEvent, "GetPerformanceEvent"}, + {2, nullptr, "GetThrottlingState"}, + {3, nullptr, "GetLastThrottlingState"}, + {4, nullptr, "ClearLastThrottlingState"}, + {5, nullptr, "LoadAndApplySettings"}, + }; + // clang-format on + + RegisterHandlers(functions); +} + +void APM_Sys::GetPerformanceEvent(Kernel::HLERequestContext& ctx) { + IPC::ResponseBuilder rb{ctx, 2, 0, 1}; + rb.Push(RESULT_SUCCESS); + rb.PushIpcInterface<ISession>(); + + LOG_DEBUG(Service_APM, "called"); } } // namespace Service::APM diff --git a/src/core/hle/service/apm/interface.h b/src/core/hle/service/apm/interface.h index fa68c7d93..d14264ad7 100644 --- a/src/core/hle/service/apm/interface.h +++ b/src/core/hle/service/apm/interface.h @@ -19,4 +19,12 @@ private: std::shared_ptr<Module> apm; }; +class APM_Sys final : public ServiceFramework<APM_Sys> { +public: + explicit APM_Sys(); + +private: + void GetPerformanceEvent(Kernel::HLERequestContext& ctx); +}; + } // namespace Service::APM |