From 4c85b4606bdab7aef7e283295cbf248ee2e66ad0 Mon Sep 17 00:00:00 2001 From: Lauren Murphy Date: Tue, 25 May 2021 17:49:28 -0500 Subject: [PATCH] kernel: k_sleep: fix return value for absolute timeout Fixes calculation of remaining ticks returned from z_tick_sleep so that it takes absolute timeouts into account. Fixes #32506 Signed-off-by: Lauren Murphy --- kernel/sched.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kernel/sched.c b/kernel/sched.c index 3b5dfc5e29e..fb78bd8e071 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -1227,8 +1227,11 @@ static int32_t z_tick_sleep(k_ticks_t ticks) } k_timeout_t timeout = Z_TIMEOUT_TICKS(ticks); - - expected_wakeup_ticks = ticks + sys_clock_tick_get_32(); + if (Z_TICK_ABS(ticks) <= 0) { + expected_wakeup_ticks = ticks + sys_clock_tick_get_32(); + } else { + expected_wakeup_ticks = Z_TICK_ABS(ticks); + } k_spinlock_key_t key = k_spin_lock(&sched_spinlock);