From 9bb2f4eadf9919f796d1bdee799b0ca5f2ae9b3f Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Mon, 28 Dec 2020 18:53:33 +0000 Subject: [PATCH] Fixed CMSIS RTOS wrapper. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@14000 27425a3e-05d8-49a3-a47f-9c15f0e5edd8 --- os/common/abstractions/cmsis_os/cmsis_os.c | 11 ++++++----- os/common/abstractions/cmsis_os/cmsis_os.h | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/os/common/abstractions/cmsis_os/cmsis_os.c b/os/common/abstractions/cmsis_os/cmsis_os.c index 6948d44b3..7c878ccab 100644 --- a/os/common/abstractions/cmsis_os/cmsis_os.c +++ b/os/common/abstractions/cmsis_os/cmsis_os.c @@ -181,8 +181,9 @@ osStatus osThreadSetPriority(osThreadId thread_id, osPriority newprio) { /* Changing priority.*/ #if CH_CFG_USE_MUTEXES - if ((tp->prio == tp->realprio) || ((tprio_t)newprio > tp->prio)) - tp->prio = (tprio_t)newprio; + if ((tp->hdr.pqueue.prio == tp->realprio) || + ((tprio_t)newprio > tp->hdr.pqueue.prio)) + tp->hdr.pqueue.prio = (tprio_t)newprio; tp->realprio = (tprio_t)newprio; #else tp->prio = (tprio_t)newprio; @@ -207,8 +208,8 @@ osStatus osThreadSetPriority(osThreadId thread_id, osPriority newprio) { case CH_STATE_SNDMSGQ: #endif /* Re-enqueues tp with its new priority on the queue.*/ - queue_prio_insert(queue_dequeue(tp), - (threads_queue_t *)tp->u.wtobjp); + ch_sch_prio_insert(ch_queue_dequeue(&tp->hdr.queue), + (ch_queue_t *)tp->u.wtobjp); break; #endif case CH_STATE_READY: @@ -217,7 +218,7 @@ osStatus osThreadSetPriority(osThreadId thread_id, osPriority newprio) { tp->state = CH_STATE_CURRENT; #endif /* Re-enqueues tp with its new priority on the ready list.*/ - chSchReadyI(queue_dequeue(tp)); + chSchReadyI((thread_t *)ch_queue_dequeue(&tp->hdr.queue)); break; } diff --git a/os/common/abstractions/cmsis_os/cmsis_os.h b/os/common/abstractions/cmsis_os/cmsis_os.h index b74c62e2e..d6e9876a4 100644 --- a/os/common/abstractions/cmsis_os/cmsis_os.h +++ b/os/common/abstractions/cmsis_os/cmsis_os.h @@ -556,7 +556,7 @@ static inline osStatus osThreadYield(void) { */ static inline osPriority osThreadGetPriority(osThreadId thread_id) { - return (osPriority)(NORMALPRIO - thread_id->prio); + return (osPriority)(NORMALPRIO - thread_id->hdr.pqueue.prio); } /**