| # 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 |