summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/event.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/kernel/event.h')
-rw-r--r--src/core/hle/kernel/event.h51
1 files changed, 30 insertions, 21 deletions
diff --git a/src/core/hle/kernel/event.h b/src/core/hle/kernel/event.h
index c08b12ee1..2c3e6b14e 100644
--- a/src/core/hle/kernel/event.h
+++ b/src/core/hle/kernel/event.h
@@ -11,26 +11,35 @@
namespace Kernel {
-/**
- * Signals an event
- * @param handle Handle to event to signal
- * @return Result of operation, 0 on success, otherwise error code
- */
-ResultCode SignalEvent(const Handle handle);
-
-/**
- * Clears an event
- * @param handle Handle to event to clear
- * @return Result of operation, 0 on success, otherwise error code
- */
-ResultCode ClearEvent(Handle handle);
-
-/**
- * Creates an event
- * @param reset_type ResetType describing how to create event
- * @param name Optional name of event
- * @return Handle to newly created Event object
- */
-Handle CreateEvent(const ResetType reset_type, const std::string& name="Unknown");
+class Event final : public WaitObject {
+public:
+ /**
+ * Creates an event
+ * @param reset_type ResetType describing how to create event
+ * @param name Optional name of event
+ */
+ static ResultVal<SharedPtr<Event>> Create(ResetType reset_type, std::string name = "Unknown");
+
+ std::string GetTypeName() const override { return "Event"; }
+ std::string GetName() const override { return name; }
+
+ static const HandleType HANDLE_TYPE = HandleType::Event;
+ HandleType GetHandleType() const override { return HANDLE_TYPE; }
+
+ ResetType intitial_reset_type; ///< ResetType specified at Event initialization
+ ResetType reset_type; ///< Current ResetType
+
+ bool signaled; ///< Whether the event has already been signaled
+ std::string name; ///< Name of event (optional)
+
+ bool ShouldWait() override;
+ void Acquire() override;
+
+ void Signal();
+ void Clear();
+
+private:
+ Event() = default;
+};
} // namespace