blob: 23856378ca4aa50530f586e5c2c7e6903db1cc78 (
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
|
#include "libultra_internal.h"
void osSetThreadPri(OSThread* thread, OSPri pri) {
register u32 int_disabled = __osDisableInt();
if (thread == NULL) {
thread = __osRunningThread;
}
if (thread->priority != pri) {
thread->priority = pri;
if (thread != __osRunningThread) {
if (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(int_disabled);
}
|