bash: Fix errstr
[akaros.git] / Kconfig
1 #
2 # For a description of the syntax of this configuration file,
3 # see Linux's Documentation/kbuild/kconfig-language.txt.
4 #
5 mainmenu "Akaros/$SRCARCH Kernel Configuration"
6
7 # This is info, not a setable option.  Must make ARCH=arch to change.
8 config SRCARCH
9         string
10         option env="ARCH"
11
12 config 64BIT
13         bool "64-bit kernel"
14         default y
15         help
16                 Say yes to build a 64-bit kernel.  Must be 'y' for x86.
17
18 menuconfig RUN_INIT_SCRIPT
19         bool "Run init script after boot"
20         default n
21         help
22                 Run an init script after boot instead of dropping into the monitor
23
24 config INIT_SCRIPT_PATH_AND_ARGS
25     depends on RUN_INIT_SCRIPT
26     string "Path to init script, followed by its arguments."
27     default /bin/init.sh
28     help
29                 Path to the init script run at boot time, followed by a space separated
30                 list of arguments
31
32 source "kern/arch/$SRCARCH/Kconfig"
33
34 source "kern/src/net/Kconfig"
35
36 source "kern/drivers/Kconfig"
37
38 menu "Filesystems"
39
40 config KFS
41         bool "KFS filesystem"
42         default y
43         help
44                 KFS is an initramfs bundled into the kernel, and contains your root
45                 filesystem.
46
47 config KFS_PATHS
48         depends on KFS
49         string "KFS/Initramfs paths"
50         default kern/kfs
51         help
52                 Space separated list of paths to directories to bundle into KFS.  This
53                 will be your root filesystem.
54
55 config KFS_CPIO_BIN
56         depends on KFS
57         string "KFS CPIO helper"
58         default ""
59         help
60                 This binary (relative to the root directory) will be run before
61                 bundling the KFS Paths into the CPIO.
62
63 endmenu
64
65 choice COREALLOC_POLICY
66         prompt "Core Allocation Policy"
67         help
68                 Select a policy for allocating cores to a process upon request.  All
69                 strategies first allocate cores from the set of provisioned cores for a
70                 process, but differ in how they select cores beyond this.
71
72 config COREALLOC_FCFS
73         bool "Simple FCFS"
74         help
75                 Allocate cores to processes on a first-come-first-served basis. All
76                 cores are treated equally, and no topology information is used to try
77                 and optimize which cores are given to which processes upon request.
78
79 config COREALLOC_PACKED
80         bool "Packed Topology"
81         help
82                 Allocate cores to a process based on a topology-aware algorithm that
83                 tries to pack allocated cores as close together as possible.  It first
84                 tries to pair new cores with their hyper-threaded pair, then keep them
85                 on the same socket, then the same numa domain.
86
87 endchoice
88
89 menu "Kernel Debugging"
90
91 menu "Per-cpu Tracers"
92
93 config TRACE_KMSGS
94         bool "KMSG Tracing"
95         default n
96         help
97                 Turns on KMSG tracing, using the per-cpu ring buffer (holds about 256
98                 events).  You can access this from the monitor via "trace pcpui".  Turn
99                 this off for a slight performance improvement on every KMSG (and every
100                 MCP proc_yield).
101
102 config TRACE_LOCKS
103         bool "Lock Tracing"
104         depends on SPINLOCK_DEBUG
105         default n
106         help
107                 Turns on lock tracing, using the per-cpu ring buffer.  This records the
108                 a timestamp and lock address, in an over-write tracing style (meaning
109                 it'll clobber older events).  If you have locking issues, this may give
110                 you clues as to which locks were grabbed recently.
111
112 endmenu
113
114 config DEVELOPMENT_ASSERTIONS
115         bool "dasserts"
116         default n
117         help
118                 Turn on dassert() in code, dassert will compile to assert().
119
120 config SPINLOCK_DEBUG
121         bool "Spinlock debugging"
122         default n
123         help
124                 Turns on debugging, which tracks the last time a lock was acquired and
125                 detects improper lock acquisition based on IRQ levels (e.g. using
126                 spin_lock() in IRQ context).  This will slow down all lock
127                 acquisitions.
128
129 config SEQLOCK_DEBUG
130         bool "Seqlock debugging"
131         default n
132         help
133                 Provides asserts to detect seqlock errors.  This will allow a malicious
134                 userspace to trigger a panic in the kernel.
135
136 config SEMAPHORE_DEBUG
137         bool "Semaphore debugging"
138         default n
139         help
140                 Turns on debugging, which tracks the last time and location that a
141                 semaphore was downed, and provides a linked list of all semaphores that
142                 have waiters.  This will slow down all semaphore ups and downs.
143
144 config SEM_SPINWAIT
145         bool "Semaphore spinwaiting"
146         default n
147         help
148                 Turns on semaphore spinwaiting.  In lieu of intelligent Adaptive
149                 Mutexes, busy semaphores will just spin for a while before fully
150                 sleeping.
151
152 config SEM_SPINWAIT_NR_LOOPS
153         int "Number of polls before sleeping"
154         depends on SEM_SPINWAIT
155         default 100
156         help
157                 How many times to poll a busy semaphore before going to sleep.
158
159 config DISABLE_SMT
160         bool "Disables symmetric multithreading"
161         default n
162         help
163                 Disables hyperthreading by telling the kernel to never give out even
164                 numbered cores to MCPs.  This does not check to see if the threads are
165                 in fact siblings, or if the target machine is hyperthreaded.
166
167 config PRINTK_NO_BACKSPACE
168         bool "Printk with no backspace"
169         default n
170         help
171                 One of the serial devices I was using a while back had issues printing
172                 backspaces.  This was an old hack to deal with that.
173
174 config SYSCALL_STRING_SAVING
175         bool "Syscall string saving"
176         default n
177         help
178                 Kmallocs a small buffer for each syscall and attaches it to the
179                 kthread, which can be viewed when debugging semaphores.  Individual
180                 syscalls can save info in this buffer.
181
182 config BLOCK_EXTRAS
183         bool "Block Extra Data"
184         default y
185         help
186                 Extends blocks to have a list of other memory blocks.  Useful for
187                 networking performance.  This is only an option while we debug the
188                 implementation.  Say y.  If you have networking bugs, try turning this
189                 off, and if that helps, tell someone.
190
191 config BETTER_BACKTRACE
192         bool "Better backtraces, less optimizations"
193         default n
194         help
195                 The kernel uses the frame pointer and call stacks for backtraces.
196                 Tail-call optimizations remove some of this information.  Say 'Y' here
197                 to have better backtraces, at the expense of performance.
198
199 endmenu
200
201 menu "Misc/Old Options"
202
203 config ARSC_SERVER
204         bool "Asynchronous remote syscalls"
205         default n
206         help
207                 Code to run a syscall-server on a core.  A process can submit syscalls
208                 and get the results asynchronously.  Hasn't been used in years.  Say
209                 'n' unless you want to play around.
210
211 # SPARC auto-selects this
212 config APPSERVER
213         bool "Appserver"
214         default n
215         help
216                 Old school I/O was through a remote machine.  Not sure if anyone uses
217                 this anymore.
218
219 config SERIAL_IO
220         bool "Serial IO"
221         default n
222         help
223                 Like the appserver, serial I/O was an old attempt to process I/O on a
224                 remote machine across the serial port.
225
226 config SINGLE_CORE
227         bool "Single core"
228         default n
229         help
230                 Have the kernel boot only a single core.  Can be useful for debugging,
231                 but hasn't been used in years.
232
233 config BSD_ON_CORE0
234         bool "BSD on core 0"
235         default n
236         help
237                 This was an old joke.  Say 'n', since we can't simply #include <bsd>.
238
239 endmenu
240
241 source "kern/lib/Kconfig"
242
243 source "kern/src/ktest/Kconfig"