diff options
Diffstat (limited to 'src/os/__osDequeueThread.c')
| -rw-r--r-- | src/os/__osDequeueThread.c | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/src/os/__osDequeueThread.c b/src/os/__osDequeueThread.c index 8a9a8f483..009114aab 100644 --- a/src/os/__osDequeueThread.c +++ b/src/os/__osDequeueThread.c @@ -1,23 +1,24 @@ #include "libultra_internal.h" -NO_REORDER OSThread* __osThreadTail = NULL; -NO_REORDER u32 __osTest = -1; -NO_REORDER OSThread* __osRunQueue = (OSThread*) &__osThreadTail; -NO_REORDER OSThread* __osActiveQueue = (OSThread*) &__osThreadTail; -OSThread* __osRunningThread = NULL; -OSThread* __osFaultedThread = NULL; +struct __osThreadTail __osThreadTail = { NULL, -1 }; +OSThread* __osRunQueue = (OSThread*) &__osThreadTail; +OSThread* __osActiveQueue = (OSThread*) &__osThreadTail; +OSThread* __osRunningThread = { 0 }; +OSThread* __osFaultedThread = { 0 }; -void __osDequeueThread(OSThread** queue, OSThread* thread) { - register OSThread** a2; - register OSThread* a3; - a2 = queue; - a3 = *a2; - while (a3 != NULL) { - if (a3 == thread) { - *a2 = thread->next; +void __osDequeueThread(register OSThread** queue, register OSThread* t) { + register OSThread* pred; + register OSThread* succ; + + pred = (OSThread*) queue; + succ = pred->next; + + while (succ != NULL) { + if (succ == t) { + pred->next = t->next; return; } - a2 = &a3->next; - a3 = *a2; + pred = succ; + succ = pred->next; } } |
