From 0ab314f705948db9053904f20c355da8c711ccf4 Mon Sep 17 00:00:00 2001 From: Peter Bigot Date: Mon, 16 Nov 2020 15:28:59 -0600 Subject: [PATCH] kernel: const-qualify objects used to calculate delay values The internal API to measure time until a delay expires does not modify the referenced timeout. Make the functions that call it take pointers to const objects, so that they can be used with pointer to const-qualified containers. Signed-off-by: Peter Bigot --- include/kernel.h | 24 +++++++++++++----------- kernel/thread.c | 4 ++-- kernel/timer.c | 6 ++++-- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/include/kernel.h b/include/kernel.h index b834cb6944f..b576cd08226 100644 --- a/include/kernel.h +++ b/include/kernel.h @@ -556,10 +556,10 @@ extern k_ticks_t z_timeout_remaining(const struct _timeout *timeout); * executes, in units of system ticks. If the thread is not waiting, * it returns current system time. */ -__syscall k_ticks_t k_thread_timeout_expires_ticks(struct k_thread *t); +__syscall k_ticks_t k_thread_timeout_expires_ticks(const struct k_thread *t); static inline k_ticks_t z_impl_k_thread_timeout_expires_ticks( - struct k_thread *t) + const struct k_thread *t) { return z_timeout_expires(&t->base.timeout); } @@ -571,10 +571,10 @@ static inline k_ticks_t z_impl_k_thread_timeout_expires_ticks( * next executes, in units of system ticks. If the thread is not * waiting, it returns zero. */ -__syscall k_ticks_t k_thread_timeout_remaining_ticks(struct k_thread *t); +__syscall k_ticks_t k_thread_timeout_remaining_ticks(const struct k_thread *t); static inline k_ticks_t z_impl_k_thread_timeout_remaining_ticks( - struct k_thread *t) + const struct k_thread *t) { return z_timeout_remaining(&t->base.timeout); } @@ -1443,9 +1443,10 @@ __syscall uint32_t k_timer_status_sync(struct k_timer *timer); * @param timer The timer object * @return Uptime of expiration, in ticks */ -__syscall k_ticks_t k_timer_expires_ticks(struct k_timer *timer); +__syscall k_ticks_t k_timer_expires_ticks(const struct k_timer *timer); -static inline k_ticks_t z_impl_k_timer_expires_ticks(struct k_timer *timer) +static inline k_ticks_t z_impl_k_timer_expires_ticks( + const struct k_timer *timer) { return z_timeout_expires(&timer->timeout); } @@ -1457,9 +1458,10 @@ static inline k_ticks_t z_impl_k_timer_expires_ticks(struct k_timer *timer) * next expires, in units of system ticks. If the timer is not * running, it returns zero. */ -__syscall k_ticks_t k_timer_remaining_ticks(struct k_timer *timer); +__syscall k_ticks_t k_timer_remaining_ticks(const struct k_timer *timer); -static inline k_ticks_t z_impl_k_timer_remaining_ticks(struct k_timer *timer) +static inline k_ticks_t z_impl_k_timer_remaining_ticks( + const struct k_timer *timer) { return z_timeout_remaining(&timer->timeout); } @@ -2899,7 +2901,7 @@ static inline int k_delayed_work_submit(struct k_delayed_work *work, * @return Uptime of execution (in ticks). */ static inline k_ticks_t k_delayed_work_expires_ticks( - struct k_delayed_work *work) + const struct k_delayed_work *work) { return z_timeout_expires(&work->timeout); } @@ -2917,7 +2919,7 @@ static inline k_ticks_t k_delayed_work_expires_ticks( * @return Remaining time (in ticks). */ static inline k_ticks_t k_delayed_work_remaining_ticks( - struct k_delayed_work *work) + const struct k_delayed_work *work) { return z_timeout_remaining(&work->timeout); } @@ -2933,7 +2935,7 @@ static inline k_ticks_t k_delayed_work_remaining_ticks( * * @return Remaining time (in milliseconds). */ -static inline int32_t k_delayed_work_remaining_get(struct k_delayed_work *work) +static inline int32_t k_delayed_work_remaining_get(const struct k_delayed_work *work) { return k_ticks_to_ms_floor32(z_timeout_remaining(&work->timeout)); } diff --git a/kernel/thread.c b/kernel/thread.c index 022dbe376ef..47f3e4104d4 100644 --- a/kernel/thread.c +++ b/kernel/thread.c @@ -1006,7 +1006,7 @@ int z_vrfy_k_thread_stack_space_get(const struct k_thread *thread, #ifdef CONFIG_USERSPACE static inline k_ticks_t z_vrfy_k_thread_timeout_remaining_ticks( - struct k_thread *t) + const struct k_thread *t) { Z_OOPS(Z_SYSCALL_OBJ(t, K_OBJ_THREAD)); return z_impl_k_thread_timeout_remaining_ticks(t); @@ -1014,7 +1014,7 @@ static inline k_ticks_t z_vrfy_k_thread_timeout_remaining_ticks( #include static inline k_ticks_t z_vrfy_k_thread_timeout_expires_ticks( - struct k_thread *t) + const struct k_thread *t) { Z_OOPS(Z_SYSCALL_OBJ(t, K_OBJ_THREAD)); return z_impl_k_thread_timeout_expires_ticks(t); diff --git a/kernel/timer.c b/kernel/timer.c index 18bf201c38f..42e6b10a0bf 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -237,14 +237,16 @@ static inline uint32_t z_vrfy_k_timer_status_sync(struct k_timer *timer) } #include -static inline k_ticks_t z_vrfy_k_timer_remaining_ticks(struct k_timer *timer) +static inline k_ticks_t z_vrfy_k_timer_remaining_ticks( + const struct k_timer *timer) { Z_OOPS(Z_SYSCALL_OBJ(timer, K_OBJ_TIMER)); return z_impl_k_timer_remaining_ticks(timer); } #include -static inline k_ticks_t z_vrfy_k_timer_expires_ticks(struct k_timer *timer) +static inline k_ticks_t z_vrfy_k_timer_expires_ticks( + const struct k_timer *timer) { Z_OOPS(Z_SYSCALL_OBJ(timer, K_OBJ_TIMER)); return z_impl_k_timer_expires_ticks(timer);