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