# Copyright (c) 2021 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 menu "Misc" config LOG_CMDS bool "Shell commands" depends on SHELL depends on !LOG_FRONTEND_ONLY && !LOG_MODE_MINIMAL config LOG_TEST_CLEAR_MESSAGE_SPACE bool "Clear message after allocation" default y depends on ZTEST help Used in testing to simplify message comparision if message contains paddings. config LOG_USE_VLA bool "Using variable length arrays" default y if !MISRA_SANE help Using VLA slightly decreases stack usage in some cases it may not be supported. Note that VLA are used for arrays which size is resolved at compile time so at runtime arrays have fixed size. config LOG_SIMPLE_MSG_OPTIMIZE bool "Optimize simple messages for size" depends on !64BIT && !CBPRINTF_PACKAGE_HEADER_STORE_CREATION_FLAGS default y help Dedicated code for handling simple log messages (0-2 32 bit word arguments). Approximately, 70%-80% log messages in the application fit into that category. Depending on the architecture code size reduction is from 0-40% (highest seen on RISCV32) and execution time also up to 40%. config LOG_ALWAYS_RUNTIME bool "Always use runtime message creation (v2)" default y if NO_OPTIMIZATIONS default y if LOG_MODE_IMMEDIATE default y if "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "xcc" help If enabled, runtime method is always used for message creation. Static creation relies on compiler being able to optimize and remove code based on information known at compile time. Runtime only approach must be used when optimization is disabled because some compilers (seen on arm_cortex_m and x86) were using unrealistic amount of stack for dead code. It is also required in immediate mode since it requires less stack than static message creation and speed has lower priority in that mode. config LOG_FMT_SECTION bool "Keep log strings in dedicated section" help When enabled, logs are kept in dedicated memory section. It allows removing strings from final binary and should be used for dictionary logging. config LOG_FMT_SECTION_STRIP bool "Strip log strings from binary" depends on LOG_DICTIONARY_DB depends on LOG_FMT_SECTION depends on LINKER_DEVNULL_SUPPORT depends on !LOG_ALWAYS_RUNTIME depends on !LOG_OUTPUT imply LINKER_DEVNULL_MEMORY imply LOG_FMT_STRING_VALIDATE config LOG_FMT_STRING_VALIDATE bool "Validate logging strings" help Logging strings cannot use %p with character pointers. They should be casted to the pointer of another type (e.g. void *). With this feature enabled, at compile time, the preprocessor detects strings with %p without casting and reports an error at runtime. config LOG_USE_TAGGED_ARGUMENTS bool "Using tagged arguments for packaging" depends on !PICOLIBC select CBPRINTF_PACKAGE_SUPPORT_TAGGED_ARGUMENTS select LOG_ALWAYS_RUNTIME help If enabled, packaging uses tagged arguments. config LOG_MEM_UTILIZATION bool "Tracking maximum memory utilization" depends on LOG_MODE_DEFERRED default y if LOG_CMDS help When enabled, maximum usage of memory used for log messages in deferred mode is tracked. It can be used to trim LOG_BUFFER_SIZE. config LOG_DICTIONARY_DB bool config LOG_DICTIONARY_DB_TARGET bool "Only generated log dictionary database from target" depends on LOG_DICTIONARY_DB help Enable this option to make generating the log dictionary database only done by its own build target. This removes the target from the ALL make target and the target 'log_dict_db_gen' has to be called in addition. config LOG_MSG_APPEND_RO_STRING_LOC bool help Enable this option to force log messages to always append location of read-only string arguments in the package. This should be selected by backends if required. config LOG_FAILURE_REPORT_PERIOD int "Failure report period (in milliseconds)" default 1000 depends on LOG_MODE_DEFERRED help Determines how often failures are reported. Report contains number of dropped messages. It may contain additional information depending on the mode. config LOG_DOMAIN_NAME string "Domain name" default "" if LOG_MULTIDOMAIN config LOG_REMOTE_DOMAIN_MAX_COUNT int "Maximum number of link domains" default 4 help Number of domains that can be handled by a link endif endmenu