Zephyr API Documentation  3.5.0
A Scalable Open Source RTOS
3.5.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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
47#ifdef CONFIG_TIMING_FUNCTIONS
48
54void timing_init(void);
55
62void timing_start(void);
63
70void timing_stop(void);
71
77static inline timing_t timing_counter_get(void)
78{
79#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
81#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
83#else
85#endif
86}
87
98static inline uint64_t timing_cycles_get(volatile timing_t *const start,
99 volatile timing_t *const end)
100{
101#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
102 return board_timing_cycles_get(start, end);
103#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
104 return soc_timing_cycles_get(start, end);
105#else
106 return arch_timing_cycles_get(start, end);
107#endif
108}
109
115static inline uint64_t timing_freq_get(void)
116{
117#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
118 return board_timing_freq_get();
119#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
120 return soc_timing_freq_get();
121#else
122 return arch_timing_freq_get();
123#endif
124}
125
133{
134#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
135 return board_timing_cycles_to_ns(cycles);
136#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
137 return soc_timing_cycles_to_ns(cycles);
138#else
139 return arch_timing_cycles_to_ns(cycles);
140#endif
141}
142
151{
152#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
153 return board_timing_cycles_to_ns_avg(cycles, count);
154#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
155 return soc_timing_cycles_to_ns_avg(cycles, count);
156#else
157 return arch_timing_cycles_to_ns_avg(cycles, count);
158#endif
159}
160
166static inline uint32_t timing_freq_get_mhz(void)
167{
168#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
170#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
172#else
174#endif
175}
176
177#endif /* CONFIG_TIMING_FUNCTIONS */
178
183#ifdef __cplusplus
184}
185#endif
186
187#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.
static uint64_t timing_cycles_to_ns(uint64_t cycles)
Convert number of cycles into nanoseconds.
Definition: timing.h:132
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:150
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:166
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:98
static timing_t timing_counter_get(void)
Return timing counter.
Definition: timing.h:77
static uint64_t timing_freq_get(void)
Get frequency of counter used (in Hz).
Definition: timing.h:115
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)