nuttx/sched/clock
raiden00pl 612f9a07dd sched/clock: fix stale CLOCK_MONOTONIC on SCHED_TICKLESS
clock_gettime(CLOCK_MONOTONIC) reads g_system_ticks, which is only
refreshed when a timer expiration is processed. On SCHED_TICKLESS an
idle system has no timeout armed, so the clock returns 0 before the
first expiration and a frozen value afterwards.

This regressed in commit c7b6442974, which switched CLOCK_MONOTONIC to
the sched tick counter to exclude suspended time. Excluding suspend time
needs explicit accounting maintained by PM code, the tick counter cannot
provide it on tickless.

Restore the live read.  On non-tickless builds clock_systime_timespec()
falls back to the same tick counter, so behavior there is unchanged.

Verified on qemu-intel64, nrf52840-dk and rv-virt.

Signed-off-by: raiden00pl <raiden00@railab.me>
Assisted-by: Claude Code
2026-08-21 02:16:04 +08:00
..
clock.c !sys/types.h: change time_t and clock_t to int64_t to align with other OSes 2026-05-19 16:21:28 +08:00
clock.h !compiler: drop CONFIG_HAVE_LONG_LONG and require long long support 2026-05-19 16:21:28 +08:00
clock_adjtime.c drivers/timers, sched/clock: use file_get/file_put 2026-07-11 17:22:07 -04:00
clock_delay.c sched/clock/clock_delay: added config flag to remove weak up_udelay 2026-06-12 09:55:11 -04:00
clock_getres.c drivers/timers, sched/clock: use file_get/file_put 2026-07-11 17:22:07 -04:00
clock_gettime.c sched/clock: fix stale CLOCK_MONOTONIC on SCHED_TICKLESS 2026-08-21 02:16:04 +08:00
clock_initialize.c !sys/types.h: change time_t and clock_t to int64_t to align with other OSes 2026-05-19 16:21:28 +08:00
clock_notifier.c fs/timerfd: implement TFD_TIMER_CANCEL_ON_SET to detect clock changes 2026-01-30 17:20:24 +08:00
clock_perf.c arch/armv7-r: userspace PMU access 2026-02-02 16:20:39 +01:00
clock_realtime2absticks.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
clock_sched_ticks.c sched/tickless: Fix CLOCK_MONOTONIC always 0 by updating sched ticks 2026-03-03 11:01:02 -05:00
clock_settime.c drivers/timers, sched/clock: use file_get/file_put 2026-07-11 17:22:07 -04:00
clock_systime_ticks.c sched/clock: Remove unnecessary preprocessor definition 2025-12-12 12:31:16 +08:00
clock_systime_timespec.c sched/clock: Improve clock implementation with sched ticks functions 2025-10-18 20:07:59 +08:00
clock_timekeeping.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
clock_timekeeping.h sched: migrate to SPDX identifier 2024-09-12 01:10:14 +08:00
CMakeLists.txt arch/delays: Invalid default value for BOARD_LOOPSPERMSEC 2026-02-25 15:00:03 -03:00
Make.defs arch/delays: Invalid default value for BOARD_LOOPSPERMSEC 2026-02-25 15:00:03 -03:00