Lines Matching +full:cycle +full:- +full:timing

3 Kernel Timing
6 Zephyr provides a robust and scalable timing framework to enable
7 reporting and tracking of timed events from hardware timing sources of
22 The kernel presents a "cycle" count via the :c:func:`k_cycle_get_32`
24 represents the fastest cycle counter that the operating system is able
25 to present to the user (for example, a CPU cycle counter) and that the
46 ----------
59 :c:func:`k_cyc_to_us_floor64` will convert a measured cycle count
66 word, these conversions expand to a 2-4 operation sequence, requiring
80 Apps with precise timing requirements (that are willing to do their
127 being 32 bits. Large uptime counts in non-tick units will experience
129 timing-sensitive applications with long uptimes will be configured to
138 Timing Internals
142 -------------
146 a double-linked list, with an attendant delta count in ticks from the
150 expected to be embedded within subsystem-defined data structures (for
155 multiple-conversion steps internal to the kernel, so precision is
166 -------------
168 Kernel timing at the tick level is driven by a timer driver with a
217 -----------
231 per-CPU tracking, and expects that if two timer interrupts fire near
233 the timing subsystem. The other may legally provide a tick count of
238 per-CPU counter. The complexity here (for example: ensuring counter
246 non-zero ticks argument to :c:func:`sys_clock_announce`. This is probably
247 a correct default for timing sensitive applications (because it
254 ------------
256 An auxiliary job of the timing subsystem is to provide tick counters
258 A thread time-slice cannot be a timeout value, as it does not reflect
259 a global expiration but instead a per-CPU value that needs to be
269 -------------------------------------
285 will need to use a different, integer-valued token to represent
291 --------------------------------
307 .. code-block:: c
319 k_sem_take(obj->sem, timeout_in_ms);
322 timeout_in_ms -= (k_uptime_get_32() - start);
333 .. code-block:: c
349 k_sem_take(obj->sem, timeout);