readable_event.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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 "core/hle/kernel/object.h"
  6. #include "core/hle/kernel/wait_object.h"
  7. namespace Kernel {
  8. class KernelCore;
  9. class WritableEvent;
  10. class ReadableEvent final : public WaitObject {
  11. friend class WritableEvent;
  12. public:
  13. ~ReadableEvent() override;
  14. std::string GetTypeName() const override {
  15. return "ReadableEvent";
  16. }
  17. std::string GetName() const override {
  18. return name;
  19. }
  20. ResetType GetResetType() const {
  21. return reset_type;
  22. }
  23. static const HandleType HANDLE_TYPE = HandleType::ReadableEvent;
  24. HandleType GetHandleType() const override {
  25. return HANDLE_TYPE;
  26. }
  27. bool ShouldWait(Thread* thread) const override;
  28. void Acquire(Thread* thread) override;
  29. void WakeupAllWaitingThreads() override;
  30. void Clear();
  31. private:
  32. explicit ReadableEvent(KernelCore& kernel);
  33. void Signal();
  34. ResetType reset_type;
  35. bool signaled;
  36. std::string name; ///< Name of event (optional)
  37. };
  38. } // namespace Kernel