Zephyr API Documentation 4.0.0
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
48void soc_timing_init(void);
49
59
68void soc_timing_stop(void);
69
85
101 volatile timing_t *const end);
102
111
121
132
141
165
175
185
201
217 volatile timing_t *const end);
218
227
237
248
257
267#ifdef CONFIG_TIMING_FUNCTIONS
268
274void timing_init(void);
275
282void timing_start(void);
283
290void timing_stop(void);
291
297static inline timing_t timing_counter_get(void)
298{
299#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
301#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
302 return soc_timing_counter_get();
303#else
305#endif
306}
307
318static inline uint64_t timing_cycles_get(volatile timing_t *const start,
319 volatile timing_t *const end)
320{
321#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
322 return board_timing_cycles_get(start, end);
323#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
324 return soc_timing_cycles_get(start, end);
325#else
326 return arch_timing_cycles_get(start, end);
327#endif
328}
329
335static inline uint64_t timing_freq_get(void)
336{
337#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
338 return board_timing_freq_get();
339#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
340 return soc_timing_freq_get();
341#else
342 return arch_timing_freq_get();
343#endif
344}
345
353{
354#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
355 return board_timing_cycles_to_ns(cycles);
356#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
357 return soc_timing_cycles_to_ns(cycles);
358#else
359 return arch_timing_cycles_to_ns(cycles);
360#endif
361}
362
371{
372#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
373 return board_timing_cycles_to_ns_avg(cycles, count);
374#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
375 return soc_timing_cycles_to_ns_avg(cycles, count);
376#else
377 return arch_timing_cycles_to_ns_avg(cycles, count);
378#endif
379}
380
386static inline uint32_t timing_freq_get_mhz(void)
387{
388#if defined(CONFIG_BOARD_HAS_TIMING_FUNCTIONS)
390#elif defined(CONFIG_SOC_HAS_TIMING_FUNCTIONS)
392#else
394#endif
395}
396
397#endif /* CONFIG_TIMING_FUNCTIONS */
398
403#ifdef __cplusplus
404}
405#endif
406
407#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:352
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:370
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:386
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:318
static timing_t timing_counter_get(void)
Return timing counter.
Definition timing.h:297
static uint64_t timing_freq_get(void)
Get frequency of counter used (in Hz).
Definition timing.h:335
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