Add fd_chan_ctl() (XCC)
[akaros.git] / Kconfig
diff --git a/Kconfig b/Kconfig
index 951cc5d..2c28f45 100644 (file)
--- a/Kconfig
+++ b/Kconfig
@@ -9,6 +9,26 @@ config SRCARCH
        string
        option env="ARCH"
 
        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/arch/$SRCARCH/Kconfig"
 
 source "kern/src/net/Kconfig"
@@ -40,53 +60,62 @@ config KFS_CPIO_BIN
                This binary (relative to the root directory) will be run before
                bundling the KFS Paths into the CPIO.
 
                This binary (relative to the root directory) will be run before
                bundling the KFS Paths into the CPIO.
 
-config EXT2FS
-       bool "Ext2 filesystem"
-       default n
+endmenu
+
+choice COREALLOC_POLICY
+       prompt "Core Allocation Policy"
        help
        help
-               Build in support for ext2.  Extremely experimental, and only works with
-               a block device image, which will be mounted at /mnt.  If you select
-               this, you must specify a block device.
+               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 EXT2_BDEV
-       depends on EXT2FS
-       string "Ext2 image file"
-       default mnt/ext2fs.img
+config COREALLOC_FCFS
+       bool "Simple FCFS"
        help
        help
-               This file needs to be an ext2 image (file that looks like a block
-               device).  You should be able to mount this file in your host OS.  It
-               will be bundled into the kernel and mounted at /mnt.
+               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.
 
 
-endmenu
+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.
 
 
-menu "Memory Management"
+endchoice
 
 
-config DEMAND_PAGING
-       bool "Demand paging"
-       default n
-       help
-               When turned on, mmap() calls do not immediately populate their pages.
-               This does not turn on any sort of real paging.  Saying 'n' will act
-               like all mmap()s have MAP_POPULATE.
+menu "Kernel Debugging"
 
 
-config PAGE_COLORING
-       bool "Page coloring"
+menu "Per-cpu Tracers"
+
+config TRACE_KMSGS
+       bool "KMSG Tracing"
        default n
        help
        default n
        help
-               Turns on internal support for page coloring.  When turned off, the page
-               allocator acts like there is only one color.  Hasn't been used in a few
-               years.
+               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 BOXBORO
-       depends on PAGE_COLORING
-       bool "Boxboro-specific page coloring"
+config TRACE_LOCKS
+       bool "Lock Tracing"
+       depends on SPINLOCK_DEBUG
        default n
        help
        default n
        help
-               Say 'n'.
+               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
 
 
 endmenu
 
-menu "Kernel Debugging"
+config DEVELOPMENT_ASSERTIONS
+       bool "dasserts"
+       default n
+       help
+               Turn on dassert() in code, dassert will compile to assert().
 
 config SPINLOCK_DEBUG
        bool "Spinlock debugging"
 
 config SPINLOCK_DEBUG
        bool "Spinlock debugging"
@@ -104,21 +133,40 @@ config SEQLOCK_DEBUG
                Provides asserts to detect seqlock errors.  This will allow a malicious
                userspace to trigger a panic in the kernel.
 
                Provides asserts to detect seqlock errors.  This will allow a malicious
                userspace to trigger a panic in the kernel.
 
-config RESET_STACKS
-       bool "Reset Stacks"
-       default y
+config SEMAPHORE_DEBUG
+       bool "Semaphore debugging"
+       default n
        help
        help
-               When idling, the kernel will reset the stack of its kernel thread to
-               the top of the stack, abandoning its context.  This is useful so we do
-               not run off the end of our stacks, but makes backtracing difficult.
+               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 KTHREAD_POISON
-       bool "Kthread Poison Canary"
+config SEM_SPINWAIT
+       bool "Semaphore spinwaiting"
        default n
        help
        default n
        help
-               Kthreads will use a bit of storage at the bottom of the stack to track
-               the state of the kthread.  This is useful to catch various bugs with
-               kthreading, such as launching the same kthread twice concurrently.
+               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 LARGE_KSTACKS
+       bool "Large (two-page) Kernel Stacks"
+       default y
+       help
+               Ideally, we'd like to use single-page stacks, which are easier on the
+               memory allocator.  Some of the Plan 9 code hogs stack space, and we may
+               run off the end of a single-page stack.
+
+               Say 'y' to play it safe and use the larger, slower stacks.  Say 'n' for
+               higher performance, and mention this setting if you have any weird
+               crashes or panics.
 
 config DISABLE_SMT
        bool "Disables symmetric multithreading"
 
 config DISABLE_SMT
        bool "Disables symmetric multithreading"
@@ -135,6 +183,31 @@ config PRINTK_NO_BACKSPACE
                One of the serial devices I was using a while back had issues printing
                backspaces.  This was an old hack to deal with that.
 
                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"
 endmenu
 
 menu "Misc/Old Options"
@@ -176,3 +249,7 @@ config BSD_ON_CORE0
                This was an old joke.  Say 'n', since we can't simply #include <bsd>.
 
 endmenu
                This was an old joke.  Say 'n', since we can't simply #include <bsd>.
 
 endmenu
+
+source "kern/lib/Kconfig"
+
+source "kern/src/ktest/Kconfig"