diff --git a/events/equeue/equeue_mbed.cpp b/events/equeue/equeue_mbed.cpp index 5c72b38dea..0acb2cac34 100644 --- a/events/equeue/equeue_mbed.cpp +++ b/events/equeue/equeue_mbed.cpp @@ -131,7 +131,9 @@ static void equeue_sema_timeout(equeue_sema_t *s) { bool equeue_sema_wait(equeue_sema_t *s, int ms) { int signal = 0; Timeout timeout; - if (ms > 0) { + if (ms == 0) { + return false; + } else if (ms > 0) { timeout.attach_us(callback(equeue_sema_timeout, s), ms*1000); } diff --git a/events/equeue/equeue_platform.h b/events/equeue/equeue_platform.h index ef2a8e3863..8b7c4f735d 100644 --- a/events/equeue/equeue_platform.h +++ b/events/equeue/equeue_platform.h @@ -129,7 +129,8 @@ typedef volatile int equeue_sema_t; // The equeue_sema_wait waits for a semaphore to be signalled or returns // immediately if equeue_sema_signal had been called since the last // equeue_sema_wait. The equeue_sema_wait returns true if it detected that -// equeue_sema_signal had been called. +// equeue_sema_signal had been called. If ms is negative, equeue_sema_wait +// will wait for a signal indefinitely. int equeue_sema_create(equeue_sema_t *sema); void equeue_sema_destroy(equeue_sema_t *sema); void equeue_sema_signal(equeue_sema_t *sema);