blob: 8f1fd2446434ca244af98997195ffd5c70a668d9 [file] [log] [blame]
# Copyright 2023 Linaro
# SPDX-License-Identifier: Apache-2.0
# Instrumentation configuration options
config INSTRUMENTATION
bool "Compiler Instrumentation Support"
select REBOOT
select RETAINED_MEM
select RETAINED_MEM_ZEPHYR_RAM
select RETAINED_MEM_MUTEX_FORCE_DISABLE
select RETENTION
select RETENTION_MUTEX_FORCE_DISABLE
select UART_INTERRUPT_DRIVEN
help
Enable compiler-managed runtime system instrumentation. This requires
a compiler that supports function instrumentation, and a backend for
capturing and processing those instrumentation events from the target,
like a serial port.
if INSTRUMENTATION
config INSTRUMENTATION_MODE_CALLGRAPH
bool "Call graph mode (Tracing)"
default y
select THREAD_NAME
select TRACING
select TIMING_FUNCTIONS
help
Enables reconstruction of function call graphs and the observation
of context switches (threads), within the limits of the trace buffer
size.
config INSTRUMENTATION_MODE_CALLGRAPH_TRACE_BUFFER_SIZE
int "Size of the trace buffer (bytes)"
depends on INSTRUMENTATION_MODE_CALLGRAPH
default 12000
# Lower limit (in bytes) must match the biggest record item size. For
# details about the sizes, please see instrumentation.h for the record
# struct sizes.
range 20 4294967296
help
Size of the trace buffer. The trace buffer is used to buffer the
tracing events and has two working modes: it can be configure either
as a simple buffer or as a ring buffer (overwriting mode).
config INSTRUMENTATION_MODE_CALLGRAPH_BUFFER_OVERWRITE
bool "Trace buffer overwriting mode"
depends on INSTRUMENTATION_MODE_CALLGRAPH
default y
help
If the trace buffer is set as overwriting it works as a ring buffer.
In this working mode if the buffer gets full old records will be
overwritten by the newer records. This mode allows recording the most
recent tracing events at the expense of losing the old ones. If this
mode is not selected, then once the buffer is full tracing stops.
config INSTRUMENTATION_MODE_STATISTICAL
bool "Statistical mode (Profiling)"
select TIMING_FUNCTIONS
default y
help
Enables statistical profiling of the runtime system, tracking total
execution time of the number of functions equal to
INSTRUMENTATION_MODE_STATISTICAL_MAX_NUM_FUNC.
config INSTRUMENTATION_MODE_STATISTICAL_MAX_NUM_FUNC
int "Maximum number of functions to collect statistics from"
depends on INSTRUMENTATION_MODE_STATISTICAL
default 256
range 1 4096
help
Maximum number of functions to collect statistics from. Set the
maximum number of functions to collect the total execution time for
each function called in the region defined by 'trigger' and 'stopper'
instrumentation points.
config INSTRUMENTATION_MODE_STATISTICAL_MAX_CALL_DEPTH
int "Maximum call depth"
depends on INSTRUMENTATION_MODE_STATISTICAL
default 65535
range 1 65535
help
The maximum number of times a function can be recursively called
before profile data (delta time) stops being collected.
config INSTRUMENTATION_TRIGGER_FUNCTION
string "Default trigger function used to turn on instrumentation"
default "main"
help
Sets the trigger function. Instrumentation (tracing and profiling) is
only turned on when the trigger function is called. The trigger
function can be changed at runtime via the 'zaru' CLI tool.
config INSTRUMENTATION_STOPPER_FUNCTION
string "Default stopper function used to turn off instrumentation"
default "main"
help
Sets the stopper function. Instrumentation (tracing and profiling) is
only turned off when the trigger function returns. The stopper
function can be changed at runtime via the 'zaru' CLI tool.
config INSTRUMENTATION_EXCLUDE_FUNCTION_LIST
string "Exclude function list"
depends on INSTRUMENTATION_MODE_CALLGRAPH || INSTRUMENTATION_MODE_STATISTICAL
help
Set the list of function names to be excluded from instrumentation.
The function name to be matched is its user-visible name. The match is
done on substrings: if the function name in the list is a substring of
a function name, it is considered to be a match. The function names in
the list are separate by a comma, for instance: sym0, sym1, ...
config INSTRUMENTATION_EXCLUDE_FILE_LIST
string "Exclude file list"
depends on INSTRUMENTATION_MODE_CALLGRAPH || INSTRUMENTATION_MODE_STATISTICAL
help
Set the list of files that are excluded from instrumentation. The
match is done on substrings: if the file parameter is a substring of
the file name, it is considered to be a match. The files in the list
are separate by a comma, for instance: file0, file1, ...
endif