diff options
| author | 2021-04-13 17:48:37 -0700 | |
|---|---|---|
| committer | 2021-05-05 16:40:51 -0700 | |
| commit | 7444963bbb300cff269e410948de7fa577f5ff16 (patch) | |
| tree | 6e0000cb345dc02c8f2ca38958b7c90383f45b03 /src/core/hle/service | |
| parent | hle: kernel: svc: Migrate GetThreadContext, GetThreadCoreMask. (diff) | |
| download | yuzu-7444963bbb300cff269e410948de7fa577f5ff16.tar.gz yuzu-7444963bbb300cff269e410948de7fa577f5ff16.tar.xz yuzu-7444963bbb300cff269e410948de7fa577f5ff16.zip | |
hle: kernel: Migrate KSession, KClientSession, and KServerSession to KAutoObject.
Diffstat (limited to 'src/core/hle/service')
| -rw-r--r-- | src/core/hle/service/am/applets/applets.cpp | 1 | ||||
| -rw-r--r-- | src/core/hle/service/hid/hid.cpp | 1 | ||||
| -rw-r--r-- | src/core/hle/service/mm/mm_u.cpp | 1 | ||||
| -rw-r--r-- | src/core/hle/service/service.h | 5 | ||||
| -rw-r--r-- | src/core/hle/service/sm/controller.cpp | 8 | ||||
| -rw-r--r-- | src/core/hle/service/sm/sm.cpp | 22 | ||||
| -rw-r--r-- | src/core/hle/service/sm/sm.h | 5 | ||||
| -rw-r--r-- | src/core/hle/service/time/time.cpp | 1 |
8 files changed, 16 insertions, 28 deletions
diff --git a/src/core/hle/service/am/applets/applets.cpp b/src/core/hle/service/am/applets/applets.cpp index cf8ad7598..ae995df6b 100644 --- a/src/core/hle/service/am/applets/applets.cpp +++ b/src/core/hle/service/am/applets/applets.cpp | |||
| @@ -14,7 +14,6 @@ | |||
| 14 | #include "core/frontend/applets/web_browser.h" | 14 | #include "core/frontend/applets/web_browser.h" |
| 15 | #include "core/hle/kernel/k_readable_event.h" | 15 | #include "core/hle/kernel/k_readable_event.h" |
| 16 | #include "core/hle/kernel/k_writable_event.h" | 16 | #include "core/hle/kernel/k_writable_event.h" |
| 17 | #include "core/hle/kernel/server_session.h" | ||
| 18 | #include "core/hle/service/am/am.h" | 17 | #include "core/hle/service/am/am.h" |
| 19 | #include "core/hle/service/am/applet_ae.h" | 18 | #include "core/hle/service/am/applet_ae.h" |
| 20 | #include "core/hle/service/am/applet_oe.h" | 19 | #include "core/hle/service/am/applet_oe.h" |
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index 49c1db42a..6b3ebeb8f 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp | |||
| @@ -14,7 +14,6 @@ | |||
| 14 | #include "core/hardware_properties.h" | 14 | #include "core/hardware_properties.h" |
| 15 | #include "core/hle/ipc_helpers.h" | 15 | #include "core/hle/ipc_helpers.h" |
| 16 | #include "core/hle/kernel/client_port.h" | 16 | #include "core/hle/kernel/client_port.h" |
| 17 | #include "core/hle/kernel/client_session.h" | ||
| 18 | #include "core/hle/kernel/k_readable_event.h" | 17 | #include "core/hle/kernel/k_readable_event.h" |
| 19 | #include "core/hle/kernel/k_shared_memory.h" | 18 | #include "core/hle/kernel/k_shared_memory.h" |
| 20 | #include "core/hle/kernel/k_writable_event.h" | 19 | #include "core/hle/kernel/k_writable_event.h" |
diff --git a/src/core/hle/service/mm/mm_u.cpp b/src/core/hle/service/mm/mm_u.cpp index b0cb07d24..c8519e2db 100644 --- a/src/core/hle/service/mm/mm_u.cpp +++ b/src/core/hle/service/mm/mm_u.cpp | |||
| @@ -4,7 +4,6 @@ | |||
| 4 | 4 | ||
| 5 | #include "common/logging/log.h" | 5 | #include "common/logging/log.h" |
| 6 | #include "core/hle/ipc_helpers.h" | 6 | #include "core/hle/ipc_helpers.h" |
| 7 | #include "core/hle/kernel/client_session.h" | ||
| 8 | #include "core/hle/service/mm/mm_u.h" | 7 | #include "core/hle/service/mm/mm_u.h" |
| 9 | #include "core/hle/service/sm/sm.h" | 8 | #include "core/hle/service/sm/sm.h" |
| 10 | 9 | ||
diff --git a/src/core/hle/service/service.h b/src/core/hle/service/service.h index 916445517..076f50b0b 100644 --- a/src/core/hle/service/service.h +++ b/src/core/hle/service/service.h | |||
| @@ -21,11 +21,8 @@ class System; | |||
| 21 | } | 21 | } |
| 22 | 22 | ||
| 23 | namespace Kernel { | 23 | namespace Kernel { |
| 24 | class ClientPort; | ||
| 25 | class ServerPort; | ||
| 26 | class ServerSession; | ||
| 27 | class HLERequestContext; | 24 | class HLERequestContext; |
| 28 | } // namespace Kernel | 25 | } |
| 29 | 26 | ||
| 30 | namespace Service { | 27 | namespace Service { |
| 31 | 28 | ||
diff --git a/src/core/hle/service/sm/controller.cpp b/src/core/hle/service/sm/controller.cpp index b34fe4bc2..cb397fcc7 100644 --- a/src/core/hle/service/sm/controller.cpp +++ b/src/core/hle/service/sm/controller.cpp | |||
| @@ -5,9 +5,9 @@ | |||
| 5 | #include "common/assert.h" | 5 | #include "common/assert.h" |
| 6 | #include "common/logging/log.h" | 6 | #include "common/logging/log.h" |
| 7 | #include "core/hle/ipc_helpers.h" | 7 | #include "core/hle/ipc_helpers.h" |
| 8 | #include "core/hle/kernel/client_session.h" | 8 | #include "core/hle/kernel/k_client_session.h" |
| 9 | #include "core/hle/kernel/server_session.h" | 9 | #include "core/hle/kernel/k_server_session.h" |
| 10 | #include "core/hle/kernel/session.h" | 10 | #include "core/hle/kernel/k_session.h" |
| 11 | #include "core/hle/service/sm/controller.h" | 11 | #include "core/hle/service/sm/controller.h" |
| 12 | 12 | ||
| 13 | namespace Service::SM { | 13 | namespace Service::SM { |
| @@ -30,7 +30,7 @@ void Controller::CloneCurrentObject(Kernel::HLERequestContext& ctx) { | |||
| 30 | 30 | ||
| 31 | IPC::ResponseBuilder rb{ctx, 2, 0, 1, IPC::ResponseBuilder::Flags::AlwaysMoveHandles}; | 31 | IPC::ResponseBuilder rb{ctx, 2, 0, 1, IPC::ResponseBuilder::Flags::AlwaysMoveHandles}; |
| 32 | rb.Push(RESULT_SUCCESS); | 32 | rb.Push(RESULT_SUCCESS); |
| 33 | rb.PushMoveObjects(ctx.Session()->GetParent()->Client().get()); | 33 | rb.PushMoveObjects(ctx.Session()->GetParent()->GetClientSession()); |
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | void Controller::CloneCurrentObjectEx(Kernel::HLERequestContext& ctx) { | 36 | void Controller::CloneCurrentObjectEx(Kernel::HLERequestContext& ctx) { |
diff --git a/src/core/hle/service/sm/sm.cpp b/src/core/hle/service/sm/sm.cpp index 62f7a5358..66e41277f 100644 --- a/src/core/hle/service/sm/sm.cpp +++ b/src/core/hle/service/sm/sm.cpp | |||
| @@ -7,7 +7,9 @@ | |||
| 7 | #include "core/core.h" | 7 | #include "core/core.h" |
| 8 | #include "core/hle/ipc_helpers.h" | 8 | #include "core/hle/ipc_helpers.h" |
| 9 | #include "core/hle/kernel/client_port.h" | 9 | #include "core/hle/kernel/client_port.h" |
| 10 | #include "core/hle/kernel/client_session.h" | 10 | #include "core/hle/kernel/k_client_session.h" |
| 11 | #include "core/hle/kernel/k_server_session.h" | ||
| 12 | #include "core/hle/kernel/k_session.h" | ||
| 11 | #include "core/hle/kernel/server_port.h" | 13 | #include "core/hle/kernel/server_port.h" |
| 12 | #include "core/hle/result.h" | 14 | #include "core/hle/result.h" |
| 13 | #include "core/hle/service/sm/controller.h" | 15 | #include "core/hle/service/sm/controller.h" |
| @@ -89,13 +91,6 @@ ResultVal<std::shared_ptr<Kernel::ClientPort>> ServiceManager::GetServicePort( | |||
| 89 | return MakeResult(it->second); | 91 | return MakeResult(it->second); |
| 90 | } | 92 | } |
| 91 | 93 | ||
| 92 | ResultVal<std::shared_ptr<Kernel::ClientSession>> ServiceManager::ConnectToService( | ||
| 93 | const std::string& name) { | ||
| 94 | |||
| 95 | CASCADE_RESULT(auto client_port, GetServicePort(name)); | ||
| 96 | return client_port->Connect(); | ||
| 97 | } | ||
| 98 | |||
| 99 | SM::~SM() = default; | 94 | SM::~SM() = default; |
| 100 | 95 | ||
| 101 | /** | 96 | /** |
| @@ -130,19 +125,20 @@ void SM::GetService(Kernel::HLERequestContext& ctx) { | |||
| 130 | return; | 125 | return; |
| 131 | } | 126 | } |
| 132 | 127 | ||
| 133 | auto [client, server] = Kernel::Session::Create(kernel, name); | 128 | auto* session = Kernel::KSession::Create(kernel); |
| 129 | session->Initialize(std::move(name)); | ||
| 134 | 130 | ||
| 135 | const auto& server_port = client_port.Unwrap()->GetServerPort(); | 131 | const auto& server_port = client_port.Unwrap()->GetServerPort(); |
| 136 | if (server_port->GetHLEHandler()) { | 132 | if (server_port->GetHLEHandler()) { |
| 137 | server_port->GetHLEHandler()->ClientConnected(client, server); | 133 | server_port->GetHLEHandler()->ClientConnected(session); |
| 138 | } else { | 134 | } else { |
| 139 | server_port->AppendPendingSession(server); | 135 | server_port->AppendPendingSession(&session->GetServerSession()); |
| 140 | } | 136 | } |
| 141 | 137 | ||
| 142 | LOG_DEBUG(Service_SM, "called service={} -> session={}", name, client->GetObjectId()); | 138 | LOG_DEBUG(Service_SM, "called service={} -> session={}", name, session->GetObjectId()); |
| 143 | IPC::ResponseBuilder rb{ctx, 2, 0, 1, IPC::ResponseBuilder::Flags::AlwaysMoveHandles}; | 139 | IPC::ResponseBuilder rb{ctx, 2, 0, 1, IPC::ResponseBuilder::Flags::AlwaysMoveHandles}; |
| 144 | rb.Push(RESULT_SUCCESS); | 140 | rb.Push(RESULT_SUCCESS); |
| 145 | rb.PushMoveObjects(client.get()); | 141 | rb.PushMoveObjects(session->GetClientSession()); |
| 146 | } | 142 | } |
| 147 | 143 | ||
| 148 | void SM::RegisterService(Kernel::HLERequestContext& ctx) { | 144 | void SM::RegisterService(Kernel::HLERequestContext& ctx) { |
diff --git a/src/core/hle/service/sm/sm.h b/src/core/hle/service/sm/sm.h index 3f46ae44f..8f6862fa9 100644 --- a/src/core/hle/service/sm/sm.h +++ b/src/core/hle/service/sm/sm.h | |||
| @@ -22,7 +22,7 @@ class System; | |||
| 22 | 22 | ||
| 23 | namespace Kernel { | 23 | namespace Kernel { |
| 24 | class ClientPort; | 24 | class ClientPort; |
| 25 | class ClientSession; | 25 | class KClientSession; |
| 26 | class KernelCore; | 26 | class KernelCore; |
| 27 | class ServerPort; | 27 | class ServerPort; |
| 28 | class SessionRequestHandler; | 28 | class SessionRequestHandler; |
| @@ -59,7 +59,6 @@ public: | |||
| 59 | u32 max_sessions); | 59 | u32 max_sessions); |
| 60 | ResultCode UnregisterService(const std::string& name); | 60 | ResultCode UnregisterService(const std::string& name); |
| 61 | ResultVal<std::shared_ptr<Kernel::ClientPort>> GetServicePort(const std::string& name); | 61 | ResultVal<std::shared_ptr<Kernel::ClientPort>> GetServicePort(const std::string& name); |
| 62 | ResultVal<std::shared_ptr<Kernel::ClientSession>> ConnectToService(const std::string& name); | ||
| 63 | 62 | ||
| 64 | template <Common::DerivedFrom<Kernel::SessionRequestHandler> T> | 63 | template <Common::DerivedFrom<Kernel::SessionRequestHandler> T> |
| 65 | std::shared_ptr<T> GetService(const std::string& service_name) const { | 64 | std::shared_ptr<T> GetService(const std::string& service_name) const { |
| @@ -81,7 +80,7 @@ private: | |||
| 81 | std::weak_ptr<SM> sm_interface; | 80 | std::weak_ptr<SM> sm_interface; |
| 82 | std::unique_ptr<Controller> controller_interface; | 81 | std::unique_ptr<Controller> controller_interface; |
| 83 | 82 | ||
| 84 | /// Map of registered services, retrieved using GetServicePort or ConnectToService. | 83 | /// Map of registered services, retrieved using GetServicePort. |
| 85 | std::unordered_map<std::string, std::shared_ptr<Kernel::ClientPort>> registered_services; | 84 | std::unordered_map<std::string, std::shared_ptr<Kernel::ClientPort>> registered_services; |
| 86 | 85 | ||
| 87 | /// Kernel context | 86 | /// Kernel context |
diff --git a/src/core/hle/service/time/time.cpp b/src/core/hle/service/time/time.cpp index 30283f239..413a00ae0 100644 --- a/src/core/hle/service/time/time.cpp +++ b/src/core/hle/service/time/time.cpp | |||
| @@ -9,7 +9,6 @@ | |||
| 9 | #include "core/hardware_properties.h" | 9 | #include "core/hardware_properties.h" |
| 10 | #include "core/hle/ipc_helpers.h" | 10 | #include "core/hle/ipc_helpers.h" |
| 11 | #include "core/hle/kernel/client_port.h" | 11 | #include "core/hle/kernel/client_port.h" |
| 12 | #include "core/hle/kernel/client_session.h" | ||
| 13 | #include "core/hle/kernel/k_scheduler.h" | 12 | #include "core/hle/kernel/k_scheduler.h" |
| 14 | #include "core/hle/kernel/kernel.h" | 13 | #include "core/hle/kernel/kernel.h" |
| 15 | #include "core/hle/service/time/interface.h" | 14 | #include "core/hle/service/time/interface.h" |