ztest: provide sys_clock_tick_set syscall
Accurate timekeeping is something that is often taken for granted. However, reliability of timekeeping code is critical for most core and subsystem code. Furthermore, Many higher-level timekeeping utilities in Zephyr work off of ticks but there is no way to modify ticks directly which would require either unnecessary delays in test code or non-ideal compromises in test coverage. Since timekeeping is so critical, there should be as few barriers to testing timekeeping code as possible, while preserving integrity of the kernel's public interface. With this, we expose `sys_clock_tick_set()` as a system call only when `CONFIG_ZTEST` is set, declared within the ztest framework. Signed-off-by: Chris Friedt <cfriedt@meta.com>
This commit is contained in:
parent
44b72bf801
commit
4108e14740
2 changed files with 14 additions and 0 deletions
|
@ -379,3 +379,15 @@ uint64_t sys_clock_timeout_end_calc(k_timeout_t timeout)
|
|||
return sys_clock_tick_get() + MAX(1, dt);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ZTEST
|
||||
void z_impl_sys_clock_tick_set(uint64_t tick)
|
||||
{
|
||||
curr_tick = tick;
|
||||
}
|
||||
|
||||
void z_vrfy_sys_clock_tick_set(uint64_t tick)
|
||||
{
|
||||
z_impl_sys_clock_tick_set(tick);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -21,6 +21,8 @@ extern "C" {
|
|||
__syscall void z_test_1cpu_start(void);
|
||||
__syscall void z_test_1cpu_stop(void);
|
||||
|
||||
__syscall void sys_clock_tick_set(uint64_t tick);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue