New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduction of RTX/CMSIS 5 has broken semaphone signalling #4584

adbridge opened this Issue Jun 19, 2017 · 1 comment


None yet
5 participants

adbridge commented Jun 19, 2017

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.


This comment has been minimized.


ciarmcom commented Dec 16, 2017

ARM Internal Ref: IOTMORF-1831

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment