Files
banjo-kazooie/src/core1/os/stopthread.c
2024-10-08 20:39:44 +02:00

31 lines
614 B
C

#include <ultra64.h>
extern OSThread *__osRunningThread;
void osStopThread(OSThread *t)
{
register u32 saveMask = __osDisableInt();
register u16 state;
if (t == NULL)
{
state = OS_STATE_RUNNING;
}
else
{
state = t->state;
}
switch (state)
{
case OS_STATE_RUNNING:
__osRunningThread->state = OS_STATE_STOPPED;
__osEnqueueAndYield(NULL);
break;
case OS_STATE_RUNNABLE:
case OS_STATE_WAITING:
t->state = OS_STATE_STOPPED;
__osDequeueThread(t->queue, t);
break;
}
__osRestoreInt(saveMask);
}