Merge pull request #19 from tidklaas/master

Fix potential TCB loss
This commit is contained in:
Kelvin Lawson
2016-05-24 23:22:56 +01:00

View File

@@ -332,6 +332,13 @@ void atomSched (uint8_t timer_tick)
*/
static void atomThreadSwitch(ATOM_TCB *old_tcb, ATOM_TCB *new_tcb)
{
/**
* The context switch will shift execution to a different thread. The
* new thread is now ready to run so clear its suspend status in
* preparation for it waking up.
*/
new_tcb->suspended = FALSE;
/**
* Check if the new thread is actually the current one, in which
* case we don't need to do any context switch. This can happen
@@ -343,13 +350,6 @@ static void atomThreadSwitch(ATOM_TCB *old_tcb, ATOM_TCB *new_tcb)
/* Set the new currently-running thread pointer */
curr_tcb = new_tcb;
/**
* The context switch will shift execution to a different thread. The
* new thread is now ready to run so clear its suspend status in
* preparation for it waking up.
*/
new_tcb->suspended = FALSE;
/* Call the architecture-specific context switch */
archContextSwitch (old_tcb, new_tcb);
}