#
# 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"
