blob: 39ec0d159c6dd3ad846dda731f3ea8501dc21ef0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#include "ultra64.h"
void osSetThreadPri(OSThread* thread, OSPri p) {
register u32 saveMask = __osDisableInt();
if (thread == NULL) {
thread = __osRunningThread;
}
if (thread->priority != p) {
thread->priority = p;
if (thread != __osRunningThread && thread->state != OS_STATE_STOPPED) {
__osDequeueThread(thread->queue, thread);
__osEnqueueThread(thread->queue, thread);
}
if (__osRunningThread->priority < __osRunQueue->priority) {
__osRunningThread->state = OS_STATE_RUNNABLE;
__osEnqueueAndYield(&__osRunQueue);
}
}
__osRestoreInt(saveMask);
}
|