7#ifndef ZEPHYR_INCLUDE_TIME_UNITS_H_
8#define ZEPHYR_INCLUDE_TIME_UNITS_H_
33#define SYS_FOREVER_MS (-1)
39#define SYS_FOREVER_US (-1)
44#define SYS_TIMEOUT_MS_INIT(ms) \
45 Z_TIMEOUT_TICKS_INIT((ms) == SYS_FOREVER_MS ? \
46 K_TICKS_FOREVER : Z_TIMEOUT_MS_TICKS(ms))
50#define SYS_TIMEOUT_MS(ms) ((k_timeout_t) SYS_TIMEOUT_MS_INIT(ms))
54#if defined(CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME) || \
55 defined(CONFIG_SYSTEM_CLOCK_HW_CYCLES_PER_SEC_RUNTIME_UPDATE)
63__syscall
unsigned int sys_clock_hw_cycles_per_sec_runtime_get(
void);
65static inline unsigned int z_impl_sys_clock_hw_cycles_per_sec_runtime_get(
void)
67 extern unsigned int z_clock_hw_cycles_per_sec;
69 return z_clock_hw_cycles_per_sec;
73#if defined(__cplusplus) && (__cplusplus >= 201402L)
74 #if defined(CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME) || \
75 defined(CONFIG_SYSTEM_CLOCK_HW_CYCLES_PER_SEC_RUNTIME_UPDATE)
76 #define TIME_CONSTEXPR
78 #define TIME_CONSTEXPR constexpr
81 #define TIME_CONSTEXPR
88#if defined(CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME) || \
89 defined(CONFIG_SYSTEM_CLOCK_HW_CYCLES_PER_SEC_RUNTIME_UPDATE)
90#define sys_clock_hw_cycles_per_sec() sys_clock_hw_cycles_per_sec_runtime_get()
92#define sys_clock_hw_cycles_per_sec() (uint32_t)CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC
106#define z_tmcvt_use_fast_algo(from_hz, to_hz) \
107 ((DIV_ROUND_UP(CONFIG_SYS_CLOCK_MAX_TIMEOUT_DAYS * 24ULL * 3600ULL * from_hz, \
108 UINT32_MAX) * to_hz) <= UINT32_MAX)
134#define z_tmcvt_is_identity(__from_hz, __to_hz) \
135 ((__to_hz) == (__from_hz))
138#define z_tmcvt_is_int_mul(__from_hz, __to_hz) \
139 ((__to_hz) > (__from_hz) && (__to_hz) % (__from_hz) == 0U)
142#define z_tmcvt_is_int_div(__from_hz, __to_hz) \
143 ((__from_hz) > (__to_hz) && (__from_hz) % (__to_hz) == 0U)
149#define z_tmcvt_off_div(__from_hz, __to_hz, __round_up, __round_off) \
150 ((__round_off) ? ((__from_hz) / (__to_hz)) / 2 : \
151 (__round_up) ? ((__from_hz) / (__to_hz)) - 1 : \
173#define z_tmcvt_divisor(a, b) ((a)/(b) ? (a)/(b) : 01u)
179#define z_tmcvt_off_gen(__from_hz, __to_hz, __round_up, __round_off) \
180 ((__round_off) ? (__from_hz) / 2 : \
181 (__round_up) ? (__from_hz) - 1 : \
185#define z_tmcvt_int_div_32(__t, __from_hz, __to_hz, __round_up, __round_off) \
186 ((uint64_t) (__t) <= 0xffffffffU - \
187 z_tmcvt_off_div(__from_hz, __to_hz, __round_up, __round_off) ? \
188 ((uint32_t)(((__t) + \
189 z_tmcvt_off_div(__from_hz, __to_hz, \
190 __round_up, __round_off)) / \
191 z_tmcvt_divisor(__from_hz, __to_hz))) \
193 (uint32_t) (((uint64_t) (__t) + \
194 z_tmcvt_off_div(__from_hz, __to_hz, \
195 __round_up, __round_off)) / \
196 z_tmcvt_divisor(__from_hz, __to_hz)) \
200#define z_tmcvt_int_mul_32(__t, __from_hz, __to_hz) \
201 ((uint32_t) ((__t)*((__to_hz) / (__from_hz))))
204#define z_tmcvt_gen_32(__t, __from_hz, __to_hz, __round_up, __round_off) \
205 ((uint32_t) (((uint64_t) (__t)*(__to_hz) + \
206 z_tmcvt_off_gen(__from_hz, __to_hz, __round_up, __round_off)) / (__from_hz)))
209#define z_tmcvt_int_div_64(__t, __from_hz, __to_hz, __round_up, __round_off) \
210 (((uint64_t) (__t) + z_tmcvt_off_div(__from_hz, __to_hz, \
211 __round_up, __round_off)) / \
212 z_tmcvt_divisor(__from_hz, __to_hz))
215#define z_tmcvt_int_mul_64(__t, __from_hz, __to_hz) \
216 (uint64_t) (__t)*((__to_hz) / (__from_hz))
219#define z_tmcvt_gen_64_fast(__t, __from_hz, __to_hz, __round_up, __round_off) \
220 (((uint64_t) (__t)*(__to_hz) + \
221 z_tmcvt_off_gen(__from_hz, __to_hz, __round_up, __round_off)) / (__from_hz))
224#define z_tmcvt_gen_64_slow(__t, __from_hz, __to_hz, __round_up, __round_off) \
225 ((((uint64_t) (__t) / (__from_hz))*(__to_hz)) + \
226 (((((uint64_t) (__t) % (__from_hz))*(__to_hz)) + \
227 z_tmcvt_off_gen(__from_hz, __to_hz, __round_up, __round_off)) / (__from_hz)))
230#define z_tmcvt_gen_64(__t, __from_hz, __to_hz, __round_up, __round_off) \
231 (z_tmcvt_use_fast_algo(__from_hz, __to_hz) ? \
232 z_tmcvt_gen_64_fast(__t, __from_hz, __to_hz, __round_up, __round_off) : \
233 z_tmcvt_gen_64_slow(__t, __from_hz, __to_hz, __round_up, __round_off))
236#define z_tmcvt_32(__t, __from_hz, __to_hz, __const_hz, __round_up, __round_off) \
239 z_tmcvt_is_identity(__from_hz, __to_hz) ? \
242 z_tmcvt_is_int_div(__from_hz, __to_hz) ? \
243 z_tmcvt_int_div_32(__t, __from_hz, __to_hz, __round_up, __round_off) \
245 z_tmcvt_is_int_mul(__from_hz, __to_hz) ? \
246 z_tmcvt_int_mul_32(__t, __from_hz, __to_hz) \
248 z_tmcvt_gen_32(__t, __from_hz, __to_hz, __round_up, __round_off) \
251 z_tmcvt_gen_32(__t, __from_hz, __to_hz, __round_up, __round_off) \
255#define z_tmcvt_64(__t, __from_hz, __to_hz, __const_hz, __round_up, __round_off) \
258 z_tmcvt_is_identity(__from_hz, __to_hz) ? \
261 z_tmcvt_is_int_div(__from_hz, __to_hz) ? \
262 z_tmcvt_int_div_64(__t, __from_hz, __to_hz, __round_up, __round_off) \
264 z_tmcvt_is_int_mul(__from_hz, __to_hz) ? \
265 z_tmcvt_int_mul_64(__t, __from_hz, __to_hz) \
267 z_tmcvt_gen_64(__t, __from_hz, __to_hz, __round_up, __round_off) \
270 z_tmcvt_gen_64_slow(__t, __from_hz, __to_hz, __round_up, __round_off) \
273#define z_tmcvt(__t, __from_hz, __to_hz, __const_hz, __result32, __round_up, __round_off) \
275 z_tmcvt_32(__t, __from_hz, __to_hz, __const_hz, __round_up, __round_off) : \
276 z_tmcvt_64(__t, __from_hz, __to_hz, __const_hz, __round_up, __round_off))
355#define Z_HZ_us 1000000
356#define Z_HZ_ns 1000000000
357#define Z_HZ_cyc sys_clock_hw_cycles_per_sec()
358#define Z_HZ_ticks CONFIG_SYS_CLOCK_TICKS_PER_SEC
359#define Z_CCYC (!IS_ENABLED(CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME) && \
360 !IS_ENABLED(CONFIG_SYSTEM_CLOCK_HW_CYCLES_PER_SEC_RUNTIME_UPDATE))
374#define k_sec_to_cyc_floor32(t) \
375 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, false, false)
390#define k_sec_to_cyc_floor64(t) \
391 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, false, false)
406#define k_sec_to_cyc_near32(t) \
407 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, false, true)
422#define k_sec_to_cyc_near64(t) \
423 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, false, true)
438#define k_sec_to_cyc_ceil32(t) \
439 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, true, false)
454#define k_sec_to_cyc_ceil64(t) \
455 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, true, false)
470#define k_sec_to_ticks_floor32(t) \
471 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_ticks, true, false, false)
486#define k_sec_to_ticks_floor64(t) \
487 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_ticks, true, false, false)
502#define k_sec_to_ticks_near32(t) \
503 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_ticks, true, false, true)
518#define k_sec_to_ticks_near64(t) \
519 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_ticks, true, false, true)
534#define k_sec_to_ticks_ceil32(t) \
535 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_ticks, true, true, false)
550#define k_sec_to_ticks_ceil64(t) \
551 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_ticks, true, true, false)
566#define k_ms_to_cyc_floor32(t) \
567 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, false, false)
582#define k_ms_to_cyc_floor64(t) \
583 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, false, false)
598#define k_ms_to_cyc_near32(t) \
599 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, false, true)
614#define k_ms_to_cyc_near64(t) \
615 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, false, true)
630#define k_ms_to_cyc_ceil32(t) \
631 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, true, false)
646#define k_ms_to_cyc_ceil64(t) \
647 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, true, false)
662#define k_ms_to_ticks_floor32(t) \
663 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_ticks, true, false, false)
678#define k_ms_to_ticks_floor64(t) \
679 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_ticks, true, false, false)
694#define k_ms_to_ticks_near32(t) \
695 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_ticks, true, false, true)
710#define k_ms_to_ticks_near64(t) \
711 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_ticks, true, false, true)
726#define k_ms_to_ticks_ceil32(t) \
727 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_ticks, true, true, false)
742#define k_ms_to_ticks_ceil64(t) \
743 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_ticks, true, true, false)
758#define k_us_to_cyc_floor32(t) \
759 z_tmcvt_32(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, false, false)
774#define k_us_to_cyc_floor64(t) \
775 z_tmcvt_64(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, false, false)
790#define k_us_to_cyc_near32(t) \
791 z_tmcvt_32(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, false, true)
806#define k_us_to_cyc_near64(t) \
807 z_tmcvt_64(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, false, true)
822#define k_us_to_cyc_ceil32(t) \
823 z_tmcvt_32(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, true, false)
838#define k_us_to_cyc_ceil64(t) \
839 z_tmcvt_64(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, true, false)
854#define k_us_to_ticks_floor32(t) \
855 z_tmcvt_32(t, Z_HZ_us, Z_HZ_ticks, true, false, false)
870#define k_us_to_ticks_floor64(t) \
871 z_tmcvt_64(t, Z_HZ_us, Z_HZ_ticks, true, false, false)
886#define k_us_to_ticks_near32(t) \
887 z_tmcvt_32(t, Z_HZ_us, Z_HZ_ticks, true, false, true)
902#define k_us_to_ticks_near64(t) \
903 z_tmcvt_64(t, Z_HZ_us, Z_HZ_ticks, true, false, true)
918#define k_us_to_ticks_ceil32(t) \
919 z_tmcvt_32(t, Z_HZ_us, Z_HZ_ticks, true, true, false)
934#define k_us_to_ticks_ceil64(t) \
935 z_tmcvt_64(t, Z_HZ_us, Z_HZ_ticks, true, true, false)
950#define k_ns_to_cyc_floor32(t) \
951 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, false, false)
966#define k_ns_to_cyc_floor64(t) \
967 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, false, false)
982#define k_ns_to_cyc_near32(t) \
983 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, false, true)
998#define k_ns_to_cyc_near64(t) \
999 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, false, true)
1014#define k_ns_to_cyc_ceil32(t) \
1015 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, true, false)
1030#define k_ns_to_cyc_ceil64(t) \
1031 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, true, false)
1046#define k_ns_to_ticks_floor32(t) \
1047 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_ticks, true, false, false)
1062#define k_ns_to_ticks_floor64(t) \
1063 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_ticks, true, false, false)
1078#define k_ns_to_ticks_near32(t) \
1079 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_ticks, true, false, true)
1094#define k_ns_to_ticks_near64(t) \
1095 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_ticks, true, false, true)
1110#define k_ns_to_ticks_ceil32(t) \
1111 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_ticks, true, true, false)
1126#define k_ns_to_ticks_ceil64(t) \
1127 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_ticks, true, true, false)
1142#define k_cyc_to_sec_floor32(t) \
1143 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, false, false)
1158#define k_cyc_to_sec_floor64(t) \
1159 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, false, false)
1174#define k_cyc_to_sec_near32(t) \
1175 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, false, true)
1190#define k_cyc_to_sec_near64(t) \
1191 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, false, true)
1206#define k_cyc_to_sec_ceil32(t) \
1207 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, true, false)
1222#define k_cyc_to_sec_ceil64(t) \
1223 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, true, false)
1238#define k_cyc_to_ms_floor32(t) \
1239 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, false, false)
1254#define k_cyc_to_ms_floor64(t) \
1255 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, false, false)
1270#define k_cyc_to_ms_near32(t) \
1271 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, false, true)
1286#define k_cyc_to_ms_near64(t) \
1287 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, false, true)
1302#define k_cyc_to_ms_ceil32(t) \
1303 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, true, false)
1318#define k_cyc_to_ms_ceil64(t) \
1319 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, true, false)
1334#define k_cyc_to_us_floor32(t) \
1335 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, false, false)
1350#define k_cyc_to_us_floor64(t) \
1351 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, false, false)
1366#define k_cyc_to_us_near32(t) \
1367 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, false, true)
1382#define k_cyc_to_us_near64(t) \
1383 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, false, true)
1398#define k_cyc_to_us_ceil32(t) \
1399 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, true, false)
1414#define k_cyc_to_us_ceil64(t) \
1415 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, true, false)
1430#define k_cyc_to_ns_floor32(t) \
1431 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, false, false)
1446#define k_cyc_to_ns_floor64(t) \
1447 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, false, false)
1462#define k_cyc_to_ns_near32(t) \
1463 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, false, true)
1478#define k_cyc_to_ns_near64(t) \
1479 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, false, true)
1494#define k_cyc_to_ns_ceil32(t) \
1495 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, true, false)
1510#define k_cyc_to_ns_ceil64(t) \
1511 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, true, false)
1526#define k_cyc_to_ticks_floor32(t) \
1527 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, false, false)
1542#define k_cyc_to_ticks_floor64(t) \
1543 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, false, false)
1558#define k_cyc_to_ticks_near32(t) \
1559 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, false, true)
1574#define k_cyc_to_ticks_near64(t) \
1575 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, false, true)
1590#define k_cyc_to_ticks_ceil32(t) \
1591 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, true, false)
1606#define k_cyc_to_ticks_ceil64(t) \
1607 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, true, false)
1622#define k_ticks_to_sec_floor32(t) \
1623 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_sec, true, false, false)
1638#define k_ticks_to_sec_floor64(t) \
1639 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_sec, true, false, false)
1654#define k_ticks_to_sec_near32(t) \
1655 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_sec, true, false, true)
1670#define k_ticks_to_sec_near64(t) \
1671 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_sec, true, false, true)
1686#define k_ticks_to_sec_ceil32(t) \
1687 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_sec, true, true, false)
1702#define k_ticks_to_sec_ceil64(t) \
1703 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_sec, true, true, false)
1718#define k_ticks_to_ms_floor32(t) \
1719 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ms, true, false, false)
1734#define k_ticks_to_ms_floor64(t) \
1735 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ms, true, false, false)
1750#define k_ticks_to_ms_near32(t) \
1751 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ms, true, false, true)
1766#define k_ticks_to_ms_near64(t) \
1767 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ms, true, false, true)
1782#define k_ticks_to_ms_ceil32(t) \
1783 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ms, true, true, false)
1798#define k_ticks_to_ms_ceil64(t) \
1799 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ms, true, true, false)
1814#define k_ticks_to_us_floor32(t) \
1815 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_us, true, false, false)
1830#define k_ticks_to_us_floor64(t) \
1831 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_us, true, false, false)
1846#define k_ticks_to_us_near32(t) \
1847 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_us, true, false, true)
1862#define k_ticks_to_us_near64(t) \
1863 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_us, true, false, true)
1878#define k_ticks_to_us_ceil32(t) \
1879 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_us, true, true, false)
1894#define k_ticks_to_us_ceil64(t) \
1895 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_us, true, true, false)
1910#define k_ticks_to_ns_floor32(t) \
1911 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ns, true, false, false)
1926#define k_ticks_to_ns_floor64(t) \
1927 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ns, true, false, false)
1942#define k_ticks_to_ns_near32(t) \
1943 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ns, true, false, true)
1958#define k_ticks_to_ns_near64(t) \
1959 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ns, true, false, true)
1974#define k_ticks_to_ns_ceil32(t) \
1975 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ns, true, true, false)
1990#define k_ticks_to_ns_ceil64(t) \
1991 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ns, true, true, false)
2006#define k_ticks_to_cyc_floor32(t) \
2007 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, false, false)
2022#define k_ticks_to_cyc_floor64(t) \
2023 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, false, false)
2038#define k_ticks_to_cyc_near32(t) \
2039 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, false, true)
2054#define k_ticks_to_cyc_near64(t) \
2055 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, false, true)
2070#define k_ticks_to_cyc_ceil32(t) \
2071 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, true, false)
2086#define k_ticks_to_cyc_ceil64(t) \
2087 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, true, false)
2089#if defined(CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME) || \
2090 defined(CONFIG_SYSTEM_CLOCK_HW_CYCLES_PER_SEC_RUNTIME_UPDATE)
2091#include <zephyr/syscalls/time_units.h>
2094#undef TIME_CONSTEXPR