7#ifndef ZEPHYR_INCLUDE_SYS_TIME_UNITS_H_
8#define ZEPHYR_INCLUDE_SYS_TIME_UNITS_H_
33#define SYS_FOREVER_MS (-1)
39#define SYS_FOREVER_US (-1)
43#define SYS_TIMEOUT_MS(ms) \
44 Z_TIMEOUT_TICKS((ms) == SYS_FOREVER_MS ? \
45 K_TICKS_FOREVER : Z_TIMEOUT_MS_TICKS(ms))
49#if defined(CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME) || \
50 defined(CONFIG_SYSTEM_CLOCK_HW_CYCLES_PER_SEC_RUNTIME_UPDATE)
58__syscall
unsigned int sys_clock_hw_cycles_per_sec_runtime_get(
void);
60static inline unsigned int z_impl_sys_clock_hw_cycles_per_sec_runtime_get(
void)
62 extern unsigned int z_clock_hw_cycles_per_sec;
64 return z_clock_hw_cycles_per_sec;
68#if defined(__cplusplus) && (__cplusplus >= 201402L)
69 #if defined(CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME) || \
70 defined(CONFIG_SYSTEM_CLOCK_HW_CYCLES_PER_SEC_RUNTIME_UPDATE)
71 #define TIME_CONSTEXPR
73 #define TIME_CONSTEXPR constexpr
76 #define TIME_CONSTEXPR
83#if defined(CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME) || \
84 defined(CONFIG_SYSTEM_CLOCK_HW_CYCLES_PER_SEC_RUNTIME_UPDATE)
85#define sys_clock_hw_cycles_per_sec() sys_clock_hw_cycles_per_sec_runtime_get()
87#define sys_clock_hw_cycles_per_sec() (uint32_t)CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC
101#define z_tmcvt_use_fast_algo(from_hz, to_hz) \
102 ((DIV_ROUND_UP(CONFIG_SYS_CLOCK_MAX_TIMEOUT_DAYS * 24ULL * 3600ULL * from_hz, \
103 UINT32_MAX) * to_hz) <= UINT32_MAX)
129#define z_tmcvt_is_identity(__from_hz, __to_hz) \
130 ((__to_hz) == (__from_hz))
133#define z_tmcvt_is_int_mul(__from_hz, __to_hz) \
134 ((__to_hz) > (__from_hz) && (__to_hz) % (__from_hz) == 0U)
137#define z_tmcvt_is_int_div(__from_hz, __to_hz) \
138 ((__from_hz) > (__to_hz) && (__from_hz) % (__to_hz) == 0U)
144#define z_tmcvt_off_div(__from_hz, __to_hz, __round_up, __round_off) \
145 ((__round_off) ? ((__from_hz) / (__to_hz)) / 2 : \
146 (__round_up) ? ((__from_hz) / (__to_hz)) - 1 : \
168#define z_tmcvt_divisor(a, b) ((a)/(b) ? (a)/(b) : 1U)
174#define z_tmcvt_off_gen(__from_hz, __to_hz, __round_up, __round_off) \
175 ((__round_off) ? (__from_hz) / 2 : \
176 (__round_up) ? (__from_hz) - 1 : \
180#define z_tmcvt_int_div_32(__t, __from_hz, __to_hz, __round_up, __round_off) \
181 ((uint64_t) (__t) <= 0xffffffffU - \
182 z_tmcvt_off_div(__from_hz, __to_hz, __round_up, __round_off) ? \
183 ((uint32_t)(((__t) + \
184 z_tmcvt_off_div(__from_hz, __to_hz, \
185 __round_up, __round_off)) / \
186 z_tmcvt_divisor(__from_hz, __to_hz))) \
188 (uint32_t) (((uint64_t) (__t) + \
189 z_tmcvt_off_div(__from_hz, __to_hz, \
190 __round_up, __round_off)) / \
191 z_tmcvt_divisor(__from_hz, __to_hz)) \
195#define z_tmcvt_int_mul_32(__t, __from_hz, __to_hz) \
196 ((uint32_t) ((__t)*((__to_hz) / (__from_hz))))
199#define z_tmcvt_gen_32(__t, __from_hz, __to_hz, __round_up, __round_off) \
200 ((uint32_t) (((uint64_t) (__t)*(__to_hz) + \
201 z_tmcvt_off_gen(__from_hz, __to_hz, __round_up, __round_off)) / (__from_hz)))
204#define z_tmcvt_int_div_64(__t, __from_hz, __to_hz, __round_up, __round_off) \
205 (((uint64_t) (__t) + z_tmcvt_off_div(__from_hz, __to_hz, \
206 __round_up, __round_off)) / \
207 z_tmcvt_divisor(__from_hz, __to_hz))
210#define z_tmcvt_int_mul_64(__t, __from_hz, __to_hz) \
211 (uint64_t) (__t)*((__to_hz) / (__from_hz))
214#define z_tmcvt_gen_64_fast(__t, __from_hz, __to_hz, __round_up, __round_off) \
215 (((uint64_t) (__t)*(__to_hz) + \
216 z_tmcvt_off_gen(__from_hz, __to_hz, __round_up, __round_off)) / (__from_hz))
219#define z_tmcvt_gen_64_slow(__t, __from_hz, __to_hz, __round_up, __round_off) \
220 ((((uint64_t) (__t) / (__from_hz))*(__to_hz)) + \
221 (((((uint64_t) (__t) % (__from_hz))*(__to_hz)) + \
222 z_tmcvt_off_gen(__from_hz, __to_hz, __round_up, __round_off)) / (__from_hz)))
225#define z_tmcvt_gen_64(__t, __from_hz, __to_hz, __round_up, __round_off) \
226 (z_tmcvt_use_fast_algo(__from_hz, __to_hz) ? \
227 z_tmcvt_gen_64_fast(__t, __from_hz, __to_hz, __round_up, __round_off) : \
228 z_tmcvt_gen_64_slow(__t, __from_hz, __to_hz, __round_up, __round_off))
231#define z_tmcvt_32(__t, __from_hz, __to_hz, __const_hz, __round_up, __round_off) \
234 z_tmcvt_is_identity(__from_hz, __to_hz) ? \
237 z_tmcvt_is_int_div(__from_hz, __to_hz) ? \
238 z_tmcvt_int_div_32(__t, __from_hz, __to_hz, __round_up, __round_off) \
240 z_tmcvt_is_int_mul(__from_hz, __to_hz) ? \
241 z_tmcvt_int_mul_32(__t, __from_hz, __to_hz) \
243 z_tmcvt_gen_32(__t, __from_hz, __to_hz, __round_up, __round_off) \
246 z_tmcvt_gen_32(__t, __from_hz, __to_hz, __round_up, __round_off) \
250#define z_tmcvt_64(__t, __from_hz, __to_hz, __const_hz, __round_up, __round_off) \
253 z_tmcvt_is_identity(__from_hz, __to_hz) ? \
256 z_tmcvt_is_int_div(__from_hz, __to_hz) ? \
257 z_tmcvt_int_div_64(__t, __from_hz, __to_hz, __round_up, __round_off) \
259 z_tmcvt_is_int_mul(__from_hz, __to_hz) ? \
260 z_tmcvt_int_mul_64(__t, __from_hz, __to_hz) \
262 z_tmcvt_gen_64(__t, __from_hz, __to_hz, __round_up, __round_off) \
265 z_tmcvt_gen_64_slow(__t, __from_hz, __to_hz, __round_up, __round_off) \
268#define z_tmcvt(__t, __from_hz, __to_hz, __const_hz, __result32, __round_up, __round_off) \
270 z_tmcvt_32(__t, __from_hz, __to_hz, __const_hz, __round_up, __round_off) : \
271 z_tmcvt_64(__t, __from_hz, __to_hz, __const_hz, __round_up, __round_off))
350#define Z_HZ_us 1000000
351#define Z_HZ_ns 1000000000
352#define Z_HZ_cyc sys_clock_hw_cycles_per_sec()
353#define Z_HZ_ticks CONFIG_SYS_CLOCK_TICKS_PER_SEC
354#define Z_CCYC (!IS_ENABLED(CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME) && \
355 !IS_ENABLED(CONFIG_SYSTEM_CLOCK_HW_CYCLES_PER_SEC_RUNTIME_UPDATE))
369#define k_sec_to_cyc_floor32(t) \
370 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, false, false)
385#define k_sec_to_cyc_floor64(t) \
386 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, false, false)
401#define k_sec_to_cyc_near32(t) \
402 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, false, true)
417#define k_sec_to_cyc_near64(t) \
418 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, false, true)
433#define k_sec_to_cyc_ceil32(t) \
434 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, true, false)
449#define k_sec_to_cyc_ceil64(t) \
450 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, true, false)
465#define k_sec_to_ticks_floor32(t) \
466 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_ticks, true, false, false)
481#define k_sec_to_ticks_floor64(t) \
482 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_ticks, true, false, false)
497#define k_sec_to_ticks_near32(t) \
498 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_ticks, true, false, true)
513#define k_sec_to_ticks_near64(t) \
514 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_ticks, true, false, true)
529#define k_sec_to_ticks_ceil32(t) \
530 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_ticks, true, true, false)
545#define k_sec_to_ticks_ceil64(t) \
546 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_ticks, true, true, false)
561#define k_ms_to_cyc_floor32(t) \
562 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, false, false)
577#define k_ms_to_cyc_floor64(t) \
578 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, false, false)
593#define k_ms_to_cyc_near32(t) \
594 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, false, true)
609#define k_ms_to_cyc_near64(t) \
610 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, false, true)
625#define k_ms_to_cyc_ceil32(t) \
626 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, true, false)
641#define k_ms_to_cyc_ceil64(t) \
642 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, true, false)
657#define k_ms_to_ticks_floor32(t) \
658 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_ticks, true, false, false)
673#define k_ms_to_ticks_floor64(t) \
674 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_ticks, true, false, false)
689#define k_ms_to_ticks_near32(t) \
690 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_ticks, true, false, true)
705#define k_ms_to_ticks_near64(t) \
706 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_ticks, true, false, true)
721#define k_ms_to_ticks_ceil32(t) \
722 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_ticks, true, true, false)
737#define k_ms_to_ticks_ceil64(t) \
738 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_ticks, true, true, false)
753#define k_us_to_cyc_floor32(t) \
754 z_tmcvt_32(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, false, false)
769#define k_us_to_cyc_floor64(t) \
770 z_tmcvt_64(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, false, false)
785#define k_us_to_cyc_near32(t) \
786 z_tmcvt_32(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, false, true)
801#define k_us_to_cyc_near64(t) \
802 z_tmcvt_64(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, false, true)
817#define k_us_to_cyc_ceil32(t) \
818 z_tmcvt_32(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, true, false)
833#define k_us_to_cyc_ceil64(t) \
834 z_tmcvt_64(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, true, false)
849#define k_us_to_ticks_floor32(t) \
850 z_tmcvt_32(t, Z_HZ_us, Z_HZ_ticks, true, false, false)
865#define k_us_to_ticks_floor64(t) \
866 z_tmcvt_64(t, Z_HZ_us, Z_HZ_ticks, true, false, false)
881#define k_us_to_ticks_near32(t) \
882 z_tmcvt_32(t, Z_HZ_us, Z_HZ_ticks, true, false, true)
897#define k_us_to_ticks_near64(t) \
898 z_tmcvt_64(t, Z_HZ_us, Z_HZ_ticks, true, false, true)
913#define k_us_to_ticks_ceil32(t) \
914 z_tmcvt_32(t, Z_HZ_us, Z_HZ_ticks, true, true, false)
929#define k_us_to_ticks_ceil64(t) \
930 z_tmcvt_64(t, Z_HZ_us, Z_HZ_ticks, true, true, false)
945#define k_ns_to_cyc_floor32(t) \
946 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, false, false)
961#define k_ns_to_cyc_floor64(t) \
962 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, false, false)
977#define k_ns_to_cyc_near32(t) \
978 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, false, true)
993#define k_ns_to_cyc_near64(t) \
994 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, false, true)
1009#define k_ns_to_cyc_ceil32(t) \
1010 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, true, false)
1025#define k_ns_to_cyc_ceil64(t) \
1026 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, true, false)
1040#define ns_to_cyc_at_hz_floor32(t, freq) \
1041 z_tmcvt_32(t, Z_HZ_ns, freq, false, false, false)
1055#define ns_to_cyc_at_hz_floor64(t, freq) \
1056 z_tmcvt_64(t, Z_HZ_ns, freq, false, false, false)
1070#define ns_to_cyc_at_hz_near32(t, freq) \
1071 z_tmcvt_32(t, Z_HZ_ns, freq, false, false, true)
1085#define ns_to_cyc_at_hz_near64(t, freq) \
1086 z_tmcvt_64(t, Z_HZ_ns, freq, false, false, true)
1100#define ns_to_cyc_at_hz_ceil32(t, freq) \
1101 z_tmcvt_32(t, Z_HZ_ns, freq, false, true, false)
1115#define ns_to_cyc_at_hz_ceil64(t, freq) \
1116 z_tmcvt_64(t, Z_HZ_ns, freq, false, true, false)
1131#define k_ns_to_ticks_floor32(t) \
1132 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_ticks, true, false, false)
1147#define k_ns_to_ticks_floor64(t) \
1148 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_ticks, true, false, false)
1163#define k_ns_to_ticks_near32(t) \
1164 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_ticks, true, false, true)
1179#define k_ns_to_ticks_near64(t) \
1180 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_ticks, true, false, true)
1195#define k_ns_to_ticks_ceil32(t) \
1196 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_ticks, true, true, false)
1211#define k_ns_to_ticks_ceil64(t) \
1212 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_ticks, true, true, false)
1227#define k_cyc_to_sec_floor32(t) \
1228 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, false, false)
1243#define k_cyc_to_sec_floor64(t) \
1244 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, false, false)
1259#define k_cyc_to_sec_near32(t) \
1260 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, false, true)
1275#define k_cyc_to_sec_near64(t) \
1276 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, false, true)
1291#define k_cyc_to_sec_ceil32(t) \
1292 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, true, false)
1307#define k_cyc_to_sec_ceil64(t) \
1308 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, true, false)
1323#define k_cyc_to_ms_floor32(t) \
1324 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, false, false)
1339#define k_cyc_to_ms_floor64(t) \
1340 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, false, false)
1355#define k_cyc_to_ms_near32(t) \
1356 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, false, true)
1371#define k_cyc_to_ms_near64(t) \
1372 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, false, true)
1387#define k_cyc_to_ms_ceil32(t) \
1388 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, true, false)
1403#define k_cyc_to_ms_ceil64(t) \
1404 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, true, false)
1419#define k_cyc_to_us_floor32(t) \
1420 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, false, false)
1435#define k_cyc_to_us_floor64(t) \
1436 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, false, false)
1451#define k_cyc_to_us_near32(t) \
1452 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, false, true)
1467#define k_cyc_to_us_near64(t) \
1468 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, false, true)
1483#define k_cyc_to_us_ceil32(t) \
1484 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, true, false)
1499#define k_cyc_to_us_ceil64(t) \
1500 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, true, false)
1515#define k_cyc_to_ns_floor32(t) \
1516 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, false, false)
1531#define k_cyc_to_ns_floor64(t) \
1532 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, false, false)
1547#define k_cyc_to_ns_near32(t) \
1548 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, false, true)
1563#define k_cyc_to_ns_near64(t) \
1564 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, false, true)
1579#define k_cyc_to_ns_ceil32(t) \
1580 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, true, false)
1595#define k_cyc_to_ns_ceil64(t) \
1596 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, true, false)
1611#define k_cyc_to_ticks_floor32(t) \
1612 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, false, false)
1627#define k_cyc_to_ticks_floor64(t) \
1628 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, false, false)
1643#define k_cyc_to_ticks_near32(t) \
1644 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, false, true)
1659#define k_cyc_to_ticks_near64(t) \
1660 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, false, true)
1675#define k_cyc_to_ticks_ceil32(t) \
1676 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, true, false)
1691#define k_cyc_to_ticks_ceil64(t) \
1692 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, true, false)
1707#define k_ticks_to_sec_floor32(t) \
1708 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_sec, true, false, false)
1723#define k_ticks_to_sec_floor64(t) \
1724 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_sec, true, false, false)
1739#define k_ticks_to_sec_near32(t) \
1740 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_sec, true, false, true)
1755#define k_ticks_to_sec_near64(t) \
1756 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_sec, true, false, true)
1771#define k_ticks_to_sec_ceil32(t) \
1772 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_sec, true, true, false)
1787#define k_ticks_to_sec_ceil64(t) \
1788 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_sec, true, true, false)
1803#define k_ticks_to_ms_floor32(t) \
1804 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ms, true, false, false)
1819#define k_ticks_to_ms_floor64(t) \
1820 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ms, true, false, false)
1835#define k_ticks_to_ms_near32(t) \
1836 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ms, true, false, true)
1851#define k_ticks_to_ms_near64(t) \
1852 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ms, true, false, true)
1867#define k_ticks_to_ms_ceil32(t) \
1868 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ms, true, true, false)
1883#define k_ticks_to_ms_ceil64(t) \
1884 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ms, true, true, false)
1899#define k_ticks_to_us_floor32(t) \
1900 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_us, true, false, false)
1915#define k_ticks_to_us_floor64(t) \
1916 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_us, true, false, false)
1931#define k_ticks_to_us_near32(t) \
1932 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_us, true, false, true)
1947#define k_ticks_to_us_near64(t) \
1948 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_us, true, false, true)
1963#define k_ticks_to_us_ceil32(t) \
1964 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_us, true, true, false)
1979#define k_ticks_to_us_ceil64(t) \
1980 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_us, true, true, false)
1995#define k_ticks_to_ns_floor32(t) \
1996 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ns, true, false, false)
2011#define k_ticks_to_ns_floor64(t) \
2012 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ns, true, false, false)
2027#define k_ticks_to_ns_near32(t) \
2028 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ns, true, false, true)
2043#define k_ticks_to_ns_near64(t) \
2044 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ns, true, false, true)
2059#define k_ticks_to_ns_ceil32(t) \
2060 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ns, true, true, false)
2075#define k_ticks_to_ns_ceil64(t) \
2076 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ns, true, true, false)
2091#define k_ticks_to_cyc_floor32(t) \
2092 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, false, false)
2107#define k_ticks_to_cyc_floor64(t) \
2108 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, false, false)
2123#define k_ticks_to_cyc_near32(t) \
2124 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, false, true)
2139#define k_ticks_to_cyc_near64(t) \
2140 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, false, true)
2155#define k_ticks_to_cyc_ceil32(t) \
2156 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, true, false)
2171#define k_ticks_to_cyc_ceil64(t) \
2172 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, true, false)
2174#if defined(CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME) || \
2175 defined(CONFIG_SYSTEM_CLOCK_HW_CYCLES_PER_SEC_RUNTIME_UPDATE)
2176#include <zephyr/syscalls/time_units.h>
2179#undef TIME_CONSTEXPR