I still see more questions than answers. As semaphores can be posted from
the interrupt level. Let's take next example:
The counting semaphore manages DMA channels.
Task allocates a DMA channels and takes counting semaphore (becomes a
holder), but posting a semaphore is done from DMA completion can back as
channel is freed there. The holder task may still do some activities on the
background while DMA is working. But current priority boost schema will
rise it's priority (even if boost will not lead to faster posting of a
semaphore). This is more theoretical description, but describes the state
of problem.

I think we can task about inheritance only if take/post are done from task
level and currently only mutex ensure that.

That is not true.  Posting from an interrupt never boosts priority and, hence, never causes inheritance of priority.  It can only cause a drop / restoration in priority.  That may result in context switches which can be done from the interrupt level with no problem.  I don't see any issue.  Certainly this works, it is done often and works very well.

This is an important feature of the real time behavior.  We can't lose this behavior.


Reply via email to