diff options
| author | bunnei <bunneidev@gmail.com> | 2018-07-25 19:01:28 -0700 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-07-25 19:01:28 -0700 | 
| commit | 851089b4824d4d25cdc9f242af11fdca74c148fe (patch) | |
| tree | f426baa3eedd15a1572884584ec18ba14b9a88a7 /src/core/hle/service | |
| parent | d245610939219a3631a9a1850ffd8a504ce7d9d8 (diff) | |
| parent | c664f8a2573426213c6f4c2f8fa40ad7e0d8443e (diff) | |
Merge pull request #822 from lioncash/pm
service: Add pm services
Diffstat (limited to 'src/core/hle/service')
| -rw-r--r-- | src/core/hle/service/pm/pm.cpp | 70 | ||||
| -rw-r--r-- | src/core/hle/service/pm/pm.h | 16 | ||||
| -rw-r--r-- | src/core/hle/service/service.cpp | 2 | 
3 files changed, 88 insertions, 0 deletions
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 b70d0d517..4daf13fa3 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp @@ -33,6 +33,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" @@ -201,6 +202,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);  | 
