diff options
| author | bunnei <bunneidev@gmail.com> | 2018-08-30 10:02:50 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-08-30 10:02:50 -0400 |
| commit | 5094dfa081c7275e35496374a42996b11f0f6005 (patch) | |
| tree | 8cdfb8c270c6299a1b172fb9c14856684bedf084 /src/core/hle/kernel/server_session.cpp | |
| parent | 42ef40884f222bfd0dfa08cd56e01e89b0e2ab0f (diff) | |
| parent | 0cbcd6ec9aeeafc298fe2e6e4ac10d68bb7267c5 (diff) | |
Merge pull request #1198 from lioncash/kernel
kernel: Eliminate kernel global state
Diffstat (limited to 'src/core/hle/kernel/server_session.cpp')
| -rw-r--r-- | src/core/hle/kernel/server_session.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/core/hle/kernel/server_session.cpp b/src/core/hle/kernel/server_session.cpp index 51a1ec160..90c9a5aff 100644 --- a/src/core/hle/kernel/server_session.cpp +++ b/src/core/hle/kernel/server_session.cpp @@ -20,7 +20,7 @@ namespace Kernel { -ServerSession::ServerSession() = default; +ServerSession::ServerSession(KernelCore& kernel) : WaitObject{kernel} {} ServerSession::~ServerSession() { // This destructor will be called automatically when the last ServerSession handle is closed by // the emulated application. @@ -35,8 +35,8 @@ ServerSession::~ServerSession() { parent->server = nullptr; } -ResultVal<SharedPtr<ServerSession>> ServerSession::Create(std::string name) { - SharedPtr<ServerSession> server_session(new ServerSession); +ResultVal<SharedPtr<ServerSession>> ServerSession::Create(KernelCore& kernel, std::string name) { + SharedPtr<ServerSession> server_session(new ServerSession(kernel)); server_session->name = std::move(name); server_session->parent = nullptr; @@ -105,10 +105,10 @@ ResultCode ServerSession::HandleSyncRequest(SharedPtr<Thread> thread) { // from its ClientSession, so wake up any threads that may be waiting on a svcReplyAndReceive or // similar. + auto& handle_table = Core::System::GetInstance().Kernel().HandleTable(); Kernel::HLERequestContext context(this); u32* cmd_buf = (u32*)Memory::GetPointer(thread->GetTLSAddress()); - context.PopulateFromIncomingCommandBuffer(cmd_buf, *Core::CurrentProcess(), - Kernel::g_handle_table); + context.PopulateFromIncomingCommandBuffer(cmd_buf, *Core::CurrentProcess(), handle_table); ResultCode result = RESULT_SUCCESS; // If the session has been converted to a domain, handle the domain request @@ -160,10 +160,11 @@ ResultCode ServerSession::HandleSyncRequest(SharedPtr<Thread> thread) { return result; } -ServerSession::SessionPair ServerSession::CreateSessionPair(const std::string& name, +ServerSession::SessionPair ServerSession::CreateSessionPair(KernelCore& kernel, + const std::string& name, SharedPtr<ClientPort> port) { - auto server_session = ServerSession::Create(name + "_Server").Unwrap(); - SharedPtr<ClientSession> client_session(new ClientSession); + auto server_session = ServerSession::Create(kernel, name + "_Server").Unwrap(); + SharedPtr<ClientSession> client_session(new ClientSession(kernel)); client_session->name = name + "_Client"; std::shared_ptr<Session> parent(new Session); |
