summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel
diff options
context:
space:
mode:
authorYuri Kunde Schlesner <yuriks@yuriks.net>2017-06-11 02:57:08 +0200
committerYuri Kunde Schlesner <yuriks@yuriks.net>2017-06-11 22:10:21 +0200
commit92ca422088eb49c31e8b6146872548c456e56f3e (patch)
treea67048e517446efc43afbca27f8acc05de654604 /src/core/hle/kernel
parentKernel: Basic support for IPC translation for HLE services (diff)
downloadyuzu-92ca422088eb49c31e8b6146872548c456e56f3e.tar
yuzu-92ca422088eb49c31e8b6146872548c456e56f3e.tar.gz
yuzu-92ca422088eb49c31e8b6146872548c456e56f3e.tar.bz2
yuzu-92ca422088eb49c31e8b6146872548c456e56f3e.tar.lz
yuzu-92ca422088eb49c31e8b6146872548c456e56f3e.tar.xz
yuzu-92ca422088eb49c31e8b6146872548c456e56f3e.tar.zst
yuzu-92ca422088eb49c31e8b6146872548c456e56f3e.zip
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r--src/core/hle/kernel/hle_ipc.cpp4
-rw-r--r--src/core/hle/kernel/hle_ipc.h7
2 files changed, 11 insertions, 0 deletions
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp
index 656405dd6..6cf1886cf 100644
--- a/src/core/hle/kernel/hle_ipc.cpp
+++ b/src/core/hle/kernel/hle_ipc.cpp
@@ -35,6 +35,10 @@ u32 HLERequestContext::AddOutgoingHandle(SharedPtr<Object> object) {
return request_handles.size() - 1;
}
+void HLERequestContext::ClearIncomingObjects() {
+ request_handles.clear();
+}
+
ResultCode HLERequestContext::PopulateFromIncomingCommandBuffer(const u32_le* src_cmdbuf,
Process& src_process,
HandleTable& src_table) {
diff --git a/src/core/hle/kernel/hle_ipc.h b/src/core/hle/kernel/hle_ipc.h
index d6ebf113c..1022dece8 100644
--- a/src/core/hle/kernel/hle_ipc.h
+++ b/src/core/hle/kernel/hle_ipc.h
@@ -110,6 +110,13 @@ public:
*/
u32 AddOutgoingHandle(SharedPtr<Object> object);
+ /**
+ * Discards all Objects from the context, invalidating all ids. This may be called after reading
+ * out all incoming objects, so that the buffer memory can be re-used for outgoing handles, but
+ * this is not required.
+ */
+ void ClearIncomingObjects();
+
private:
friend class Service::ServiceFrameworkBase;