1# Copyright (c) 2016 Intel Corporation
2# SPDX-License-Identifier: Apache-2.0
3
4menu "OS Support Library"
5
6config ZVFS_OPEN_MAX
7	int "Maximum number of open file descriptors"
8	default 0
9	help
10	  Maximum number of open file descriptors, this includes
11	  files, sockets, special devices, etc. If subsystems
12	  specify ZVFS_OPEN_ADD_SIZE_* options, these will be added together
13	  and the sum will be compared to the ZVFS_OPEN_MAX value.
14	  If the sum is greater than the ZVFS_OPEN_MAX option (even if this
15	  has the default 0 value), then the actual file descriptor count will be
16	  rounded up to the sum of the individual requirements (unless the
17	  ZVFS_OPEN_IGNORE_MIN option is enabled). If the final value, after
18	  considering both this option as well as sum of the custom
19	  requirements, ends up being zero, then no file descriptors will be
20	  available.
21
22config ZVFS_OPEN_IGNORE_MIN
23	bool "Ignore the minimum fd count requirement"
24	help
25	  This option can be set to force setting a smaller file descriptor
26	  count than what's specified by enabled subsystems. This can be useful
27	  when optimizing memory usage and a more precise minimum fd count
28	  is known for a given application.
29
30config PRINTK_SYNC
31	bool "Serialize printk() calls"
32	default y if SMP && MP_MAX_NUM_CPUS > 1 && !(EFI_CONSOLE && LOG)
33	help
34	  When true, a spinlock will be taken around the output from a
35	  single printk() call, preventing the output data from
36	  interleaving with concurrent usage from another CPU or an
37	  preempting interrupt.
38
39config MPSC_PBUF
40	bool "Multi producer, single consumer packet buffer"
41	select TIMEOUT_64BIT
42	help
43	  Enable usage of mpsc packet buffer. Packet buffer is capable of
44	  storing variable length packets in a circular way and operate directly
45	  on the buffer memory.
46
47config SPSC_PBUF
48	bool "Single producer, single consumer packet buffer"
49	help
50	  Enable usage of spsc packet buffer. Packet buffer is capable of
51	  storing variable length packets in a circular way and operate directly
52	  on the buffer memory.
53
54if SPSC_PBUF
55
56choice SPSC_PBUF_CACHE_HANDLING
57	prompt "Cache handling"
58	default SPSC_PBUF_CACHE_ALWAYS if SPSC_PBUF_USE_CACHE && !SPSC_PBUF_NO_CACHE
59	default SPSC_PBUF_CACHE_NEVER if !SPSC_PBUF_USE_CACHE && SPSC_PBUF_NO_CACHE
60	default SPSC_PBUF_CACHE_FLAG
61
62config SPSC_PBUF_CACHE_FLAG
63	bool "Use cache flag"
64	help
65	  Use instance specific configuration flag for cache handling.
66
67config SPSC_PBUF_CACHE_ALWAYS
68	bool "Always handle cache"
69	help
70	  Handle cache writeback and invalidation for all instances. Option used
71	  to avoid runtime check and thus reduce memory footprint. Beware! It shall
72	  be used only if all packet buffer instances are used for data sharing
73	  between cores.
74
75config SPSC_PBUF_CACHE_NEVER
76	bool "Never handle cache"
77	help
78	  Discar cache handling for all instances. Option used to avoid runtime
79	  check and thus reduce memory footprint.
80
81endchoice
82
83config SPSC_PBUF_USE_CACHE
84	bool
85
86config SPSC_PBUF_NO_CACHE
87	bool
88
89if SPSC_PBUF_CACHE_FLAG || SPSC_PBUF_CACHE_ALWAYS
90
91config SPSC_PBUF_REMOTE_DCACHE_LINE
92	int "Remote cache line size"
93	default 32
94	help
95	  If a packet buffer is used for data sharing between two cores then
96	  this value should be set to the data cache line size of the remote core.
97	  If local data cache line is detected at runtime then it should be
98	  maximum of local and remote line size.
99
100endif # SPSC_PBUF_CACHE_FLAG || SPSC_PBUF_CACHE_ALWAYS
101
102config SPSC_PBUF_UTILIZATION
103	bool "Track maximum utilization"
104	help
105	  When enabled, maximum utilization is tracked which can be used to
106	  determine the size of the packet buffer.
107
108endif # SPSC_PBUF
109
110if MPSC_PBUF
111config MPSC_CLEAR_ALLOCATED
112	bool "Clear allocated packet"
113	help
114	  When enabled packet space is zeroed before returning from allocation.
115endif
116
117if SCHED_DEADLINE
118
119config P4WQ_INIT_STAGE_EARLY
120	bool "Early initialization of P4WQ threads"
121	help
122	  Initialize P4WQ threads early so that the P4WQ can be used on devices
123	  initialization sequence.
124
125endif
126
127config REBOOT
128	bool "Reboot functionality"
129	help
130	  Enable the sys_reboot() API. Enabling this can drag in other subsystems
131	  needed to perform a "safe" reboot (e.g. to stop the system clock before
132	  issuing a reset).
133
134config HAS_POWEROFF
135	bool
136	help
137	  Option to signal that power off functionality is implemented.
138
139config POWEROFF
140	bool "Power off functionality"
141	depends on HAS_POWEROFF
142	help
143	  Enable support for system power off.
144
145rsource "Kconfig.cbprintf"
146rsource "zvfs/Kconfig"
147rsource "cpu_load/Kconfig"
148
149endmenu
150