Kernel: Allow clearing request_objects to re-use buffer space

Reduces the necessary allocation to max(in_handles, out_handles) rather
than (in_handles + out_handles).
This commit is contained in:
Yuri Kunde Schlesner 2017-06-10 17:57:08 -07:00
parent 8cb65fe65a
commit 92ca422088
3 changed files with 14 additions and 0 deletions

View file

@ -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) {

View file

@ -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;