From a3aa7aaf0be9d95766b9c123b7c32b6505084c3c Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 4 Dec 2018 18:54:18 -0500 Subject: kernel/readable_event: Add member function for enforcing a strict reset contract svcResetSignal relies on the event instance to have already been signaled before attempting to reset it. If this isn't the case, then an error code has to be returned. --- src/core/hle/kernel/readable_event.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/core/hle/kernel/readable_event.h') diff --git a/src/core/hle/kernel/readable_event.h b/src/core/hle/kernel/readable_event.h index 867ff3051..80b3b0aba 100644 --- a/src/core/hle/kernel/readable_event.h +++ b/src/core/hle/kernel/readable_event.h @@ -7,6 +7,8 @@ #include "core/hle/kernel/object.h" #include "core/hle/kernel/wait_object.h" +union ResultCode; + namespace Kernel { class KernelCore; @@ -39,8 +41,17 @@ public: void WakeupAllWaitingThreads() override; + /// Unconditionally clears the readable event's state. void Clear(); + /// Clears the readable event's state if and only if it + /// has already been signaled. + /// + /// @pre The event must be in a signaled state. If this event + /// is in an unsignaled state and this function is called, + /// then ERR_INVALID_STATE will be returned. + ResultCode Reset(); + private: explicit ReadableEvent(KernelCore& kernel); -- cgit v1.2.3