Allow SYS_waitpid to be aborted
[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
30           separated 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.
53           This 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
70           a 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
84           first tries to pair new cores with their hyper-threaded pair, then
85           keep them 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".
99           Turn this off for a slight performance improvement on every KMSG (and
100           every 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
108           the a timestamp and lock address, in an over-write tracing style
109           (meaning it'll clobber older events).  If you have locking issues,
110           this may give 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
125           and 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
134           malicious 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
142           that 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
165           are 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
172           printing 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 BETTER_BACKTRACE
183         bool "Better backtraces, less optimizations"
184         default n
185         help
186           The kernel uses the frame pointer and call stacks for backtraces.
187           Tail-call optimizations remove some of this information.  Say 'Y'
188           here to have better backtraces, at the expense of performance.
189
190 endmenu
191
192 menu "Misc/Old Options"
193
194 config ARSC_SERVER
195         bool "Asynchronous remote syscalls"
196         default n
197         help
198           Code to run a syscall-server on a core.  A process can submit
199           syscalls and get the results asynchronously.  Hasn't been used in
200           years.  Say 'n' unless you want to play around.
201
202 # SPARC auto-selects this
203 config APPSERVER
204         bool "Appserver"
205         default n
206         help
207           Old school I/O was through a remote machine.  Not sure if anyone uses
208           this anymore.
209
210 config SERIAL_IO
211         bool "Serial IO"
212         default n
213         help
214           Like the appserver, serial I/O was an old attempt to process I/O on a
215           remote machine across the serial port.
216
217 config SINGLE_CORE
218         bool "Single core"
219         default n
220         help
221           Have the kernel boot only a single core.  Can be useful for
222           debugging, but hasn't been used in years.
223
224 config BSD_ON_CORE0
225         bool "BSD on core 0"
226         default n
227         help
228           This was an old joke.  Say 'n', since we can't simply #include <bsd>.
229
230 endmenu
231
232 source "kern/lib/Kconfig"
233
234 source "kern/src/ktest/Kconfig"