LCOV - code coverage report
Current view: top level - zephyr/debug - stack.h Coverage Total Hit
Test: new.info Lines: 50.0 % 2 1
Test Date: 2025-09-05 16:43:28

            Line data    Source code
       1            1 : /**
       2              :  * @file debug/stack.h
       3              :  * Stack usage analysis helpers
       4              :  */
       5              : 
       6              : /*
       7              :  * Copyright (c) 2015 Intel Corporation
       8              :  *
       9              :  * SPDX-License-Identifier: Apache-2.0
      10              :  */
      11              : 
      12              : #ifndef ZEPHYR_INCLUDE_DEBUG_STACK_H_
      13              : #define ZEPHYR_INCLUDE_DEBUG_STACK_H_
      14              : 
      15              : #include <zephyr/logging/log.h>
      16              : #include <zephyr/toolchain.h>
      17              : #include <stdbool.h>
      18              : 
      19            0 : static inline void log_stack_usage(const struct k_thread *thread)
      20              : {
      21              : #if defined(CONFIG_INIT_STACKS) && defined(CONFIG_THREAD_STACK_INFO)
      22              :         size_t unused, size = thread->stack_info.size;
      23              : 
      24              :         TOOLCHAIN_DISABLE_WARNING(TOOLCHAIN_WARNING_SHADOW);
      25              :         LOG_MODULE_DECLARE(os, CONFIG_KERNEL_LOG_LEVEL);
      26              :         TOOLCHAIN_ENABLE_WARNING(TOOLCHAIN_WARNING_SHADOW);
      27              : 
      28              :         if (k_thread_stack_space_get(thread, &unused) == 0) {
      29              :                 unsigned int pcnt = ((size - unused) * 100U) / size;
      30              :                 const char *tname;
      31              : 
      32              :                 tname = k_thread_name_get((k_tid_t)thread);
      33              :                 if (tname == NULL) {
      34              :                         tname = "unknown";
      35              :                 }
      36              : 
      37              :                 LOG_INF("%p (%s):\tunused %zu\tusage %zu / %zu (%u %%)",
      38              :                         thread, tname, unused, size - unused, size,
      39              :                         pcnt);
      40              :         }
      41              : #else
      42              :         ARG_UNUSED(thread);
      43              : #endif
      44              : }
      45              : #endif /* ZEPHYR_INCLUDE_DEBUG_STACK_H_ */
        

Generated by: LCOV version 2.0-1