LCOV - code coverage report
Current view: top level - zephyr/debug - cpu_load.h Coverage Total Hit
Test: new.info Lines: 71.4 % 7 5
Test Date: 2025-09-05 16:43:28

            Line data    Source code
       1            0 : /*
       2              :  * Copyright (c) 2024, Nordic Semiconductor ASA
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : 
       7              : #ifndef ZEPHYR_INCLUDE_DEBUG_CPU_LOAD_H_
       8              : #define ZEPHYR_INCLUDE_DEBUG_CPU_LOAD_H_
       9              : 
      10              : #include <stdbool.h>
      11              : #include <stdint.h>
      12              : 
      13              : #ifdef __cplusplus
      14              : extern "C" {
      15              : #endif
      16              : 
      17              : /** @defgroup cpu_load CPU load monitor
      18              :  *  @ingroup debug
      19              :  *  @brief Module for monitoring CPU Load
      20              :  *
      21              :  *  This module allow monitoring of the CPU load.
      22              :  *  @{
      23              :  */
      24              : 
      25              : /** @brief Hook called by the application specific hook on entering CPU idle. */
      26            1 : void cpu_load_on_enter_idle(void);
      27              : 
      28              : /** @brief Hook called by the application specific hook on exiting CPU idle. */
      29            1 : void cpu_load_on_exit_idle(void);
      30              : 
      31              : /** @brief Get CPU load.
      32              :  *
      33              :  * CPU load is measured using a timer which tracks amount of time spent in the
      34              :  * CPU idle. Since it is a software tracking there is some small overhead.
      35              :  * Precision depends on the frequency of the timer in relation to the CPU frequency.
      36              :  *
      37              :  * @param reset Reset the measurement after reading.
      38              :  *
      39              :  * @retval Positive number - CPU load in per mille.
      40              :  * @retval Negative number - error code.
      41              :  */
      42            1 : int cpu_load_get(bool reset);
      43              : 
      44              : /** @brief Control periodic CPU statistics report.
      45              :  *
      46              :  * Report logging is by default enabled.
      47              :  *
      48              :  * @param enable true to enable report logging and false to disable.
      49              :  */
      50            1 : void cpu_load_log_control(bool enable);
      51              : 
      52              : /* Optional callback for cpu_load_cb_reg
      53              :  *
      54              :  * This will be called from the k_timer expiry_fn used for periodic logging.
      55              :  * CONFIG_CPU_LOAD_LOG_PERIODICALLY must be configured to a positive value.
      56              :  * Time spent in this callback must be kept to a minimum.
      57              :  */
      58            0 : typedef void (*cpu_load_cb_t)(uint8_t percent);
      59              : 
      60              : /** @brief Optional registration of callback when load is greater or equal to the threshold.
      61              :  *
      62              :  * @param cb Pointer to the callback function. NULL will cancel the callback.
      63              :  * @param threshold_percent Threshold [0...100]. CPU load equal or greater that this
      64              :  * will trigger the callback.
      65              :  *
      66              :  * @retval 0 - Callback registered/cancelled.
      67              :  * @retval -EINVAL if the threshold is invalid.
      68              :  */
      69            1 : int cpu_load_cb_reg(cpu_load_cb_t cb, uint8_t threshold_percent);
      70              : 
      71              : /**
      72              :  * @}
      73              :  */
      74              : 
      75              : #ifdef __cplusplus
      76              : }
      77              : #endif
      78              : 
      79              : 
      80              : #endif /* ZEPHYR_INCLUDE_DEBUG_CPU_LOAD_H_ */
        

Generated by: LCOV version 2.0-1