summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/service.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/service/service.cpp')
-rw-r--r--src/core/hle/service/service.cpp10
1 files changed, 10 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() {
AddNamedPort(service_name, std::move(client_port));
}
+Kernel::SharedPtr<Kernel::ClientPort> ServiceFrameworkBase::CreatePort() {
+ ASSERT(port == nullptr);
+ Kernel::SharedPtr<Kernel::ServerPort> server_port;
+ Kernel::SharedPtr<Kernel::ClientPort> client_port;
+ std::tie(server_port, client_port) = Kernel::ServerPort::CreatePortPair(max_sessions, service_name);
+ port = MakeResult<Kernel::SharedPtr<Kernel::ServerPort>>(std::move(server_port)).Unwrap();
+ port->SetHleHandler(shared_from_this());
+ return client_port;
+}
+
void ServiceFrameworkBase::RegisterHandlersBase(const FunctionInfoBase* functions, size_t n) {
handlers.reserve(handlers.size() + n);
for (size_t i = 0; i < n; ++i) {