summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/hle_ipc.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2017-12-29 06:36:22 +0100
committerbunnei <bunneidev@gmail.com>2017-12-29 06:36:22 +0100
commitdcdaac8a0b5ae5b8d251c3713d3024287b0720b1 (patch)
tree35cb5631e4d00d1582aa238cf93abdc73b6afa8a /src/core/hle/kernel/hle_ipc.h
parentap, aoc_u: Minor cleanup. (diff)
downloadyuzu-dcdaac8a0b5ae5b8d251c3713d3024287b0720b1.tar
yuzu-dcdaac8a0b5ae5b8d251c3713d3024287b0720b1.tar.gz
yuzu-dcdaac8a0b5ae5b8d251c3713d3024287b0720b1.tar.bz2
yuzu-dcdaac8a0b5ae5b8d251c3713d3024287b0720b1.tar.lz
yuzu-dcdaac8a0b5ae5b8d251c3713d3024287b0720b1.tar.xz
yuzu-dcdaac8a0b5ae5b8d251c3713d3024287b0720b1.tar.zst
yuzu-dcdaac8a0b5ae5b8d251c3713d3024287b0720b1.zip
Diffstat (limited to '')
-rw-r--r--src/core/hle/kernel/hle_ipc.h29
1 files changed, 24 insertions, 5 deletions
diff --git a/src/core/hle/kernel/hle_ipc.h b/src/core/hle/kernel/hle_ipc.h
index bf8cfc2a3..7de13b36b 100644
--- a/src/core/hle/kernel/hle_ipc.h
+++ b/src/core/hle/kernel/hle_ipc.h
@@ -20,7 +20,9 @@ class ServiceFrameworkBase;
namespace Kernel {
+class Domain;
class HandleTable;
+class HLERequestContext;
class Process;
/**
@@ -40,7 +42,7 @@ public:
* this request (ServerSession, Originator thread, Translated command buffer, etc).
* @returns ResultCode the result code of the translate operation.
*/
- virtual ResultCode HandleSyncRequest(SharedPtr<ServerSession> server_session) = 0;
+ virtual ResultCode HandleSyncRequest(Kernel::HLERequestContext& context) = 0;
/**
* Signals that a client has just connected to this HLE handler and keeps the
@@ -84,7 +86,8 @@ protected:
*/
class HLERequestContext {
public:
- HLERequestContext(SharedPtr<ServerSession> session);
+ HLERequestContext(SharedPtr<Kernel::Domain> domain);
+ HLERequestContext(SharedPtr<Kernel::ServerSession> session);
~HLERequestContext();
/// Returns a pointer to the IPC command buffer for this request.
@@ -93,11 +96,18 @@ public:
}
/**
+ * Returns the domain through which this request was made.
+ */
+ const SharedPtr<Kernel::Domain>& Domain() const {
+ return domain;
+ }
+
+ /**
* Returns the session through which this request was made. This can be used as a map key to
* access per-client data on services.
*/
- SharedPtr<ServerSession> Session() const {
- return session;
+ const SharedPtr<Kernel::ServerSession>& ServerSession() const {
+ return server_session;
}
/**
@@ -144,9 +154,18 @@ public:
return buffer_x_desciptors;
}
+ const std::unique_ptr<IPC::DomainMessageHeader>& GetDomainMessageHeader() const {
+ return domain_message_header;
+ }
+
+ bool IsDomain() const {
+ return domain != nullptr;
+ }
+
private:
std::array<u32, IPC::COMMAND_BUFFER_LENGTH> cmd_buf;
- SharedPtr<ServerSession> session;
+ SharedPtr<Kernel::Domain> domain;
+ SharedPtr<Kernel::ServerSession> server_session;
// TODO(yuriks): Check common usage of this and optimize size accordingly
boost::container::small_vector<SharedPtr<Object>, 8> request_handles;