mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	kernel: added event module to support creation of CTR "Event" objects
This commit is contained in:
		
							parent
							
								
									d493d725ac
								
							
						
					
					
						commit
						fd69fd0325
					
				
					 4 changed files with 127 additions and 0 deletions
				
			
		
							
								
								
									
										91
									
								
								src/core/hle/kernel/event.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								src/core/hle/kernel/event.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,91 @@ | |||
| // Copyright 2014 Citra Emulator Project
 | ||||
| // Licensed under GPLv2
 | ||||
| // Refer to the license.txt file included.  
 | ||||
| 
 | ||||
| #include <map> | ||||
| #include <vector> | ||||
| 
 | ||||
| #include "common/common.h" | ||||
| 
 | ||||
| #include "core/hle/kernel/kernel.h" | ||||
| #include "core/hle/kernel/event.h" | ||||
| 
 | ||||
| namespace Kernel { | ||||
| 
 | ||||
| class Event : public Object { | ||||
| public: | ||||
|     const char* GetTypeName() { return "Event"; } | ||||
| 
 | ||||
|     static Kernel::HandleType GetStaticHandleType() {  return Kernel::HandleType::Event; } | ||||
|     Kernel::HandleType GetHandleType() const { return Kernel::HandleType::Event; } | ||||
| 
 | ||||
|     ResetType intitial_reset_type;  ///< ResetType specified at Event initialization
 | ||||
|     ResetType reset_type;           ///< Current ResetType
 | ||||
| 
 | ||||
|     bool locked;                    ///< Current locked state
 | ||||
| 
 | ||||
|     /**
 | ||||
|      * Synchronize kernel object  | ||||
|      * @param wait Boolean wait set if current thread should wait as a result of sync operation | ||||
|      * @return Result of operation, 0 on success, otherwise error code | ||||
|      */ | ||||
|     Result SyncRequest(bool* wait) { | ||||
|         // TODO(bunnei): ImplementMe
 | ||||
|         ERROR_LOG(KERNEL, "Unimplemented function Event::SyncRequest"); | ||||
|         return 0; | ||||
|     } | ||||
| 
 | ||||
|     /**
 | ||||
|      * Wait for kernel object to synchronize | ||||
|      * @param wait Boolean wait set if current thread should wait as a result of sync operation | ||||
|      * @return Result of operation, 0 on success, otherwise error code | ||||
|      */ | ||||
|     Result WaitSynchronization(bool* wait) { | ||||
|         // TODO(bunnei): ImplementMe
 | ||||
|         *wait = locked; | ||||
|         if (reset_type != RESETTYPE_STICKY) { | ||||
|             locked = true; | ||||
|         } | ||||
|         return 0; | ||||
|     } | ||||
| }; | ||||
| 
 | ||||
| /**
 | ||||
|  * Clears an event | ||||
|  * @param handle Handle to event to clear | ||||
|  * @return Result of operation, 0 on success, otherwise error code | ||||
|  */ | ||||
| Result ClearEvent(Handle handle) { | ||||
|     ERROR_LOG(KERNEL, "Unimplemented function ClearEvent"); | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|  * Creates an event | ||||
|  * @param handle Reference to handle for the newly created mutex | ||||
|  * @param reset_type ResetType describing how to create event | ||||
|  * @return Handle to newly created object | ||||
|  */ | ||||
| Event* CreateEvent(Handle& handle, const ResetType reset_type) { | ||||
|     Event* evt = new Event; | ||||
| 
 | ||||
|     handle = Kernel::g_object_pool.Create(evt); | ||||
| 
 | ||||
|     evt->reset_type = evt->intitial_reset_type = reset_type; | ||||
|     evt->locked = false; | ||||
| 
 | ||||
|     return evt; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|  * Creates an event | ||||
|  * @param reset_type ResetType describing how to create event | ||||
|  * @return Handle to newly created object | ||||
|  */ | ||||
| Handle CreateEvent(const ResetType reset_type) { | ||||
|     Handle handle; | ||||
|     Event* evt = CreateEvent(handle, reset_type); | ||||
|     return handle; | ||||
| } | ||||
| 
 | ||||
| } // namespace
 | ||||
							
								
								
									
										28
									
								
								src/core/hle/kernel/event.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/core/hle/kernel/event.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| // Copyright 2014 Citra Emulator Project
 | ||||
| // Licensed under GPLv2
 | ||||
| // Refer to the license.txt file included.  
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "common/common_types.h" | ||||
| 
 | ||||
| #include "core/hle/kernel/kernel.h" | ||||
| #include "core/hle/svc.h" | ||||
| 
 | ||||
| namespace Kernel { | ||||
| 
 | ||||
| /**
 | ||||
|  * Clears an event | ||||
|  * @param handle Handle to event to clear | ||||
|  * @return Result of operation, 0 on success, otherwise error code | ||||
|  */ | ||||
| Result ClearEvent(Handle handle); | ||||
| 
 | ||||
| /**
 | ||||
|  * Creates an event | ||||
|  * @param reset_type ResetType describing how to create event | ||||
|  * @return Handle to newly created object | ||||
|  */ | ||||
| Handle CreateEvent(const ResetType reset_type); | ||||
| 
 | ||||
| } // namespace
 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue