You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
926 B
40 lines
926 B
/** |
|
* @file debug/stack.h |
|
* Stack usage analysis helpers |
|
*/ |
|
|
|
/* |
|
* Copyright (c) 2015 Intel Corporation |
|
* |
|
* SPDX-License-Identifier: Apache-2.0 |
|
*/ |
|
|
|
#ifndef ZEPHYR_INCLUDE_DEBUG_STACK_H_ |
|
#define ZEPHYR_INCLUDE_DEBUG_STACK_H_ |
|
|
|
#include <logging/log.h> |
|
#include <stdbool.h> |
|
|
|
static inline void log_stack_usage(const struct k_thread *thread) |
|
{ |
|
#if defined(CONFIG_INIT_STACKS) && defined(CONFIG_THREAD_STACK_INFO) |
|
size_t unused, size = thread->stack_info.size; |
|
|
|
LOG_MODULE_DECLARE(os, CONFIG_KERNEL_LOG_LEVEL); |
|
|
|
if (k_thread_stack_space_get(thread, &unused) == 0) { |
|
unsigned int pcnt = ((size - unused) * 100U) / size; |
|
const char *tname; |
|
|
|
tname = k_thread_name_get((k_tid_t)thread); |
|
if (tname == NULL) { |
|
tname = "unknown"; |
|
} |
|
|
|
LOG_INF("%p (%s):\tunused %zu\tusage %zu / %zu (%u %%)", |
|
thread, log_strdup(tname), unused, size - unused, size, |
|
pcnt); |
|
} |
|
#endif |
|
} |
|
#endif /* ZEPHYR_INCLUDE_DEBUG_STACK_H_ */
|
|
|