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