Browse Source
Move to own directory to prepare for new related code. Signed-off-by: Anas Nashif <anas.nashif@intel.com>pull/88172/head
5 changed files with 127 additions and 117 deletions
@ -0,0 +1,5 @@ |
|||||||
|
# SPDX-License-Identifier: Apache-2.0 |
||||||
|
|
||||||
|
zephyr_sources( |
||||||
|
thread_analyzer.c |
||||||
|
) |
@ -0,0 +1,116 @@ |
|||||||
|
# Thread analyzer configuration options |
||||||
|
|
||||||
|
# Copyright (c) 2015 Wind River Systems, Inc. |
||||||
|
# SPDX-License-Identifier: Apache-2.0 |
||||||
|
|
||||||
|
menuconfig THREAD_ANALYZER |
||||||
|
bool "Thread analyzer" |
||||||
|
depends on !ARCH_POSIX |
||||||
|
select INIT_STACKS |
||||||
|
select THREAD_MONITOR |
||||||
|
select THREAD_STACK_INFO |
||||||
|
select THREAD_RUNTIME_STATS |
||||||
|
help |
||||||
|
Enable thread analyzer functionality and all the required modules. |
||||||
|
This module may be used to debug thread configuration issues, e.g. |
||||||
|
stack size configuration to find stack overflow or to find stacks |
||||||
|
which may be optimized. |
||||||
|
|
||||||
|
if THREAD_ANALYZER |
||||||
|
module = THREAD_ANALYZER |
||||||
|
module-str = thread analyzer |
||||||
|
source "subsys/logging/Kconfig.template.log_config" |
||||||
|
|
||||||
|
choice |
||||||
|
prompt "Thread analysis print mode" |
||||||
|
default THREAD_ANALYZER_USE_PRINTK |
||||||
|
|
||||||
|
config THREAD_ANALYZER_USE_LOG |
||||||
|
bool "Use logger output" |
||||||
|
select LOG |
||||||
|
help |
||||||
|
Use logger output to print thread information. |
||||||
|
|
||||||
|
config THREAD_ANALYZER_USE_PRINTK |
||||||
|
bool "Use printk function" |
||||||
|
help |
||||||
|
Use kernel printk function to print thread information. |
||||||
|
|
||||||
|
endchoice |
||||||
|
|
||||||
|
config THREAD_ANALYZER_ISR_STACK_USAGE |
||||||
|
bool "Analyze interrupt stacks usage" |
||||||
|
default y |
||||||
|
|
||||||
|
config THREAD_ANALYZER_PRIV_STACK_USAGE |
||||||
|
bool "Analyze privileged stacks usage" |
||||||
|
depends on USERSPACE |
||||||
|
depends on ARCH_HAS_THREAD_PRIV_STACK_SPACE_GET |
||||||
|
help |
||||||
|
Print privileged stack usage for user threads. |
||||||
|
|
||||||
|
config THREAD_ANALYZER_RUN_UNLOCKED |
||||||
|
bool "Run analysis with interrupts unlocked" |
||||||
|
default y |
||||||
|
help |
||||||
|
The thread analysis takes quite a long time. |
||||||
|
Every thread it finds is analyzed word by word to find any that |
||||||
|
does not match the magic number. |
||||||
|
Normally while thread are analyzed the k_thread_foreach function |
||||||
|
is used. |
||||||
|
While this is a safe run from the thread list perspective it may lock |
||||||
|
the interrupts for a long time - long enough to disconnect when |
||||||
|
Bluetooth communication is used. |
||||||
|
Setting this flag will force thread analyzer to use |
||||||
|
the k_thread_foreach_unlocked function. |
||||||
|
This will allow the interrupts to be processed while the thread is |
||||||
|
analyzed. |
||||||
|
For the limitation of such configuration see the k_thread_foreach |
||||||
|
documentation. |
||||||
|
|
||||||
|
config THREAD_ANALYZER_AUTO |
||||||
|
bool "Run periodic thread analysis in a thread" |
||||||
|
help |
||||||
|
Run the thread analyzer automatically, without the need to add |
||||||
|
any code to the application. |
||||||
|
Thread analysis would be called periodically. |
||||||
|
|
||||||
|
if THREAD_ANALYZER_AUTO |
||||||
|
|
||||||
|
config THREAD_ANALYZER_AUTO_SEPARATE_CORES |
||||||
|
bool "Run thread analyzer separately on each core" |
||||||
|
default y if KERNEL_COHERENCE |
||||||
|
depends on SCHED_CPU_MASK |
||||||
|
help |
||||||
|
Run the thread analyzer auto thread on each core and report |
||||||
|
cores separately. This feature is needed for platforms running |
||||||
|
on cache-incoherent architectures. |
||||||
|
|
||||||
|
config THREAD_ANALYZER_AUTO_INTERVAL |
||||||
|
int "Thread analysis interval" |
||||||
|
default 60 |
||||||
|
range 5 3600 |
||||||
|
help |
||||||
|
The time in seconds to call thread analyzer periodic printing function. |
||||||
|
|
||||||
|
config THREAD_ANALYZER_AUTO_STACK_SIZE |
||||||
|
int "Stack size for the periodic thread analysis thread" |
||||||
|
default 2048 if THREAD_ANALYZER_USE_LOG && LOG_MODE_IMMEDIATE && NO_OPTIMIZATIONS |
||||||
|
default 1024 |
||||||
|
|
||||||
|
config THREAD_ANALYZER_AUTO_THREAD_PRIORITY_OVERRIDE |
||||||
|
bool "Override default thread analysis thread priority" |
||||||
|
help |
||||||
|
Option to change the default value of thread analysis thread priority. |
||||||
|
|
||||||
|
if THREAD_ANALYZER_AUTO_THREAD_PRIORITY_OVERRIDE |
||||||
|
config THREAD_ANALYZER_AUTO_THREAD_PRIORITY |
||||||
|
int "Thread analysis thread priority" |
||||||
|
default 0 |
||||||
|
help |
||||||
|
Set thread priority of the thread analysis |
||||||
|
endif # THREAD_ANALYZER_AUTO_THREAD_PRIORITY_OVERRIDE |
||||||
|
|
||||||
|
endif # THREAD_ANALYZER_AUTO |
||||||
|
|
||||||
|
endif # THREAD_ANALYZER |
Loading…
Reference in new issue