12345678910111213141516171819202122232425262728293031323334353637383940 |
- /**
- * @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_ */
|