3. Move priority inheritance from nxsem to nxmutex, and optimize the
performance of priority inheritance;
That will break every a lot of people's code. There is probably a lot
of application logic that depends on priority inheritance working on
counting semaphores. Removing that will problems for a lot of people.
This is, however, consistent with how Linux works.
AFAIK there is nothing that prohibits semaphores from supporting
priority inheritance -- other than the fact that there is no "owner" of
a semaphore as there is for a mutex. Priority inheritance is very
important for the correct behavior of some real time systems so we were
able to use priority inheritance with counting semaphores by adding some
non-standard interfaces to control whether a semaphore supports priority
inheritance or not by its usage:
https://cwiki.apache.org/confluence/display/NUTTX/Signaling+Semaphores+and+Priority+Inheritance
I have mixed feelings myself and hope that we get some consensus through
dialog. One one hand, it is important to stay faithful to documented
standard and undocumented conventions for the use the a POSIX/Unix
systems. But on the other hand, unlike other OSs that strive toward
standard conformance, we are an RTOS and must satisfy certain
requirements for deterministic, real time behavior.
What do you all think?