mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-03-23 04:43:52 +08:00
Linker: https://github.com/RT-Thread/rt-thread/issues/11150 Signed-off-by: GuEe-GUI <2991707448@qq.com>
Clock Time Subsystem
The clock_time subsystem provides a unified time base and event scheduling for RT-Thread. It separates timekeeping (a monotonic counter) from event delivery (a programmable timer interrupt) so platforms can combine different hardware sources while the kernel sees consistent behavior.
Design Principles
- Monotonic time: time readings never go backward.
- Separation of roles: a clock source provides a counter, a clock event triggers deadlines.
- Scaled integer conversion: counters are converted to nanoseconds with a resolution scale factor, avoiding floating point.
- Graceful fallback: if a hardware event is unavailable, software timers keep the system functional.
Building Blocks
- Clock source: provides a stable counter and its frequency.
- Clock event: can be programmed to fire at the next deadline.
- Clock timer adapter: exposes a general timer peripheral as a clock source or event device.
- Clock hrtimer: software scheduler that orders high-resolution timeouts and programs the next event.
- Clock boottime helpers: translate the monotonic counter into common time formats for use by higher layers.
Time Flow
- Read path: counter -> scaled resolution -> nanoseconds.
- Timeout path: hrtimer queue -> next expiry -> program event -> interrupt -> dispatch callbacks.
BSP Integration Guidance
- Provide a stable counter or a programmable timer. One device can serve both roles.
- Select a default source and event device to enable accurate timekeeping and efficient scheduling.
- Keep ISRs minimal; the core handles conversion and scheduling.
- POSIX time APIs are layered on top of this subsystem and reuse its monotonic base.