From 991bd83ea540c6f0b620e5e977f9394da3fdbb03 Mon Sep 17 00:00:00 2001 From: rozlette Date: Thu, 25 Oct 2018 23:54:24 -0500 Subject: [PATCH] Decompile {g,s}etthreadpri.c --- codescript.txt | 4 ++-- src/libultra/os/getthreadpri.c | 8 ++++++++ src/libultra/os/setthreadpri.c | 27 +++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 src/libultra/os/getthreadpri.c create mode 100644 src/libultra/os/setthreadpri.c diff --git a/codescript.txt b/codescript.txt index a321595201..da887bdde1 100644 --- a/codescript.txt +++ b/codescript.txt @@ -99,8 +99,8 @@ SECTIONS build/asm/si.o(.text) build/asm/boot_0x8008FA60.o(.text) build/src/libultra/os/jammesg.o(.text) - build/asm/setthreadpri.o(.text) - build/asm/getthreadpri.o(.text) + build/src/libultra/os/setthreadpri.o(.text) + build/src/libultra/os/getthreadpri.o(.text) build/asm/boot_0x8008FD00.o(.text) build/asm/boot_0x8008FE60.o(.text) build/asm/boot_0x8008FEB0.o(.text) diff --git a/src/libultra/os/getthreadpri.c b/src/libultra/os/getthreadpri.c new file mode 100644 index 0000000000..db572ff740 --- /dev/null +++ b/src/libultra/os/getthreadpri.c @@ -0,0 +1,8 @@ +#include + +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 0000000000..fe3cbca39b --- /dev/null +++ b/src/libultra/os/setthreadpri.c @@ -0,0 +1,27 @@ +#include + +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); +}