diff options
| author | 2022-11-03 21:45:56 -0700 | |
|---|---|---|
| committer | 2022-11-03 21:45:56 -0700 | |
| 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.gz yuzu-37de88040c1999fed639004fb7200cabb8a5f9c0.tar.xz yuzu-37de88040c1999fed639004fb7200cabb8a5f9c0.zip | |
Merge pull request #9135 from liamwhite/service-thread-event
kernel: invert session request handling flow
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; | |||
| 45 | class KProcess; | 45 | class KProcess; |
| 46 | class KResourceLimit; | 46 | class KResourceLimit; |
| 47 | class KScheduler; | 47 | class KScheduler; |
| 48 | class KServerPort; | ||
| 48 | class KServerSession; | 49 | class KServerSession; |
| 49 | class KSession; | 50 | class KSession; |
| 50 | class KSessionRequest; | 51 | class KSessionRequest; |
| @@ -63,6 +64,8 @@ class TimeManager; | |||
| 63 | using ServiceInterfaceFactory = | 64 | using ServiceInterfaceFactory = |
| 64 | std::function<KClientPort&(Service::SM::ServiceManager&, Core::System&)>; | 65 | std::function<KClientPort&(Service::SM::ServiceManager&, Core::System&)>; |
| 65 | 66 | ||
| 67 | using ServiceInterfaceHandlerFn = std::function<void(Service::SM::ServiceManager&, KServerPort*)>; | ||
| 68 | |||
| 66 | namespace Init { | 69 | namespace Init { |
| 67 | struct KSlabResourceCounts; | 70 | struct KSlabResourceCounts; |
| 68 | } | 71 | } |
| @@ -192,16 +195,14 @@ public: | |||
| 192 | /// Registers a named HLE service, passing a factory used to open a port to that service. | 195 | /// Registers a named HLE service, passing a factory used to open a port to that service. |
| 193 | void RegisterNamedService(std::string name, ServiceInterfaceFactory&& factory); | 196 | void RegisterNamedService(std::string name, ServiceInterfaceFactory&& factory); |
| 194 | 197 | ||
| 198 | /// Registers a setup function for the named HLE service. | ||
| 199 | void RegisterInterfaceForNamedService(std::string name, ServiceInterfaceHandlerFn&& handler); | ||
| 200 | |||
| 195 | /// Opens a port to a service previously registered with RegisterNamedService. | 201 | /// Opens a port to a service previously registered with RegisterNamedService. |
| 196 | KClientPort* CreateNamedServicePort(std::string name); | 202 | KClientPort* CreateNamedServicePort(std::string name); |
| 197 | 203 | ||
| 198 | /// Registers a server session or port with the gobal emulation state, to be freed on shutdown. | 204 | /// Accepts a session on a port created by CreateNamedServicePort. |
| 199 | /// This is necessary because we do not emulate processes for HLE sessions and ports. | 205 | void RegisterNamedServiceHandler(std::string name, KServerPort* server_port); |
| 200 | void RegisterServerObject(KAutoObject* server_object); | ||
| 201 | |||
| 202 | /// Unregisters a server session or port previously registered with RegisterServerSession when | ||
| 203 | /// it was destroyed during the current emulation session. | ||
| 204 | void UnregisterServerObject(KAutoObject* server_object); | ||
| 205 | 206 | ||
| 206 | /// Registers all kernel objects with the global emulation state, this is purely for tracking | 207 | /// Registers all kernel objects with the global emulation state, this is purely for tracking |
| 207 | /// leaks after emulation has been shutdown. | 208 | /// leaks after emulation has been shutdown. |