WaitSynchronizationN: Refactor to fix several bugs
- Separate wait checking from waiting the current thread - Resume thread when wait_all=true only if all objects are available at once - Set output to correct wait object index when there are duplicate handles
This commit is contained in:
parent
aa01c57ae9
commit
6643673f28
8 changed files with 75 additions and 78 deletions
|
@ -65,18 +65,18 @@ public:
|
|||
virtual Kernel::HandleType GetHandleType() const = 0;
|
||||
|
||||
/**
|
||||
* Wait the current thread for kernel object to synchronize.
|
||||
* @param index Index of wait object (only applies to WaitSynchronizationN)
|
||||
* @return True if the current thread should wait as a result of the wait
|
||||
* Check if this object is available, (optionally) wait the current thread if not
|
||||
* @param wait_thread If true, wait the current thread if this object is unavailable
|
||||
* @return True if the current thread should wait due to this object being unavailable
|
||||
*/
|
||||
virtual ResultVal<bool> Wait(unsigned index = 0) {
|
||||
virtual ResultVal<bool> Wait(bool wait_thread) {
|
||||
LOG_ERROR(Kernel, "(UNIMPLEMENTED)");
|
||||
return UnimplementedFunction(ErrorModule::Kernel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Acquire/lock the kernel object if it is available
|
||||
* @return True if we were able to acquire the kernel object, otherwise false
|
||||
* Acquire/lock the this object if it is available
|
||||
* @return True if we were able to acquire this object, otherwise false
|
||||
*/
|
||||
virtual ResultVal<bool> Acquire() {
|
||||
LOG_ERROR(Kernel, "(UNIMPLEMENTED)");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue