summaryrefslogtreecommitdiff
path: root/src/core/hle
diff options
context:
space:
mode:
authorGravatar bunnei2017-10-18 21:34:19 -0400
committerGravatar bunnei2017-10-18 21:34:19 -0400
commit03bf0739a48157397c0f2a60b385466526239777 (patch)
treeb1910c0f285de008e7e3091ff1b9d86adae515be /src/core/hle
parentmemory: Print addresses as 64-bit. (diff)
downloadyuzu-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.cpp10
-rw-r--r--src/core/hle/service/service.h2
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
77Kernel::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
77void ServiceFrameworkBase::RegisterHandlersBase(const FunctionInfoBase* functions, size_t n) { 87void 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