summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-01-23 22:13:19 +0100
committerbunnei <bunneidev@gmail.com>2018-01-25 04:18:54 +0100
commit67758857e4203cebc9a5815c6b0293c0aad0e598 (patch)
tree6d39ebcb39695f3117864416c56d16edb4611514 /src/core
parenthandle_table: Remove ConvertSessionToDomain. (diff)
downloadyuzu-67758857e4203cebc9a5815c6b0293c0aad0e598.tar
yuzu-67758857e4203cebc9a5815c6b0293c0aad0e598.tar.gz
yuzu-67758857e4203cebc9a5815c6b0293c0aad0e598.tar.bz2
yuzu-67758857e4203cebc9a5815c6b0293c0aad0e598.tar.lz
yuzu-67758857e4203cebc9a5815c6b0293c0aad0e598.tar.xz
yuzu-67758857e4203cebc9a5815c6b0293c0aad0e598.tar.zst
yuzu-67758857e4203cebc9a5815c6b0293c0aad0e598.zip
Diffstat (limited to 'src/core')
-rw-r--r--src/core/CMakeLists.txt3
-rw-r--r--src/core/hle/ipc_helpers.h1
-rw-r--r--src/core/hle/kernel/client_session.h3
-rw-r--r--src/core/hle/kernel/domain.cpp63
-rw-r--r--src/core/hle/kernel/domain.h45
-rw-r--r--src/core/hle/kernel/hle_ipc.cpp1
-rw-r--r--src/core/hle/kernel/kernel.h16
-rw-r--r--src/core/hle/kernel/svc.cpp3
-rw-r--r--src/core/hle/kernel/sync_object.h35
-rw-r--r--src/core/hle/service/sm/controller.cpp1
10 files changed, 2 insertions, 169 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 242c2db0c..70547c8b2 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -36,8 +36,6 @@ add_library(core STATIC
hle/kernel/client_session.h
hle/kernel/condition_variable.cpp
hle/kernel/condition_variable.h
- hle/kernel/domain.cpp
- hle/kernel/domain.h
hle/kernel/errors.h
hle/kernel/event.cpp
hle/kernel/event.h
@@ -67,7 +65,6 @@ add_library(core STATIC
hle/kernel/svc.cpp
hle/kernel/svc.h
hle/kernel/svc_wrap.h
- hle/kernel/sync_object.h
hle/kernel/thread.cpp
hle/kernel/thread.h
hle/kernel/timer.cpp
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h
index ab479b49b..e5c26e079 100644
--- a/src/core/hle/ipc_helpers.h
+++ b/src/core/hle/ipc_helpers.h
@@ -11,7 +11,6 @@
#include "core/hle/ipc.h"
#include "core/hle/kernel/client_port.h"
#include "core/hle/kernel/client_session.h"
-#include "core/hle/kernel/domain.h"
#include "core/hle/kernel/handle_table.h"
#include "core/hle/kernel/hle_ipc.h"
#include "core/hle/kernel/kernel.h"
diff --git a/src/core/hle/kernel/client_session.h b/src/core/hle/kernel/client_session.h
index d6ab4f893..f2765cc1e 100644
--- a/src/core/hle/kernel/client_session.h
+++ b/src/core/hle/kernel/client_session.h
@@ -7,7 +7,6 @@
#include <memory>
#include <string>
#include "common/common_types.h"
-#include "core/hle/kernel/sync_object.h"
#include "core/hle/result.h"
namespace Kernel {
@@ -16,7 +15,7 @@ class ServerSession;
class Session;
class Thread;
-class ClientSession final : public SyncObject {
+class ClientSession final : public Object {
public:
friend class ServerSession;
diff --git a/src/core/hle/kernel/domain.cpp b/src/core/hle/kernel/domain.cpp
deleted file mode 100644
index 5035e9c08..000000000
--- a/src/core/hle/kernel/domain.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2018 yuzu emulator team
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#include "common/logging/log.h"
-#include "core/hle/ipc_helpers.h"
-#include "core/hle/kernel/client_port.h"
-#include "core/hle/kernel/domain.h"
-#include "core/hle/kernel/handle_table.h"
-#include "core/hle/kernel/hle_ipc.h"
-#include "core/hle/kernel/process.h"
-#include "core/hle/kernel/session.h"
-#include "core/hle/kernel/thread.h"
-
-namespace Kernel {
-
-ResultVal<SharedPtr<Domain>> Domain::Create(std::string name) {
- SharedPtr<Domain> domain(new Domain);
- domain->name = std::move(name);
- return MakeResult(std::move(domain));
-}
-
-ResultVal<SharedPtr<Domain>> Domain::CreateFromSession(const Session& session) {
- auto res = Create(session.port->GetName() + "_Domain");
- auto& domain = res.Unwrap();
- domain->request_handlers.push_back(std::move(session.server->hle_handler));
- Kernel::g_handle_table.ConvertSessionToDomain(session, domain);
- return res;
-}
-
-ResultCode Domain::SendSyncRequest(SharedPtr<Thread> thread) {
- Kernel::HLERequestContext context(this);
- u32* cmd_buf = (u32*)Memory::GetPointer(Kernel::GetCurrentThread()->GetTLSAddress());
- context.PopulateFromIncomingCommandBuffer(cmd_buf, *Kernel::g_current_process,
- Kernel::g_handle_table);
-
- auto& domain_message_header = context.GetDomainMessageHeader();
- if (domain_message_header) {
- // If there is a DomainMessageHeader, then this is CommandType "Request"
- const u32 object_id{context.GetDomainMessageHeader()->object_id};
- switch (domain_message_header->command) {
- case IPC::DomainMessageHeader::CommandType::SendMessage:
- return request_handlers[object_id - 1]->HandleSyncRequest(context);
-
- case IPC::DomainMessageHeader::CommandType::CloseVirtualHandle: {
- LOG_DEBUG(IPC, "CloseVirtualHandle, object_id=0x%08X", object_id);
-
- request_handlers[object_id - 1] = nullptr;
-
- IPC::RequestBuilder rb{context, 2};
- rb.Push(RESULT_SUCCESS);
-
- return RESULT_SUCCESS;
- }
- }
-
- LOG_CRITICAL(IPC, "Unknown domain command=%d", domain_message_header->command.Value());
- UNIMPLEMENTED();
- }
- return request_handlers.front()->HandleSyncRequest(context);
-}
-
-} // namespace Kernel
diff --git a/src/core/hle/kernel/domain.h b/src/core/hle/kernel/domain.h
deleted file mode 100644
index 3fec3b0b2..000000000
--- a/src/core/hle/kernel/domain.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2018 yuzu emulator team
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#pragma once
-
-#include <memory>
-#include <string>
-#include <vector>
-#include "core/hle/kernel/sync_object.h"
-#include "core/hle/result.h"
-
-namespace Kernel {
-
-class Session;
-class SessionRequestHandler;
-
-class Domain final : public SyncObject {
-public:
- std::string GetTypeName() const override {
- return "Domain";
- }
-
- static const HandleType HANDLE_TYPE = HandleType::Domain;
- HandleType GetHandleType() const override {
- return HANDLE_TYPE;
- }
-
- static ResultVal<SharedPtr<Domain>> CreateFromSession(const Session& server);
-
- ResultCode SendSyncRequest(SharedPtr<Thread> thread) override;
-
- /// The name of this domain (optional)
- std::string name;
-
- std::vector<std::shared_ptr<SessionRequestHandler>> request_handlers;
-
-private:
- Domain() = default;
- ~Domain() override = default;
-
- static ResultVal<SharedPtr<Domain>> Create(std::string name = "Unknown");
-};
-
-} // namespace Kernel
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp
index ecf32c18a..2cd6de12e 100644
--- a/src/core/hle/kernel/hle_ipc.cpp
+++ b/src/core/hle/kernel/hle_ipc.cpp
@@ -7,7 +7,6 @@
#include "common/common_funcs.h"
#include "common/common_types.h"
#include "core/hle/ipc_helpers.h"
-#include "core/hle/kernel/domain.h"
#include "core/hle/kernel/handle_table.h"
#include "core/hle/kernel/hle_ipc.h"
#include "core/hle/kernel/kernel.h"
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h
index 4d9549e45..c77e58f3c 100644
--- a/src/core/hle/kernel/kernel.h
+++ b/src/core/hle/kernel/kernel.h
@@ -31,7 +31,6 @@ enum class HandleType : u32 {
ServerPort,
ClientSession,
ServerSession,
- Domain,
};
enum {
@@ -84,27 +83,12 @@ public:
case HandleType::CodeSet:
case HandleType::ClientPort:
case HandleType::ClientSession:
- case HandleType::Domain:
return false;
}
UNREACHABLE();
}
- /**
- * Check if svcSendSyncRequest can be called on the object
- * @return True svcSendSyncRequest can be called on the object, otherwise false
- */
- bool IsSyncable() const {
- switch (GetHandleType()) {
- case HandleType::ClientSession:
- case HandleType::Domain:
- return true;
- }
-
- UNREACHABLE();
- }
-
public:
static unsigned int next_object_id;
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index 516309036..4c0276cf0 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -20,7 +20,6 @@
#include "core/hle/kernel/shared_memory.h"
#include "core/hle/kernel/svc.h"
#include "core/hle/kernel/svc_wrap.h"
-#include "core/hle/kernel/sync_object.h"
#include "core/hle/kernel/thread.h"
#include "core/hle/lock.h"
#include "core/hle/result.h"
@@ -87,7 +86,7 @@ static ResultCode ConnectToNamedPort(Handle* out_handle, VAddr port_name_address
/// Makes a blocking IPC call to an OS service.
static ResultCode SendSyncRequest(Handle handle) {
- SharedPtr<SyncObject> session = g_handle_table.Get<SyncObject>(handle);
+ SharedPtr<ClientSession> session = g_handle_table.Get<ClientSession>(handle);
if (!session) {
LOG_ERROR(Kernel_SVC, "called with invalid handle=0x%08X", handle);
return ERR_INVALID_HANDLE;
diff --git a/src/core/hle/kernel/sync_object.h b/src/core/hle/kernel/sync_object.h
deleted file mode 100644
index f2befa2ea..000000000
--- a/src/core/hle/kernel/sync_object.h
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2018 yuzu emulator team
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#pragma once
-
-#include <boost/smart_ptr/intrusive_ptr.hpp>
-#include "core/hle/kernel/kernel.h"
-#include "core/hle/result.h"
-
-namespace Kernel {
-
-class Thread;
-
-/// Class that represents a Kernel object that svcSendSyncRequest can be called on
-class SyncObject : public Object {
-public:
- /**
- * Handle a sync request from the emulated application.
- * @param thread Thread that initiated the request.
- * @returns ResultCode from the operation.
- */
- virtual ResultCode SendSyncRequest(SharedPtr<Thread> thread) = 0;
-};
-
-// Specialization of DynamicObjectCast for SyncObjects
-template <>
-inline SharedPtr<SyncObject> DynamicObjectCast<SyncObject>(SharedPtr<Object> object) {
- if (object != nullptr && object->IsSyncable()) {
- return boost::static_pointer_cast<SyncObject>(std::move(object));
- }
- return nullptr;
-}
-
-} // namespace Kernel
diff --git a/src/core/hle/service/sm/controller.cpp b/src/core/hle/service/sm/controller.cpp
index 7b1c8ee37..e91d9d856 100644
--- a/src/core/hle/service/sm/controller.cpp
+++ b/src/core/hle/service/sm/controller.cpp
@@ -4,7 +4,6 @@
#include "common/logging/log.h"
#include "core/hle/ipc_helpers.h"
-#include "core/hle/kernel/domain.h"
#include "core/hle/service/sm/controller.h"
namespace Service {