Shipwright/soh/src/libultra/os/setthreadpri.c
M4xw 39cc86c260 git subrepo clone https://github.com/HarbourMasters/soh.git
subrepo:
  subdir:   "soh"
  merged:   "ba904bbd0"
upstream:
  origin:   "https://github.com/HarbourMasters/soh.git"
  branch:   "master"
  commit:   "ba904bbd0"
git-subrepo:
  version:  "0.4.1"
  origin:   "???"
  commit:   "???"
2022-03-22 02:51:23 +01:00

24 lines
643 B
C

#include "global.h"
void osSetThreadPri(OSThread* thread, OSPri pri) {
register u32 prevInt = __osDisableInt();
if (thread == NULL) {
thread = __osRunningThread;
}
if (thread->priority != pri) {
thread->priority = pri;
if (thread != __osRunningThread && thread->state != 1) {
__osDequeueThread(thread->queue, thread);
__osEnqueueThread(thread->queue, thread);
}
if (__osRunningThread->priority < __osRunQueue->priority) {
__osRunningThread->state = 2;
__osEnqueueAndYield(&__osRunQueue);
}
}
__osRestoreInt(prevInt);
}