From a9369726147c7499e0016e183d5d56a7b44efe4b Mon Sep 17 00:00:00 2001 From: Liam Date: Sat, 18 Feb 2023 16:26:48 -0500 Subject: service: refactor server architecture Converts services to have their own processes --- src/core/hle/service/sm/sm.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/core/hle/service/sm/sm.h') diff --git a/src/core/hle/service/sm/sm.h b/src/core/hle/service/sm/sm.h index 02a5dde9e..22ca720f8 100644 --- a/src/core/hle/service/sm/sm.h +++ b/src/core/hle/service/sm/sm.h @@ -4,6 +4,7 @@ #pragma once #include +#include #include #include @@ -50,9 +51,6 @@ private: class ServiceManager { public: - static Kernel::KClientPort& InterfaceFactory(ServiceManager& self, Core::System& system); - static void SessionHandler(ServiceManager& self, Kernel::KServerPort* server_port); - explicit ServiceManager(Kernel::KernelCore& kernel_); ~ServiceManager(); @@ -78,6 +76,7 @@ private: std::unique_ptr controller_interface; /// Map of registered services, retrieved using GetServicePort. + std::mutex lock; std::unordered_map registered_services; std::unordered_map service_ports; @@ -85,4 +84,7 @@ private: Kernel::KernelCore& kernel; }; +/// Runs SM services. +void LoopProcess(Core::System& system); + } // namespace Service::SM -- cgit v1.2.3 From 6e0a33089b97747ea0e3dc9d57e19223d420c98a Mon Sep 17 00:00:00 2001 From: Liam Date: Sun, 19 Feb 2023 08:44:54 -0500 Subject: sm:: support service registration deferral --- src/core/hle/service/sm/sm.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/core/hle/service/sm/sm.h') diff --git a/src/core/hle/service/sm/sm.h b/src/core/hle/service/sm/sm.h index 22ca720f8..b7eeafdd6 100644 --- a/src/core/hle/service/sm/sm.h +++ b/src/core/hle/service/sm/sm.h @@ -71,6 +71,10 @@ public: void InvokeControlRequest(Kernel::HLERequestContext& context); + void SetDeferralEvent(Kernel::KEvent* deferral_event_) { + deferral_event = deferral_event_; + } + private: std::shared_ptr sm_interface; std::unique_ptr controller_interface; @@ -82,6 +86,7 @@ private: /// Kernel context Kernel::KernelCore& kernel; + Kernel::KEvent* deferral_event{}; }; /// Runs SM services. -- cgit v1.2.3