diff options
| author | rozlette <uberpanzermensch@gmail.com> | 2018-10-25 23:54:24 -0500 |
|---|---|---|
| committer | rozlette <uberpanzermensch@gmail.com> | 2018-10-25 23:54:24 -0500 |
| commit | 991bd83ea540c6f0b620e5e977f9394da3fdbb03 (patch) | |
| tree | 038b786eef50c05c9f6fcda04862fe1d7824dcdc /src | |
| parent | 21b019c010c96bdc45d330cc746490df9781896c (diff) | |
Decompile {g,s}etthreadpri.c
Diffstat (limited to 'src')
| -rw-r--r-- | src/libultra/os/getthreadpri.c | 8 | ||||
| -rw-r--r-- | src/libultra/os/setthreadpri.c | 27 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/libultra/os/getthreadpri.c b/src/libultra/os/getthreadpri.c new file mode 100644 index 000000000..db572ff74 --- /dev/null +++ b/src/libultra/os/getthreadpri.c @@ -0,0 +1,8 @@ +#include <osint.h> + +OSPri osGetThreadPri(OSThread* t) { + if (t == NULL) { + t = __osRunningThread; + } + return t->priority; +} diff --git a/src/libultra/os/setthreadpri.c b/src/libultra/os/setthreadpri.c new file mode 100644 index 000000000..fe3cbca39 --- /dev/null +++ b/src/libultra/os/setthreadpri.c @@ -0,0 +1,27 @@ +#include <osint.h> + +void osSetThreadPri(OSThread* t, OSPri p) { + register u32 saveMask; + + saveMask = __osDisableInt(); + + if (t == NULL) { + t = __osRunningThread; + } + + if (t->priority != p) { + t->priority = p; + + if (t != __osRunningThread && t->state != 1) { + __osDequeueThread(t->queue, t); + __osEnqueueThread(t->queue, t); + } + + if (__osRunningThread->priority < __osRunQueue->priority) { + __osRunningThread->state = 2; + __osEnqueueAndYield(&__osRunQueue); + } + } + + __osRestoreInt(saveMask); +} |
