_Pardon the brevity of this post, I wrote up a fairly length discussion only to have it flagged as SPAM; which instead of letting me just log in decided to just delete all my work. _
In vxWorks I could have n tasks all blocked on the same rate semaphore, and have a ‘scheduler’ task reset the rate semaphore causing all blocked tasks to become ready at which point they’d run in priority order. The biggest benefit was the ‘scheduler’ task didn’t have to know how many tasks were in the system, just when to release which rates.
How would I do something similar in freertos? I bought the PDFs hoping they would have the solution (it didn’t). The examples in the book barely discuss dealing with more than one task. If I only had 1-2 tasks I wouldn’t need an OS.
The queue API specifically says it only release ONE reader on a block, which isn’t good. And since semaphores seems to be 2nd class citizens they suffer the same unfortunate fate.