k_readable_event.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // Copyright 2021 yuzu emulator team
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include "core/hle/kernel/k_auto_object.h"
  6. #include "core/hle/kernel/k_synchronization_object.h"
  7. #include "core/hle/kernel/slab_helpers.h"
  8. #include "core/hle/result.h"
  9. namespace Kernel {
  10. class KernelCore;
  11. class KEvent;
  12. class KReadableEvent : public KSynchronizationObject {
  13. KERNEL_AUTOOBJECT_TRAITS(KReadableEvent, KSynchronizationObject);
  14. public:
  15. explicit KReadableEvent(KernelCore& kernel_);
  16. ~KReadableEvent() override;
  17. void Initialize(KEvent* parent_event_, std::string&& name_) {
  18. is_signaled = false;
  19. parent = parent_event_;
  20. name = std::move(name_);
  21. }
  22. KEvent* GetParent() const {
  23. return parent;
  24. }
  25. bool IsSignaled() const override;
  26. void Destroy() override;
  27. ResultCode Signal();
  28. ResultCode Clear();
  29. ResultCode Reset();
  30. private:
  31. bool is_signaled{};
  32. KEvent* parent{};
  33. };
  34. } // namespace Kernel