mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #3991 from geky/fix-events-non-rtos-wait
events: Fix zero wait condition in non-rtos semaphorepull/2203/merge
commit
e532e0f446
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue