From 3d9fbffbabbe2125ae6208d2d0049552e9293e49 Mon Sep 17 00:00:00 2001 From: Subv Date: Sun, 22 May 2016 11:22:49 -0500 Subject: Kernel: Added ClientPort and ServerPort classes. This is part of an ongoing effort to implement support for multiple processes. --- src/core/hle/kernel/server_port.cpp | 38 +++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/core/hle/kernel/server_port.cpp (limited to 'src/core/hle/kernel/server_port.cpp') diff --git a/src/core/hle/kernel/server_port.cpp b/src/core/hle/kernel/server_port.cpp new file mode 100644 index 000000000..ca41265ff --- /dev/null +++ b/src/core/hle/kernel/server_port.cpp @@ -0,0 +1,38 @@ +// Copyright 2016 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "common/assert.h" + +#include "core/hle/kernel/kernel.h" +#include "core/hle/kernel/server_port.h" +#include "core/hle/kernel/thread.h" + +namespace Kernel { + +ServerPort::ServerPort() {} +ServerPort::~ServerPort() {} + +bool ServerPort::ShouldWait() { + // If there are no pending sessions, we wait until a new one is added. + return pending_sessions.size() == 0; +} + +void ServerPort::Acquire() { + ASSERT_MSG(!ShouldWait(), "object unavailable!"); +} + +std::tuple, SharedPtr> ServerPort::CreatePortPair(u32 max_sessions, std::string name) { + SharedPtr server_port(new ServerPort); + SharedPtr client_port(new ClientPort); + + server_port->name = name + "_Server"; + client_port->name = name + "_Client"; + client_port->server_port = server_port; + client_port->max_sessions = max_sessions; + client_port->active_sessions = 0; + + return std::make_tuple(std::move(server_port), std::move(client_port)); +} + +} // namespace -- cgit v1.2.3 From 7b445ddff0be3e0210cb217c74cb34a16799ce0d Mon Sep 17 00:00:00 2001 From: Subv Date: Sun, 22 May 2016 12:30:13 -0500 Subject: Kernel/SVC: Implemented svcCreatePort. --- src/core/hle/kernel/server_port.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/core/hle/kernel/server_port.cpp') diff --git a/src/core/hle/kernel/server_port.cpp b/src/core/hle/kernel/server_port.cpp index ca41265ff..fcc684a20 100644 --- a/src/core/hle/kernel/server_port.cpp +++ b/src/core/hle/kernel/server_port.cpp @@ -2,8 +2,11 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include + #include "common/assert.h" +#include "core/hle/kernel/client_port.h" #include "core/hle/kernel/kernel.h" #include "core/hle/kernel/server_port.h" #include "core/hle/kernel/thread.h" -- cgit v1.2.3