1 /*
2 * Copyright (c) 2019 Intel Corporation
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7 #ifndef ZEPHYR_INCLUDE_TIME_UNITS_H_
8 #define ZEPHYR_INCLUDE_TIME_UNITS_H_
9
10 #include <zephyr/toolchain.h>
11 #include <zephyr/sys/util.h>
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16
17 /**
18 * @file
19 * @defgroup timeutil_unit_apis Time Units Helpers
20 * @ingroup timeutil_apis
21 *
22 * @brief Various helper APIs for converting between time units.
23 * @{
24 */
25
26 /** @brief System-wide macro to denote "forever" in milliseconds
27 *
28 * Usage of this macro is limited to APIs that want to expose a timeout value
29 * that can optionally be unlimited, or "forever".
30 * This macro can not be fed into kernel functions or macros directly. Use
31 * @ref SYS_TIMEOUT_MS instead.
32 */
33 #define SYS_FOREVER_MS (-1)
34
35 /** @brief System-wide macro to denote "forever" in microseconds
36 *
37 * See @ref SYS_FOREVER_MS.
38 */
39 #define SYS_FOREVER_US (-1)
40
41 /** @brief System-wide macro to convert milliseconds to kernel timeouts
42 */
43 #define SYS_TIMEOUT_MS(ms) Z_TIMEOUT_TICKS((ms) == SYS_FOREVER_MS ? \
44 K_TICKS_FOREVER : Z_TIMEOUT_MS_TICKS(ms))
45
46 /* Exhaustively enumerated, highly optimized time unit conversion API */
47
48 #if defined(CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME)
49 __syscall int sys_clock_hw_cycles_per_sec_runtime_get(void);
50
z_impl_sys_clock_hw_cycles_per_sec_runtime_get(void)51 static inline int z_impl_sys_clock_hw_cycles_per_sec_runtime_get(void)
52 {
53 extern int z_clock_hw_cycles_per_sec;
54
55 return z_clock_hw_cycles_per_sec;
56 }
57 #endif /* CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME */
58
59 #if defined(__cplusplus) && (__cplusplus >= 201402L)
60 #if defined(CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME)
61 #define TIME_CONSTEXPR
62 #else
63 #define TIME_CONSTEXPR constexpr
64 #endif
65 #else
66 #define TIME_CONSTEXPR
67 #endif
68
69 /**
70 * @brief Get the system timer frequency.
71 * @return system timer frequency in Hz
72 */
73 #if defined(CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME)
74 #define sys_clock_hw_cycles_per_sec() sys_clock_hw_cycles_per_sec_runtime_get()
75 #else
76 #define sys_clock_hw_cycles_per_sec() CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC
77 #endif
78
79 /** @internal
80 * Macro determines if fast conversion algorithm can be used. It checks if
81 * maximum timeout represented in source frequency domain and multiplied by
82 * target frequency fits in 64 bits.
83 *
84 * @param from_hz Source frequency.
85 * @param to_hz Target frequency.
86 *
87 * @retval true Use faster algorithm.
88 * @retval false Use algorithm preventing overflow of intermediate value.
89 */
90 #define z_tmcvt_use_fast_algo(from_hz, to_hz) \
91 ((DIV_ROUND_UP(CONFIG_SYS_CLOCK_MAX_TIMEOUT_DAYS * 24ULL * 3600ULL * from_hz, \
92 UINT32_MAX) * to_hz) <= UINT32_MAX)
93
94 /* Time converter generator gadget. Selects from one of three
95 * conversion algorithms: ones that take advantage when the
96 * frequencies are an integer ratio (in either direction), or a full
97 * precision conversion. Clever use of extra arguments causes all the
98 * selection logic to be optimized out, and the generated code even
99 * reduces to 32 bit only if a ratio conversion is available and the
100 * result is 32 bits.
101 *
102 * This isn't intended to be used directly, instead being wrapped
103 * appropriately in a user-facing API. The boolean arguments are:
104 *
105 * const_hz - The hz arguments are known to be compile-time
106 * constants (because otherwise the modulus test would
107 * have to be done at runtime)
108 * result32 - The result will be truncated to 32 bits on use
109 * round_up - Return the ceiling of the resulting fraction
110 * round_off - Return the nearest value to the resulting fraction
111 * (pass both round_up/off as false to get "round_down")
112 *
113 * All of this must be implemented as expressions so that, when constant,
114 * the results may be used to initialize global variables.
115 */
116
117 /* true if the conversion is the identity */
118 #define z_tmcvt_is_identity(__from_hz, __to_hz) \
119 ((__to_hz) == (__from_hz))
120
121 /* true if the conversion requires a simple integer multiply */
122 #define z_tmcvt_is_int_mul(__from_hz, __to_hz) \
123 ((__to_hz) > (__from_hz) && (__to_hz) % (__from_hz) == 0U)
124
125 /* true if the conversion requires a simple integer division */
126 #define z_tmcvt_is_int_div(__from_hz, __to_hz) \
127 ((__from_hz) > (__to_hz) && (__from_hz) % (__to_hz) == 0U)
128
129 /*
130 * Compute the offset needed to round the result correctly when
131 * the conversion requires a simple integer division
132 */
133 #define z_tmcvt_off_div(__from_hz, __to_hz, __round_up, __round_off) \
134 ((__round_off) ? ((__from_hz) / (__to_hz)) / 2 : \
135 (__round_up) ? ((__from_hz) / (__to_hz)) - 1 : \
136 0)
137
138 /*
139 * All users of this macro MUST ensure its output is never used when a/b
140 * is zero because it incorrectly but by design never returns zero.
141 *
142 * Some compiler versions emit a divide-by-zero warning for this code:
143 * "false ? 42/0 : 43". Dealing with (generated) dead code is hard:
144 * https://github.com/zephyrproject-rtos/zephyr/issues/63564
145 * https://blog.llvm.org/2011/05/what-every-c-programmer-should-know_21.html
146 *
147 * To silence such divide-by-zero warnings, "cheat" and never return
148 * zero. Return 1 instead. Use octal "01u" as a breadcrumb to ease a
149 * little bit the huge pain of "reverse-engineering" pre-processor
150 * output.
151 *
152 * The "Elvis" operator "a/b ?: 1" is tempting because it avoids
153 * evaluating the same expression twice. However: 1. it's a non-standard
154 * GNU extension; 2. everything in this file is designed to be computed
155 * at compile time anyway.
156 */
157 #define z_tmcvt_divisor(a, b) ((a)/(b) ? (a)/(b) : 01u)
158
159 /*
160 * Compute the offset needed to round the result correctly when
161 * the conversion requires a full mul/div
162 */
163 #define z_tmcvt_off_gen(__from_hz, __to_hz, __round_up, __round_off) \
164 ((__round_off) ? (__from_hz) / 2 : \
165 (__round_up) ? (__from_hz) - 1 : \
166 0)
167
168 /* Integer division 32-bit conversion */
169 #define z_tmcvt_int_div_32(__t, __from_hz, __to_hz, __round_up, __round_off) \
170 ((uint64_t) (__t) <= 0xffffffffU - \
171 z_tmcvt_off_div(__from_hz, __to_hz, __round_up, __round_off) ? \
172 ((uint32_t)((__t) + \
173 z_tmcvt_off_div(__from_hz, __to_hz, \
174 __round_up, __round_off)) / \
175 z_tmcvt_divisor(__from_hz, __to_hz)) \
176 : \
177 (uint32_t) (((uint64_t) (__t) + \
178 z_tmcvt_off_div(__from_hz, __to_hz, \
179 __round_up, __round_off)) / \
180 z_tmcvt_divisor(__from_hz, __to_hz)) \
181 )
182
183 /* Integer multiplication 32-bit conversion */
184 #define z_tmcvt_int_mul_32(__t, __from_hz, __to_hz) \
185 (uint32_t) (__t)*((__to_hz) / (__from_hz))
186
187 /* General 32-bit conversion */
188 #define z_tmcvt_gen_32(__t, __from_hz, __to_hz, __round_up, __round_off) \
189 ((uint32_t) (((uint64_t) (__t)*(__to_hz) + \
190 z_tmcvt_off_gen(__from_hz, __to_hz, __round_up, __round_off)) / (__from_hz)))
191
192 /* Integer division 64-bit conversion */
193 #define z_tmcvt_int_div_64(__t, __from_hz, __to_hz, __round_up, __round_off) \
194 (((uint64_t) (__t) + z_tmcvt_off_div(__from_hz, __to_hz, \
195 __round_up, __round_off)) / \
196 z_tmcvt_divisor(__from_hz, __to_hz))
197
198 /* Integer multiplication 64-bit conversion */
199 #define z_tmcvt_int_mul_64(__t, __from_hz, __to_hz) \
200 (uint64_t) (__t)*((__to_hz) / (__from_hz))
201
202 /* Fast 64-bit conversion. This relies on the multiply not overflowing */
203 #define z_tmcvt_gen_64_fast(__t, __from_hz, __to_hz, __round_up, __round_off) \
204 (((uint64_t) (__t)*(__to_hz) + \
205 z_tmcvt_off_gen(__from_hz, __to_hz, __round_up, __round_off)) / (__from_hz))
206
207 /* Slow 64-bit conversion. This avoids overflowing the multiply */
208 #define z_tmcvt_gen_64_slow(__t, __from_hz, __to_hz, __round_up, __round_off) \
209 (((uint64_t) (__t) / (__from_hz))*(__to_hz) + \
210 (((uint64_t) (__t) % (__from_hz))*(__to_hz) + \
211 z_tmcvt_off_gen(__from_hz, __to_hz, __round_up, __round_off)) / (__from_hz))
212
213 /* General 64-bit conversion. Uses one of the two above macros */
214 #define z_tmcvt_gen_64(__t, __from_hz, __to_hz, __round_up, __round_off) \
215 (z_tmcvt_use_fast_algo(__from_hz, __to_hz) ? \
216 z_tmcvt_gen_64_fast(__t, __from_hz, __to_hz, __round_up, __round_off) : \
217 z_tmcvt_gen_64_slow(__t, __from_hz, __to_hz, __round_up, __round_off))
218
219 /* Convert, generating a 32-bit result */
220 #define z_tmcvt_32(__t, __from_hz, __to_hz, __const_hz, __round_up, __round_off) \
221 ((__const_hz) ? \
222 ( \
223 z_tmcvt_is_identity(__from_hz, __to_hz) ? \
224 (uint32_t) (__t) \
225 : \
226 z_tmcvt_is_int_div(__from_hz, __to_hz) ? \
227 z_tmcvt_int_div_32(__t, __from_hz, __to_hz, __round_up, __round_off) \
228 : \
229 z_tmcvt_is_int_mul(__from_hz, __to_hz) ? \
230 z_tmcvt_int_mul_32(__t, __from_hz, __to_hz) \
231 : \
232 z_tmcvt_gen_32(__t, __from_hz, __to_hz, __round_up, __round_off) \
233 ) \
234 : \
235 z_tmcvt_gen_32(__t, __from_hz, __to_hz, __round_up, __round_off) \
236 )
237
238 /* Convert, generating a 64-bit result */
239 #define z_tmcvt_64(__t, __from_hz, __to_hz, __const_hz, __round_up, __round_off) \
240 ((__const_hz) ? \
241 ( \
242 z_tmcvt_is_identity(__from_hz, __to_hz) ? \
243 (uint64_t) (__t) \
244 : \
245 z_tmcvt_is_int_div(__from_hz, __to_hz) ? \
246 z_tmcvt_int_div_64(__t, __from_hz, __to_hz, __round_up, __round_off) \
247 : \
248 z_tmcvt_is_int_mul(__from_hz, __to_hz) ? \
249 z_tmcvt_int_mul_64(__t, __from_hz, __to_hz) \
250 : \
251 z_tmcvt_gen_64(__t, __from_hz, __to_hz, __round_up, __round_off) \
252 ) \
253 : \
254 z_tmcvt_gen_64_slow(__t, __from_hz, __to_hz, __round_up, __round_off) \
255 )
256
257 #define z_tmcvt(__t, __from_hz, __to_hz, __const_hz, __result32, __round_up, __round_off) \
258 ((__result32) ? \
259 z_tmcvt_32(__t, __from_hz, __to_hz, __const_hz, __round_up, __round_off) : \
260 z_tmcvt_64(__t, __from_hz, __to_hz, __const_hz, __round_up, __round_off))
261
262 /* The following code is programmatically generated using this perl
263 * code, which enumerates all possible combinations of units, rounding
264 * modes and precision. Do not edit directly.
265 *
266 * Note that nano/microsecond conversions are only defined with 64 bit
267 * precision. These units conversions were not available in 32 bit
268 * variants historically, and doing 32 bit math with units that small
269 * has precision traps that we probably don't want to support in an
270 * official API.
271 *
272 * #!/usr/bin/perl -w
273 * use strict;
274 *
275 * my %human = ("sec" => "seconds",
276 * "ms" => "milliseconds",
277 * "us" => "microseconds",
278 * "ns" => "nanoseconds",
279 * "cyc" => "hardware cycles",
280 * "ticks" => "ticks");
281 * my %human_round = ("ceil" => "Rounds up",
282 * "near" => "Round nearest",
283 * "floor" => "Truncates");
284 *
285 * sub big { return $_[0] eq "us" || $_[0] eq "ns"; }
286 * sub prefix { return $_[0] eq "sec" || $_[0] eq "ms" || $_[0] eq "us" || $_[0] eq "ns"; }
287 *
288 * for my $from_unit ("sec", "ms", "us", "ns", "cyc", "ticks") {
289 * for my $to_unit ("sec", "ms", "us", "ns", "cyc", "ticks") {
290 * next if $from_unit eq $to_unit;
291 * next if prefix($from_unit) && prefix($to_unit);
292 * for my $round ("floor", "near", "ceil") {
293 * for(my $big=0; $big <= 1; $big++) {
294 * my $sz = $big ? 64 : 32;
295 * my $sym = "k_${from_unit}_to_${to_unit}_$round$sz";
296 * my $type = "uint${sz}_t";
297 * my $const_hz = ($from_unit eq "cyc" || $to_unit eq "cyc")
298 * ? "Z_CCYC" : "true";
299 * my $ret32 = $big ? "64" : "32";
300 * my $rup = $round eq "ceil" ? "true" : "false";
301 * my $roff = $round eq "near" ? "true" : "false";
302 *
303 * my $hfrom = $human{$from_unit};
304 * my $hto = $human{$to_unit};
305 * my $hround = $human_round{$round};
306 * print "/", "** \@brief Convert $hfrom to $hto. $ret32 bits. $hround.\n";
307 * print " *\n";
308 * print " * Converts time values in $hfrom to $hto.\n";
309 * print " * Computes result in $sz bit precision.\n";
310 * if ($round eq "ceil") {
311 * print " * Rounds up to the next highest output unit.\n";
312 * } elsif ($round eq "near") {
313 * print " * Rounds to the nearest output unit.\n";
314 * } else {
315 * print " * Truncates to the next lowest output unit.\n";
316 * }
317 * print " *\n";
318 * print " * \@warning Generated. Do not edit. See above.\n";
319 * print " *\n";
320 * print " * \@param t Source time in $hfrom. uint64_t\n";
321 * print " *\n";
322 * print " * \@return The converted time value in $hto. $type\n";
323 * print " *", "/\n";
324 * print "#define $sym(t) \\\n";
325 * print "\tz_tmcvt_$ret32(t, Z_HZ_$from_unit, Z_HZ_$to_unit,";
326 * print " $const_hz, $rup, $roff)\n";
327 * print "\n\n";
328 * }
329 * }
330 * }
331 * }
332 */
333
334 /* Some more concise declarations to simplify the generator script and
335 * save bytes below
336 */
337 #define Z_HZ_sec 1
338 #define Z_HZ_ms 1000
339 #define Z_HZ_us 1000000
340 #define Z_HZ_ns 1000000000
341 #define Z_HZ_cyc sys_clock_hw_cycles_per_sec()
342 #define Z_HZ_ticks CONFIG_SYS_CLOCK_TICKS_PER_SEC
343 #define Z_CCYC (!IS_ENABLED(CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME))
344
345 /** @brief Convert seconds to hardware cycles. 32 bits. Truncates.
346 *
347 * Converts time values in seconds to hardware cycles.
348 * Computes result in 32 bit precision.
349 * Truncates to the next lowest output unit.
350 *
351 * @warning Generated. Do not edit. See above.
352 *
353 * @param t Source time in seconds. uint64_t
354 *
355 * @return The converted time value in hardware cycles. uint32_t
356 */
357 #define k_sec_to_cyc_floor32(t) \
358 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, false, false)
359
360
361 /** @brief Convert seconds to hardware cycles. 64 bits. Truncates.
362 *
363 * Converts time values in seconds to hardware cycles.
364 * Computes result in 64 bit precision.
365 * Truncates to the next lowest output unit.
366 *
367 * @warning Generated. Do not edit. See above.
368 *
369 * @param t Source time in seconds. uint64_t
370 *
371 * @return The converted time value in hardware cycles. uint64_t
372 */
373 #define k_sec_to_cyc_floor64(t) \
374 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, false, false)
375
376
377 /** @brief Convert seconds to hardware cycles. 32 bits. Round nearest.
378 *
379 * Converts time values in seconds to hardware cycles.
380 * Computes result in 32 bit precision.
381 * Rounds to the nearest output unit.
382 *
383 * @warning Generated. Do not edit. See above.
384 *
385 * @param t Source time in seconds. uint64_t
386 *
387 * @return The converted time value in hardware cycles. uint32_t
388 */
389 #define k_sec_to_cyc_near32(t) \
390 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, false, true)
391
392
393 /** @brief Convert seconds to hardware cycles. 64 bits. Round nearest.
394 *
395 * Converts time values in seconds to hardware cycles.
396 * Computes result in 64 bit precision.
397 * Rounds to the nearest output unit.
398 *
399 * @warning Generated. Do not edit. See above.
400 *
401 * @param t Source time in seconds. uint64_t
402 *
403 * @return The converted time value in hardware cycles. uint64_t
404 */
405 #define k_sec_to_cyc_near64(t) \
406 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, false, true)
407
408
409 /** @brief Convert seconds to hardware cycles. 32 bits. Rounds up.
410 *
411 * Converts time values in seconds to hardware cycles.
412 * Computes result in 32 bit precision.
413 * Rounds up to the next highest output unit.
414 *
415 * @warning Generated. Do not edit. See above.
416 *
417 * @param t Source time in seconds. uint64_t
418 *
419 * @return The converted time value in hardware cycles. uint32_t
420 */
421 #define k_sec_to_cyc_ceil32(t) \
422 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, true, false)
423
424
425 /** @brief Convert seconds to hardware cycles. 64 bits. Rounds up.
426 *
427 * Converts time values in seconds to hardware cycles.
428 * Computes result in 64 bit precision.
429 * Rounds up to the next highest output unit.
430 *
431 * @warning Generated. Do not edit. See above.
432 *
433 * @param t Source time in seconds. uint64_t
434 *
435 * @return The converted time value in hardware cycles. uint64_t
436 */
437 #define k_sec_to_cyc_ceil64(t) \
438 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_cyc, Z_CCYC, true, false)
439
440
441 /** @brief Convert seconds to ticks. 32 bits. Truncates.
442 *
443 * Converts time values in seconds to ticks.
444 * Computes result in 32 bit precision.
445 * Truncates to the next lowest output unit.
446 *
447 * @warning Generated. Do not edit. See above.
448 *
449 * @param t Source time in seconds. uint64_t
450 *
451 * @return The converted time value in ticks. uint32_t
452 */
453 #define k_sec_to_ticks_floor32(t) \
454 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_ticks, true, false, false)
455
456
457 /** @brief Convert seconds to ticks. 64 bits. Truncates.
458 *
459 * Converts time values in seconds to ticks.
460 * Computes result in 64 bit precision.
461 * Truncates to the next lowest output unit.
462 *
463 * @warning Generated. Do not edit. See above.
464 *
465 * @param t Source time in seconds. uint64_t
466 *
467 * @return The converted time value in ticks. uint64_t
468 */
469 #define k_sec_to_ticks_floor64(t) \
470 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_ticks, true, false, false)
471
472
473 /** @brief Convert seconds to ticks. 32 bits. Round nearest.
474 *
475 * Converts time values in seconds to ticks.
476 * Computes result in 32 bit precision.
477 * Rounds to the nearest output unit.
478 *
479 * @warning Generated. Do not edit. See above.
480 *
481 * @param t Source time in seconds. uint64_t
482 *
483 * @return The converted time value in ticks. uint32_t
484 */
485 #define k_sec_to_ticks_near32(t) \
486 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_ticks, true, false, true)
487
488
489 /** @brief Convert seconds to ticks. 64 bits. Round nearest.
490 *
491 * Converts time values in seconds to ticks.
492 * Computes result in 64 bit precision.
493 * Rounds to the nearest output unit.
494 *
495 * @warning Generated. Do not edit. See above.
496 *
497 * @param t Source time in seconds. uint64_t
498 *
499 * @return The converted time value in ticks. uint64_t
500 */
501 #define k_sec_to_ticks_near64(t) \
502 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_ticks, true, false, true)
503
504
505 /** @brief Convert seconds to ticks. 32 bits. Rounds up.
506 *
507 * Converts time values in seconds to ticks.
508 * Computes result in 32 bit precision.
509 * Rounds up to the next highest output unit.
510 *
511 * @warning Generated. Do not edit. See above.
512 *
513 * @param t Source time in seconds. uint64_t
514 *
515 * @return The converted time value in ticks. uint32_t
516 */
517 #define k_sec_to_ticks_ceil32(t) \
518 z_tmcvt_32(t, Z_HZ_sec, Z_HZ_ticks, true, true, false)
519
520
521 /** @brief Convert seconds to ticks. 64 bits. Rounds up.
522 *
523 * Converts time values in seconds to ticks.
524 * Computes result in 64 bit precision.
525 * Rounds up to the next highest output unit.
526 *
527 * @warning Generated. Do not edit. See above.
528 *
529 * @param t Source time in seconds. uint64_t
530 *
531 * @return The converted time value in ticks. uint64_t
532 */
533 #define k_sec_to_ticks_ceil64(t) \
534 z_tmcvt_64(t, Z_HZ_sec, Z_HZ_ticks, true, true, false)
535
536
537 /** @brief Convert milliseconds to hardware cycles. 32 bits. Truncates.
538 *
539 * Converts time values in milliseconds to hardware cycles.
540 * Computes result in 32 bit precision.
541 * Truncates to the next lowest output unit.
542 *
543 * @warning Generated. Do not edit. See above.
544 *
545 * @param t Source time in milliseconds. uint64_t
546 *
547 * @return The converted time value in hardware cycles. uint32_t
548 */
549 #define k_ms_to_cyc_floor32(t) \
550 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, false, false)
551
552
553 /** @brief Convert milliseconds to hardware cycles. 64 bits. Truncates.
554 *
555 * Converts time values in milliseconds to hardware cycles.
556 * Computes result in 64 bit precision.
557 * Truncates to the next lowest output unit.
558 *
559 * @warning Generated. Do not edit. See above.
560 *
561 * @param t Source time in milliseconds. uint64_t
562 *
563 * @return The converted time value in hardware cycles. uint64_t
564 */
565 #define k_ms_to_cyc_floor64(t) \
566 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, false, false)
567
568
569 /** @brief Convert milliseconds to hardware cycles. 32 bits. Round nearest.
570 *
571 * Converts time values in milliseconds to hardware cycles.
572 * Computes result in 32 bit precision.
573 * Rounds to the nearest output unit.
574 *
575 * @warning Generated. Do not edit. See above.
576 *
577 * @param t Source time in milliseconds. uint64_t
578 *
579 * @return The converted time value in hardware cycles. uint32_t
580 */
581 #define k_ms_to_cyc_near32(t) \
582 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, false, true)
583
584
585 /** @brief Convert milliseconds to hardware cycles. 64 bits. Round nearest.
586 *
587 * Converts time values in milliseconds to hardware cycles.
588 * Computes result in 64 bit precision.
589 * Rounds to the nearest output unit.
590 *
591 * @warning Generated. Do not edit. See above.
592 *
593 * @param t Source time in milliseconds. uint64_t
594 *
595 * @return The converted time value in hardware cycles. uint64_t
596 */
597 #define k_ms_to_cyc_near64(t) \
598 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, false, true)
599
600
601 /** @brief Convert milliseconds to hardware cycles. 32 bits. Rounds up.
602 *
603 * Converts time values in milliseconds to hardware cycles.
604 * Computes result in 32 bit precision.
605 * Rounds up to the next highest output unit.
606 *
607 * @warning Generated. Do not edit. See above.
608 *
609 * @param t Source time in milliseconds. uint64_t
610 *
611 * @return The converted time value in hardware cycles. uint32_t
612 */
613 #define k_ms_to_cyc_ceil32(t) \
614 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, true, false)
615
616
617 /** @brief Convert milliseconds to hardware cycles. 64 bits. Rounds up.
618 *
619 * Converts time values in milliseconds to hardware cycles.
620 * Computes result in 64 bit precision.
621 * Rounds up to the next highest output unit.
622 *
623 * @warning Generated. Do not edit. See above.
624 *
625 * @param t Source time in milliseconds. uint64_t
626 *
627 * @return The converted time value in hardware cycles. uint64_t
628 */
629 #define k_ms_to_cyc_ceil64(t) \
630 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_cyc, Z_CCYC, true, false)
631
632
633 /** @brief Convert milliseconds to ticks. 32 bits. Truncates.
634 *
635 * Converts time values in milliseconds to ticks.
636 * Computes result in 32 bit precision.
637 * Truncates to the next lowest output unit.
638 *
639 * @warning Generated. Do not edit. See above.
640 *
641 * @param t Source time in milliseconds. uint64_t
642 *
643 * @return The converted time value in ticks. uint32_t
644 */
645 #define k_ms_to_ticks_floor32(t) \
646 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_ticks, true, false, false)
647
648
649 /** @brief Convert milliseconds to ticks. 64 bits. Truncates.
650 *
651 * Converts time values in milliseconds to ticks.
652 * Computes result in 64 bit precision.
653 * Truncates to the next lowest output unit.
654 *
655 * @warning Generated. Do not edit. See above.
656 *
657 * @param t Source time in milliseconds. uint64_t
658 *
659 * @return The converted time value in ticks. uint64_t
660 */
661 #define k_ms_to_ticks_floor64(t) \
662 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_ticks, true, false, false)
663
664
665 /** @brief Convert milliseconds to ticks. 32 bits. Round nearest.
666 *
667 * Converts time values in milliseconds to ticks.
668 * Computes result in 32 bit precision.
669 * Rounds to the nearest output unit.
670 *
671 * @warning Generated. Do not edit. See above.
672 *
673 * @param t Source time in milliseconds. uint64_t
674 *
675 * @return The converted time value in ticks. uint32_t
676 */
677 #define k_ms_to_ticks_near32(t) \
678 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_ticks, true, false, true)
679
680
681 /** @brief Convert milliseconds to ticks. 64 bits. Round nearest.
682 *
683 * Converts time values in milliseconds to ticks.
684 * Computes result in 64 bit precision.
685 * Rounds to the nearest output unit.
686 *
687 * @warning Generated. Do not edit. See above.
688 *
689 * @param t Source time in milliseconds. uint64_t
690 *
691 * @return The converted time value in ticks. uint64_t
692 */
693 #define k_ms_to_ticks_near64(t) \
694 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_ticks, true, false, true)
695
696
697 /** @brief Convert milliseconds to ticks. 32 bits. Rounds up.
698 *
699 * Converts time values in milliseconds to ticks.
700 * Computes result in 32 bit precision.
701 * Rounds up to the next highest output unit.
702 *
703 * @warning Generated. Do not edit. See above.
704 *
705 * @param t Source time in milliseconds. uint64_t
706 *
707 * @return The converted time value in ticks. uint32_t
708 */
709 #define k_ms_to_ticks_ceil32(t) \
710 z_tmcvt_32(t, Z_HZ_ms, Z_HZ_ticks, true, true, false)
711
712
713 /** @brief Convert milliseconds to ticks. 64 bits. Rounds up.
714 *
715 * Converts time values in milliseconds to ticks.
716 * Computes result in 64 bit precision.
717 * Rounds up to the next highest output unit.
718 *
719 * @warning Generated. Do not edit. See above.
720 *
721 * @param t Source time in milliseconds. uint64_t
722 *
723 * @return The converted time value in ticks. uint64_t
724 */
725 #define k_ms_to_ticks_ceil64(t) \
726 z_tmcvt_64(t, Z_HZ_ms, Z_HZ_ticks, true, true, false)
727
728
729 /** @brief Convert microseconds to hardware cycles. 32 bits. Truncates.
730 *
731 * Converts time values in microseconds to hardware cycles.
732 * Computes result in 32 bit precision.
733 * Truncates to the next lowest output unit.
734 *
735 * @warning Generated. Do not edit. See above.
736 *
737 * @param t Source time in microseconds. uint64_t
738 *
739 * @return The converted time value in hardware cycles. uint32_t
740 */
741 #define k_us_to_cyc_floor32(t) \
742 z_tmcvt_32(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, false, false)
743
744
745 /** @brief Convert microseconds to hardware cycles. 64 bits. Truncates.
746 *
747 * Converts time values in microseconds to hardware cycles.
748 * Computes result in 64 bit precision.
749 * Truncates to the next lowest output unit.
750 *
751 * @warning Generated. Do not edit. See above.
752 *
753 * @param t Source time in microseconds. uint64_t
754 *
755 * @return The converted time value in hardware cycles. uint64_t
756 */
757 #define k_us_to_cyc_floor64(t) \
758 z_tmcvt_64(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, false, false)
759
760
761 /** @brief Convert microseconds to hardware cycles. 32 bits. Round nearest.
762 *
763 * Converts time values in microseconds to hardware cycles.
764 * Computes result in 32 bit precision.
765 * Rounds to the nearest output unit.
766 *
767 * @warning Generated. Do not edit. See above.
768 *
769 * @param t Source time in microseconds. uint64_t
770 *
771 * @return The converted time value in hardware cycles. uint32_t
772 */
773 #define k_us_to_cyc_near32(t) \
774 z_tmcvt_32(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, false, true)
775
776
777 /** @brief Convert microseconds to hardware cycles. 64 bits. Round nearest.
778 *
779 * Converts time values in microseconds to hardware cycles.
780 * Computes result in 64 bit precision.
781 * Rounds to the nearest output unit.
782 *
783 * @warning Generated. Do not edit. See above.
784 *
785 * @param t Source time in microseconds. uint64_t
786 *
787 * @return The converted time value in hardware cycles. uint64_t
788 */
789 #define k_us_to_cyc_near64(t) \
790 z_tmcvt_64(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, false, true)
791
792
793 /** @brief Convert microseconds to hardware cycles. 32 bits. Rounds up.
794 *
795 * Converts time values in microseconds to hardware cycles.
796 * Computes result in 32 bit precision.
797 * Rounds up to the next highest output unit.
798 *
799 * @warning Generated. Do not edit. See above.
800 *
801 * @param t Source time in microseconds. uint64_t
802 *
803 * @return The converted time value in hardware cycles. uint32_t
804 */
805 #define k_us_to_cyc_ceil32(t) \
806 z_tmcvt_32(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, true, false)
807
808
809 /** @brief Convert microseconds to hardware cycles. 64 bits. Rounds up.
810 *
811 * Converts time values in microseconds to hardware cycles.
812 * Computes result in 64 bit precision.
813 * Rounds up to the next highest output unit.
814 *
815 * @warning Generated. Do not edit. See above.
816 *
817 * @param t Source time in microseconds. uint64_t
818 *
819 * @return The converted time value in hardware cycles. uint64_t
820 */
821 #define k_us_to_cyc_ceil64(t) \
822 z_tmcvt_64(t, Z_HZ_us, Z_HZ_cyc, Z_CCYC, true, false)
823
824
825 /** @brief Convert microseconds to ticks. 32 bits. Truncates.
826 *
827 * Converts time values in microseconds to ticks.
828 * Computes result in 32 bit precision.
829 * Truncates to the next lowest output unit.
830 *
831 * @warning Generated. Do not edit. See above.
832 *
833 * @param t Source time in microseconds. uint64_t
834 *
835 * @return The converted time value in ticks. uint32_t
836 */
837 #define k_us_to_ticks_floor32(t) \
838 z_tmcvt_32(t, Z_HZ_us, Z_HZ_ticks, true, false, false)
839
840
841 /** @brief Convert microseconds to ticks. 64 bits. Truncates.
842 *
843 * Converts time values in microseconds to ticks.
844 * Computes result in 64 bit precision.
845 * Truncates to the next lowest output unit.
846 *
847 * @warning Generated. Do not edit. See above.
848 *
849 * @param t Source time in microseconds. uint64_t
850 *
851 * @return The converted time value in ticks. uint64_t
852 */
853 #define k_us_to_ticks_floor64(t) \
854 z_tmcvt_64(t, Z_HZ_us, Z_HZ_ticks, true, false, false)
855
856
857 /** @brief Convert microseconds to ticks. 32 bits. Round nearest.
858 *
859 * Converts time values in microseconds to ticks.
860 * Computes result in 32 bit precision.
861 * Rounds to the nearest output unit.
862 *
863 * @warning Generated. Do not edit. See above.
864 *
865 * @param t Source time in microseconds. uint64_t
866 *
867 * @return The converted time value in ticks. uint32_t
868 */
869 #define k_us_to_ticks_near32(t) \
870 z_tmcvt_32(t, Z_HZ_us, Z_HZ_ticks, true, false, true)
871
872
873 /** @brief Convert microseconds to ticks. 64 bits. Round nearest.
874 *
875 * Converts time values in microseconds to ticks.
876 * Computes result in 64 bit precision.
877 * Rounds to the nearest output unit.
878 *
879 * @warning Generated. Do not edit. See above.
880 *
881 * @param t Source time in microseconds. uint64_t
882 *
883 * @return The converted time value in ticks. uint64_t
884 */
885 #define k_us_to_ticks_near64(t) \
886 z_tmcvt_64(t, Z_HZ_us, Z_HZ_ticks, true, false, true)
887
888
889 /** @brief Convert microseconds to ticks. 32 bits. Rounds up.
890 *
891 * Converts time values in microseconds to ticks.
892 * Computes result in 32 bit precision.
893 * Rounds up to the next highest output unit.
894 *
895 * @warning Generated. Do not edit. See above.
896 *
897 * @param t Source time in microseconds. uint64_t
898 *
899 * @return The converted time value in ticks. uint32_t
900 */
901 #define k_us_to_ticks_ceil32(t) \
902 z_tmcvt_32(t, Z_HZ_us, Z_HZ_ticks, true, true, false)
903
904
905 /** @brief Convert microseconds to ticks. 64 bits. Rounds up.
906 *
907 * Converts time values in microseconds to ticks.
908 * Computes result in 64 bit precision.
909 * Rounds up to the next highest output unit.
910 *
911 * @warning Generated. Do not edit. See above.
912 *
913 * @param t Source time in microseconds. uint64_t
914 *
915 * @return The converted time value in ticks. uint64_t
916 */
917 #define k_us_to_ticks_ceil64(t) \
918 z_tmcvt_64(t, Z_HZ_us, Z_HZ_ticks, true, true, false)
919
920
921 /** @brief Convert nanoseconds to hardware cycles. 32 bits. Truncates.
922 *
923 * Converts time values in nanoseconds to hardware cycles.
924 * Computes result in 32 bit precision.
925 * Truncates to the next lowest output unit.
926 *
927 * @warning Generated. Do not edit. See above.
928 *
929 * @param t Source time in nanoseconds. uint64_t
930 *
931 * @return The converted time value in hardware cycles. uint32_t
932 */
933 #define k_ns_to_cyc_floor32(t) \
934 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, false, false)
935
936
937 /** @brief Convert nanoseconds to hardware cycles. 64 bits. Truncates.
938 *
939 * Converts time values in nanoseconds to hardware cycles.
940 * Computes result in 64 bit precision.
941 * Truncates to the next lowest output unit.
942 *
943 * @warning Generated. Do not edit. See above.
944 *
945 * @param t Source time in nanoseconds. uint64_t
946 *
947 * @return The converted time value in hardware cycles. uint64_t
948 */
949 #define k_ns_to_cyc_floor64(t) \
950 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, false, false)
951
952
953 /** @brief Convert nanoseconds to hardware cycles. 32 bits. Round nearest.
954 *
955 * Converts time values in nanoseconds to hardware cycles.
956 * Computes result in 32 bit precision.
957 * Rounds to the nearest output unit.
958 *
959 * @warning Generated. Do not edit. See above.
960 *
961 * @param t Source time in nanoseconds. uint64_t
962 *
963 * @return The converted time value in hardware cycles. uint32_t
964 */
965 #define k_ns_to_cyc_near32(t) \
966 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, false, true)
967
968
969 /** @brief Convert nanoseconds to hardware cycles. 64 bits. Round nearest.
970 *
971 * Converts time values in nanoseconds to hardware cycles.
972 * Computes result in 64 bit precision.
973 * Rounds to the nearest output unit.
974 *
975 * @warning Generated. Do not edit. See above.
976 *
977 * @param t Source time in nanoseconds. uint64_t
978 *
979 * @return The converted time value in hardware cycles. uint64_t
980 */
981 #define k_ns_to_cyc_near64(t) \
982 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, false, true)
983
984
985 /** @brief Convert nanoseconds to hardware cycles. 32 bits. Rounds up.
986 *
987 * Converts time values in nanoseconds to hardware cycles.
988 * Computes result in 32 bit precision.
989 * Rounds up to the next highest output unit.
990 *
991 * @warning Generated. Do not edit. See above.
992 *
993 * @param t Source time in nanoseconds. uint64_t
994 *
995 * @return The converted time value in hardware cycles. uint32_t
996 */
997 #define k_ns_to_cyc_ceil32(t) \
998 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, true, false)
999
1000
1001 /** @brief Convert nanoseconds to hardware cycles. 64 bits. Rounds up.
1002 *
1003 * Converts time values in nanoseconds to hardware cycles.
1004 * Computes result in 64 bit precision.
1005 * Rounds up to the next highest output unit.
1006 *
1007 * @warning Generated. Do not edit. See above.
1008 *
1009 * @param t Source time in nanoseconds. uint64_t
1010 *
1011 * @return The converted time value in hardware cycles. uint64_t
1012 */
1013 #define k_ns_to_cyc_ceil64(t) \
1014 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_cyc, Z_CCYC, true, false)
1015
1016
1017 /** @brief Convert nanoseconds to ticks. 32 bits. Truncates.
1018 *
1019 * Converts time values in nanoseconds to ticks.
1020 * Computes result in 32 bit precision.
1021 * Truncates to the next lowest output unit.
1022 *
1023 * @warning Generated. Do not edit. See above.
1024 *
1025 * @param t Source time in nanoseconds. uint64_t
1026 *
1027 * @return The converted time value in ticks. uint32_t
1028 */
1029 #define k_ns_to_ticks_floor32(t) \
1030 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_ticks, true, false, false)
1031
1032
1033 /** @brief Convert nanoseconds to ticks. 64 bits. Truncates.
1034 *
1035 * Converts time values in nanoseconds to ticks.
1036 * Computes result in 64 bit precision.
1037 * Truncates to the next lowest output unit.
1038 *
1039 * @warning Generated. Do not edit. See above.
1040 *
1041 * @param t Source time in nanoseconds. uint64_t
1042 *
1043 * @return The converted time value in ticks. uint64_t
1044 */
1045 #define k_ns_to_ticks_floor64(t) \
1046 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_ticks, true, false, false)
1047
1048
1049 /** @brief Convert nanoseconds to ticks. 32 bits. Round nearest.
1050 *
1051 * Converts time values in nanoseconds to ticks.
1052 * Computes result in 32 bit precision.
1053 * Rounds to the nearest output unit.
1054 *
1055 * @warning Generated. Do not edit. See above.
1056 *
1057 * @param t Source time in nanoseconds. uint64_t
1058 *
1059 * @return The converted time value in ticks. uint32_t
1060 */
1061 #define k_ns_to_ticks_near32(t) \
1062 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_ticks, true, false, true)
1063
1064
1065 /** @brief Convert nanoseconds to ticks. 64 bits. Round nearest.
1066 *
1067 * Converts time values in nanoseconds to ticks.
1068 * Computes result in 64 bit precision.
1069 * Rounds to the nearest output unit.
1070 *
1071 * @warning Generated. Do not edit. See above.
1072 *
1073 * @param t Source time in nanoseconds. uint64_t
1074 *
1075 * @return The converted time value in ticks. uint64_t
1076 */
1077 #define k_ns_to_ticks_near64(t) \
1078 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_ticks, true, false, true)
1079
1080
1081 /** @brief Convert nanoseconds to ticks. 32 bits. Rounds up.
1082 *
1083 * Converts time values in nanoseconds to ticks.
1084 * Computes result in 32 bit precision.
1085 * Rounds up to the next highest output unit.
1086 *
1087 * @warning Generated. Do not edit. See above.
1088 *
1089 * @param t Source time in nanoseconds. uint64_t
1090 *
1091 * @return The converted time value in ticks. uint32_t
1092 */
1093 #define k_ns_to_ticks_ceil32(t) \
1094 z_tmcvt_32(t, Z_HZ_ns, Z_HZ_ticks, true, true, false)
1095
1096
1097 /** @brief Convert nanoseconds to ticks. 64 bits. Rounds up.
1098 *
1099 * Converts time values in nanoseconds to ticks.
1100 * Computes result in 64 bit precision.
1101 * Rounds up to the next highest output unit.
1102 *
1103 * @warning Generated. Do not edit. See above.
1104 *
1105 * @param t Source time in nanoseconds. uint64_t
1106 *
1107 * @return The converted time value in ticks. uint64_t
1108 */
1109 #define k_ns_to_ticks_ceil64(t) \
1110 z_tmcvt_64(t, Z_HZ_ns, Z_HZ_ticks, true, true, false)
1111
1112
1113 /** @brief Convert hardware cycles to seconds. 32 bits. Truncates.
1114 *
1115 * Converts time values in hardware cycles to seconds.
1116 * Computes result in 32 bit precision.
1117 * Truncates to the next lowest output unit.
1118 *
1119 * @warning Generated. Do not edit. See above.
1120 *
1121 * @param t Source time in hardware cycles. uint64_t
1122 *
1123 * @return The converted time value in seconds. uint32_t
1124 */
1125 #define k_cyc_to_sec_floor32(t) \
1126 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, false, false)
1127
1128
1129 /** @brief Convert hardware cycles to seconds. 64 bits. Truncates.
1130 *
1131 * Converts time values in hardware cycles to seconds.
1132 * Computes result in 64 bit precision.
1133 * Truncates to the next lowest output unit.
1134 *
1135 * @warning Generated. Do not edit. See above.
1136 *
1137 * @param t Source time in hardware cycles. uint64_t
1138 *
1139 * @return The converted time value in seconds. uint64_t
1140 */
1141 #define k_cyc_to_sec_floor64(t) \
1142 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, false, false)
1143
1144
1145 /** @brief Convert hardware cycles to seconds. 32 bits. Round nearest.
1146 *
1147 * Converts time values in hardware cycles to seconds.
1148 * Computes result in 32 bit precision.
1149 * Rounds to the nearest output unit.
1150 *
1151 * @warning Generated. Do not edit. See above.
1152 *
1153 * @param t Source time in hardware cycles. uint64_t
1154 *
1155 * @return The converted time value in seconds. uint32_t
1156 */
1157 #define k_cyc_to_sec_near32(t) \
1158 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, false, true)
1159
1160
1161 /** @brief Convert hardware cycles to seconds. 64 bits. Round nearest.
1162 *
1163 * Converts time values in hardware cycles to seconds.
1164 * Computes result in 64 bit precision.
1165 * Rounds to the nearest output unit.
1166 *
1167 * @warning Generated. Do not edit. See above.
1168 *
1169 * @param t Source time in hardware cycles. uint64_t
1170 *
1171 * @return The converted time value in seconds. uint64_t
1172 */
1173 #define k_cyc_to_sec_near64(t) \
1174 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, false, true)
1175
1176
1177 /** @brief Convert hardware cycles to seconds. 32 bits. Rounds up.
1178 *
1179 * Converts time values in hardware cycles to seconds.
1180 * Computes result in 32 bit precision.
1181 * Rounds up to the next highest output unit.
1182 *
1183 * @warning Generated. Do not edit. See above.
1184 *
1185 * @param t Source time in hardware cycles. uint64_t
1186 *
1187 * @return The converted time value in seconds. uint32_t
1188 */
1189 #define k_cyc_to_sec_ceil32(t) \
1190 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, true, false)
1191
1192
1193 /** @brief Convert hardware cycles to seconds. 64 bits. Rounds up.
1194 *
1195 * Converts time values in hardware cycles to seconds.
1196 * Computes result in 64 bit precision.
1197 * Rounds up to the next highest output unit.
1198 *
1199 * @warning Generated. Do not edit. See above.
1200 *
1201 * @param t Source time in hardware cycles. uint64_t
1202 *
1203 * @return The converted time value in seconds. uint64_t
1204 */
1205 #define k_cyc_to_sec_ceil64(t) \
1206 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_sec, Z_CCYC, true, false)
1207
1208
1209 /** @brief Convert hardware cycles to milliseconds. 32 bits. Truncates.
1210 *
1211 * Converts time values in hardware cycles to milliseconds.
1212 * Computes result in 32 bit precision.
1213 * Truncates to the next lowest output unit.
1214 *
1215 * @warning Generated. Do not edit. See above.
1216 *
1217 * @param t Source time in hardware cycles. uint64_t
1218 *
1219 * @return The converted time value in milliseconds. uint32_t
1220 */
1221 #define k_cyc_to_ms_floor32(t) \
1222 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, false, false)
1223
1224
1225 /** @brief Convert hardware cycles to milliseconds. 64 bits. Truncates.
1226 *
1227 * Converts time values in hardware cycles to milliseconds.
1228 * Computes result in 64 bit precision.
1229 * Truncates to the next lowest output unit.
1230 *
1231 * @warning Generated. Do not edit. See above.
1232 *
1233 * @param t Source time in hardware cycles. uint64_t
1234 *
1235 * @return The converted time value in milliseconds. uint64_t
1236 */
1237 #define k_cyc_to_ms_floor64(t) \
1238 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, false, false)
1239
1240
1241 /** @brief Convert hardware cycles to milliseconds. 32 bits. Round nearest.
1242 *
1243 * Converts time values in hardware cycles to milliseconds.
1244 * Computes result in 32 bit precision.
1245 * Rounds to the nearest output unit.
1246 *
1247 * @warning Generated. Do not edit. See above.
1248 *
1249 * @param t Source time in hardware cycles. uint64_t
1250 *
1251 * @return The converted time value in milliseconds. uint32_t
1252 */
1253 #define k_cyc_to_ms_near32(t) \
1254 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, false, true)
1255
1256
1257 /** @brief Convert hardware cycles to milliseconds. 64 bits. Round nearest.
1258 *
1259 * Converts time values in hardware cycles to milliseconds.
1260 * Computes result in 64 bit precision.
1261 * Rounds to the nearest output unit.
1262 *
1263 * @warning Generated. Do not edit. See above.
1264 *
1265 * @param t Source time in hardware cycles. uint64_t
1266 *
1267 * @return The converted time value in milliseconds. uint64_t
1268 */
1269 #define k_cyc_to_ms_near64(t) \
1270 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, false, true)
1271
1272
1273 /** @brief Convert hardware cycles to milliseconds. 32 bits. Rounds up.
1274 *
1275 * Converts time values in hardware cycles to milliseconds.
1276 * Computes result in 32 bit precision.
1277 * Rounds up to the next highest output unit.
1278 *
1279 * @warning Generated. Do not edit. See above.
1280 *
1281 * @param t Source time in hardware cycles. uint64_t
1282 *
1283 * @return The converted time value in milliseconds. uint32_t
1284 */
1285 #define k_cyc_to_ms_ceil32(t) \
1286 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, true, false)
1287
1288
1289 /** @brief Convert hardware cycles to milliseconds. 64 bits. Rounds up.
1290 *
1291 * Converts time values in hardware cycles to milliseconds.
1292 * Computes result in 64 bit precision.
1293 * Rounds up to the next highest output unit.
1294 *
1295 * @warning Generated. Do not edit. See above.
1296 *
1297 * @param t Source time in hardware cycles. uint64_t
1298 *
1299 * @return The converted time value in milliseconds. uint64_t
1300 */
1301 #define k_cyc_to_ms_ceil64(t) \
1302 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ms, Z_CCYC, true, false)
1303
1304
1305 /** @brief Convert hardware cycles to microseconds. 32 bits. Truncates.
1306 *
1307 * Converts time values in hardware cycles to microseconds.
1308 * Computes result in 32 bit precision.
1309 * Truncates to the next lowest output unit.
1310 *
1311 * @warning Generated. Do not edit. See above.
1312 *
1313 * @param t Source time in hardware cycles. uint64_t
1314 *
1315 * @return The converted time value in microseconds. uint32_t
1316 */
1317 #define k_cyc_to_us_floor32(t) \
1318 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, false, false)
1319
1320
1321 /** @brief Convert hardware cycles to microseconds. 64 bits. Truncates.
1322 *
1323 * Converts time values in hardware cycles to microseconds.
1324 * Computes result in 64 bit precision.
1325 * Truncates to the next lowest output unit.
1326 *
1327 * @warning Generated. Do not edit. See above.
1328 *
1329 * @param t Source time in hardware cycles. uint64_t
1330 *
1331 * @return The converted time value in microseconds. uint64_t
1332 */
1333 #define k_cyc_to_us_floor64(t) \
1334 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, false, false)
1335
1336
1337 /** @brief Convert hardware cycles to microseconds. 32 bits. Round nearest.
1338 *
1339 * Converts time values in hardware cycles to microseconds.
1340 * Computes result in 32 bit precision.
1341 * Rounds to the nearest output unit.
1342 *
1343 * @warning Generated. Do not edit. See above.
1344 *
1345 * @param t Source time in hardware cycles. uint64_t
1346 *
1347 * @return The converted time value in microseconds. uint32_t
1348 */
1349 #define k_cyc_to_us_near32(t) \
1350 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, false, true)
1351
1352
1353 /** @brief Convert hardware cycles to microseconds. 64 bits. Round nearest.
1354 *
1355 * Converts time values in hardware cycles to microseconds.
1356 * Computes result in 64 bit precision.
1357 * Rounds to the nearest output unit.
1358 *
1359 * @warning Generated. Do not edit. See above.
1360 *
1361 * @param t Source time in hardware cycles. uint64_t
1362 *
1363 * @return The converted time value in microseconds. uint64_t
1364 */
1365 #define k_cyc_to_us_near64(t) \
1366 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, false, true)
1367
1368
1369 /** @brief Convert hardware cycles to microseconds. 32 bits. Rounds up.
1370 *
1371 * Converts time values in hardware cycles to microseconds.
1372 * Computes result in 32 bit precision.
1373 * Rounds up to the next highest output unit.
1374 *
1375 * @warning Generated. Do not edit. See above.
1376 *
1377 * @param t Source time in hardware cycles. uint64_t
1378 *
1379 * @return The converted time value in microseconds. uint32_t
1380 */
1381 #define k_cyc_to_us_ceil32(t) \
1382 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, true, false)
1383
1384
1385 /** @brief Convert hardware cycles to microseconds. 64 bits. Rounds up.
1386 *
1387 * Converts time values in hardware cycles to microseconds.
1388 * Computes result in 64 bit precision.
1389 * Rounds up to the next highest output unit.
1390 *
1391 * @warning Generated. Do not edit. See above.
1392 *
1393 * @param t Source time in hardware cycles. uint64_t
1394 *
1395 * @return The converted time value in microseconds. uint64_t
1396 */
1397 #define k_cyc_to_us_ceil64(t) \
1398 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_us, Z_CCYC, true, false)
1399
1400
1401 /** @brief Convert hardware cycles to nanoseconds. 32 bits. Truncates.
1402 *
1403 * Converts time values in hardware cycles to nanoseconds.
1404 * Computes result in 32 bit precision.
1405 * Truncates to the next lowest output unit.
1406 *
1407 * @warning Generated. Do not edit. See above.
1408 *
1409 * @param t Source time in hardware cycles. uint64_t
1410 *
1411 * @return The converted time value in nanoseconds. uint32_t
1412 */
1413 #define k_cyc_to_ns_floor32(t) \
1414 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, false, false)
1415
1416
1417 /** @brief Convert hardware cycles to nanoseconds. 64 bits. Truncates.
1418 *
1419 * Converts time values in hardware cycles to nanoseconds.
1420 * Computes result in 64 bit precision.
1421 * Truncates to the next lowest output unit.
1422 *
1423 * @warning Generated. Do not edit. See above.
1424 *
1425 * @param t Source time in hardware cycles. uint64_t
1426 *
1427 * @return The converted time value in nanoseconds. uint64_t
1428 */
1429 #define k_cyc_to_ns_floor64(t) \
1430 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, false, false)
1431
1432
1433 /** @brief Convert hardware cycles to nanoseconds. 32 bits. Round nearest.
1434 *
1435 * Converts time values in hardware cycles to nanoseconds.
1436 * Computes result in 32 bit precision.
1437 * Rounds to the nearest output unit.
1438 *
1439 * @warning Generated. Do not edit. See above.
1440 *
1441 * @param t Source time in hardware cycles. uint64_t
1442 *
1443 * @return The converted time value in nanoseconds. uint32_t
1444 */
1445 #define k_cyc_to_ns_near32(t) \
1446 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, false, true)
1447
1448
1449 /** @brief Convert hardware cycles to nanoseconds. 64 bits. Round nearest.
1450 *
1451 * Converts time values in hardware cycles to nanoseconds.
1452 * Computes result in 64 bit precision.
1453 * Rounds to the nearest output unit.
1454 *
1455 * @warning Generated. Do not edit. See above.
1456 *
1457 * @param t Source time in hardware cycles. uint64_t
1458 *
1459 * @return The converted time value in nanoseconds. uint64_t
1460 */
1461 #define k_cyc_to_ns_near64(t) \
1462 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, false, true)
1463
1464
1465 /** @brief Convert hardware cycles to nanoseconds. 32 bits. Rounds up.
1466 *
1467 * Converts time values in hardware cycles to nanoseconds.
1468 * Computes result in 32 bit precision.
1469 * Rounds up to the next highest output unit.
1470 *
1471 * @warning Generated. Do not edit. See above.
1472 *
1473 * @param t Source time in hardware cycles. uint64_t
1474 *
1475 * @return The converted time value in nanoseconds. uint32_t
1476 */
1477 #define k_cyc_to_ns_ceil32(t) \
1478 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, true, false)
1479
1480
1481 /** @brief Convert hardware cycles to nanoseconds. 64 bits. Rounds up.
1482 *
1483 * Converts time values in hardware cycles to nanoseconds.
1484 * Computes result in 64 bit precision.
1485 * Rounds up to the next highest output unit.
1486 *
1487 * @warning Generated. Do not edit. See above.
1488 *
1489 * @param t Source time in hardware cycles. uint64_t
1490 *
1491 * @return The converted time value in nanoseconds. uint64_t
1492 */
1493 #define k_cyc_to_ns_ceil64(t) \
1494 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ns, Z_CCYC, true, false)
1495
1496
1497 /** @brief Convert hardware cycles to ticks. 32 bits. Truncates.
1498 *
1499 * Converts time values in hardware cycles to ticks.
1500 * Computes result in 32 bit precision.
1501 * Truncates to the next lowest output unit.
1502 *
1503 * @warning Generated. Do not edit. See above.
1504 *
1505 * @param t Source time in hardware cycles. uint64_t
1506 *
1507 * @return The converted time value in ticks. uint32_t
1508 */
1509 #define k_cyc_to_ticks_floor32(t) \
1510 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, false, false)
1511
1512
1513 /** @brief Convert hardware cycles to ticks. 64 bits. Truncates.
1514 *
1515 * Converts time values in hardware cycles to ticks.
1516 * Computes result in 64 bit precision.
1517 * Truncates to the next lowest output unit.
1518 *
1519 * @warning Generated. Do not edit. See above.
1520 *
1521 * @param t Source time in hardware cycles. uint64_t
1522 *
1523 * @return The converted time value in ticks. uint64_t
1524 */
1525 #define k_cyc_to_ticks_floor64(t) \
1526 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, false, false)
1527
1528
1529 /** @brief Convert hardware cycles to ticks. 32 bits. Round nearest.
1530 *
1531 * Converts time values in hardware cycles to ticks.
1532 * Computes result in 32 bit precision.
1533 * Rounds to the nearest output unit.
1534 *
1535 * @warning Generated. Do not edit. See above.
1536 *
1537 * @param t Source time in hardware cycles. uint64_t
1538 *
1539 * @return The converted time value in ticks. uint32_t
1540 */
1541 #define k_cyc_to_ticks_near32(t) \
1542 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, false, true)
1543
1544
1545 /** @brief Convert hardware cycles to ticks. 64 bits. Round nearest.
1546 *
1547 * Converts time values in hardware cycles to ticks.
1548 * Computes result in 64 bit precision.
1549 * Rounds to the nearest output unit.
1550 *
1551 * @warning Generated. Do not edit. See above.
1552 *
1553 * @param t Source time in hardware cycles. uint64_t
1554 *
1555 * @return The converted time value in ticks. uint64_t
1556 */
1557 #define k_cyc_to_ticks_near64(t) \
1558 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, false, true)
1559
1560
1561 /** @brief Convert hardware cycles to ticks. 32 bits. Rounds up.
1562 *
1563 * Converts time values in hardware cycles to ticks.
1564 * Computes result in 32 bit precision.
1565 * Rounds up to the next highest output unit.
1566 *
1567 * @warning Generated. Do not edit. See above.
1568 *
1569 * @param t Source time in hardware cycles. uint64_t
1570 *
1571 * @return The converted time value in ticks. uint32_t
1572 */
1573 #define k_cyc_to_ticks_ceil32(t) \
1574 z_tmcvt_32(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, true, false)
1575
1576
1577 /** @brief Convert hardware cycles to ticks. 64 bits. Rounds up.
1578 *
1579 * Converts time values in hardware cycles to ticks.
1580 * Computes result in 64 bit precision.
1581 * Rounds up to the next highest output unit.
1582 *
1583 * @warning Generated. Do not edit. See above.
1584 *
1585 * @param t Source time in hardware cycles. uint64_t
1586 *
1587 * @return The converted time value in ticks. uint64_t
1588 */
1589 #define k_cyc_to_ticks_ceil64(t) \
1590 z_tmcvt_64(t, Z_HZ_cyc, Z_HZ_ticks, Z_CCYC, true, false)
1591
1592
1593 /** @brief Convert ticks to seconds. 32 bits. Truncates.
1594 *
1595 * Converts time values in ticks to seconds.
1596 * Computes result in 32 bit precision.
1597 * Truncates to the next lowest output unit.
1598 *
1599 * @warning Generated. Do not edit. See above.
1600 *
1601 * @param t Source time in ticks. uint64_t
1602 *
1603 * @return The converted time value in seconds. uint32_t
1604 */
1605 #define k_ticks_to_sec_floor32(t) \
1606 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_sec, true, false, false)
1607
1608
1609 /** @brief Convert ticks to seconds. 64 bits. Truncates.
1610 *
1611 * Converts time values in ticks to seconds.
1612 * Computes result in 64 bit precision.
1613 * Truncates to the next lowest output unit.
1614 *
1615 * @warning Generated. Do not edit. See above.
1616 *
1617 * @param t Source time in ticks. uint64_t
1618 *
1619 * @return The converted time value in seconds. uint64_t
1620 */
1621 #define k_ticks_to_sec_floor64(t) \
1622 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_sec, true, false, false)
1623
1624
1625 /** @brief Convert ticks to seconds. 32 bits. Round nearest.
1626 *
1627 * Converts time values in ticks to seconds.
1628 * Computes result in 32 bit precision.
1629 * Rounds to the nearest output unit.
1630 *
1631 * @warning Generated. Do not edit. See above.
1632 *
1633 * @param t Source time in ticks. uint64_t
1634 *
1635 * @return The converted time value in seconds. uint32_t
1636 */
1637 #define k_ticks_to_sec_near32(t) \
1638 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_sec, true, false, true)
1639
1640
1641 /** @brief Convert ticks to seconds. 64 bits. Round nearest.
1642 *
1643 * Converts time values in ticks to seconds.
1644 * Computes result in 64 bit precision.
1645 * Rounds to the nearest output unit.
1646 *
1647 * @warning Generated. Do not edit. See above.
1648 *
1649 * @param t Source time in ticks. uint64_t
1650 *
1651 * @return The converted time value in seconds. uint64_t
1652 */
1653 #define k_ticks_to_sec_near64(t) \
1654 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_sec, true, false, true)
1655
1656
1657 /** @brief Convert ticks to seconds. 32 bits. Rounds up.
1658 *
1659 * Converts time values in ticks to seconds.
1660 * Computes result in 32 bit precision.
1661 * Rounds up to the next highest output unit.
1662 *
1663 * @warning Generated. Do not edit. See above.
1664 *
1665 * @param t Source time in ticks. uint64_t
1666 *
1667 * @return The converted time value in seconds. uint32_t
1668 */
1669 #define k_ticks_to_sec_ceil32(t) \
1670 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_sec, true, true, false)
1671
1672
1673 /** @brief Convert ticks to seconds. 64 bits. Rounds up.
1674 *
1675 * Converts time values in ticks to seconds.
1676 * Computes result in 64 bit precision.
1677 * Rounds up to the next highest output unit.
1678 *
1679 * @warning Generated. Do not edit. See above.
1680 *
1681 * @param t Source time in ticks. uint64_t
1682 *
1683 * @return The converted time value in seconds. uint64_t
1684 */
1685 #define k_ticks_to_sec_ceil64(t) \
1686 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_sec, true, true, false)
1687
1688
1689 /** @brief Convert ticks to milliseconds. 32 bits. Truncates.
1690 *
1691 * Converts time values in ticks to milliseconds.
1692 * Computes result in 32 bit precision.
1693 * Truncates to the next lowest output unit.
1694 *
1695 * @warning Generated. Do not edit. See above.
1696 *
1697 * @param t Source time in ticks. uint64_t
1698 *
1699 * @return The converted time value in milliseconds. uint32_t
1700 */
1701 #define k_ticks_to_ms_floor32(t) \
1702 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ms, true, false, false)
1703
1704
1705 /** @brief Convert ticks to milliseconds. 64 bits. Truncates.
1706 *
1707 * Converts time values in ticks to milliseconds.
1708 * Computes result in 64 bit precision.
1709 * Truncates to the next lowest output unit.
1710 *
1711 * @warning Generated. Do not edit. See above.
1712 *
1713 * @param t Source time in ticks. uint64_t
1714 *
1715 * @return The converted time value in milliseconds. uint64_t
1716 */
1717 #define k_ticks_to_ms_floor64(t) \
1718 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ms, true, false, false)
1719
1720
1721 /** @brief Convert ticks to milliseconds. 32 bits. Round nearest.
1722 *
1723 * Converts time values in ticks to milliseconds.
1724 * Computes result in 32 bit precision.
1725 * Rounds to the nearest output unit.
1726 *
1727 * @warning Generated. Do not edit. See above.
1728 *
1729 * @param t Source time in ticks. uint64_t
1730 *
1731 * @return The converted time value in milliseconds. uint32_t
1732 */
1733 #define k_ticks_to_ms_near32(t) \
1734 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ms, true, false, true)
1735
1736
1737 /** @brief Convert ticks to milliseconds. 64 bits. Round nearest.
1738 *
1739 * Converts time values in ticks to milliseconds.
1740 * Computes result in 64 bit precision.
1741 * Rounds to the nearest output unit.
1742 *
1743 * @warning Generated. Do not edit. See above.
1744 *
1745 * @param t Source time in ticks. uint64_t
1746 *
1747 * @return The converted time value in milliseconds. uint64_t
1748 */
1749 #define k_ticks_to_ms_near64(t) \
1750 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ms, true, false, true)
1751
1752
1753 /** @brief Convert ticks to milliseconds. 32 bits. Rounds up.
1754 *
1755 * Converts time values in ticks to milliseconds.
1756 * Computes result in 32 bit precision.
1757 * Rounds up to the next highest output unit.
1758 *
1759 * @warning Generated. Do not edit. See above.
1760 *
1761 * @param t Source time in ticks. uint64_t
1762 *
1763 * @return The converted time value in milliseconds. uint32_t
1764 */
1765 #define k_ticks_to_ms_ceil32(t) \
1766 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ms, true, true, false)
1767
1768
1769 /** @brief Convert ticks to milliseconds. 64 bits. Rounds up.
1770 *
1771 * Converts time values in ticks to milliseconds.
1772 * Computes result in 64 bit precision.
1773 * Rounds up to the next highest output unit.
1774 *
1775 * @warning Generated. Do not edit. See above.
1776 *
1777 * @param t Source time in ticks. uint64_t
1778 *
1779 * @return The converted time value in milliseconds. uint64_t
1780 */
1781 #define k_ticks_to_ms_ceil64(t) \
1782 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ms, true, true, false)
1783
1784
1785 /** @brief Convert ticks to microseconds. 32 bits. Truncates.
1786 *
1787 * Converts time values in ticks to microseconds.
1788 * Computes result in 32 bit precision.
1789 * Truncates to the next lowest output unit.
1790 *
1791 * @warning Generated. Do not edit. See above.
1792 *
1793 * @param t Source time in ticks. uint64_t
1794 *
1795 * @return The converted time value in microseconds. uint32_t
1796 */
1797 #define k_ticks_to_us_floor32(t) \
1798 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_us, true, false, false)
1799
1800
1801 /** @brief Convert ticks to microseconds. 64 bits. Truncates.
1802 *
1803 * Converts time values in ticks to microseconds.
1804 * Computes result in 64 bit precision.
1805 * Truncates to the next lowest output unit.
1806 *
1807 * @warning Generated. Do not edit. See above.
1808 *
1809 * @param t Source time in ticks. uint64_t
1810 *
1811 * @return The converted time value in microseconds. uint64_t
1812 */
1813 #define k_ticks_to_us_floor64(t) \
1814 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_us, true, false, false)
1815
1816
1817 /** @brief Convert ticks to microseconds. 32 bits. Round nearest.
1818 *
1819 * Converts time values in ticks to microseconds.
1820 * Computes result in 32 bit precision.
1821 * Rounds to the nearest output unit.
1822 *
1823 * @warning Generated. Do not edit. See above.
1824 *
1825 * @param t Source time in ticks. uint64_t
1826 *
1827 * @return The converted time value in microseconds. uint32_t
1828 */
1829 #define k_ticks_to_us_near32(t) \
1830 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_us, true, false, true)
1831
1832
1833 /** @brief Convert ticks to microseconds. 64 bits. Round nearest.
1834 *
1835 * Converts time values in ticks to microseconds.
1836 * Computes result in 64 bit precision.
1837 * Rounds to the nearest output unit.
1838 *
1839 * @warning Generated. Do not edit. See above.
1840 *
1841 * @param t Source time in ticks. uint64_t
1842 *
1843 * @return The converted time value in microseconds. uint64_t
1844 */
1845 #define k_ticks_to_us_near64(t) \
1846 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_us, true, false, true)
1847
1848
1849 /** @brief Convert ticks to microseconds. 32 bits. Rounds up.
1850 *
1851 * Converts time values in ticks to microseconds.
1852 * Computes result in 32 bit precision.
1853 * Rounds up to the next highest output unit.
1854 *
1855 * @warning Generated. Do not edit. See above.
1856 *
1857 * @param t Source time in ticks. uint64_t
1858 *
1859 * @return The converted time value in microseconds. uint32_t
1860 */
1861 #define k_ticks_to_us_ceil32(t) \
1862 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_us, true, true, false)
1863
1864
1865 /** @brief Convert ticks to microseconds. 64 bits. Rounds up.
1866 *
1867 * Converts time values in ticks to microseconds.
1868 * Computes result in 64 bit precision.
1869 * Rounds up to the next highest output unit.
1870 *
1871 * @warning Generated. Do not edit. See above.
1872 *
1873 * @param t Source time in ticks. uint64_t
1874 *
1875 * @return The converted time value in microseconds. uint64_t
1876 */
1877 #define k_ticks_to_us_ceil64(t) \
1878 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_us, true, true, false)
1879
1880
1881 /** @brief Convert ticks to nanoseconds. 32 bits. Truncates.
1882 *
1883 * Converts time values in ticks to nanoseconds.
1884 * Computes result in 32 bit precision.
1885 * Truncates to the next lowest output unit.
1886 *
1887 * @warning Generated. Do not edit. See above.
1888 *
1889 * @param t Source time in ticks. uint64_t
1890 *
1891 * @return The converted time value in nanoseconds. uint32_t
1892 */
1893 #define k_ticks_to_ns_floor32(t) \
1894 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ns, true, false, false)
1895
1896
1897 /** @brief Convert ticks to nanoseconds. 64 bits. Truncates.
1898 *
1899 * Converts time values in ticks to nanoseconds.
1900 * Computes result in 64 bit precision.
1901 * Truncates to the next lowest output unit.
1902 *
1903 * @warning Generated. Do not edit. See above.
1904 *
1905 * @param t Source time in ticks. uint64_t
1906 *
1907 * @return The converted time value in nanoseconds. uint64_t
1908 */
1909 #define k_ticks_to_ns_floor64(t) \
1910 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ns, true, false, false)
1911
1912
1913 /** @brief Convert ticks to nanoseconds. 32 bits. Round nearest.
1914 *
1915 * Converts time values in ticks to nanoseconds.
1916 * Computes result in 32 bit precision.
1917 * Rounds to the nearest output unit.
1918 *
1919 * @warning Generated. Do not edit. See above.
1920 *
1921 * @param t Source time in ticks. uint64_t
1922 *
1923 * @return The converted time value in nanoseconds. uint32_t
1924 */
1925 #define k_ticks_to_ns_near32(t) \
1926 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ns, true, false, true)
1927
1928
1929 /** @brief Convert ticks to nanoseconds. 64 bits. Round nearest.
1930 *
1931 * Converts time values in ticks to nanoseconds.
1932 * Computes result in 64 bit precision.
1933 * Rounds to the nearest output unit.
1934 *
1935 * @warning Generated. Do not edit. See above.
1936 *
1937 * @param t Source time in ticks. uint64_t
1938 *
1939 * @return The converted time value in nanoseconds. uint64_t
1940 */
1941 #define k_ticks_to_ns_near64(t) \
1942 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ns, true, false, true)
1943
1944
1945 /** @brief Convert ticks to nanoseconds. 32 bits. Rounds up.
1946 *
1947 * Converts time values in ticks to nanoseconds.
1948 * Computes result in 32 bit precision.
1949 * Rounds up to the next highest output unit.
1950 *
1951 * @warning Generated. Do not edit. See above.
1952 *
1953 * @param t Source time in ticks. uint64_t
1954 *
1955 * @return The converted time value in nanoseconds. uint32_t
1956 */
1957 #define k_ticks_to_ns_ceil32(t) \
1958 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_ns, true, true, false)
1959
1960
1961 /** @brief Convert ticks to nanoseconds. 64 bits. Rounds up.
1962 *
1963 * Converts time values in ticks to nanoseconds.
1964 * Computes result in 64 bit precision.
1965 * Rounds up to the next highest output unit.
1966 *
1967 * @warning Generated. Do not edit. See above.
1968 *
1969 * @param t Source time in ticks. uint64_t
1970 *
1971 * @return The converted time value in nanoseconds. uint64_t
1972 */
1973 #define k_ticks_to_ns_ceil64(t) \
1974 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_ns, true, true, false)
1975
1976
1977 /** @brief Convert ticks to hardware cycles. 32 bits. Truncates.
1978 *
1979 * Converts time values in ticks to hardware cycles.
1980 * Computes result in 32 bit precision.
1981 * Truncates to the next lowest output unit.
1982 *
1983 * @warning Generated. Do not edit. See above.
1984 *
1985 * @param t Source time in ticks. uint64_t
1986 *
1987 * @return The converted time value in hardware cycles. uint32_t
1988 */
1989 #define k_ticks_to_cyc_floor32(t) \
1990 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, false, false)
1991
1992
1993 /** @brief Convert ticks to hardware cycles. 64 bits. Truncates.
1994 *
1995 * Converts time values in ticks to hardware cycles.
1996 * Computes result in 64 bit precision.
1997 * Truncates to the next lowest output unit.
1998 *
1999 * @warning Generated. Do not edit. See above.
2000 *
2001 * @param t Source time in ticks. uint64_t
2002 *
2003 * @return The converted time value in hardware cycles. uint64_t
2004 */
2005 #define k_ticks_to_cyc_floor64(t) \
2006 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, false, false)
2007
2008
2009 /** @brief Convert ticks to hardware cycles. 32 bits. Round nearest.
2010 *
2011 * Converts time values in ticks to hardware cycles.
2012 * Computes result in 32 bit precision.
2013 * Rounds to the nearest output unit.
2014 *
2015 * @warning Generated. Do not edit. See above.
2016 *
2017 * @param t Source time in ticks. uint64_t
2018 *
2019 * @return The converted time value in hardware cycles. uint32_t
2020 */
2021 #define k_ticks_to_cyc_near32(t) \
2022 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, false, true)
2023
2024
2025 /** @brief Convert ticks to hardware cycles. 64 bits. Round nearest.
2026 *
2027 * Converts time values in ticks to hardware cycles.
2028 * Computes result in 64 bit precision.
2029 * Rounds to the nearest output unit.
2030 *
2031 * @warning Generated. Do not edit. See above.
2032 *
2033 * @param t Source time in ticks. uint64_t
2034 *
2035 * @return The converted time value in hardware cycles. uint64_t
2036 */
2037 #define k_ticks_to_cyc_near64(t) \
2038 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, false, true)
2039
2040
2041 /** @brief Convert ticks to hardware cycles. 32 bits. Rounds up.
2042 *
2043 * Converts time values in ticks to hardware cycles.
2044 * Computes result in 32 bit precision.
2045 * Rounds up to the next highest output unit.
2046 *
2047 * @warning Generated. Do not edit. See above.
2048 *
2049 * @param t Source time in ticks. uint64_t
2050 *
2051 * @return The converted time value in hardware cycles. uint32_t
2052 */
2053 #define k_ticks_to_cyc_ceil32(t) \
2054 z_tmcvt_32(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, true, false)
2055
2056
2057 /** @brief Convert ticks to hardware cycles. 64 bits. Rounds up.
2058 *
2059 * Converts time values in ticks to hardware cycles.
2060 * Computes result in 64 bit precision.
2061 * Rounds up to the next highest output unit.
2062 *
2063 * @warning Generated. Do not edit. See above.
2064 *
2065 * @param t Source time in ticks. uint64_t
2066 *
2067 * @return The converted time value in hardware cycles. uint64_t
2068 */
2069 #define k_ticks_to_cyc_ceil64(t) \
2070 z_tmcvt_64(t, Z_HZ_ticks, Z_HZ_cyc, Z_CCYC, true, false)
2071
2072 #if defined(CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME)
2073 #include <zephyr/syscalls/time_units.h>
2074 #endif
2075
2076 #undef TIME_CONSTEXPR
2077
2078 /**
2079 * @}
2080 */
2081
2082 #ifdef __cplusplus
2083 } /* extern "C" */
2084 #endif
2085
2086 #endif /* ZEPHYR_INCLUDE_TIME_UNITS_H_ */
2087