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); } /**