1
0
Fork 0

Merge pull request #957 from Subv/hwtest_crash

Kernel/Scheduling: Clean up a thread's wait_objects when its scheduled.
This commit is contained in:
bunnei 2015-07-21 12:11:48 -04:00
commit dcc8f1bef2
1 changed files with 8 additions and 0 deletions

View File

@ -217,6 +217,14 @@ static void SwitchContext(Thread* new_thread) {
new_thread->context.pc -= thumb_mode ? 2 : 4; new_thread->context.pc -= thumb_mode ? 2 : 4;
} }
// Clean up the thread's wait_objects, they'll be restored if needed during
// the svcWaitSynchronization call
for (int i = 0; i < new_thread->wait_objects.size(); ++i) {
SharedPtr<WaitObject> object = new_thread->wait_objects[i];
object->RemoveWaitingThread(new_thread);
}
new_thread->wait_objects.clear();
ready_queue.remove(new_thread->current_priority, new_thread); ready_queue.remove(new_thread->current_priority, new_thread);
new_thread->status = THREADSTATUS_RUNNING; new_thread->status = THREADSTATUS_RUNNING;