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.h | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/core/hle/kernel/server_port.h (limited to 'src/core/hle/kernel/server_port.h') diff --git a/src/core/hle/kernel/server_port.h b/src/core/hle/kernel/server_port.h new file mode 100644 index 000000000..e41ef8ce4 --- /dev/null +++ b/src/core/hle/kernel/server_port.h @@ -0,0 +1,43 @@ +// Copyright 2016 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include + +#include "common/common_types.h" + +#include "core/hle/kernel/kernel.h" + +namespace Kernel { + +class ServerPort final : public WaitObject { +public: + /** + * Creates a pair of a ServerPort and an associated ClientPort. + * @param max_sessions Maximum number of sessions to the port + * @param name Optional name of the ports + * @return The created port tuple + */ + static std::tuple, SharedPtr> CreatePortPair(u32 max_sessions, std::string name = "UnknownPort"); + + std::string GetTypeName() const override { return "ServerPort"; } + std::string GetName() const override { return name; } + + static const HandleType HANDLE_TYPE = HandleType::ServerPort; + HandleType GetHandleType() const override { return HANDLE_TYPE; } + + std::string name; ///< Name of port (optional) + + std::vector> pending_sessions; ///< ServerSessions waiting to be accepted by the port + + bool ShouldWait() override; + void Acquire() override; + +private: + ServerPort(); + ~ServerPort() override; +}; + +} // 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.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/core/hle/kernel/server_port.h') diff --git a/src/core/hle/kernel/server_port.h b/src/core/hle/kernel/server_port.h index e41ef8ce4..e9c972ce6 100644 --- a/src/core/hle/kernel/server_port.h +++ b/src/core/hle/kernel/server_port.h @@ -5,6 +5,7 @@ #pragma once #include +#include #include "common/common_types.h" @@ -12,10 +13,12 @@ namespace Kernel { +class ClientPort; + class ServerPort final : public WaitObject { public: /** - * Creates a pair of a ServerPort and an associated ClientPort. + * Creates a pair of ServerPort and an associated ClientPort. * @param max_sessions Maximum number of sessions to the port * @param name Optional name of the ports * @return The created port tuple -- cgit v1.2.3