diff options
Diffstat (limited to 'src/core/hle/kernel/thread.h')
| -rw-r--r-- | src/core/hle/kernel/thread.h | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h index e3c457408..62ce7bfda 100644 --- a/src/core/hle/kernel/thread.h +++ b/src/core/hle/kernel/thread.h | |||
| @@ -49,8 +49,7 @@ enum class ThreadStatus { | |||
| 49 | WaitHLEEvent, ///< Waiting for hle event to finish | 49 | WaitHLEEvent, ///< Waiting for hle event to finish |
| 50 | WaitSleep, ///< Waiting due to a SleepThread SVC | 50 | WaitSleep, ///< Waiting due to a SleepThread SVC |
| 51 | WaitIPC, ///< Waiting for the reply from an IPC request | 51 | WaitIPC, ///< Waiting for the reply from an IPC request |
| 52 | WaitSynchAny, ///< Waiting due to WaitSynch1 or WaitSynchN with wait_all = false | 52 | WaitSynch, ///< Waiting due to WaitSynchronization |
| 53 | WaitSynchAll, ///< Waiting due to WaitSynchronizationN with wait_all = true | ||
| 54 | WaitMutex, ///< Waiting due to an ArbitrateLock svc | 53 | WaitMutex, ///< Waiting due to an ArbitrateLock svc |
| 55 | WaitCondVar, ///< Waiting due to an WaitProcessWideKey svc | 54 | WaitCondVar, ///< Waiting due to an WaitProcessWideKey svc |
| 56 | WaitArb, ///< Waiting due to a SignalToAddress/WaitForAddress svc | 55 | WaitArb, ///< Waiting due to a SignalToAddress/WaitForAddress svc |
| @@ -185,24 +184,27 @@ public: | |||
| 185 | void CancelWakeupTimer(); | 184 | void CancelWakeupTimer(); |
| 186 | 185 | ||
| 187 | /** | 186 | /** |
| 188 | * Sets the result after the thread awakens (from either WaitSynchronization SVC) | 187 | * Sets the result after the thread awakens (from svcWaitSynchronization) |
| 189 | * @param result Value to set to the returned result | 188 | * @param result Value to set to the returned result |
| 190 | */ | 189 | */ |
| 191 | void SetWaitSynchronizationResult(ResultCode result); | 190 | void SetWaitSynchronizationResult(ResultCode result); |
| 192 | 191 | ||
| 193 | /** | 192 | /** |
| 194 | * Sets the output parameter value after the thread awakens (from WaitSynchronizationN SVC only) | 193 | * Sets the output parameter value after the thread awakens (from svcWaitSynchronization) |
| 195 | * @param output Value to set to the output parameter | 194 | * @param output Value to set to the output parameter |
| 196 | */ | 195 | */ |
| 197 | void SetWaitSynchronizationOutput(s32 output); | 196 | void SetWaitSynchronizationOutput(s32 output); |
| 198 | 197 | ||
| 199 | /** | 198 | /** |
| 200 | * Retrieves the index that this particular object occupies in the list of objects | 199 | * Retrieves the index that this particular object occupies in the list of objects |
| 201 | * that the thread passed to WaitSynchronizationN, starting the search from the last element. | 200 | * that the thread passed to WaitSynchronization, starting the search from the last element. |
| 202 | * It is used to set the output value of WaitSynchronizationN when the thread is awakened. | 201 | * |
| 202 | * It is used to set the output index of WaitSynchronization when the thread is awakened. | ||
| 203 | * | ||
| 203 | * When a thread wakes up due to an object signal, the kernel will use the index of the last | 204 | * When a thread wakes up due to an object signal, the kernel will use the index of the last |
| 204 | * matching object in the wait objects list in case of having multiple instances of the same | 205 | * matching object in the wait objects list in case of having multiple instances of the same |
| 205 | * object in the list. | 206 | * object in the list. |
| 207 | * | ||
| 206 | * @param object Object to query the index of. | 208 | * @param object Object to query the index of. |
| 207 | */ | 209 | */ |
| 208 | s32 GetWaitObjectIndex(const WaitObject* object) const; | 210 | s32 GetWaitObjectIndex(const WaitObject* object) const; |
| @@ -239,13 +241,9 @@ public: | |||
| 239 | */ | 241 | */ |
| 240 | VAddr GetCommandBufferAddress() const; | 242 | VAddr GetCommandBufferAddress() const; |
| 241 | 243 | ||
| 242 | /** | 244 | /// Returns whether this thread is waiting on objects from a WaitSynchronization call. |
| 243 | * Returns whether this thread is waiting for all the objects in | 245 | bool IsSleepingOnWait() const { |
| 244 | * its wait list to become ready, as a result of a WaitSynchronizationN call | 246 | return status == ThreadStatus::WaitSynch; |
| 245 | * with wait_all = true. | ||
| 246 | */ | ||
| 247 | bool IsSleepingOnWaitAll() const { | ||
| 248 | return status == ThreadStatus::WaitSynchAll; | ||
| 249 | } | 247 | } |
| 250 | 248 | ||
| 251 | ThreadContext& GetContext() { | 249 | ThreadContext& GetContext() { |
| @@ -423,7 +421,7 @@ private: | |||
| 423 | Process* owner_process; | 421 | Process* owner_process; |
| 424 | 422 | ||
| 425 | /// Objects that the thread is waiting on, in the same order as they were | 423 | /// Objects that the thread is waiting on, in the same order as they were |
| 426 | /// passed to WaitSynchronization1/N. | 424 | /// passed to WaitSynchronization. |
| 427 | ThreadWaitObjects wait_objects; | 425 | ThreadWaitObjects wait_objects; |
| 428 | 426 | ||
| 429 | /// List of threads that are waiting for a mutex that is held by this thread. | 427 | /// List of threads that are waiting for a mutex that is held by this thread. |
| @@ -449,7 +447,7 @@ private: | |||
| 449 | Handle callback_handle = 0; | 447 | Handle callback_handle = 0; |
| 450 | 448 | ||
| 451 | /// Callback that will be invoked when the thread is resumed from a waiting state. If the thread | 449 | /// Callback that will be invoked when the thread is resumed from a waiting state. If the thread |
| 452 | /// was waiting via WaitSynchronizationN then the object will be the last object that became | 450 | /// was waiting via WaitSynchronization then the object will be the last object that became |
| 453 | /// available. In case of a timeout, the object will be nullptr. | 451 | /// available. In case of a timeout, the object will be nullptr. |
| 454 | WakeupCallback wakeup_callback; | 452 | WakeupCallback wakeup_callback; |
| 455 | 453 | ||