Zephyr Project API  3.3.0
A Scalable Open Source RTOS
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
17void soc_timing_init(void);
19void soc_timing_stop(void);
22 volatile timing_t *const end);
27
33 volatile timing_t *const end);
38
39
46#ifdef CONFIG_TIMING_FUNCTIONS
47
53void timing_init(void);
54
61void timing_start(void);
62
69void timing_stop(void);
70
76static inline timing_t timing_counter_get(void)
77{
78#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
80#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
82#else
84#endif
85}
86
97static inline uint64_t timing_cycles_get(volatile timing_t *const start,
98 volatile timing_t *const end)
99{
100#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
101 return board_timing_cycles_get(start, end);
102#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
103 return soc_timing_cycles_get(start, end);
104#else
105 return arch_timing_cycles_get(start, end);
106#endif
107}
108
114static inline uint64_t timing_freq_get(void)
115{
116#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
117 return board_timing_freq_get();
118#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
119 return soc_timing_freq_get();
120#else
121 return arch_timing_freq_get();
122#endif
123}
124
132{
133#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
134 return board_timing_cycles_to_ns(cycles);
135#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
136 return soc_timing_cycles_to_ns(cycles);
137#else
138 return arch_timing_cycles_to_ns(cycles);
139#endif
140}
141
150{
151#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
152 return board_timing_cycles_to_ns_avg(cycles, count);
153#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
154 return soc_timing_cycles_to_ns_avg(cycles, count);
155#else
156 return arch_timing_cycles_to_ns_avg(cycles, count);
157#endif
158}
159
165static inline uint32_t timing_freq_get_mhz(void)
166{
167#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
169#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
171#else
173#endif
174}
175
176#endif /* CONFIG_TIMING_FUNCTIONS */
177
182#ifdef __cplusplus
183}
184#endif
185
186#endif /* ZEPHYR_INCLUDE_TIMING_TIMING_H_ */
ZTEST_BMEM int count
Definition: main.c:33
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.
static uint64_t timing_cycles_to_ns(uint64_t cycles)
Convert number of cycles into nanoseconds.
Definition: timing.h:131
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:149
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:165
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:97
static timing_t timing_counter_get(void)
Return timing counter.
Definition: timing.h:76
static uint64_t timing_freq_get(void)
Get frequency of counter used (in Hz).
Definition: timing.h:114
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
uint64_t board_timing_cycles_to_ns(uint64_t cycles)
uint64_t board_timing_cycles_get(volatile timing_t *const start, volatile timing_t *const end)
void soc_timing_stop(void)
void soc_timing_start(void)
void soc_timing_init(void)
uint64_t soc_timing_cycles_to_ns_avg(uint64_t cycles, uint32_t count)
timing_t soc_timing_counter_get(void)
void board_timing_stop(void)
uint64_t board_timing_cycles_to_ns_avg(uint64_t cycles, uint32_t count)
void board_timing_init(void)
uint32_t soc_timing_freq_get_mhz(void)
uint64_t board_timing_freq_get(void)
uint64_t soc_timing_cycles_get(volatile timing_t *const start, volatile timing_t *const end)
uint64_t soc_timing_cycles_to_ns(uint64_t cycles)
uint32_t board_timing_freq_get_mhz(void)
void board_timing_start(void)
uint64_t soc_timing_freq_get(void)
timing_t board_timing_counter_get(void)