mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	
						commit
						7f8c99899b
					
				
					 15 changed files with 30 additions and 39 deletions
				
			
		|  | @ -10,6 +10,7 @@ | ||||||
| #include "core/memory.h" | #include "core/memory.h" | ||||||
| #include "core/hle/hle.h" | #include "core/hle/hle.h" | ||||||
| #include "core/hle/result.h" | #include "core/hle/result.h" | ||||||
|  | #include "core/hle/svc.h" | ||||||
| 
 | 
 | ||||||
| namespace HLE { | namespace HLE { | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -35,7 +35,7 @@ void Event::Acquire() { | ||||||
|     ASSERT_MSG(!ShouldWait(), "object unavailable!"); |     ASSERT_MSG(!ShouldWait(), "object unavailable!"); | ||||||
| 
 | 
 | ||||||
|     // Release the event if it's not sticky...
 |     // Release the event if it's not sticky...
 | ||||||
|     if (reset_type != RESETTYPE_STICKY) |     if (reset_type != ResetType::Sticky) | ||||||
|         signaled = false; |         signaled = false; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -7,10 +7,16 @@ | ||||||
| #include "common/common_types.h" | #include "common/common_types.h" | ||||||
| 
 | 
 | ||||||
| #include "core/hle/kernel/kernel.h" | #include "core/hle/kernel/kernel.h" | ||||||
| #include "core/hle/svc.h" |  | ||||||
| 
 | 
 | ||||||
| namespace Kernel { | namespace Kernel { | ||||||
| 
 | 
 | ||||||
|  | enum class ResetType { | ||||||
|  |     OneShot, | ||||||
|  |     Sticky, | ||||||
|  |     Pulse, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| class Event final : public WaitObject { | class Event final : public WaitObject { | ||||||
| public: | public: | ||||||
|     /**
 |     /**
 | ||||||
|  |  | ||||||
|  | @ -43,7 +43,7 @@ bool Timer::ShouldWait() { | ||||||
| void Timer::Acquire() { | void Timer::Acquire() { | ||||||
|     ASSERT_MSG( !ShouldWait(), "object unavailable!"); |     ASSERT_MSG( !ShouldWait(), "object unavailable!"); | ||||||
| 
 | 
 | ||||||
|     if (reset_type == RESETTYPE_ONESHOT) |     if (reset_type == ResetType::OneShot) | ||||||
|         signaled = false; |         signaled = false; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -6,8 +6,8 @@ | ||||||
| 
 | 
 | ||||||
| #include "common/common_types.h" | #include "common/common_types.h" | ||||||
| 
 | 
 | ||||||
|  | #include "core/hle/kernel/event.h" | ||||||
| #include "core/hle/kernel/kernel.h" | #include "core/hle/kernel/kernel.h" | ||||||
| #include "core/hle/svc.h" |  | ||||||
| 
 | 
 | ||||||
| namespace Kernel { | namespace Kernel { | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -434,8 +434,8 @@ void Init() { | ||||||
|     cpu_percent = 0; |     cpu_percent = 0; | ||||||
| 
 | 
 | ||||||
|     // TODO(bunnei): Check if these are created in Initialize or on APT process startup.
 |     // TODO(bunnei): Check if these are created in Initialize or on APT process startup.
 | ||||||
|     notification_event = Kernel::Event::Create(RESETTYPE_ONESHOT, "APT_U:Notification"); |     notification_event = Kernel::Event::Create(Kernel::ResetType::OneShot, "APT_U:Notification"); | ||||||
|     parameter_event = Kernel::Event::Create(RESETTYPE_ONESHOT, "APT_U:Start"); |     parameter_event = Kernel::Event::Create(Kernel::ResetType::OneShot, "APT_U:Start"); | ||||||
| 
 | 
 | ||||||
|     next_parameter.signal = static_cast<u32>(SignalType::AppJustStarted); |     next_parameter.signal = static_cast<u32>(SignalType::AppJustStarted); | ||||||
|     next_parameter.destination_id = 0x300; |     next_parameter.destination_id = 0x300; | ||||||
|  |  | ||||||
|  | @ -293,10 +293,10 @@ void Init() { | ||||||
|     AddService(new CAM_S_Interface); |     AddService(new CAM_S_Interface); | ||||||
|     AddService(new CAM_U_Interface); |     AddService(new CAM_U_Interface); | ||||||
| 
 | 
 | ||||||
|     completion_event_cam1 = Kernel::Event::Create(RESETTYPE_ONESHOT, "CAM_U::completion_event_cam1"); |     completion_event_cam1 = Kernel::Event::Create(ResetType::OneShot, "CAM_U::completion_event_cam1"); | ||||||
|     completion_event_cam2 = Kernel::Event::Create(RESETTYPE_ONESHOT, "CAM_U::completion_event_cam2"); |     completion_event_cam2 = Kernel::Event::Create(ResetType::OneShot, "CAM_U::completion_event_cam2"); | ||||||
|     interrupt_error_event = Kernel::Event::Create(RESETTYPE_ONESHOT, "CAM_U::interrupt_error_event"); |     interrupt_error_event = Kernel::Event::Create(ResetType::OneShot, "CAM_U::interrupt_error_event"); | ||||||
|     vsync_interrupt_error_event = Kernel::Event::Create(RESETTYPE_ONESHOT, "CAM_U::vsync_interrupt_error_event"); |     vsync_interrupt_error_event = Kernel::Event::Create(ResetType::OneShot, "CAM_U::vsync_interrupt_error_event"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Shutdown() { | void Shutdown() { | ||||||
|  |  | ||||||
|  | @ -457,7 +457,7 @@ const Interface::FunctionInfo FunctionTable[] = { | ||||||
| // Interface class
 | // Interface class
 | ||||||
| 
 | 
 | ||||||
| Interface::Interface() { | Interface::Interface() { | ||||||
|     semaphore_event = Kernel::Event::Create(RESETTYPE_ONESHOT, "DSP_DSP::semaphore_event"); |     semaphore_event = Kernel::Event::Create(Kernel::ResetType::OneShot, "DSP_DSP::semaphore_event"); | ||||||
|     read_pipe_count = 0; |     read_pipe_count = 0; | ||||||
| 
 | 
 | ||||||
|     Register(FunctionTable); |     Register(FunctionTable); | ||||||
|  |  | ||||||
|  | @ -201,11 +201,11 @@ void Init() { | ||||||
|     next_touch_index = 0; |     next_touch_index = 0; | ||||||
| 
 | 
 | ||||||
|     // Create event handles
 |     // Create event handles
 | ||||||
|     event_pad_or_touch_1 = Event::Create(RESETTYPE_ONESHOT, "HID:EventPadOrTouch1"); |     event_pad_or_touch_1 = Event::Create(ResetType::OneShot, "HID:EventPadOrTouch1"); | ||||||
|     event_pad_or_touch_2 = Event::Create(RESETTYPE_ONESHOT, "HID:EventPadOrTouch2"); |     event_pad_or_touch_2 = Event::Create(ResetType::OneShot, "HID:EventPadOrTouch2"); | ||||||
|     event_accelerometer  = Event::Create(RESETTYPE_ONESHOT, "HID:EventAccelerometer"); |     event_accelerometer  = Event::Create(ResetType::OneShot, "HID:EventAccelerometer"); | ||||||
|     event_gyroscope      = Event::Create(RESETTYPE_ONESHOT, "HID:EventGyroscope"); |     event_gyroscope      = Event::Create(ResetType::OneShot, "HID:EventGyroscope"); | ||||||
|     event_debug_pad      = Event::Create(RESETTYPE_ONESHOT, "HID:EventDebugPad"); |     event_debug_pad      = Event::Create(ResetType::OneShot, "HID:EventDebugPad"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Shutdown() { | void Shutdown() { | ||||||
|  |  | ||||||
|  | @ -99,8 +99,8 @@ void Init() { | ||||||
|     transfer_shared_memory = nullptr; |     transfer_shared_memory = nullptr; | ||||||
| 
 | 
 | ||||||
|     // Create event handle(s)
 |     // Create event handle(s)
 | ||||||
|     handle_event  = Event::Create(RESETTYPE_ONESHOT, "IR:HandleEvent"); |     handle_event  = Event::Create(ResetType::OneShot, "IR:HandleEvent"); | ||||||
|     conn_status_event = Event::Create(RESETTYPE_ONESHOT, "IR:ConnectionStatusEvent"); |     conn_status_event = Event::Create(ResetType::OneShot, "IR:ConnectionStatusEvent"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Shutdown() { | void Shutdown() { | ||||||
|  |  | ||||||
|  | @ -138,7 +138,7 @@ const Interface::FunctionInfo FunctionTable[] = { | ||||||
| // Interface class
 | // Interface class
 | ||||||
| 
 | 
 | ||||||
| Interface::Interface() { | Interface::Interface() { | ||||||
|     handle_event = Kernel::Event::Create(RESETTYPE_ONESHOT, "NWM_UDS::handle_event"); |     handle_event = Kernel::Event::Create(Kernel::ResetType::OneShot, "NWM_UDS::handle_event"); | ||||||
| 
 | 
 | ||||||
|     Register(FunctionTable); |     Register(FunctionTable); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -25,7 +25,7 @@ static void GetProcSemaphore(Service::Interface* self) { | ||||||
|     u32* cmd_buff = Kernel::GetCommandBuffer(); |     u32* cmd_buff = Kernel::GetCommandBuffer(); | ||||||
| 
 | 
 | ||||||
|     // TODO(bunnei): Change to a semaphore once these have been implemented
 |     // TODO(bunnei): Change to a semaphore once these have been implemented
 | ||||||
|     event_handle = Kernel::Event::Create(RESETTYPE_ONESHOT, "SRV:Event"); |     event_handle = Kernel::Event::Create(Kernel::ResetType::OneShot, "SRV:Event"); | ||||||
|     event_handle->Clear(); |     event_handle->Clear(); | ||||||
| 
 | 
 | ||||||
|     cmd_buff[1] = 0; // No error
 |     cmd_buff[1] = 0; // No error
 | ||||||
|  |  | ||||||
|  | @ -424,7 +424,7 @@ const Interface::FunctionInfo FunctionTable[] = { | ||||||
| // Interface class
 | // Interface class
 | ||||||
| 
 | 
 | ||||||
| Interface::Interface() { | Interface::Interface() { | ||||||
|     completion_event = Kernel::Event::Create(RESETTYPE_ONESHOT, "Y2R:Completed"); |     completion_event = Kernel::Event::Create(Kernel::ResetType::OneShot, "Y2R:Completed"); | ||||||
|     std::memset(&conversion, 0, sizeof(conversion)); |     std::memset(&conversion, 0, sizeof(conversion)); | ||||||
| 
 | 
 | ||||||
|     Register(FunctionTable); |     Register(FunctionTable); | ||||||
|  |  | ||||||
|  | @ -661,7 +661,7 @@ static ResultCode QueryMemory(MemoryInfo* memory_info, PageInfo* page_info, u32 | ||||||
| static ResultCode CreateEvent(Handle* out_handle, u32 reset_type) { | static ResultCode CreateEvent(Handle* out_handle, u32 reset_type) { | ||||||
|     using Kernel::Event; |     using Kernel::Event; | ||||||
| 
 | 
 | ||||||
|     SharedPtr<Event> evt = Kernel::Event::Create(static_cast<ResetType>(reset_type)); |     SharedPtr<Event> evt = Event::Create(static_cast<Kernel::ResetType>(reset_type)); | ||||||
|     CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(evt))); |     CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(evt))); | ||||||
| 
 | 
 | ||||||
|     LOG_TRACE(Kernel_SVC, "called reset_type=0x%08X : created handle=0x%08X", |     LOG_TRACE(Kernel_SVC, "called reset_type=0x%08X : created handle=0x%08X", | ||||||
|  | @ -707,7 +707,7 @@ static ResultCode ClearEvent(Handle handle) { | ||||||
| static ResultCode CreateTimer(Handle* out_handle, u32 reset_type) { | static ResultCode CreateTimer(Handle* out_handle, u32 reset_type) { | ||||||
|     using Kernel::Timer; |     using Kernel::Timer; | ||||||
| 
 | 
 | ||||||
|     SharedPtr<Timer> timer = Timer::Create(static_cast<ResetType>(reset_type)); |     SharedPtr<Timer> timer = Timer::Create(static_cast<Kernel::ResetType>(reset_type)); | ||||||
|     CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(timer))); |     CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(timer))); | ||||||
| 
 | 
 | ||||||
|     LOG_TRACE(Kernel_SVC, "called reset_type=0x%08X : created handle=0x%08X", |     LOG_TRACE(Kernel_SVC, "called reset_type=0x%08X : created handle=0x%08X", | ||||||
|  |  | ||||||
|  | @ -20,22 +20,6 @@ struct PageInfo { | ||||||
|     u32 flags; |     u32 flags; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| enum ResetType { |  | ||||||
|     RESETTYPE_ONESHOT, |  | ||||||
|     RESETTYPE_STICKY, |  | ||||||
|     RESETTYPE_PULSE, |  | ||||||
|     RESETTYPE_MAX_BIT = (1u << 31), |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| enum ArbitrationType { |  | ||||||
|     ARBITRATIONTYPE_SIGNAL, |  | ||||||
|     ARBITRATIONTYPE_WAIT_IF_LESS_THAN, |  | ||||||
|     ARBITRATIONTYPE_DECREMENT_AND_WAIT_IF_LESS_THAN, |  | ||||||
|     ARBITRATIONTYPE_WAIT_IF_LESS_THAN_WITH_TIMEOUT, |  | ||||||
|     ARBITRATIONTYPE_DECREMENT_AND_WAIT_IF_LESS_THAN_WITH_TIMEOUT, |  | ||||||
|     ARBITRATIONTYPE_MAX_BIT = (1u << 31) |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| ////////////////////////////////////////////////////////////////////////////////////////////////////
 | ////////////////////////////////////////////////////////////////////////////////////////////////////
 | ||||||
| // Namespace SVC
 | // Namespace SVC
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue