pthread: Make pthread barriers 2LS-independent
[akaros.git] / Kconfig
diff --git a/Kconfig b/Kconfig
index 32ad779..cd953ca 100644 (file)
--- a/Kconfig
+++ b/Kconfig
@@ -11,9 +11,23 @@ config SRCARCH
 
 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
-               Say yes to build a 64-bit kernel, amd64 / x86_64, riscv64, etc.
+               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"
 
@@ -65,32 +79,21 @@ config EXT2_BDEV
 
 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
+choice COREALLOC_POLICY
+       prompt "Core Allocation Policy"
        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.
+               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 BOXBORO
-       depends on PAGE_COLORING
-       bool "Boxboro-specific page coloring"
-       default n
+config COREALLOC_FCFS
+       bool "Simple FCFS"
        help
-               Say 'n'.
+               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
+endchoice
 
 menu "Kernel Debugging"
 
@@ -117,6 +120,12 @@ config TRACE_LOCKS
 
 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
@@ -141,21 +150,32 @@ config SEMAPHORE_DEBUG
                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
+config SEM_SPINWAIT
+       bool "Semaphore spinwaiting"
+       default n
        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 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 KTHREAD_POISON
-       bool "Kthread Poison Canary"
-       default n
+config LARGE_KSTACKS
+       bool "Large (two-page) Kernel Stacks"
+       default y
        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.
+               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"
@@ -172,6 +192,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.
 
+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"
@@ -213,3 +258,7 @@ config BSD_ON_CORE0
                This was an old joke.  Say 'n', since we can't simply #include <bsd>.
 
 endmenu
+
+source "kern/lib/Kconfig"
+
+source "kern/src/ktest/Kconfig"