X-Git-Url: http://akaros.cs.berkeley.edu/gitweb/?p=akaros.git;a=blobdiff_plain;f=Kconfig;h=551d1cd04e222154c29dfec5dfa78a3d0404f24e;hp=b67c9ddf175fb90a486a537e48027afb027f4068;hb=e01d56574c0f4569cb6d4b37065b2f21ac65e0ff;hpb=3749e4cbdf0c737bbbb07830aded067ebaf7b100 diff --git a/Kconfig b/Kconfig index b67c9dd..551d1cd 100644 --- a/Kconfig +++ b/Kconfig @@ -9,57 +9,31 @@ config SRCARCH string option env="ARCH" -source "kern/arch/$SRCARCH/Kconfig" - -source "kern/src/net/Kconfig" - -menu "Drivers" - -menuconfig E1000 - depends on NETWORKING && X86 - bool "e1000 driver" - default n - help - Buggy e1000 driver. Use at your own risk. - -if E1000 -config E1000_MMIO_HACK - bool "e1000 MMIO hack" - default n - help - Legacy option, say 'n'. - -config E1000_ON_BOXBORO - bool "e1000 on Boxboro" - default n +config 64BIT + bool "64-bit kernel" + default y help - Legacy option, say 'n'. + Say yes to build a 64-bit kernel. Must be 'y' for x86. -config E1000_ON_S142 - bool "e1000 on s142" +menuconfig RUN_INIT_SCRIPT + bool "Run init script after boot" default n help - Legacy option, say 'n'. + Run an init script after boot instead of dropping into the monitor -endif # E1000 +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 -# Mostly just a placeholder. These options do nothing. -config REALTEK8168 - depends on NETWORKING && X86 - bool "Realtek 8168" - default n - help - Buggy realtek driver. Use at your own risk. This CONFIG option - actually does nothing; the code is built regardless. +source "kern/arch/$SRCARCH/Kconfig" -config ETH_AUDIO - depends on NETWORKING && X86 - bool "Ethernet audio" - default n - help - Build old support for David Wessel's ethernet audio device. +source "kern/src/net/Kconfig" -endmenu +source "kern/drivers/Kconfig" menu "Filesystems" @@ -107,14 +81,6 @@ 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 @@ -134,6 +100,35 @@ 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 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 @@ -150,6 +145,37 @@ config SEQLOCK_DEBUG 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 @@ -158,6 +184,18 @@ config RESET_STACKS 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 @@ -181,8 +219,57 @@ 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. + endmenu +config VM + bool "Virtual Machine support" + default n + help + VM support -- not working! Based on KVM. + +menuconfig NIX + bool "NIX support" + default n + help + NIX support -- Sort of working. You can start kernels that don't enable + interrupts. + +if NIX + +config NIX_IMG_PADDR + hex "Physical address for the NIX image" + depends on NIX + default 0x40000000 + help + Physical address that the NIX device will allocate during + initialization. + +config NIX_IMG_SIZE + hex "Size of the NIX image" + depends on NIX + default 0x40000000 + help + Size in bytes of the NIX image. Must be a power of two. + +endif # NIX + menu "Misc/Old Options" config ARSC_SERVER @@ -222,3 +309,5 @@ config BSD_ON_CORE0 This was an old joke. Say 'n', since we can't simply #include . endmenu + +source "kern/src/ktest/Kconfig"