Hello, sorry to trouble you. This week I found a conference paper named "
Which Is the Best Real-Time Operating System for Drones? Evaluation of the
Real-Time Characteristics of NuttX and ChibiOS", published in 2021, in this
paper nuttx9.0 and chibios are compared and analysed.As for the priority
inversion avoidance test, chapter V stated as follows:'''''''''''''''As for the
priority inversion avoidance test, both NuttX
and ChibiOS passed. However, with NuttX, we found that
there is no priority inheritance implemented for threads
blocked on a mutex but only on a binary semaphore. By
replacing the mutex in the test with a binary semaphore
(with the initial counter = 1), the priority inheritance works
perfectly. This problem is not explained in any official
documents of NuttX but should be known by the application
designer. It is probably because mutexes were introduced
later to the POSIX RT extensions and NuttX did not change
its implementation of priority inversion avoidance algorithm
to a mutex-based one. This misuse of binary semaphores on
priority inheritance may cause confusions for NuttX users
and possibly lead to wrong designs
''''''''''''''''''''''''''I have compared nuttx9.0 and nuttx10.2.0, and found
that CONFIG_PRIORITY_INHERITANCE had been support in pthread_mutex_init since
nuttx9.0. But why this paper get the conclusion that there is no priority
inheritance implemented for threads blocked on a mutex? who can help explain
this? Thanks very much.