# Copyright (c) 2016 Intel Corporation # SPDX-License-Identifier: Apache-2.0 menu "OS Support Library" config JSON_LIBRARY bool "Build JSON library" help Build a minimal JSON parsing/encoding library. Used by sample applications such as the NATS client. config RING_BUFFER bool "Enable ring buffers" help Enable usage of ring buffers. This is similar to kernel FIFOs but ring buffers manage their own buffer memory and can store arbitrary data. For optimal performance, use buffer sizes that are a power of 2. config BASE64 bool "Enable base64 encoding and decoding" help Enable base64 encoding and decoding functionality config SYS_HEAP_VALIDATE bool "Enable internal heap validity checking" help The sys_heap implementation is instrumented for extensive internal validation. Leave this off by default, unless modifying the heap code or (maybe) when running in environments that require sensitive detection of memory corruption. config SYS_HEAP_ALLOC_LOOPS int "Number of tries in the inner heap allocation loop" default 3 help The sys_heap allocator bounds the number of tries from the smallest chunk level (the one that might not fit the requested allocation) to maintain constant time performance. Setting this to a high level will cause the heap to return more successful allocations in situations of high fragmentation, at the cost of potentially significant (linear time) searching of the free list. The default is three, which results in an allocator with good statistical properties ("most" allocations that fit will succeed) but keeps the maximum runtime at a tight bound so that the heap is useful in locked or ISR contexts. config SYS_HEAP_RUNTIME_STATS bool "System heap runtime statistics" help Gather system heap runtime statistics. choice prompt "Supported heap sizes" depends on !64BIT default SYS_HEAP_SMALL_ONLY if (SRAM_SIZE <= 256) default SYS_HEAP_AUTO help Heaps using reduced-size chunk headers can accommodate so called "small" heaps with a total size of 262136 bytes or less. Heaps using full-size chunk headers can have a total size up to 16383 megabytes. The overhead is of course bigger. On 32-bit system the tradeoff is selectable between: - "small" heaps with low memory and runtime overhead; - "big" heaps with bigger memory overhead even for small heaps; - "auto" providing optimal memory overhead in all cases but with a higher runtime overhead and somewhat bigger code footprint. On 64-bit systems the "big" chunk header size conveniently provides the needed alignment on returned memory allocations. Small chunk headers would require alignment padding up to the big header size anyway so "big" heap is the only option in that case. config SYS_HEAP_SMALL_ONLY bool "Support for small heaps only" help Select this to optimize the code and memory usage if all your heaps are 262136 bytes or less. config SYS_HEAP_BIG_ONLY bool "Support for big heaps only" help Select this to optimize the code for big heaps only. This can accommodate any heap size but memory usage won't be as efficient with small sized heaps. config SYS_HEAP_AUTO bool "Support for both small and big heaps at run time" help This option optimizes memory usage for each heap according to their size albeit with some overhead in code size and execution. endchoice config PRINTK_SYNC bool "Serialize printk() calls" default y if SMP && MP_NUM_CPUS > 1 help When true, a spinlock will be taken around the output from a single printk() call, preventing the output data from interleaving with concurrent usage from another CPU or an preempting interrupt. config MPSC_PBUF bool "Multi producer, single consumer packet buffer" select TIMEOUT_64BIT help Enable usage of mpsc packet buffer. Packet buffer is capable of storing variable length packets in a circular way and operate directly on the buffer memory. config SHARED_MULTI_HEAP bool "Shared multi-heap manager" help Enable support for a shared multi-heap manager that uses the multi-heap allocator to manage a set of reserved memory regions with different capabilities / attributes (cacheable, non-cacheable, etc...) defined in the DT. if MPSC_PBUF config MPSC_CLEAR_ALLOCATED bool "Clear allocated packet" help When enabled packet space is zeroed before returning from allocation. endif config REBOOT bool "Reboot functionality" help Enable the sys_reboot() API. Enabling this can drag in other subsystems needed to perform a "safe" reboot (e.g. to stop the system clock before issuing a reset). rsource "Kconfig.cbprintf" endmenu