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"
endmenu
-menu "Memory Management"
+choice COREALLOC_POLICY
+ prompt "Core Allocation Policy"
+ help
+ 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 DEMAND_PAGING
- bool "Demand paging"
- default n
+config COREALLOC_FCFS
+ bool "Simple FCFS"
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.
+ 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.
+
+endchoice
+
+menu "Memory Management"
config PAGE_COLORING
bool "Page coloring"
menu "Kernel Debugging"
+menu "Per-cpu Tracers"
+
config TRACE_KMSGS
bool "KMSG Tracing"
default n
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 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
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 SEM_SPINWAIT
+ bool "Semaphore spinwaiting"
+ default n
+ help
+ 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 SEM_TRACE_BLOCKERS
+ bool "Semaphore Blocker Tracing"
+ default n
+ help
+ Drops a TRACEME whenever a semaphore would block (barring slight
+ races). To access the trace data, you'll need to use the opcontrols
+ and process the data with op2.
+
config RESET_STACKS
bool "Reset Stacks"
default y
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 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 KTHREAD_POISON
bool "Kthread Poison Canary"
default n
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"
This was an old joke. Say 'n', since we can't simply #include <bsd>.
endmenu
+
+source "kern/lib/Kconfig"
+
+source "kern/src/ktest/Kconfig"