event.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Copyright 2014 Citra Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include "common/common_types.h"
  6. #include "core/hle/kernel/kernel.h"
  7. #include "core/hle/kernel/wait_object.h"
  8. namespace Kernel {
  9. class Event final : public WaitObject {
  10. public:
  11. /**
  12. * Creates an event
  13. * @param reset_type ResetType describing how to create event
  14. * @param name Optional name of event
  15. */
  16. static SharedPtr<Event> Create(ResetType reset_type, std::string name = "Unknown");
  17. std::string GetTypeName() const override {
  18. return "Event";
  19. }
  20. std::string GetName() const override {
  21. return name;
  22. }
  23. static const HandleType HANDLE_TYPE = HandleType::Event;
  24. HandleType GetHandleType() const override {
  25. return HANDLE_TYPE;
  26. }
  27. ResetType reset_type; ///< Current ResetType
  28. bool signaled; ///< Whether the event has already been signaled
  29. std::string name; ///< Name of event (optional)
  30. bool ShouldWait(Thread* thread) const override;
  31. void Acquire(Thread* thread) override;
  32. void WakeupAllWaitingThreads() override;
  33. void Signal();
  34. void Clear();
  35. private:
  36. Event();
  37. ~Event() override;
  38. };
  39. } // namespace