9ns: fix format-string vulnerability in cmderror()
[akaros.git] / Kconfig
diff --git a/Kconfig b/Kconfig
index 46c3313..1ed6b8f 100644 (file)
--- a/Kconfig
+++ b/Kconfig
 #
 # For a description of the syntax of this configuration file,
-# see Documentation/kbuild/kconfig-language.txt.
+# see Linux's Documentation/kbuild/kconfig-language.txt.
 #
-mainmenu "Akaros/$ARCH $KERNELVERSION Kernel Configuration"
+mainmenu "Akaros/$SRCARCH Kernel Configuration"
 
+# This is info, not a setable option.  Must make ARCH=arch to change.
 config SRCARCH
        string
        option env="ARCH"
 
-#source "arch/$SRCARCH/Kconfig"
+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 BLOCK_EXTRAS
+       bool "Block Extra Data"
+       default y
+       help
+         Extends blocks to have a list of other memory blocks.  Useful for
+         networking performance.  This is only an option while we debug the
+         implementation.  Say y.  If you have networking bugs, try turning
+         this off, and if that helps, tell someone.
+
+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"