1# Copyright (c) 2016 Intel Corporation 2# SPDX-License-Identifier: Apache-2.0 3 4menu "OS Support Library" 5 6config JSON_LIBRARY 7 bool "Build JSON library" 8 help 9 Build a minimal JSON parsing/encoding library. Used by sample 10 applications such as the NATS client. 11 12config RING_BUFFER 13 bool "Ring buffers" 14 help 15 Enable usage of ring buffers. This is similar to kernel FIFOs but ring 16 buffers manage their own buffer memory and can store arbitrary data. 17 For optimal performance, use buffer sizes that are a power of 2. 18 19config NOTIFY 20 bool "Asynchronous Notifications" 21 help 22 Use this API to support async transactions. 23 24config BASE64 25 bool "Base64 encoding and decoding" 26 help 27 Enable base64 encoding and decoding functionality 28 29config CRC 30 bool "Cyclic redundancy check (CRC) Support" 31 default y 32 help 33 Enable use of CRC. 34 35if CRC 36config CRC_SHELL 37 bool "CRC Shell" 38 depends on SHELL 39 select GETOPT 40 help 41 Enable CRC checking for memory regions from the shell. 42endif # CRC 43 44config PRINTK_SYNC 45 bool "Serialize printk() calls" 46 default y if SMP && MP_NUM_CPUS > 1 && !(EFI_CONSOLE && LOG) 47 help 48 When true, a spinlock will be taken around the output from a 49 single printk() call, preventing the output data from 50 interleaving with concurrent usage from another CPU or an 51 preempting interrupt. 52 53config MPSC_PBUF 54 bool "Multi producer, single consumer packet buffer" 55 select TIMEOUT_64BIT 56 help 57 Enable usage of mpsc packet buffer. Packet buffer is capable of 58 storing variable length packets in a circular way and operate directly 59 on the buffer memory. 60 61config ONOFF 62 bool "On-Off Manager" 63 select NOTIFY 64 help 65 An on-off manager supports an arbitrary number of clients of a 66 service which has a binary state. Example applications are power 67 rails, clocks, and binary device power management. 68 69config SPSC_PBUF 70 bool "Single producer, single consumer packet buffer" 71 help 72 Enable usage of spsc packet buffer. Packet buffer is capable of 73 storing variable length packets in a circular way and operate directly 74 on the buffer memory. 75 76if SPSC_PBUF 77 78choice SPSC_PBUF_CACHE_HANDLING 79 prompt "Cache handling" 80 default SPSC_PBUF_CACHE_ALWAYS if SPSC_PBUF_USE_CACHE && !SPSC_PBUF_NO_CACHE 81 default SPSC_PBUF_CACHE_NEVER if !SPSC_PBUF_USE_CACHE && SPSC_PBUF_NO_CACHE 82 default SPSC_PBUF_CACHE_FLAG 83 84config SPSC_PBUF_CACHE_FLAG 85 bool "Use cache flag" 86 help 87 Use instance specific configuration flag for cache handling. 88 89config SPSC_PBUF_CACHE_ALWAYS 90 bool "Always handle cache" 91 help 92 Handle cache writeback and invalidation for all instances. Option used 93 to avoid runtime check and thus reduce memory footprint. 94 95config SPSC_PBUF_CACHE_NEVER 96 bool "Never handle cache" 97 help 98 Discar cache handling for all instances. Option used to avoid runtime 99 check and thus reduce memory footprint. 100 101endchoice 102 103config SPSC_PBUF_USE_CACHE 104 bool 105 106config SPSC_PBUF_NO_CACHE 107 bool 108 109if SPSC_PBUF_CACHE_FLAG || SPSC_PBUF_CACHE_ALWAYS 110 111config SPSC_PBUF_REMOTE_DCACHE_LINE 112 int "Remote cache line size" 113 default 32 114 help 115 If a packet buffer is used for data sharing between two cores then 116 this value should be set to the data cache line size of the remote core. 117 If local data cache line is detected at runtime then it should be 118 maximum of local and remote line size. 119 120endif # SPSC_PBUF_CACHE_FLAG || SPSC_PBUF_CACHE_ALWAYS 121 122config SPSC_PBUF_UTILIZATION 123 bool "Track maximum utilization" 124 help 125 When enabled, maximum utilization is tracked which can be used to 126 determine the size of the packet buffer. 127 128endif # SPSC_PBUF 129 130config SHARED_MULTI_HEAP 131 bool "Shared multi-heap manager" 132 help 133 Enable support for a shared multi-heap manager that uses the 134 multi-heap allocator to manage a set of reserved memory regions with 135 different capabilities / attributes (cacheable, non-cacheable, 136 etc...) defined in the DT. 137 138config WINSTREAM 139 bool "Lockless shared memory window byte stream" 140 help 141 Winstream is a byte stream IPC for use in shared memory 142 "windows", generally for transmit to non-Zephyr contexts that 143 can't share Zephyr APIs or data structures. 144 145if WINSTREAM 146config WINSTREAM_STDLIB_MEMCOPY 147 bool "Use standard memcpy() in winstream" 148 help 149 The sys_winstream utility is sometimes used in early boot 150 environments before the standard library is usable. By 151 default it uses a simple internal bytewise memcpy(). Set 152 this to use the one from the standard library. 153endif 154 155if MPSC_PBUF 156config MPSC_CLEAR_ALLOCATED 157 bool "Clear allocated packet" 158 help 159 When enabled packet space is zeroed before returning from allocation. 160endif 161 162config REBOOT 163 bool "Reboot functionality" 164 help 165 Enable the sys_reboot() API. Enabling this can drag in other subsystems 166 needed to perform a "safe" reboot (e.g. to stop the system clock before 167 issuing a reset). 168 169config UTF8 170 bool "UTF-8 string operation supported" 171 help 172 Enable the utf8 API. The API implements functions to specifically 173 handle UTF-8 encoded strings. 174 175rsource "Kconfig.cbprintf" 176 177rsource "Kconfig.heap" 178 179endmenu 180