diff --git a/include/kernel.h b/include/kernel.h index d49f8789d38..c64a6d5ab3a 100644 --- a/include/kernel.h +++ b/include/kernel.h @@ -654,6 +654,8 @@ struct _timeout { _timeout_func_t func; }; +extern int32_t _timeout_remaining_get(struct _timeout *timeout); + /** * INTERNAL_HIDDEN @endcond */ @@ -852,7 +854,10 @@ extern uint32_t k_timer_status_sync(struct k_timer *timer); * * @return Remaining time (in milliseconds). */ -extern int32_t k_timer_remaining_get(struct k_timer *timer); +static inline int32_t k_timer_remaining_get(struct k_timer *timer) +{ + return _timeout_remaining_get(&timer->timeout); +} /** * @} end defgroup timer_apis diff --git a/kernel/unified/timer.c b/kernel/unified/timer.c index 4067c779cf6..000be24a0e7 100644 --- a/kernel/unified/timer.c +++ b/kernel/unified/timer.c @@ -196,13 +196,12 @@ uint32_t k_timer_status_sync(struct k_timer *timer) return result; } - -int32_t k_timer_remaining_get(struct k_timer *timer) +int32_t _timeout_remaining_get(struct _timeout *timeout) { unsigned int key = irq_lock(); int32_t remaining_ticks; - if (timer->timeout.delta_ticks_from_prev == -1) { + if (timeout->delta_ticks_from_prev == -1) { remaining_ticks = 0; } else { /* @@ -213,7 +212,7 @@ int32_t k_timer_remaining_get(struct k_timer *timer) (struct _timeout *)sys_dlist_peek_head(&_timeout_q); remaining_ticks = t->delta_ticks_from_prev; - while (t != &timer->timeout) { + while (t != timeout) { t = (struct _timeout *)sys_dlist_peek_next(&_timeout_q, &t->node); remaining_ticks += t->delta_ticks_from_prev;