SVC: WaitSynchronization add Termination Pending Result.

This commit is contained in:
Fernando Sahmkow 2020-03-07 13:37:47 -04:00
parent 725bac1404
commit 535c542d84
2 changed files with 5 additions and 1 deletions

View file

@ -12,6 +12,7 @@ namespace Kernel {
constexpr ResultCode ERR_MAX_CONNECTIONS_REACHED{ErrorModule::Kernel, 7}; constexpr ResultCode ERR_MAX_CONNECTIONS_REACHED{ErrorModule::Kernel, 7};
constexpr ResultCode ERR_INVALID_CAPABILITY_DESCRIPTOR{ErrorModule::Kernel, 14}; constexpr ResultCode ERR_INVALID_CAPABILITY_DESCRIPTOR{ErrorModule::Kernel, 14};
constexpr ResultCode ERR_THREAD_TERMINATING{ErrorModule::Kernel, 59};
constexpr ResultCode ERR_INVALID_SIZE{ErrorModule::Kernel, 101}; constexpr ResultCode ERR_INVALID_SIZE{ErrorModule::Kernel, 101};
constexpr ResultCode ERR_INVALID_ADDRESS{ErrorModule::Kernel, 102}; constexpr ResultCode ERR_INVALID_ADDRESS{ErrorModule::Kernel, 102};
constexpr ResultCode ERR_OUT_OF_RESOURCES{ErrorModule::Kernel, 103}; constexpr ResultCode ERR_OUT_OF_RESOURCES{ErrorModule::Kernel, 103};

View file

@ -59,7 +59,10 @@ std::pair<ResultCode, Handle> Synchronization::WaitFor(
return {RESULT_TIMEOUT, InvalidHandle}; return {RESULT_TIMEOUT, InvalidHandle};
} }
/// TODO(Blinkhawk): Check for termination pending if (thread->IsPendingTermination()) {
lock.CancelSleep();
return {ERR_THREAD_TERMINATING, InvalidHandle};
}
if (thread->IsSyncCancelled()) { if (thread->IsSyncCancelled()) {
thread->SetSyncCancelled(false); thread->SetSyncCancelled(false);