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?

Reply via email to