diff options
| author | 2022-10-16 01:53:56 -0400 | |
|---|---|---|
| committer | 2022-10-31 17:44:06 -0400 | |
| commit | 983f2b70741f17f30fe2321451f10cabecc013d2 (patch) | |
| tree | c1ac3c1033fdeefaabe76590ca204c4c1b2a98cd /src/core/hle/kernel/kernel.h | |
| parent | Merge pull request #9159 from liamwhite/kbork (diff) | |
| download | yuzu-983f2b70741f17f30fe2321451f10cabecc013d2.tar.gz yuzu-983f2b70741f17f30fe2321451f10cabecc013d2.tar.xz yuzu-983f2b70741f17f30fe2321451f10cabecc013d2.zip | |
kernel: invert session request handling flow
Diffstat (limited to 'src/core/hle/kernel/kernel.h')
| -rw-r--r-- | src/core/hle/kernel/kernel.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h index 266be2bc4..670f93ee3 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,9 +195,15 @@ 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 | ||
| 204 | /// Accepts a session on a port created by CreateNamedServicePort. | ||
| 205 | void RegisterNamedServiceHandler(std::string name, KServerPort* server_port); | ||
| 206 | |||
| 198 | /// Registers a server session or port with the gobal emulation state, to be freed on shutdown. | 207 | /// Registers a server session or port with the gobal emulation state, to be freed on shutdown. |
| 199 | /// This is necessary because we do not emulate processes for HLE sessions and ports. | 208 | /// This is necessary because we do not emulate processes for HLE sessions and ports. |
| 200 | void RegisterServerObject(KAutoObject* server_object); | 209 | void RegisterServerObject(KAutoObject* server_object); |