Skip to content

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

Closed
@adbridge

Description

@adbridge

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:

#4449
#4571
#4575

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions