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 @@
@@ -0,0 +1,5 @@
|
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
zephyr_sources( |
||||
thread_analyzer.c |
||||
) |
@ -0,0 +1,116 @@
@@ -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