#include void osSetThreadPri(OSThread* thread, OSPri pri) { register u32 s0 = __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(s0); }