| Age | Commit message (Collapse) | Author |
|
During normal operation, a thread waiting on an WaitObject and the
object hold mutual references to each other for the duration of the
wait.
If a process is forcefully terminated (The CTR kernel has a SVC to do
this, TerminateProcess, though no equivalent exists for threads.) its
threads would also be stopped and destroyed, leaving dangling pointers
in the WaitObjects.
The solution is to simply have the Thread remove itself from WaitObjects
when it is stopped. The vector of Threads in WaitObject has also been
changed to hold SharedPtrs, just in case. (Better to have a reference
cycle than a crash.)
|
|
This should speed up compile times a bit, as well as enable more liberal
use of forward declarations. (Due to SharedPtr not trying to emit the
destructor anymore.)
|
|
|
|
|
|
|
|
|
|
This is to support the removal of GetHandle soon
|
|
|
|
|
|
Remove unnecessary/unused struct variables.
|
|
|
|
|
|
It was only being used in two places, where it was replaced by a local
constant.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- ReleaseNextThread->WakeupNextThread
- ReleaseAllWaitingThreads->WakeupAllWaitingThreads.
|
|
|
|
pure virtual.
|
|
|
|
|
|
|
|
|
|
WaitObject safely.
|
|
made no sense.
|
|
|
|
- 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Thread: Prevent waking a thread multiple times.
|
|
If a thread was woken up by something, cancel the wakeup timeout.
|
|
|
|
|
|
|
|
|