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. Best regards, Petro On Fri, Mar 31, 2023, 4:30 PM Gregory Nutt <spudan...@gmail.com> wrote: > > > Yes and No. For counting semaphores we have multiple holders for example > > with priorities 10, 50 and 90. Now a task with priority 100 comes and > wants > > to take a semaphore. Priority which of the holders should be increased? > The > > lowest or the highest holder? With a real-time point of view it should be > > 90 boosted to 100, but is the current implementation doing that? > Currently ALL holders are boosted to the priority of the highest > priority waiter. > >