Zephyr Project API 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
timing.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2020 Intel Corporation.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_TIMING_TIMING_H_
8#define ZEPHYR_INCLUDE_TIMING_TIMING_H_
9
11#include <zephyr/timing/types.h>
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
31
42
50void soc_timing_init(void);
51
61
70void soc_timing_stop(void);
71
87
103 volatile timing_t *const end);
104
113
123
134
143
147
158
167
177
187
203
219 volatile timing_t *const end);
220
229
239
250
259
263
268
269#ifdef CONFIG_TIMING_FUNCTIONS
270
276void timing_init(void);
277
284void timing_start(void);
285
292void timing_stop(void);
293
311
317static inline timing_t timing_counter_get(void)
318{
319#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
321#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
322 return soc_timing_counter_get();
323#else
325#endif
326}
327
338static inline uint64_t timing_cycles_get(volatile timing_t *const start,
339 volatile timing_t *const end)
340{
341#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
342 return board_timing_cycles_get(start, end);
343#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
344 return soc_timing_cycles_get(start, end);
345#else
346 return arch_timing_cycles_get(start, end);
347#endif
348}
349
355static inline uint64_t timing_freq_get(void)
356{
357#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
358 return board_timing_freq_get();
359#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
360 return soc_timing_freq_get();
361#else
362 return arch_timing_freq_get();
363#endif
364}
365
373{
374#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
375 return board_timing_cycles_to_ns(cycles);
376#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
377 return soc_timing_cycles_to_ns(cycles);
378#else
379 return arch_timing_cycles_to_ns(cycles);
380#endif
381}
382
391{
392#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
393 return board_timing_cycles_to_ns_avg(cycles, count);
394#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
395 return soc_timing_cycles_to_ns_avg(cycles, count);
396#else
397 return arch_timing_cycles_to_ns_avg(cycles, count);
398#endif
399}
400
406static inline uint32_t timing_freq_get_mhz(void)
407{
408#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
410#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
412#else
414#endif
415}
416
417#endif /* CONFIG_TIMING_FUNCTIONS */
418
422
423#ifdef __cplusplus
424}
425#endif
426
427#endif /* ZEPHYR_INCLUDE_TIMING_TIMING_H_ */
uint64_t arch_timing_freq_get(void)
Get frequency of counter used (in Hz).
uint32_t arch_timing_freq_get_mhz(void)
Get frequency of counter used (in MHz).
uint64_t arch_timing_cycles_get(volatile timing_t *const start, volatile timing_t *const end)
Get number of cycles between start and end.
uint64_t arch_timing_cycles_to_ns(uint64_t cycles)
Convert number of cycles into nanoseconds.
uint64_t arch_timing_cycles_to_ns_avg(uint64_t cycles, uint32_t count)
Convert number of cycles into nanoseconds with averaging.
timing_t arch_timing_counter_get(void)
Return timing counter.
uint64_t board_timing_cycles_to_ns(uint64_t cycles)
Convert number of cycles into nanoseconds.
uint64_t board_timing_cycles_get(volatile timing_t *const start, volatile timing_t *const end)
Get number of cycles between start and end.
void board_timing_stop(void)
Signal the end of the timing information gathering.
uint64_t board_timing_cycles_to_ns_avg(uint64_t cycles, uint32_t count)
Convert number of cycles into nanoseconds with averaging.
void board_timing_init(void)
Initialize the timing subsystem.
uint64_t board_timing_freq_get(void)
Get frequency of counter used (in Hz).
uint32_t board_timing_freq_get_mhz(void)
Get frequency of counter used (in MHz).
void board_timing_start(void)
Signal the start of the timing information gathering.
timing_t board_timing_counter_get(void)
Return timing counter.
void soc_timing_stop(void)
Signal the end of the timing information gathering.
void soc_timing_start(void)
Signal the start of the timing information gathering.
void soc_timing_init(void)
Initialize the timing subsystem on SoC.
uint64_t soc_timing_cycles_to_ns_avg(uint64_t cycles, uint32_t count)
Convert number of cycles into nanoseconds with averaging.
timing_t soc_timing_counter_get(void)
Return timing counter.
uint32_t soc_timing_freq_get_mhz(void)
Get frequency of counter used (in MHz).
uint64_t soc_timing_cycles_get(volatile timing_t *const start, volatile timing_t *const end)
Get number of cycles between start and end.
uint64_t soc_timing_cycles_to_ns(uint64_t cycles)
Convert number of cycles into nanoseconds.
uint64_t soc_timing_freq_get(void)
Get frequency of counter used (in Hz).
static uint64_t timing_cycles_to_ns(uint64_t cycles)
Convert number of cycles into nanoseconds.
Definition timing.h:372
static uint64_t timing_cycles_to_ns_avg(uint64_t cycles, uint32_t count)
Convert number of cycles into nanoseconds with averaging.
Definition timing.h:390
void timing_start(void)
Signal the start of the timing information gathering.
void timing_init(void)
Initialize the timing subsystem.
static uint32_t timing_freq_get_mhz(void)
Get frequency of counter used (in MHz).
Definition timing.h:406
uint64_t timing_ns_get(void)
Return a monotonic timestamp in nanoseconds.
static uint64_t timing_cycles_get(volatile timing_t *const start, volatile timing_t *const end)
Get number of cycles between start and end.
Definition timing.h:338
static timing_t timing_counter_get(void)
Return timing counter.
Definition timing.h:317
static uint64_t timing_freq_get(void)
Get frequency of counter used (in Hz).
Definition timing.h:355
void timing_stop(void)
Signal the end of the timing information gathering.
uint64_t timing_t
Definition types.h:10
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT64_TYPE__ uint64_t
Definition stdint.h:91