From 12e3a10f357dfa418d4e352eefe23766a1f23e9f Mon Sep 17 00:00:00 2001 From: Francisco Javier Trujillo Mata Date: Wed, 3 Apr 2024 23:14:04 +0200 Subject: [PATCH] Fix priorities --- ee/libpthreadglue/src/osal.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/ee/libpthreadglue/src/osal.c b/ee/libpthreadglue/src/osal.c index 33fe06b62dcf..e8adfd4b5385 100644 --- a/ee/libpthreadglue/src/osal.c +++ b/ee/libpthreadglue/src/osal.c @@ -179,6 +179,12 @@ pte_osResult pte_osTerminate(void) { * Threads * ***************************************************************************/ + +static inline int invert_priority(int priority) +{ + return (pte_osThreadGetMinPriority() - priority) + pte_osThreadGetMaxPriority(); +} + #ifdef F_pte_osThreadCreate pte_osResult pte_osThreadCreate(pte_osThreadEntryPoint entryPoint, int stackSize, @@ -247,7 +253,7 @@ pte_osResult pte_osThreadCreate(pte_osThreadEntryPoint entryPoint, eethread.stack = stack; eethread.stack_size = stackSize; eethread.gp_reg = &_gp; - eethread.initial_priority = initialPriority; + eethread.initial_priority = invert_priority(initialPriority); threadId = CreateThread(&eethread); /* In order to emulate TLS functionality, we append the address of the TLS structure that we @@ -476,21 +482,21 @@ void pte_osThreadSleep(unsigned int msecs) #ifdef F_pte_osThreadGetMinPriority int pte_osThreadGetMinPriority() { - return 17; + return pte_osThreadGetDefaultPriority() - 32; } #endif #ifdef F_pte_osThreadGetMaxPriority int pte_osThreadGetMaxPriority() { - return 30; + return pte_osThreadGetDefaultPriority() + 32; } #endif #ifdef F_pte_osThreadGetDefaultPriority int pte_osThreadGetDefaultPriority() { - return 18; + return 80; } #endif