|  | # | 
|  | # For a description of the syntax of this configuration file, | 
|  | # see Linux's Documentation/kbuild/kconfig-language.txt. | 
|  | # | 
|  | mainmenu "Akaros/$SRCARCH Kernel Configuration" | 
|  |  | 
|  | # This is info, not a setable option.  Must make ARCH=arch to change. | 
|  | config SRCARCH | 
|  | string | 
|  | option env="ARCH" | 
|  |  | 
|  | config 64BIT | 
|  | bool "64-bit kernel" | 
|  | default y | 
|  | help | 
|  | Say yes to build a 64-bit kernel.  Must be 'y' for x86. | 
|  |  | 
|  | menuconfig RUN_INIT_SCRIPT | 
|  | bool "Run init script after boot" | 
|  | default n | 
|  | help | 
|  | Run an init script after boot instead of dropping into the monitor | 
|  |  | 
|  | config INIT_SCRIPT_PATH_AND_ARGS | 
|  | depends on RUN_INIT_SCRIPT | 
|  | string "Path to init script, followed by its arguments." | 
|  | default /bin/init.sh | 
|  | help | 
|  | Path to the init script run at boot time, followed by a space | 
|  | separated list of arguments | 
|  |  | 
|  | source "kern/arch/$SRCARCH/Kconfig" | 
|  |  | 
|  | source "kern/src/net/Kconfig" | 
|  |  | 
|  | source "kern/drivers/Kconfig" | 
|  |  | 
|  | menu "Filesystems" | 
|  |  | 
|  | config KFS | 
|  | bool "KFS filesystem" | 
|  | default y | 
|  | help | 
|  | KFS is an initramfs bundled into the kernel, and contains your root | 
|  | filesystem. | 
|  |  | 
|  | config KFS_PATHS | 
|  | depends on KFS | 
|  | string "KFS/Initramfs paths" | 
|  | default kern/kfs | 
|  | help | 
|  | Space separated list of paths to directories to bundle into KFS. | 
|  | This will be your root filesystem. | 
|  |  | 
|  | config KFS_CPIO_BIN | 
|  | depends on KFS | 
|  | string "KFS CPIO helper" | 
|  | default "" | 
|  | help | 
|  | This binary (relative to the root directory) will be run before | 
|  | bundling the KFS Paths into the CPIO. | 
|  |  | 
|  | endmenu | 
|  |  | 
|  | choice COREALLOC_POLICY | 
|  | prompt "Core Allocation Policy" | 
|  | help | 
|  | Select a policy for allocating cores to a process upon request.  All | 
|  | strategies first allocate cores from the set of provisioned cores for | 
|  | a process, but differ in how they select cores beyond this. | 
|  |  | 
|  | config COREALLOC_FCFS | 
|  | bool "Simple FCFS" | 
|  | help | 
|  | Allocate cores to processes on a first-come-first-served basis. All | 
|  | cores are treated equally, and no topology information is used to try | 
|  | and optimize which cores are given to which processes upon request. | 
|  |  | 
|  | config COREALLOC_PACKED | 
|  | bool "Packed Topology" | 
|  | help | 
|  | Allocate cores to a process based on a topology-aware algorithm that | 
|  | tries to pack allocated cores as close together as possible.  It | 
|  | first tries to pair new cores with their hyper-threaded pair, then | 
|  | keep them on the same socket, then the same numa domain. | 
|  |  | 
|  | endchoice | 
|  |  | 
|  | menu "Kernel Debugging" | 
|  |  | 
|  | menu "Per-cpu Tracers" | 
|  |  | 
|  | config TRACE_KMSGS | 
|  | bool "KMSG Tracing" | 
|  | default n | 
|  | help | 
|  | Turns on KMSG tracing, using the per-cpu ring buffer (holds about 256 | 
|  | events).  You can access this from the monitor via "trace pcpui". | 
|  | Turn this off for a slight performance improvement on every KMSG (and | 
|  | every MCP proc_yield). | 
|  |  | 
|  | config TRACE_LOCKS | 
|  | bool "Lock Tracing" | 
|  | depends on SPINLOCK_DEBUG | 
|  | default n | 
|  | help | 
|  | Turns on lock tracing, using the per-cpu ring buffer.  This records | 
|  | the a timestamp and lock address, in an over-write tracing style | 
|  | (meaning it'll clobber older events).  If you have locking issues, | 
|  | this may give you clues as to which locks were grabbed recently. | 
|  |  | 
|  | endmenu | 
|  |  | 
|  | config DEVELOPMENT_ASSERTIONS | 
|  | bool "dasserts" | 
|  | default n | 
|  | help | 
|  | Turn on dassert() in code, dassert will compile to assert(). | 
|  |  | 
|  | config SPINLOCK_DEBUG | 
|  | bool "Spinlock debugging" | 
|  | default n | 
|  | help | 
|  | Turns on debugging, which tracks the last time a lock was acquired | 
|  | and detects improper lock acquisition based on IRQ levels (e.g. using | 
|  | spin_lock() in IRQ context).  This will slow down all lock | 
|  | acquisitions. | 
|  |  | 
|  | config SEQLOCK_DEBUG | 
|  | bool "Seqlock debugging" | 
|  | default n | 
|  | help | 
|  | Provides asserts to detect seqlock errors.  This will allow a | 
|  | malicious userspace to trigger a panic in the kernel. | 
|  |  | 
|  | config SEMAPHORE_DEBUG | 
|  | bool "Semaphore debugging" | 
|  | default n | 
|  | help | 
|  | Turns on debugging, which tracks the last time and location that a | 
|  | semaphore was downed, and provides a linked list of all semaphores | 
|  | that have waiters.  This will slow down all semaphore ups and downs. | 
|  |  | 
|  | config SEM_SPINWAIT | 
|  | bool "Semaphore spinwaiting" | 
|  | default n | 
|  | help | 
|  | Turns on semaphore spinwaiting.  In lieu of intelligent Adaptive | 
|  | Mutexes, busy semaphores will just spin for a while before fully | 
|  | sleeping. | 
|  |  | 
|  | config SEM_SPINWAIT_NR_LOOPS | 
|  | int "Number of polls before sleeping" | 
|  | depends on SEM_SPINWAIT | 
|  | default 100 | 
|  | help | 
|  | How many times to poll a busy semaphore before going to sleep. | 
|  |  | 
|  | config DISABLE_SMT | 
|  | bool "Disables symmetric multithreading" | 
|  | default n | 
|  | help | 
|  | Disables hyperthreading by telling the kernel to never give out even | 
|  | numbered cores to MCPs.  This does not check to see if the threads | 
|  | are in fact siblings, or if the target machine is hyperthreaded. | 
|  |  | 
|  | config PRINTK_NO_BACKSPACE | 
|  | bool "Printk with no backspace" | 
|  | default n | 
|  | help | 
|  | One of the serial devices I was using a while back had issues | 
|  | printing backspaces.  This was an old hack to deal with that. | 
|  |  | 
|  | config SYSCALL_STRING_SAVING | 
|  | bool "Syscall string saving" | 
|  | default n | 
|  | help | 
|  | Kmallocs a small buffer for each syscall and attaches it to the | 
|  | kthread, which can be viewed when debugging semaphores.  Individual | 
|  | syscalls can save info in this buffer. | 
|  |  | 
|  | config BETTER_BACKTRACE | 
|  | bool "Better backtraces, less optimizations" | 
|  | default n | 
|  | help | 
|  | The kernel uses the frame pointer and call stacks for backtraces. | 
|  | Tail-call optimizations remove some of this information.  Say 'Y' | 
|  | here to have better backtraces, at the expense of performance. | 
|  |  | 
|  | endmenu | 
|  |  | 
|  | menu "Misc/Old Options" | 
|  |  | 
|  | config ARSC_SERVER | 
|  | bool "Asynchronous remote syscalls" | 
|  | default n | 
|  | help | 
|  | Code to run a syscall-server on a core.  A process can submit | 
|  | syscalls and get the results asynchronously.  Hasn't been used in | 
|  | years.  Say 'n' unless you want to play around. | 
|  |  | 
|  | # SPARC auto-selects this | 
|  | config APPSERVER | 
|  | bool "Appserver" | 
|  | default n | 
|  | help | 
|  | Old school I/O was through a remote machine.  Not sure if anyone uses | 
|  | this anymore. | 
|  |  | 
|  | config SERIAL_IO | 
|  | bool "Serial IO" | 
|  | default n | 
|  | help | 
|  | Like the appserver, serial I/O was an old attempt to process I/O on a | 
|  | remote machine across the serial port. | 
|  |  | 
|  | config SINGLE_CORE | 
|  | bool "Single core" | 
|  | default n | 
|  | help | 
|  | Have the kernel boot only a single core.  Can be useful for | 
|  | debugging, but hasn't been used in years. | 
|  |  | 
|  | config BSD_ON_CORE0 | 
|  | bool "BSD on core 0" | 
|  | default n | 
|  | help | 
|  | This was an old joke.  Say 'n', since we can't simply #include <bsd>. | 
|  |  | 
|  | endmenu | 
|  |  | 
|  | source "kern/lib/Kconfig" | 
|  |  | 
|  | source "kern/src/ktest/Kconfig" |