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