akaros/Kconfig
<<
>>
Prefs
   1#
   2# For a description of the syntax of this configuration file,
   3# see Linux's Documentation/kbuild/kconfig-language.txt.
   4#
   5mainmenu "Akaros/$SRCARCH Kernel Configuration"
   6
   7# This is info, not a setable option.  Must make ARCH=arch to change.
   8config SRCARCH
   9        string
  10        option env="ARCH"
  11
  12config 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
  18menuconfig 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
  24config 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
  32source "kern/arch/$SRCARCH/Kconfig"
  33
  34source "kern/src/net/Kconfig"
  35
  36source "kern/drivers/Kconfig"
  37
  38menu "Filesystems"
  39
  40config 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
  47config 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
  55config 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
  63endmenu
  64
  65choice 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
  72config 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
  79config 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
  87endchoice
  88
  89menu "Kernel Debugging"
  90
  91menu "Per-cpu Tracers"
  92
  93config 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
 102config 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
 112endmenu
 113
 114config DEVELOPMENT_ASSERTIONS
 115        bool "dasserts"
 116        default n
 117        help
 118          Turn on dassert() in code, dassert will compile to assert().
 119
 120config 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
 129config 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
 136config 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
 144config 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
 152config 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
 159config 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
 167config 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
 174config 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
 182config 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
 190endmenu
 191
 192menu "Misc/Old Options"
 193
 194config 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
 203config 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
 210config 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
 217config 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
 224config 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
 230endmenu
 231
 232source "kern/lib/Kconfig"
 233
 234source "kern/src/ktest/Kconfig"
 235