hle: kernel: Implement KEvent.
This commit is contained in:
		| @@ -160,6 +160,8 @@ add_library(core STATIC | ||||
|     hle/kernel/k_affinity_mask.h | ||||
|     hle/kernel/k_condition_variable.cpp | ||||
|     hle/kernel/k_condition_variable.h | ||||
|     hle/kernel/k_event.cpp | ||||
|     hle/kernel/k_event.h | ||||
|     hle/kernel/k_light_condition_variable.h | ||||
|     hle/kernel/k_light_lock.cpp | ||||
|     hle/kernel/k_light_lock.h | ||||
|   | ||||
							
								
								
									
										32
									
								
								src/core/hle/kernel/k_event.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/core/hle/kernel/k_event.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| // Copyright 2021 yuzu emulator team | ||||
| // Licensed under GPLv2 or any later version | ||||
| // Refer to the license.txt file included. | ||||
|  | ||||
| #include "core/hle/kernel/k_event.h" | ||||
| #include "core/hle/kernel/k_readable_event.h" | ||||
| #include "core/hle/kernel/k_writable_event.h" | ||||
|  | ||||
| namespace Kernel { | ||||
|  | ||||
| KEvent::KEvent(KernelCore& kernel, std::string&& name) : Object{kernel, std::move(name)} {} | ||||
|  | ||||
| KEvent::~KEvent() = default; | ||||
|  | ||||
| std::shared_ptr<KEvent> KEvent::Create(KernelCore& kernel, std::string&& name) { | ||||
|     return std::make_shared<KEvent>(kernel, std::move(name)); | ||||
| } | ||||
|  | ||||
| void KEvent::Initialize() { | ||||
|     // Create our sub events. | ||||
|     readable_event = std::make_shared<KReadableEvent>(kernel, GetName() + ":Readable"); | ||||
|     writable_event = std::make_shared<KWritableEvent>(kernel, GetName() + ":Writable"); | ||||
|  | ||||
|     // Initialize our sub sessions. | ||||
|     readable_event->Initialize(this); | ||||
|     writable_event->Initialize(this); | ||||
|  | ||||
|     // Mark initialized. | ||||
|     initialized = true; | ||||
| } | ||||
|  | ||||
| } // namespace Kernel | ||||
							
								
								
									
										57
									
								
								src/core/hle/kernel/k_event.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								src/core/hle/kernel/k_event.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | ||||
| // Copyright 2021 yuzu emulator team | ||||
| // Licensed under GPLv2 or any later version | ||||
| // Refer to the license.txt file included. | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include "core/hle/kernel/object.h" | ||||
|  | ||||
| namespace Kernel { | ||||
|  | ||||
| class KernelCore; | ||||
| class KReadableEvent; | ||||
| class KWritableEvent; | ||||
|  | ||||
| class KEvent final : public Object { | ||||
| public: | ||||
|     explicit KEvent(KernelCore& kernel, std::string&& name); | ||||
|     ~KEvent() override; | ||||
|  | ||||
|     static std::shared_ptr<KEvent> Create(KernelCore& kernel, std::string&& name); | ||||
|  | ||||
|     void Initialize(); | ||||
|  | ||||
|     void Finalize() override {} | ||||
|  | ||||
|     std::string GetTypeName() const override { | ||||
|         return "KEvent"; | ||||
|     } | ||||
|  | ||||
|     static constexpr HandleType HANDLE_TYPE = HandleType::Event; | ||||
|     HandleType GetHandleType() const override { | ||||
|         return HANDLE_TYPE; | ||||
|     } | ||||
|  | ||||
|     std::shared_ptr<KReadableEvent>& GetReadableEvent() { | ||||
|         return readable_event; | ||||
|     } | ||||
|  | ||||
|     std::shared_ptr<KWritableEvent>& GetWritableEvent() { | ||||
|         return writable_event; | ||||
|     } | ||||
|  | ||||
|     const std::shared_ptr<KReadableEvent>& GetReadableEvent() const { | ||||
|         return readable_event; | ||||
|     } | ||||
|  | ||||
|     const std::shared_ptr<KWritableEvent>& GetWritableEvent() const { | ||||
|         return writable_event; | ||||
|     } | ||||
|  | ||||
| private: | ||||
|     std::shared_ptr<KReadableEvent> readable_event; | ||||
|     std::shared_ptr<KWritableEvent> writable_event; | ||||
|     bool initialized{}; | ||||
| }; | ||||
|  | ||||
| } // namespace Kernel | ||||
		Reference in New Issue
	
	Block a user