ServiceFramework: Use separate copy of command buffer

Copy the IPC command buffer to/from the request context before/after the
handler is invoked. This is part of a move away from using global data
for handling IPC requests.
This commit is contained in:
Yuri Kunde Schlesner 2017-06-08 23:52:30 -07:00
parent 9a8a90b52b
commit 20e5abb308
3 changed files with 29 additions and 9 deletions

View file

@ -4,8 +4,11 @@
#pragma once
#include <array>
#include <memory>
#include <vector>
#include "common/common_types.h"
#include "core/hle/ipc.h"
#include "core/hle/kernel/kernel.h"
#include "core/hle/kernel/server_session.h"
@ -65,8 +68,8 @@ public:
~HLERequestContext();
/// Returns a pointer to the IPC command buffer for this request.
u32* CommandBuffer() const {
return cmd_buf;
u32* CommandBuffer() {
return cmd_buf.data();
}
/**
@ -80,7 +83,7 @@ public:
private:
friend class Service::ServiceFrameworkBase;
u32* cmd_buf = nullptr;
std::array<u32, IPC::COMMAND_BUFFER_LENGTH> cmd_buf;
SharedPtr<ServerSession> session;
};