You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We use FreeRTOS a lot but come up against a snag when implementing temporary task priority boosting functionality.
The problem is that when mutexes are enabled in FreeRTOSConfig.h the value set by vTaskPrioritySet() is the base priority but the value returned by uxTaskPriorityGet() is the dynamic priority which may not be the same if the task currently owns a mutex that is waited on by a higher priority thread. So a task can't get its base priority, change it for a while and then restore it.
We work around this using vTaskGetInfo() to implement a uxTaskBasePriorityGet() but that is very inefficient.
It would be far better if the functionality were implemented in task.c and exposed in task.h.
The text was updated successfully, but these errors were encountered:
Uh oh!
There was an error while loading. Please reload this page.
We use FreeRTOS a lot but come up against a snag when implementing temporary task priority boosting functionality.
The problem is that when mutexes are enabled in FreeRTOSConfig.h the value set by vTaskPrioritySet() is the base priority but the value returned by uxTaskPriorityGet() is the dynamic priority which may not be the same if the task currently owns a mutex that is waited on by a higher priority thread. So a task can't get its base priority, change it for a while and then restore it.
We work around this using vTaskGetInfo() to implement a uxTaskBasePriorityGet() but that is very inefficient.
It would be far better if the functionality were implemented in task.c and exposed in task.h.
The text was updated successfully, but these errors were encountered: