mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-31 07:59:02 -05:00 
			
		
		
		
	SVC: Implemented CancelSynchronization.
This commit is contained in:
		| @@ -22,6 +22,8 @@ enum { | ||||
|     // Confirmed Switch OS error codes | ||||
|     InvalidHandle = 114, | ||||
|     Timeout = 117, | ||||
|     SynchronizationCanceled = 118, | ||||
|     TooLarge = 119, | ||||
| }; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -216,6 +216,22 @@ static ResultCode WaitSynchronization(Handle* index, VAddr handles_address, u64 | ||||
|     return WaitSynchronization1(objects[0], GetCurrentThread(), nano_seconds); | ||||
| } | ||||
|  | ||||
| /// Resumes a thread waiting on WaitSynchronization | ||||
| static ResultCode CancelSynchronization(Handle thread_handle) { | ||||
|     LOG_TRACE(Kernel_SVC, "called thread=0x%08X", thread_handle); | ||||
|  | ||||
|     const SharedPtr<Thread> thread = g_handle_table.Get<Thread>(thread_handle); | ||||
|     if (!thread) { | ||||
|         return ERR_INVALID_HANDLE; | ||||
|     } | ||||
|  | ||||
|     ASSERT(thread->status == THREADSTATUS_WAIT_SYNCH_ANY); | ||||
|     thread->SetWaitSynchronizationResult( | ||||
|         ResultCode(ErrorModule::Kernel, ErrCodes::SynchronizationCanceled)); | ||||
|     thread->ResumeFromWait(); | ||||
|     return RESULT_SUCCESS; | ||||
| } | ||||
|  | ||||
| /// Attempts to locks a mutex, creating it if it does not already exist | ||||
| static ResultCode LockMutex(Handle holding_thread_handle, VAddr mutex_addr, | ||||
|                             Handle requesting_thread_handle) { | ||||
| @@ -646,7 +662,7 @@ static const FunctionDef SVC_Table[] = { | ||||
|     {0x16, SvcWrap<CloseHandle>, "CloseHandle"}, | ||||
|     {0x17, nullptr, "ResetSignal"}, | ||||
|     {0x18, SvcWrap<WaitSynchronization>, "WaitSynchronization"}, | ||||
|     {0x19, nullptr, "CancelSynchronization"}, | ||||
|     {0x19, SvcWrap<CancelSynchronization>, "CancelSynchronization"}, | ||||
|     {0x1A, SvcWrap<LockMutex>, "LockMutex"}, | ||||
|     {0x1B, SvcWrap<UnlockMutex>, "UnlockMutex"}, | ||||
|     {0x1C, SvcWrap<WaitProcessWideKeyAtomic>, "WaitProcessWideKeyAtomic"}, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Subv
					Subv