summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrozlette <uberpanzermensch@gmail.com>2018-10-25 23:54:24 -0500
committerrozlette <uberpanzermensch@gmail.com>2018-10-25 23:54:24 -0500
commit991bd83ea540c6f0b620e5e977f9394da3fdbb03 (patch)
tree038b786eef50c05c9f6fcda04862fe1d7824dcdc /src
parent21b019c010c96bdc45d330cc746490df9781896c (diff)
Decompile {g,s}etthreadpri.c
Diffstat (limited to 'src')
-rw-r--r--src/libultra/os/getthreadpri.c8
-rw-r--r--src/libultra/os/setthreadpri.c27
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);
+}