zephyr/mphalport: Make mp_hal_wait_sem() always call k_poll().
Also even in the case of a zero timeout given. Signed-off-by: danicampora <danicampora@gmail.com>
This commit is contained in:
parent
1c0dc2ac3e
commit
3ca01eccae
@ -54,15 +54,11 @@ void mp_hal_wait_sem(struct k_sem *sem, uint32_t timeout_ms) {
|
||||
mp_handle_pending(true);
|
||||
MP_THREAD_GIL_EXIT();
|
||||
k_timeout_t wait;
|
||||
uint32_t dt = mp_hal_ticks_ms() - t0;
|
||||
if (timeout_ms == (uint32_t)-1) {
|
||||
wait = K_FOREVER;
|
||||
} else {
|
||||
uint32_t dt = mp_hal_ticks_ms() - t0;
|
||||
if (dt >= timeout_ms) {
|
||||
MP_THREAD_GIL_ENTER();
|
||||
return;
|
||||
}
|
||||
wait = K_MSEC(timeout_ms - dt);
|
||||
wait = K_MSEC((timeout_ms > dt) ? (timeout_ms - dt) : 0);
|
||||
}
|
||||
k_poll(wait_events, sem ? 2 : 1, wait);
|
||||
if (wait_events[0].state == K_POLL_STATE_SIGNALED) {
|
||||
@ -73,5 +69,9 @@ void mp_hal_wait_sem(struct k_sem *sem, uint32_t timeout_ms) {
|
||||
MP_THREAD_GIL_ENTER();
|
||||
return;
|
||||
}
|
||||
if (dt >= timeout_ms) {
|
||||
MP_THREAD_GIL_ENTER();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user