| # |
| # For a description of the syntax of this configuration file, |
| # see Linux's Documentation/kbuild/kconfig-language.txt. |
| # |
| mainmenu "Akaros/$SRCARCH Kernel Configuration" |
| |
| # This is info, not a setable option. Must make ARCH=arch to change. |
| config SRCARCH |
| string |
| option env="ARCH" |
| |
| 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 |
| 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" |
| |
| source "kern/src/net/Kconfig" |
| |
| source "kern/drivers/Kconfig" |
| |
| menu "Filesystems" |
| |
| config KFS |
| bool "KFS filesystem" |
| default y |
| help |
| KFS is an initramfs bundled into the kernel, and contains your root |
| filesystem. |
| |
| config KFS_PATHS |
| depends on KFS |
| string "KFS/Initramfs paths" |
| default kern/kfs |
| help |
| Space separated list of paths to directories to bundle into KFS. This |
| will be your root filesystem. |
| |
| config KFS_CPIO_BIN |
| depends on KFS |
| string "KFS CPIO helper" |
| default "" |
| help |
| This binary (relative to the root directory) will be run before |
| bundling the KFS Paths into the CPIO. |
| |
| config EXT2FS |
| bool "Ext2 filesystem" |
| default n |
| help |
| Build in support for ext2. Extremely experimental, and only works with |
| a block device image, which will be mounted at /mnt. If you select |
| this, you must specify a block device. |
| |
| config EXT2_BDEV |
| depends on EXT2FS |
| string "Ext2 image file" |
| default mnt/ext2fs.img |
| help |
| This file needs to be an ext2 image (file that looks like a block |
| device). You should be able to mount this file in your host OS. It |
| will be bundled into the kernel and mounted at /mnt. |
| |
| endmenu |
| |
| menu "Memory Management" |
| |
| config PAGE_COLORING |
| bool "Page coloring" |
| default n |
| 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. |
| |
| config BOXBORO |
| depends on PAGE_COLORING |
| bool "Boxboro-specific page coloring" |
| default n |
| help |
| Say 'n'. |
| |
| 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 |
| help |
| Turns on debugging, which tracks the last time a lock was acquired and |
| detects improper lock acquisition based on IRQ levels (e.g. using |
| spin_lock() in IRQ context). This will slow down all lock |
| acquisitions. |
| |
| config SEQLOCK_DEBUG |
| bool "Seqlock debugging" |
| default n |
| help |
| 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 |
| 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. |
| |
| 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 |
| 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. |
| |
| config DISABLE_SMT |
| bool "Disables symmetric multithreading" |
| default n |
| help |
| Disables hyperthreading by telling the kernel to never give out even |
| numbered cores to MCPs. This does not check to see if the threads are |
| in fact siblings, or if the target machine is hyperthreaded. |
| |
| config PRINTK_NO_BACKSPACE |
| bool "Printk with no backspace" |
| default n |
| help |
| 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 |
| bool "Asynchronous remote syscalls" |
| default n |
| help |
| Code to run a syscall-server on a core. A process can submit syscalls |
| and get the results asynchronously. Hasn't been used in years. Say |
| 'n' unless you want to play around. |
| |
| # SPARC auto-selects this |
| config APPSERVER |
| bool "Appserver" |
| default n |
| help |
| Old school I/O was through a remote machine. Not sure if anyone uses |
| this anymore. |
| |
| config SERIAL_IO |
| bool "Serial IO" |
| default n |
| help |
| Like the appserver, serial I/O was an old attempt to process I/O on a |
| remote machine across the serial port. |
| |
| config SINGLE_CORE |
| bool "Single core" |
| default n |
| help |
| Have the kernel boot only a single core. Can be useful for debugging, |
| but hasn't been used in years. |
| |
| config BSD_ON_CORE0 |
| bool "BSD on core 0" |
| default n |
| help |
| This was an old joke. Say 'n', since we can't simply #include <bsd>. |
| |
| endmenu |
| |
| source "kern/lib/Kconfig" |
| |
| source "kern/src/ktest/Kconfig" |