Couple issues: - `sys_clock_set_timeout()` should not base its `mtime` on the current time either. Tracking the `last_tick` and `last_elapsed` values avoids the need for all the tick rounding computation. - The MIN_DELAY thing is pointless. The hardware performs a signed comparison. If the delay gets close or even behind current time then the IRQ will be triggered right away. This is unlikely to happen very often anyway so the constant overhead is uncalled for. - Runtime 64-bits divisions on 32-bits hardware are very expensive. - The timer must be enabled before the count can return a sensible value during driver init (at least on qemu_cortex_a9). Discussion in PR #54919 applies here too. Signed-off-by: Nicolas Pitre <npitre@baylibre.com> |
||
|---|---|---|
| .. | ||
| altera_avalon_timer_hal.c | ||
| apic_timer.c | ||
| apic_tsc.c | ||
| arcv2_timer0.c | ||
| arm_arch_timer.c | ||
| cc13x2_cc26x2_rtc_timer.c | ||
| CMakeLists.txt | ||
| cortex_m_systick.c | ||
| esp32c3_sys_timer.c | ||
| hpet.c | ||
| intel_adsp_timer.c | ||
| ite_it8xxx2_timer.c | ||
| Kconfig | ||
| Kconfig.altera_avalon | ||
| Kconfig.apic | ||
| Kconfig.arcv2 | ||
| Kconfig.arm_arch | ||
| Kconfig.cavs | ||
| Kconfig.cc13x2_cc26x2_rtc | ||
| Kconfig.cortex_m_systick | ||
| Kconfig.esp32c3_sys | ||
| Kconfig.hpet | ||
| Kconfig.ite_it8xxx2 | ||
| Kconfig.leon_gptimer | ||
| Kconfig.litex | ||
| Kconfig.mchp_xec_rtos | ||
| Kconfig.mcux_gpt | ||
| Kconfig.mcux_lptmr | ||
| Kconfig.mcux_os | ||
| Kconfig.mips_cp0 | ||
| Kconfig.native_posix | ||
| Kconfig.npcx_itim | ||
| Kconfig.nrf_rtc | ||
| Kconfig.rcar_cmt | ||
| Kconfig.riscv_machine | ||
| Kconfig.rv32m1_lptmr | ||
| Kconfig.sam0_rtc | ||
| Kconfig.stm32_lptim | ||
| Kconfig.xlnx_psttc | ||
| Kconfig.xtensa | ||
| leon_gptimer.c | ||
| litex_timer.c | ||
| mchp_xec_rtos_timer.c | ||
| mcux_gpt_timer.c | ||
| mcux_lptmr_timer.c | ||
| mcux_os_timer.c | ||
| mips_cp0_timer.c | ||
| native_posix_timer.c | ||
| npcx_itim_timer.c | ||
| nrf_rtc_timer.c | ||
| rcar_cmt_timer.c | ||
| riscv_machine_timer.c | ||
| rv32m1_lptmr_timer.c | ||
| sam0_rtc_timer.c | ||
| stm32_lptim_timer.c | ||
| sys_clock_init.c | ||
| xlnx_psttc_timer_priv.h | ||
| xlnx_psttc_timer.c | ||
| xtensa_sys_timer.c | ||