k_writable_event.h 899 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Copyright 2021 yuzu 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/k_auto_object.h"
  6. #include "core/hle/kernel/slab_helpers.h"
  7. #include "core/hle/result.h"
  8. namespace Kernel {
  9. class KernelCore;
  10. class KEvent;
  11. class KWritableEvent final
  12. : public KAutoObjectWithSlabHeapAndContainer<KWritableEvent, KAutoObjectWithList> {
  13. KERNEL_AUTOOBJECT_TRAITS(KWritableEvent, KAutoObject);
  14. public:
  15. explicit KWritableEvent(KernelCore& kernel_);
  16. ~KWritableEvent() override;
  17. void Destroy() override;
  18. static void PostDestroy([[maybe_unused]] uintptr_t arg) {}
  19. void Initialize(KEvent* parent_, std::string&& name_);
  20. ResultCode Signal();
  21. ResultCode Clear();
  22. KEvent* GetParent() const {
  23. return parent;
  24. }
  25. private:
  26. KEvent* parent{};
  27. };
  28. } // namespace Kernel