Merge pull request #3991 from geky/fix-events-non-rtos-wait

events: Fix zero wait condition in non-rtos semaphore
pull/2203/merge
Sam Grove 2017-04-19 02:04:52 -05:00 committed by GitHub
commit e532e0f446
2 changed files with 5 additions and 2 deletions

View File

@ -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);
}

View File

@ -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);