diff options
| author | 2017-10-18 21:34:19 -0400 | |
|---|---|---|
| committer | 2017-10-18 21:34:19 -0400 | |
| commit | 03bf0739a48157397c0f2a60b385466526239777 (patch) | |
| tree | b1910c0f285de008e7e3091ff1b9d86adae515be /src/core/hle | |
| parent | memory: Print addresses as 64-bit. (diff) | |
| download | yuzu-03bf0739a48157397c0f2a60b385466526239777.tar.gz yuzu-03bf0739a48157397c0f2a60b385466526239777.tar.xz yuzu-03bf0739a48157397c0f2a60b385466526239777.zip | |
service: Add CreatePort function (that does not register/install).
Diffstat (limited to 'src/core/hle')
| -rw-r--r-- | src/core/hle/service/service.cpp | 10 | ||||
| -rw-r--r-- | src/core/hle/service/service.h | 2 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index 93a6d2618..826a775d1 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp | |||
| @@ -74,6 +74,16 @@ void ServiceFrameworkBase::InstallAsNamedPort() { | |||
| 74 | AddNamedPort(service_name, std::move(client_port)); | 74 | AddNamedPort(service_name, std::move(client_port)); |
| 75 | } | 75 | } |
| 76 | 76 | ||
| 77 | Kernel::SharedPtr<Kernel::ClientPort> ServiceFrameworkBase::CreatePort() { | ||
| 78 | ASSERT(port == nullptr); | ||
| 79 | Kernel::SharedPtr<Kernel::ServerPort> server_port; | ||
| 80 | Kernel::SharedPtr<Kernel::ClientPort> client_port; | ||
| 81 | std::tie(server_port, client_port) = Kernel::ServerPort::CreatePortPair(max_sessions, service_name); | ||
| 82 | port = MakeResult<Kernel::SharedPtr<Kernel::ServerPort>>(std::move(server_port)).Unwrap(); | ||
| 83 | port->SetHleHandler(shared_from_this()); | ||
| 84 | return client_port; | ||
| 85 | } | ||
| 86 | |||
| 77 | void ServiceFrameworkBase::RegisterHandlersBase(const FunctionInfoBase* functions, size_t n) { | 87 | void ServiceFrameworkBase::RegisterHandlersBase(const FunctionInfoBase* functions, size_t n) { |
| 78 | handlers.reserve(handlers.size() + n); | 88 | handlers.reserve(handlers.size() + n); |
| 79 | for (size_t i = 0; i < n; ++i) { | 89 | for (size_t i = 0; i < n; ++i) { |
diff --git a/src/core/hle/service/service.h b/src/core/hle/service/service.h index 07bc8589a..ff76dd2de 100644 --- a/src/core/hle/service/service.h +++ b/src/core/hle/service/service.h | |||
| @@ -58,6 +58,8 @@ public: | |||
| 58 | void InstallAsService(SM::ServiceManager& service_manager); | 58 | void InstallAsService(SM::ServiceManager& service_manager); |
| 59 | /// Creates a port pair and registers it on the kernel's global port registry. | 59 | /// Creates a port pair and registers it on the kernel's global port registry. |
| 60 | void InstallAsNamedPort(); | 60 | void InstallAsNamedPort(); |
| 61 | /// Creates and returns an unregistered port for the service. | ||
| 62 | Kernel::SharedPtr<Kernel::ClientPort> CreatePort(); | ||
| 61 | 63 | ||
| 62 | void InvokeRequest(Kernel::HLERequestContext& ctx); | 64 | void InvokeRequest(Kernel::HLERequestContext& ctx); |
| 63 | 65 | ||