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 separated
  30                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.  This
  53                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 a
  70                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 first
  84                tries to pair new cores with their hyper-threaded pair, then keep them
  85                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".  Turn
  99                this off for a slight performance improvement on every KMSG (and every
 100                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 the
 108                a timestamp and lock address, in an over-write tracing style (meaning
 109                it'll clobber older events).  If you have locking issues, this may give
 110                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 and
 125                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 malicious
 134                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 that
 142                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 are
 165                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 printing
 172                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 BLOCK_EXTRAS
 183        bool "Block Extra Data"
 184        default y
 185        help
 186                Extends blocks to have a list of other memory blocks.  Useful for
 187                networking performance.  This is only an option while we debug the
 188                implementation.  Say y.  If you have networking bugs, try turning this
 189                off, and if that helps, tell someone.
 190
 191config BETTER_BACKTRACE
 192        bool "Better backtraces, less optimizations"
 193        default n
 194        help
 195                The kernel uses the frame pointer and call stacks for backtraces.
 196                Tail-call optimizations remove some of this information.  Say 'Y' here
 197                to have better backtraces, at the expense of performance.
 198
 199endmenu
 200
 201menu "Misc/Old Options"
 202
 203config ARSC_SERVER
 204        bool "Asynchronous remote syscalls"
 205        default n
 206        help
 207                Code to run a syscall-server on a core.  A process can submit syscalls
 208                and get the results asynchronously.  Hasn't been used in years.  Say
 209                'n' unless you want to play around.
 210
 211# SPARC auto-selects this
 212config APPSERVER
 213        bool "Appserver"
 214        default n
 215        help
 216                Old school I/O was through a remote machine.  Not sure if anyone uses
 217                this anymore.
 218
 219config SERIAL_IO
 220        bool "Serial IO"
 221        default n
 222        help
 223                Like the appserver, serial I/O was an old attempt to process I/O on a
 224                remote machine across the serial port.
 225
 226config SINGLE_CORE
 227        bool "Single core"
 228        default n
 229        help
 230                Have the kernel boot only a single core.  Can be useful for debugging,
 231                but hasn't been used in years.
 232
 233config BSD_ON_CORE0
 234        bool "BSD on core 0"
 235        default n
 236        help
 237                This was an old joke.  Say 'n', since we can't simply #include <bsd>.
 238
 239endmenu
 240
 241source "kern/lib/Kconfig"
 242
 243source "kern/src/ktest/Kconfig"
 244