This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

CMSIS-RTOS osSignalSet not immediate

I have several tasks running with different priority levels. The problem I am seeing is that a high priority task that is waiting w/timeout on a signal is not being put into the running state immediately after the signal is set by a task running with normal priority.

I expect the higher priority task to run immediately after the signal is set. Instead I am seeing the high priority task take a very long time before it returns with the status = signal received (not timeout).

I have a pretty long timeout on the signal wait so I know its not timing out and the status is correct that a signal was received but it took a good 20-30 seconds before it returned with that status.

There is a below normal priority task running that is polling a user interface and doing a osThreadYield(). during this 20-30 second period I stopped the processor to see what it was doing and it was executing this below normal priority task and calling the yield function but no context which to the higher task.

The signal does work but the context switch is taking a unacceptably long time to return to the highest priority task.

All other tasks are sleeping on mailboxes or other signals. So no blocking or other things to stop the signal.

Does anyone have any idea or have seen this type of behavior with the CMSIS-RTOS?

0