From dcdaac8a0b5ae5b8d251c3713d3024287b0720b1 Mon Sep 17 00:00:00 2001 From: bunnei Date: Fri, 29 Dec 2017 00:36:22 -0500 Subject: kernel: Fix implementation of ConvertSessionToDomain. --- src/core/hle/ipc_helpers.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/core/hle/ipc_helpers.h') diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h index 94bd4e0cc..28a2b8545 100644 --- a/src/core/hle/ipc_helpers.h +++ b/src/core/hle/ipc_helpers.h @@ -9,6 +9,7 @@ #include #include #include "core/hle/ipc.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" @@ -80,11 +81,24 @@ public: AlignWithPadding(); + if (context.IsDomain()) { + PushRaw(IPC::DomainMessageHeader{}); + } + IPC::DataPayloadHeader data_payload_header{}; data_payload_header.magic = Common::MakeMagic('S', 'F', 'C', 'O'); PushRaw(data_payload_header); } + template + void PushIpcInterface() { + auto& request_handlers = context->Domain()->request_handlers; + request_handlers.push_back(std::move(std::make_shared()->shared_from_this())); + Push(RESULT_SUCCESS); + AlignWithPadding(); + Push(static_cast(request_handlers.size())); + } + // Validate on destruction, as there shouldn't be any case where we don't want it ~RequestBuilder() { ValidateHeader(); -- cgit v1.2.3