diff options
author | bunnei <bunneidev@gmail.com> | 2022-11-04 05:45:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-04 05:45:56 +0100 |
commit | 37de88040c1999fed639004fb7200cabb8a5f9c0 (patch) | |
tree | 561f8439eb8cabd5f254701aaac05f728cdd1ade /src/core/hle/kernel/kernel.h | |
parent | Merge pull request #9154 from liamwhite/new-fb (diff) | |
parent | sm:: avoid excessive port recreation (diff) | |
download | yuzu-37de88040c1999fed639004fb7200cabb8a5f9c0.tar yuzu-37de88040c1999fed639004fb7200cabb8a5f9c0.tar.gz yuzu-37de88040c1999fed639004fb7200cabb8a5f9c0.tar.bz2 yuzu-37de88040c1999fed639004fb7200cabb8a5f9c0.tar.lz yuzu-37de88040c1999fed639004fb7200cabb8a5f9c0.tar.xz yuzu-37de88040c1999fed639004fb7200cabb8a5f9c0.tar.zst yuzu-37de88040c1999fed639004fb7200cabb8a5f9c0.zip |
Diffstat (limited to 'src/core/hle/kernel/kernel.h')
-rw-r--r-- | src/core/hle/kernel/kernel.h | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h index 266be2bc4..4ae6b3923 100644 --- a/src/core/hle/kernel/kernel.h +++ b/src/core/hle/kernel/kernel.h @@ -45,6 +45,7 @@ class KPort; class KProcess; class KResourceLimit; class KScheduler; +class KServerPort; class KServerSession; class KSession; class KSessionRequest; @@ -63,6 +64,8 @@ class TimeManager; using ServiceInterfaceFactory = std::function<KClientPort&(Service::SM::ServiceManager&, Core::System&)>; +using ServiceInterfaceHandlerFn = std::function<void(Service::SM::ServiceManager&, KServerPort*)>; + namespace Init { struct KSlabResourceCounts; } @@ -192,16 +195,14 @@ public: /// Registers a named HLE service, passing a factory used to open a port to that service. void RegisterNamedService(std::string name, ServiceInterfaceFactory&& factory); + /// Registers a setup function for the named HLE service. + void RegisterInterfaceForNamedService(std::string name, ServiceInterfaceHandlerFn&& handler); + /// Opens a port to a service previously registered with RegisterNamedService. KClientPort* CreateNamedServicePort(std::string name); - /// Registers a server session or port with the gobal emulation state, to be freed on shutdown. - /// This is necessary because we do not emulate processes for HLE sessions and ports. - void RegisterServerObject(KAutoObject* server_object); - - /// Unregisters a server session or port previously registered with RegisterServerSession when - /// it was destroyed during the current emulation session. - void UnregisterServerObject(KAutoObject* server_object); + /// Accepts a session on a port created by CreateNamedServicePort. + void RegisterNamedServiceHandler(std::string name, KServerPort* server_port); /// Registers all kernel objects with the global emulation state, this is purely for tracking /// leaks after emulation has been shutdown. |