summaryrefslogtreecommitdiff
path: root/src/os/__osDequeueThread.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/os/__osDequeueThread.c')
-rw-r--r--src/os/__osDequeueThread.c33
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;
}
}