nuttx/drivers/timers
Max Kriegleder eb92f0f8c8 drivers/timers: avoid 32-bit overflow in arch_timer current_usec
current_usec() returns a uint64_t, but it used TICK2USEC(timebase)
to convert scheduler ticks to microseconds. On 32-bit clock_t builds,
TICK2USEC() performs the multiplication in 32-bit arithmetic before the
result is widened.

With CONFIG_USEC_PER_TICK=10000, this wraps after about 71.6 minutes:

  UINT32_MAX / 1000000 ~= 4294 seconds

After the wrap, up_timer_gettick() can report time near zero again. This
can leave absolute watchdog timeouts, such as those used by usleep() /
clock_nanosleep(), waiting for a tick value that will not be reached until
the 32-bit scheduler counter wraps.

Cast timebase to uint64_t before multiplying by USEC_PER_TICK so
current_usec() remains monotonic across the 32-bit microsecond boundary.

Signed-off-by: Max Kriegleder <max.kriegleder@gmail.com>
2026-05-06 08:49:52 +02:00
..
arch_alarm.c arch/delays: Invalid default value for BOARD_LOOPSPERMSEC 2026-02-25 15:00:03 -03:00
arch_rtc.c rtc_time:set zero rtc_time struct 2025-12-19 01:58:44 +01:00
arch_timer.c drivers/timers: avoid 32-bit overflow in arch_timer current_usec 2026-05-06 08:49:52 +02:00
capture.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
CMakeLists.txt drivers/timers: Add common include files, definitions and upper-half for DSHOT 2026-04-30 12:24:47 +08:00
cs2100-cp.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
ds3231.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
ds3231.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
dshot.c drivers/timers: Add common include files, definitions and upper-half for DSHOT 2026-04-30 12:24:47 +08:00
fake_capture.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
goldfish_timer.c driver/timers: Simplify Goldfish timer driver. 2025-11-24 19:43:07 +08:00
Kconfig drivers/timers: Add common include files, definitions and upper-half for DSHOT 2026-04-30 12:24:47 +08:00
Make.defs drivers/timers: Add common include files, definitions and upper-half for DSHOT 2026-04-30 12:24:47 +08:00
mcp794xx.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
mcp794xx.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
oneshot.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
pcf85263.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
pcf85263.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
pl031.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
ptp_clock.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
ptp_clock_dummy.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
pwm.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
rpmsg_rtc.c fs/timerfd: implement TFD_TIMER_CANCEL_ON_SET to detect clock changes 2026-01-30 17:20:24 +08:00
rtc.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
rx8010.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
rx8010.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
timer.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
timer_wdog.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
watchdog.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00