Adds rootwstat, for chmod
[akaros.git] / Kconfig
diff --git a/Kconfig b/Kconfig
index 46c3313..32ad779 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 n
+       help
+               Say yes to build a 64-bit kernel, amd64 / x86_64, riscv64, etc.
+
+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.
+
+config EXT2FS
+       bool "Ext2 filesystem"
+       default n
+       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.
+
+config EXT2_BDEV
+       depends on EXT2FS
+       string "Ext2 image file"
+       default mnt/ext2fs.img
+       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.
+
+endmenu
+
+menu "Memory Management"
+
+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.
+
+config PAGE_COLORING
+       bool "Page coloring"
+       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.
+
+config BOXBORO
+       depends on PAGE_COLORING
+       bool "Boxboro-specific page coloring"
+       default n
+       help
+               Say 'n'.
+
+endmenu
+
+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 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 RESET_STACKS
+       bool "Reset Stacks"
+       default y
+       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.
+
+config KTHREAD_POISON
+       bool "Kthread Poison Canary"
+       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.
+
+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.
+
+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