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) {
|
bool equeue_sema_wait(equeue_sema_t *s, int ms) {
|
||||||
int signal = 0;
|
int signal = 0;
|
||||||
Timeout timeout;
|
Timeout timeout;
|
||||||
if (ms > 0) {
|
if (ms == 0) {
|
||||||
|
return false;
|
||||||
|
} else if (ms > 0) {
|
||||||
timeout.attach_us(callback(equeue_sema_timeout, s), ms*1000);
|
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
|
// The equeue_sema_wait waits for a semaphore to be signalled or returns
|
||||||
// immediately if equeue_sema_signal had been called since the last
|
// 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_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);
|
int equeue_sema_create(equeue_sema_t *sema);
|
||||||
void equeue_sema_destroy(equeue_sema_t *sema);
|
void equeue_sema_destroy(equeue_sema_t *sema);
|
||||||
void equeue_sema_signal(equeue_sema_t *sema);
|
void equeue_sema_signal(equeue_sema_t *sema);
|
||||||
|
|
Loading…
Reference in New Issue