summaryrefslogtreecommitdiff
path: root/src/core/hle/service/spl
diff options
context:
space:
mode:
authorGravatar Liam2023-02-18 16:26:48 -0500
committerGravatar Liam2023-02-21 12:19:25 -0500
commita9369726147c7499e0016e183d5d56a7b44efe4b (patch)
treec1d1b4a9fdafd92863c0922b05d72c14de83ffa7 /src/core/hle/service/spl
parentcore: defer cpu shutdown (diff)
downloadyuzu-a9369726147c7499e0016e183d5d56a7b44efe4b.tar.gz
yuzu-a9369726147c7499e0016e183d5d56a7b44efe4b.tar.xz
yuzu-a9369726147c7499e0016e183d5d56a7b44efe4b.zip
service: refactor server architecture
Converts services to have their own processes
Diffstat (limited to 'src/core/hle/service/spl')
-rw-r--r--src/core/hle/service/spl/spl_module.cpp20
-rw-r--r--src/core/hle/service/spl/spl_module.h3
2 files changed, 13 insertions, 10 deletions
diff --git a/src/core/hle/service/spl/spl_module.cpp b/src/core/hle/service/spl/spl_module.cpp
index 64eae1ebf..31679e1bb 100644
--- a/src/core/hle/service/spl/spl_module.cpp
+++ b/src/core/hle/service/spl/spl_module.cpp
@@ -9,6 +9,7 @@
9#include "common/settings.h" 9#include "common/settings.h"
10#include "core/hle/api_version.h" 10#include "core/hle/api_version.h"
11#include "core/hle/ipc_helpers.h" 11#include "core/hle/ipc_helpers.h"
12#include "core/hle/service/server_manager.h"
12#include "core/hle/service/spl/csrng.h" 13#include "core/hle/service/spl/csrng.h"
13#include "core/hle/service/spl/spl.h" 14#include "core/hle/service/spl/spl.h"
14#include "core/hle/service/spl/spl_module.h" 15#include "core/hle/service/spl/spl_module.h"
@@ -158,15 +159,18 @@ ResultVal<u64> Module::Interface::GetConfigImpl(ConfigItem config_item) const {
158 } 159 }
159} 160}
160 161
161void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { 162void LoopProcess(Core::System& system) {
163 auto server_manager = std::make_unique<ServerManager>(system);
162 auto module = std::make_shared<Module>(); 164 auto module = std::make_shared<Module>();
163 std::make_shared<CSRNG>(system, module)->InstallAsService(service_manager); 165
164 std::make_shared<SPL>(system, module)->InstallAsService(service_manager); 166 server_manager->RegisterNamedService("csrng", std::make_shared<CSRNG>(system, module));
165 std::make_shared<SPL_MIG>(system, module)->InstallAsService(service_manager); 167 server_manager->RegisterNamedService("spl", std::make_shared<SPL>(system, module));
166 std::make_shared<SPL_FS>(system, module)->InstallAsService(service_manager); 168 server_manager->RegisterNamedService("spl:mig", std::make_shared<SPL_MIG>(system, module));
167 std::make_shared<SPL_SSL>(system, module)->InstallAsService(service_manager); 169 server_manager->RegisterNamedService("spl:fs", std::make_shared<SPL_FS>(system, module));
168 std::make_shared<SPL_ES>(system, module)->InstallAsService(service_manager); 170 server_manager->RegisterNamedService("spl:ssl", std::make_shared<SPL_SSL>(system, module));
169 std::make_shared<SPL_MANU>(system, module)->InstallAsService(service_manager); 171 server_manager->RegisterNamedService("spl:es", std::make_shared<SPL_ES>(system, module));
172 server_manager->RegisterNamedService("spl:manu", std::make_shared<SPL_MANU>(system, module));
173 ServerManager::RunServer(std::move(server_manager));
170} 174}
171 175
172} // namespace Service::SPL 176} // namespace Service::SPL
diff --git a/src/core/hle/service/spl/spl_module.h b/src/core/hle/service/spl/spl_module.h
index 4c9a3c618..baed9efd7 100644
--- a/src/core/hle/service/spl/spl_module.h
+++ b/src/core/hle/service/spl/spl_module.h
@@ -41,7 +41,6 @@ public:
41 }; 41 };
42}; 42};
43 43
44/// Registers all SPL services with the specified service manager. 44void LoopProcess(Core::System& system);
45void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system);
46 45
47} // namespace Service::SPL 46} // namespace Service::SPL