diff options
| -rw-r--r-- | src/core/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | src/core/hle/ipc_helpers.h | 1 | ||||
| -rw-r--r-- | src/core/hle/kernel/client_session.h | 3 | ||||
| -rw-r--r-- | src/core/hle/kernel/domain.cpp | 63 | ||||
| -rw-r--r-- | src/core/hle/kernel/domain.h | 45 | ||||
| -rw-r--r-- | src/core/hle/kernel/hle_ipc.cpp | 1 | ||||
| -rw-r--r-- | src/core/hle/kernel/kernel.h | 16 | ||||
| -rw-r--r-- | src/core/hle/kernel/svc.cpp | 3 | ||||
| -rw-r--r-- | src/core/hle/kernel/sync_object.h | 35 | ||||
| -rw-r--r-- | src/core/hle/service/sm/controller.cpp | 1 | 
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 { | 
