rtos: Unbreak semaphore, trade assert for saturation with original limit

Before rtx 5, the max count on semaphores was UINT16_MAX, aftewards it
was decreased to 1024 with an assert on overflow.

This is especially problematic for semaphores used for signaling, since
there is no replacement currently available in C++.
pull/4596/head
Christopher Haster 2017-06-16 13:36:47 -05:00 committed by adbridge
parent 38370530b8
commit 250319a619
2 changed files with 6 additions and 1 deletions

View File

@ -1014,6 +1014,11 @@ extern "C" void EvrRtxMutexError (osMutexId_t mutex_id, int32_t status)
extern "C" void EvrRtxSemaphoreError (osSemaphoreId_t semaphore_id, int32_t status)
{
// Ignore semaphore overflow, the count will saturate with a returned error
if (status == osRtxErrorSemaphoreCountLimit) {
return;
}
error("Semaphore %p error %i\r\n", semaphore_id, status);
}

View File

@ -27,7 +27,7 @@
namespace rtos {
Semaphore::Semaphore(int32_t count) {
constructor(count, 1024);
constructor(count, 0xffff);
}
Semaphore::Semaphore(int32_t count, uint16_t max_count) {