Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Introduction of RTX/CMSIS 5 has broken semaphone signalling #4584
Before RTX 5, the semaphore count limit was UINT16_MAX as a side effect of using a uint16_t. RTX 5 reduced the count limit to the arbitrary value 1024. Additionally an assert was added that would halt if the semaphore count exceeded this limit.
This is especially problematic for applications that are using the semaphore for signaling. In RTX 4, the semaphore was the only library-friendly mechanism available for signaling, and in RTX 5 it is still the only option for the C++ layer.
This breaks the following higher-level apis:
There is currently no workaround or fix. In the C++ api, a semaphore is the only library friendly signaling mechanism. RTX has thread signals, but these are limited to a single bit-field that is shared with users. @YarivCol is working on a wrapper for the osEventFlags #4517, but it's not ready to merge yet.
Thus RTX 5 has introduced a change to the behaviour of semaphores and effectively ruled out their use for signaling.