summaryrefslogtreecommitdiff
path: root/static/netbsd/man4/options.4
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man4/options.4')
-rw-r--r--static/netbsd/man4/options.42774
1 files changed, 2774 insertions, 0 deletions
diff --git a/static/netbsd/man4/options.4 b/static/netbsd/man4/options.4
new file mode 100644
index 00000000..75d01cb2
--- /dev/null
+++ b/static/netbsd/man4/options.4
@@ -0,0 +1,2774 @@
+.\" $NetBSD: options.4,v 1.532 2025/12/12 07:05:52 andvar Exp $
+.\"
+.\" Copyright (c) 1996
+.\" Perry E. Metzger. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgment:
+.\" This product includes software developed for the NetBSD Project
+.\" by Perry E. Metzger.
+.\" 4. The name of the author may not be used to endorse or promote products
+.\" derived from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\"
+.Dd December 12, 2025
+.Dt OPTIONS 4
+.Os
+.Sh NAME
+.Nm options
+.Nd Miscellaneous kernel configuration options
+.Sh SYNOPSIS
+.Cd cinclude ...
+.Cd config ...
+.Cd [no] file-system ...
+.Cd ident ...
+.Cd include ...
+.Cd [no] makeoptions ...
+.Cd maxusers ...
+.Cd [no] options ...
+.Cd [no] pseudo-device ...
+.Sh DESCRIPTION
+This manual page describes a number of miscellaneous kernel
+configuration options that may be specified in a kernel config
+file.
+See
+.Xr config 1
+and
+.Xr config 5
+for information on how to configure and build kernels.
+.Pp
+The
+.Ar no
+form removes a previously specified option.
+.Ss Keywords
+The following keywords are recognized in a kernel configuration file:
+.Bl -ohang
+.It Sy cinclude Qq Ar filename
+Conditionally includes another kernel configuration file whose name is
+.Ar filename ,
+which may be double-quoted and may be an explicit path or relative to
+the kernel source directory.
+Failure to open the named file is ignored.
+.It Sy config Ar exec_name No root on Ar rootdev Oo type Ar fstype Oc \
+Oo dumps on Ar dumpdev Oc
+Defines a configuration whose kernel executable is named
+.Ar exec_name ,
+normally
+.Dq netbsd ,
+with its root file system of type
+.Ar fstype
+on the device
+.Ar rootdev ,
+and optionally specifying the location of kernel core dumps on the device
+.Ar dumpdev .
+.Ar dev
+or
+.Ar dumpdev
+and
+.Ar fstype
+may be specified as
+.Dq \&? ,
+which is a wild card.
+The root
+.Ar fstype
+and
+.Ar dumpdev
+are optional and assumed to be wild carded if they are not specified.
+.It Ar device_instance No at Ar attachment \
+Oo Ar locators value Oo ... Oc Oc Oo flags Ar value Oc
+Define an instance of the device driver
+.Ar device_instance
+that attaches to the bus or device named
+.Ar attachment .
+An
+.Ar attachment
+may require additional information on where the device can be found, such
+as an address, channel, function, offset, and/or slot, referred to as
+.Ar locators ,
+whose
+.Ar value
+often may be a wild card,
+.Dq \&? .
+Some device drivers have one or more
+.Ar flags
+that can be adjusted to affect the way they operate.
+.It Sy file-system Ar fs_name Op , Ar fs_name Op ...
+Include support for the file-system
+.Ar fs_name .
+.It Sy ident Qq Ar string
+Sets the kernel identification string to
+.Ar string .
+.It Sy include Qq Ar filename
+Functions the same as
+.Ar cinclude ,
+except failure to open
+.Ar filename
+produces a fatal error.
+.It Sy makeoptions Ar name=value
+Defines a
+.Xr make 1
+macro
+.Ar name
+with the value
+.Ar value
+in the kernel Makefile.
+.It Sy maxusers Ar integer
+Set the maxusers variable in the kernel.
+.It Sy no Ar keyword Ar name Op Ar arguments Op ...
+For the
+.Xr config 1
+.Ar keywords
+file-system, makeoptions, options, and pseudo-device,
+.Ar no
+removes the file-system, makeoption, options, or pseudo-device,
+.Ar name .
+This is useful when a kernel configuration file includes another which
+has undesired options.
+.Pp
+For example, a local configuration file that wanted the kitchen sink, but
+not COMPAT_09 or bridging, might be:
+.Bd -literal -offset indent
+include "arch/i386/conf/GENERIC"
+no options COMPAT_09
+no pseudo-device bridge
+.Ed
+.It Sy options Ar option_name Op , Ar option_name=value Op ...
+Specifies (or sets) the option, or comma-separated list of options,
+.Ar option_name .
+Some options expect to be assigned a value, which may be an integer,
+a double-quoted word, a bare word, or an empty string
+.Pq Qq .
+Note that those are eventually handled by the C compiler, so the rules
+of that language apply.
+.Pp
+.Em Note :
+Options that are not defined by device definition files are passed to
+the compile process as
+.Fl D
+flags to the C compiler.
+.It Sy pseudo-device Ar name Op Ar N
+Includes support for the pseudo-device
+.Ar name .
+Some pseudo-devices can have multiple or
+.Ar N
+instances.
+.El
+.Ss Compatibility Options
+Note that compatibility options for older
+.Nx
+releases includes support for newer releases as well.
+This means that typically only one of these is necessary, with the
+.Cd COMPAT_09
+option enabling all
+.Nx
+compatibility.
+This does not include the
+.Cd COMPAT_43
+or
+.Cd COMPAT_44
+options.
+.Bl -ohang
+.It Cd options COMPAT_09
+Enable binary compatibility with
+.Nx 0.9 .
+This enables support for
+16-bit user, group, and process IDs (following revisions support
+32-bit identifiers).
+It also allows the use of the deprecated
+.Xr getdomainname 3 ,
+.Xr setdomainname 3 ,
+and
+.Xr uname 3
+syscalls.
+This option also allows using numeric file system identifiers rather
+than strings.
+Post
+.Nx 0.9
+versions use string identifiers.
+.It Cd options COMPAT_10
+Enable binary compatibility with
+.Nx 1.0 .
+This option allows the use of the file system name of
+.Dq ufs
+as an alias for
+.Dq ffs .
+The name
+.Dq ffs
+should be used post 1.0 in
+.Pa /etc/fstab
+and other files.
+It also adds old syscalls for the
+.At V
+shared memory interface.
+This was changed post 1.0 to work on 64-bit architectures.
+This option also enables
+.Dq sgtty
+compatibility, without which programs using the old interface produce
+an
+.Dq inappropriate ioctl
+error, and
+.Pa /dev/io
+only works when this option is set in the kernel,
+see
+.Xr io 4
+on ports that support it.
+.It Cd options COMPAT_11
+Enable binary compatibility with
+.Nx 1.1 .
+This allows binaries running on the i386 port to gain direct access to
+the io ports by opening
+.Pa /dev/io
+read/write.
+This functionality was replaced by
+.Xr i386_iopl 2
+post 1.1.
+On the Atari port, the location of the disk label was moved after 1.1.
+When the
+.Em COMPAT_11
+option is set, the kernel will read (pre) 1.1 style disk labels as a
+last resort.
+When a disk label is re-written, the old style label will be replaced
+with a post 1.1 style label.
+This also enables the
+.Em EXEC_ELF_NOTELESS
+option.
+.It Cd options COMPAT_12
+Enable binary compatibility with
+.Nx 1.2 .
+This allows the use of old syscalls for
+.Fn reboot
+and
+.Fn swapon .
+The syscall numbers were changed post 1.2 to add functionality to the
+.Xr reboot 2
+syscall, and the new
+.Xr swapctl 2
+interface was introduced.
+This also enables the
+.Em EXEC_ELF_NOTELESS
+option.
+.It Cd options COMPAT_13
+Enable binary compatibility with
+.Nx 1.3 .
+This allows the use of old syscalls for
+.Fn sigaltstack ,
+and also enables the old
+.Xr swapctl 2
+command
+.Dv SWAP_STATS
+(now called
+.Dv SWAP_OSTATS ) ,
+which does not include the
+.Fa se_path
+member of
+.Va struct swapent .
+.It Cd options COMPAT_14
+Enable binary compatibility with
+.Nx 1.4 .
+This allows some old
+.Xr ioctl 2
+on
+.Xr wscons 4
+to be performed, and allows the
+.Dv NFSSVC_BIOD
+mode of the
+.Xr nfssvc 2
+system call to be used for compatibility with the deprecated nfsiod program.
+.It Cd options COMPAT_15
+Enable binary compatibility with
+.Nx 1.5 .
+Since there were no API changes from
+.Nx 1.5
+and
+.Nx 1.6 ,
+this option does nothing.
+.It Cd options COMPAT_16
+Enable binary compatibility with
+.Nx 1.6 .
+This allows the use of old signal trampoline code which has been deprecated
+with the addition of
+.Xr siginfo 2 .
+.It Cd options COMPAT_20
+Enable binary compatibility with
+.Nx 2.0 .
+This allows the use of old syscalls for
+.Fn statfs ,
+.Fn fstatfs ,
+.Fn getfsstat
+and
+.Fn fhstatfs ,
+which have been deprecated with the addition of the
+.Xr statvfs 2 ,
+.Xr fstatvfs 2 ,
+.Xr getvfsstat 2
+and
+.Xr fhstatvfs 2
+system calls.
+.It Cd options COMPAT_30
+Enable binary compatibility with
+.Nx 3.0 .
+See
+.Xr compat_30 8
+for details about the changes made after the
+.Nx 3.0
+release.
+.It Cd options COMPAT_40
+Enable binary compatibility with
+.Nx 4.0 .
+This allows the use of old
+.Xr ptrace 2
+calls for the SH3 platform.
+It also enables the old
+.Xr mount 2
+system call that did not include the data length parameter.
+The power_event_t structure's pev_switch is filled in.
+.It Cd options COMPAT_43
+Enables compatibility with
+.Bx 4.3 .
+This adds an old syscall for
+.Xr lseek 2 .
+It also adds the ioctls for
+.Dv TIOCGETP
+and
+.Dv TIOCSETP .
+The return values for
+.Xr getpid 2 ,
+.Xr getgid 2 ,
+and
+.Xr getuid 2
+syscalls are modified as well, to return the parent's PID and
+UID as well as the current process's.
+It also enables the deprecated
+.Dv NTTYDISC
+terminal line discipline.
+It also provides backwards compatibility with
+.Dq old
+SIOC[GS]IF{ADDR,DSTADDR,BRDADDR,NETMASK} interface ioctls, including
+binary compatibility with code written before the introduction of the
+sa_len field in sockaddrs.
+It also enables
+support for some older pre
+.Bx 4.4
+socket calls.
+.It Cd options COMPAT_50
+Enable binary compatibility with
+.Nx 5.0 .
+This enables support for the old
+.Ft time_t
+and
+.Ft dev_t
+types as 32 bit, and all the associated kernel interface changes.
+It also enables old
+.Xr gpio 4
+and
+.Xr rnd 4
+interfaces.
+.It Cd options COMPAT_60
+Enable binary compatibility with
+.Nx 6.0 .
+This provides old
+.Xr ccd 4
+interfaces, enables support for old
+.Xr cpuctl 8
+microcode interfaces, and support for the old
+.Ft ptmget
+structure.
+.It Cd options COMPAT_70
+Enable binary compatibility with
+.Nx 7.0 .
+This provides support for old
+.Xr route 4
+interfaces.
+.It Cd options COMPAT_80
+Enable binary compatibility with
+.Nx 8.0 .
+.It Cd options COMPAT_90
+Enable binary compatibility with
+.Nx 9.0 .
+.It Cd options COMPAT_BSDPTY
+This option is currently on by default and enables the pty multiplexer
+.Xr ptm 4
+and
+.Xr ptmx 4
+to find and use ptys named
+.Pa /dev/ptyXX
+(master) and
+.Pa /dev/ttyXX
+(slave).
+Eventually this option will become optional as ptyfs based pseudo-ttys become
+the default, see
+.Xr mount_ptyfs 8 .
+.It Cd options COMPAT_LINUX
+On those architectures that support it, this enables binary
+compatibility with Linux ELF and
+.Xr a.out 5
+applications built for the same architecture.
+This currently includes the alpha, arm, i386, m68k, mips, powerpc and
+x86_64 ports.
+.It Cd options COMPAT_LINUX32
+On those 64 bit architectures that support it, this enables binary
+compatibility with 32 bit Linux binaries.
+For now this is limited to running i386 ELF Linux binaries on amd64.
+.It Cd options COMPAT_SUNOS
+On those architectures that support it, this enables binary
+compatibility with SunOS 4.1 applications built for the same architecture.
+This currently includes the sparc, sparc64 and most or all m68k ports.
+Note that the sparc64 requires the
+.Em COMPAT_NETBSD32
+option for 64-bit kernels, in addition to this option.
+.It Cd options COMPAT_ULTRIX
+On those architectures that support it, this enables binary
+compatibility with ULTRIX applications built for the same architecture.
+This currently is limited to the pmax.
+The functionality of this option is unknown.
+.It Cd options COMPAT_FREEBSD
+On those architectures that support it, this enables binary
+compatibility with
+.Fx
+applications built for the same architecture.
+At the moment this is limited to the i386 port.
+.It Cd options COMPAT_NOMID
+Enable compatibility with
+.Xr a.out 5
+executables that lack a machine ID.
+This includes
+.Nx 0.8 Ns 's
+ZMAGIC format, and 386BSD and BSDI's
+QMAGIC, NMAGIC, and OMAGIC
+.Xr a.out 5
+formats.
+.It Cd options COMPAT_NETBSD32
+On those architectures that support it, this enables binary
+compatibility with 32-bit applications built for the same architecture.
+This is currently limited to the amd64 and sparc64 ports, and only
+applicable for 64-bit kernels.
+.It Cd options COMPAT_AOUT_M68K
+On m68k architectures which have switched to ELF,
+this enables binary compatibility with
+.Nx Ns /m68k
+.Xr a.out 5
+executables on
+.Nx Ns /m68k
+ELF kernels.
+This handles alignment incompatibility of m68k ABI between
+a.out and ELF which causes the structure padding differences.
+Currently only some system calls which use
+.Va struct stat
+are adjusted and some binaries which use
+.Xr sysctl 3
+to retrieve network details would not work properly.
+.It Cd options EMUL_NATIVEROOT=string
+Just like emulated binaries first try looking up files in
+an emulation root (e.g.
+.Pa /emul/linux )
+before looking them up in real root, this option causes native
+binaries to first look up files in an "emulation" directory too.
+This can be useful to test an amd64 kernel on top of an i386 system
+before full migration: by unpacking the amd64 distribution in e.g.
+.Pa /emul/netbsd64
+and specifying that location as
+.Cd EMUL_NATIVEROOT ,
+native amd64 binaries can be run while the root file system remains
+populated with i386 binaries.
+Beware of
+.Pa /dev
+incompatibilities between i386 and amd64 if you do this.
+.It Cd options EXEC_ELF_NOTELESS
+Run unidentified ELF binaries as
+.Nx
+binaries.
+This might be needed for very old
+.Nx
+ELF binaries on some archs.
+These old binaries didn't contain an appropriate
+.Li .note.netbsd.ident
+section, and thus can't be identified by the kernel as
+.Nx
+binaries otherwise.
+Beware - if this option is on, the kernel would run
+.Em any
+unknown ELF binaries as if they were
+.Nx
+binaries.
+.El
+.Ss Debugging Options
+.Bl -ohang
+.It Cd options DDB
+Compiles in a kernel debugger for diagnosing kernel problems.
+See
+.Xr ddb 4
+for details.
+.Em NOTE :
+not available on all architectures.
+.It Cd options DDB_FROMCONSOLE=integer
+If set to non-zero, DDB may be entered by sending a break on a serial
+console or by a special key sequence on a graphics console.
+A value of "0" ignores console breaks or key sequences.
+If not explicitly specified, the default value is "1".
+Note that this sets the value of the
+.Em ddb.fromconsole
+.Xr sysctl 3
+variable which may be changed at run time \(em see
+.Xr sysctl 8
+for details.
+.It Cd options DDB_HISTORY_SIZE=integer
+If this is non-zero, enable history editing in the kernel debugger
+and set the size of the history to this value.
+.It Cd options DDB_ONPANIC
+The default if not specified is
+.Dq 1
+- just enter into DDB.
+If set to
+.Dq 0
+the kernel will attempt to print out a stack trace
+and reboot the system.
+If set to
+.Dq -1
+then neither a stack trace is printed or DDB entered -
+it is as if DDB were not compiled into the kernel.
+Note that this sets the value of the
+.Em ddb.onpanic
+.Xr sysctl 3
+variable which may be changed at run time \(em see
+.Xr sysctl 8
+for details.
+.It Cd options DDB_COMMANDONENTER=string
+This option specify commands which will be executed on each entry to DDB.
+This sets the default value of the
+.Em ddb.commandonenter
+.Xr sysctl 3
+variable which may be changed at run time.
+.It Cd options DDB_BREAK_CHAR=integer
+This option overrides using break to enter the kernel debugger
+on the serial console.
+The value given is the ASCII value to be used instead.
+This is currently only supported by the com driver.
+.It Cd options CNMAGIC=string
+This option overrides the
+.Xr cnmagic 9
+string used to enter the kernel debugger.
+.It Cd options DDB_VERBOSE_HELP
+This option adds more verbose descriptions to the
+.Em help
+command.
+.It Cd options DDB_PANICSTACKFRAMES=integer
+Number of stack frames to display on panic.
+Useful to avoid scrolling away the interesting frames on a glass tty.
+Default value is
+.Dv 65535
+(all frames), useful value around
+.Dv 10 .
+.It Cd options KGDB
+Compiles in a remote kernel debugger stub for diagnosing kernel problems
+using the
+.Dq remote target
+feature of gdb.
+See
+.Xr gdb 1
+for details.
+.Em NOTE :
+not available on all architectures.
+.It Cd options KGDB_DEV
+Device number
+.Po
+as a
+.Dv dev_t
+.Pc
+of kgdb device.
+.It Cd options KGDB_DEVADDR
+Memory address of kgdb device.
+.It Cd options KGDB_DEVMODE
+Permissions of kgdb device.
+.It Cd options KGDB_DEVNAME
+Device name of kgdb device.
+.It Cd options KGDB_DEVRATE
+Baud rate of kgdb device.
+.It Cd makeoptions DEBUG="-g"
+The
+.Fl g
+flag causes
+.Pa netbsd.gdb
+to be built in addition to
+.Pa netbsd .
+.Pa netbsd.gdb
+is useful for debugging kernel crash dumps with gdb.
+See
+.Xr gdb 1
+for details.
+.It Cd options DEBUG
+Turns on miscellaneous kernel debugging.
+Since options are turned into preprocessor defines (see above),
+.Em options DEBUG
+is equivalent to doing a
+.Em #define DEBUG
+throughout the kernel.
+Much of the kernel has
+.Em #ifdef DEBUG
+conditionalized debugging code.
+Note that many parts of the kernel (typically device drivers) include their own
+.Em #ifdef XXX_DEBUG
+conditionals instead.
+This option also turns on certain other options,
+which may decrease system performance.
+Systems with this option are not suitable for regular use, and are
+intended only for debugging or looking for bugs.
+.It Cd options DIAGNOSTIC
+Adds code to the kernel that does internal consistency checks.
+This code will cause the kernel to panic if corruption of internal data
+structures is detected.
+Historically, the performance degradation is sufficiently small that
+it is reasonable for systems with
+.Em options DIAGNOSTIC
+to be in production use, with the real consideration not being
+performance but instead a preference for more panics versus continued
+operation with undetected problems.
+.It Cd options LOCKDEBUG
+Adds code to the kernel to detect incorrect use of locking primitives
+(mutex, rwlock).
+This code will cause the kernel to check for dead lock conditions.
+It will also check for memory being freed to not contain initialised
+lock primitives.
+Functions for use in
+.Xr ddb 4
+to check lock chains etc. are also enabled.
+These checks are very expensive and can decrease performance on
+multi-processor machines by a factor of three.
+.It Cd options KDTRACE_HOOKS
+Adds hooks for the DTrace tracing facility, which allows users to
+analyze many aspects of system and application behavior.
+See
+.Xr dtrace 1
+for details.
+.It Cd options KSTACK_CHECK_MAGIC
+Check kernel stack usage and panic if stack overflow is detected.
+This check is performance sensitive because it scans stack on each context
+switch.
+.It Cd options KTRACE
+Add hooks for the system call tracing facility, which allows users to
+watch the system call invocation behavior of processes.
+See
+.Xr ktrace 1
+for details.
+.It Cd options MSGBUFSIZE=integer
+This option sets the size of the kernel message buffer in bytes.
+This buffer holds the kernel output of
+.Fn printf
+when not (yet) read by
+.Xr syslogd 8 .
+This is particularly useful when the system has crashed and you wish to lookup
+the kernel output from just before the crash.
+Also, since the autoconfig output becomes more and more verbose,
+it sometimes happens that the message buffer overflows before
+.Xr syslogd 8
+was able to read it.
+Note that not all systems are capable of obtaining a variable sized message
+buffer.
+There are also some systems on which memory contents are not preserved
+across reboots.
+.It Cd options KERNHIST
+Enables the kernel history logs, which create in-memory traces of
+various kernel activities.
+These logs can be displayed by using
+.Cm show kernhist
+from DDB.
+See the kernel source file
+.Pa sys/kern/kern_history.c
+and the
+.Xr kernhist 9
+manual for details.
+.It Cd options KERNHIST_PRINT
+Prints the kernel history logs on the system console as entries are added.
+Note that the output is
+.Em extremely
+voluminous, so this option is really only useful for debugging
+the very earliest parts of kernel initialization.
+.It Cd options UVMHIST
+Like
+.Em KERNHIST ,
+it enables the UVM history logs.
+These logs can be displayed by using
+.Cm show kernhist
+from DDB.
+See the kernel source file
+.Pa sys/uvm/uvm_stat.c
+for details.
+.It Cd options UVMHIST_PRINT
+Like
+.Em UVMHIST ,
+it prints the UVM history logs on the system console as entries are added.
+Note that the output is
+.Em extremely
+voluminous, so this option is really only useful for debugging
+the very earliest parts of kernel initialization.
+.It Cd options UVMHIST_MAPHIST_SIZE
+Set the size of the
+.Dq maphist
+kernel history.
+The default is 100.
+This option depends upon the
+.Em UVMHIST
+option.
+.It Cd options UVMHIST_PDHIST_SIZE
+Set the size of the
+.Dq pdhist
+kernel history.
+The default is 100.
+This option depends upon the
+.Em UVMHIST
+option.
+.It Cd options BIOHIST
+Like
+.Em KERNHIST ,
+it enables the BIO history logs.
+These logs can be displayed by using
+.Cm show kernhist
+from DDB, and can help in debugging problems with Buffered I/O operations.
+See the kernel source file
+.Pa sys/kern/vfs_vio.c
+for details.
+.It Cd options BIOHIST_PRINT
+Like
+.Em BIOHIST ,
+it prints the BIO history logs on the system console as entries are added.
+Note that the output is
+.Em extremely
+voluminous, so this option is really only useful for debugging
+the very earliest parts of kernel initialization.
+.It Cd options BIOHIST_SIZE
+Set the size of the
+.Dq biohist
+kernel history.
+The default is 500.
+This option depends upon the
+.Em BIOHIST
+option.
+.El
+.Ss File Systems
+.Bl -ohang
+.It Cd file-system FFS
+Includes code implementing the Berkeley Fast File System
+.Po Em FFS Pc .
+Most machines need this if they are not running diskless.
+.It Cd file-system EXT2FS
+Includes code implementing the Second Extended File System
+.Po Em ext2 Pc ,
+revision 0 and revision 1 with the
+.Em filetype ,
+.Em sparse_super
+and
+.Em large_file
+options.
+This is the most commonly used file system on the Linux operating system,
+and is provided here for compatibility.
+Some of the specific features of
+.Em ext2
+like the "behavior on errors" are not implemented.
+See
+.Xr mount_ext2fs 8
+for details.
+.It Cd file-system LFS
+.Bq Em EXPERIMENTAL
+Include the Log-structured File System
+.Po Em LFS Pc .
+See
+.Xr mount_lfs 8
+and
+.Xr newfs_lfs 8
+for details.
+.It Cd file-system MFS
+Include the Memory File System
+.Po Em MFS Pc .
+This file system stores files in swappable memory, and produces
+notable performance improvements when it is used as the file store
+for
+.Pa /tmp
+and similar file systems.
+See
+.Xr mount_mfs 8
+for details.
+.It Cd file-system NFS
+Include the client side of the Network File System (NFS)
+remote file sharing protocol.
+Although the bulk of the code implementing NFS
+is kernel based, several user level daemons are needed for it to work.
+See
+.Xr mount_nfs 8
+for details.
+.It Cd file-system CD9660
+Includes code for the ISO 9660 + Rock Ridge file system, which is
+the standard file system on many CD-ROM discs.
+Useful primarily if you have a CD-ROM drive.
+See
+.Xr mount_cd9660 8
+for details.
+.It Cd file-system MSDOSFS
+Includes the MS-DOS FAT file system, which is reportedly still used
+by unfortunate people who have not heard about
+.Nx .
+Also implements the Windows 95 extensions to the same, which permit
+the use of longer, mixed case file names.
+See
+.Xr mount_msdos 8
+and
+.Xr fsck_msdos 8
+for details.
+.It Cd file-system NTFS
+.Bq Em EXPERIMENTAL
+Includes code for the Microsoft Windows NT file system.
+See
+.Xr mount_ntfs 8
+for details.
+.It Cd file-system FDESC
+Includes code for a file system, conventionally mounted on
+.Pa /dev/fd ,
+which permits access to the per-process file descriptor space via
+special files in the file system.
+See
+.Xr mount_fdesc 8
+for details.
+Note that this facility is redundant, and thus unneeded on most
+.Nx
+systems, since the
+.Xr fd 4
+pseudo-device driver already provides identical functionality.
+On most
+.Nx
+systems, instances of
+.Xr fd 4
+are mknoded under
+.Pa /dev/fd/
+and on
+.Pa /dev/stdin ,
+.Pa /dev/stdout ,
+and
+.Pa /dev/stderr .
+.It Cd file-system KERNFS
+Includes code which permits the mounting of a special file system
+(normally mounted on
+.Pa /kern )
+in which files representing various kernel variables and parameters
+may be found.
+See
+.Xr mount_kernfs 8
+for details.
+.It Cd file-system NULLFS
+Includes code for a loopback file system.
+This permits portions of the file hierarchy to be re-mounted in other places.
+The code really exists to provide an example of a stackable file system layer.
+See
+.Xr mount_null 8
+for details.
+.It Cd file-system OVERLAY
+Includes code for a file system filter.
+This permits the overlay file system to intercept all access to an underlying
+file system.
+This file system is intended to serve as an example of a stacking file
+system which has a need to interpose itself between an underlying file
+system and all other access.
+See
+.Xr mount_overlay 8
+for details.
+.It Cd file-system PROCFS
+Includes code for a special file system (conventionally mounted on
+.Pa /proc )
+in which the process space becomes visible in the file system.
+Among
+other things, the memory spaces of processes running on the system are
+visible as files, and signals may be sent to processes by writing to
+.Pa ctl
+files in the procfs namespace.
+See
+.Xr mount_procfs 8
+for details.
+.It Cd file-system UDF
+Includes code for the UDF file system commonly found on CD and DVD media but
+also on USB sticks and harddiscs for interchange and backup. Supports read and
+write access for all formats on discs and on rewritable and recordable
+CD/DVD/BD media. It has a somewhat limited write support for UDF 2.50 as it
+can't expand the metadata partion.
+See
+.Xr mount_udf 8
+and
+.Xr fsck_udf 8
+for details.
+.It Cd file-system UMAPFS
+Includes a loopback file system in which user and group IDs may be
+remapped \(em this can be useful when mounting alien file systems with
+different UIDs and GIDs than the local system.
+See
+.Xr mount_umap 8
+for details.
+.It Cd file-system UNION
+.Bq Em EXPERIMENTAL
+Includes code for the union file system, which permits directories to
+be mounted on top of each other in such a way that both file systems
+remain visible \(em this permits tricks like allowing writing (and the
+deleting of files) on a read-only file system like a CD-ROM by
+mounting a local writable file system on top of the read-only file
+system.
+See
+.Xr mount_union 8
+for details.
+.It Cd file-system CODA
+.Bq Em EXPERIMENTAL
+Includes code for the Coda file system.
+Coda is a distributed file system like NFS and AFS.
+It is freely available, like NFS, but it functions much like AFS in being a
+.Dq stateful
+file system.
+Both Coda and AFS cache files on your local machine to improve performance.
+Then Coda goes a step further than AFS by letting you access the cached
+files when there is no available network, viz. disconnected laptops and
+network outages.
+In Coda, both the client and server are outside the kernel which makes
+them easier to experiment with.
+Coda is available for several UNIX and non-UNIX platforms.
+See
+.Lk http://www.coda.cs.cmu.edu
+for more details.
+.Em NOTE :
+You also need to enable the pseudo-device, vcoda, for the Coda
+file system to work.
+.It Cd file-system PTYFS
+Includes code for a special file system (normally mounted on
+.Pa /dev/pts )
+in which pseudo-terminal slave devices become visible in the file system.
+See
+.Xr mount_ptyfs 8
+for details.
+.It Cd file-system TMPFS
+Includes code for the efficient memory file system, normally used over
+.Pa /tmp .
+See
+.Xr mount_tmpfs 8
+for details.
+.It Cd file-system PUFFS
+Includes kernel support for the pass-to-userspace framework file system.
+It can be used to implement file system functionality in userspace.
+See
+.Xr puffs 3
+for more details.
+This enables for example sshfs:
+.Xr mount_psshfs 8 .
+.El
+.Ss File System Options
+.Bl -ohang
+.It Cd options DISKLABEL_EI
+Enable
+.Dq Endian-Independent
+.Xr disklabel 5
+support.
+This allows a system to recognize a disklabel written in the other byte order.
+For writing, when a label already exists, its byte order is preserved.
+Otherwise, a new label is written in the native byte order.
+To specify the byte order explicitly, the
+.Fl F
+option of
+.Xr disklabel 8
+should be used with the
+.Fl B
+option in order to avoid using
+.Xr ioctl 2 ,
+which results in the default behavior explained above.
+At the moment this option is restricted to the following ports:
+amd64, bebox, emips, epoc32, evbarm, i386, ibmnws, landisk, mvmeppc, prep,
+.\" riscv,
+rs6000, sandpoint,
+.\" usermode,
+xen, and zaurus;
+also to machines of the
+evbmips and evbppc ports that support
+Master Boot Record (MBR).
+.It Cd options MAGICLINKS
+Enables the expansion of special strings
+.Po
+beginning with
+.Dq @
+.Pc
+when traversing symbolic links.
+See
+.Xr symlink 7
+for a list of supported strings.
+Note that this option only controls the enabling of this feature
+by the kernel at boot-up.
+This feature can still be manipulated with the
+.Xr sysctl 8
+command regardless of the setting of this option.
+.It Cd options NFSSERVER
+Include the server side of the
+.Em NFS
+(Network File System) remote file sharing protocol.
+Although the bulk of the code implementing
+.Em NFS
+is kernel based, several user level daemons are needed for it to
+work.
+See
+.Xr mountd 8
+and
+.Xr nfsd 8
+for details.
+.It Cd options NVNODE=integer
+This option sets the size of the cache used by the name-to-inode translation
+routines, (a.k.a. the
+.Fn namei
+cache, though called by many other names in the kernel source).
+By default, this cache has
+.Dv ( NPROC + NTEXT + 100 )
+entries (NPROC set as 20 + 16 * MAXUSERS and NTEXT as 80 + NPROC / 8).
+A reasonable way to derive a value of
+.Dv NVNODE ,
+should you notice a large number of namei cache misses with a tool such as
+.Xr systat 1 ,
+is to examine your system's current computed value with
+.Xr sysctl 8 ,
+(which calls this parameter "kern.maxvnodes") and to increase this value
+until either the namei cache hit rate improves or it is determined that
+your system does not benefit substantially from an increase in the size of
+the namei cache.
+.It Cd options NAMECACHE_ENTER_REVERSE
+Causes the namei cache to always enter a reverse mapping (vnode -> name)
+as well as a normal one.
+Normally, this is already done for directory vnodes, to speed up the getcwd
+operation.
+This option will cause longer hash chains in the reverse cache, and thus
+slow down getcwd somewhat.
+However, it does make vnode -> path translations possible in some cases.
+For now, only useful if strict
+.Pa /proc/#/maps
+emulation for Linux binaries is required.
+.El
+.Ss Options for FFS/UFS File Systems
+.Bl -ohang
+.It Cd options APPLE_UFS
+Enable support for UFS file systems created on Mac OS X.
+.It Cd options FFS_EI
+Enable
+.Dq Endian-Independent
+FFS support.
+This allows a system to mount an FFS file system created for another
+architecture, at a small performance cost for all FFS file systems.
+See also
+.Xr newfs 8 ,
+.Xr fsck_ffs 8 ,
+.Xr dumpfs 8
+for file system byte order status and manipulation.
+.It Cd options FFS_NO_SNAPSHOT
+Disable support for the creation of file system internal snapshot
+of FFS file systems.
+Maybe useful for install media kernels, small memory systems and
+embedded systems which don't require the snapshot support.
+.It Cd options QUOTA
+Enables kernel support for traditional quotas in FFS.
+Traditional quotas store the quota information in external files and
+require
+.Xr quotacheck 8
+and
+.Xr quotaon 8
+at boot time.
+Traditional quotas are limited to 32-bit sizes and are at this point
+considered a legacy feature.
+.It Cd options QUOTA2
+Enables kernel support for in-volume quotas in FFS.
+The quota information is file system metadata maintained by
+.Xr fsck 8
+and/or WAPBL journaling.
+MFS volumes can also use
+.Dv QUOTA2
+quotas; see
+.Xr mount_mfs 8
+for more information.
+.It Cd options UFS_DIRHASH
+Increase lookup performance by maintaining in-core hash tables
+for large directories.
+.It Cd options UFS_EXTATTR
+Enable extended attribute support for UFS1 file systems.
+.It Cd options WAPBL
+Enable
+.Dq Write Ahead Physical Block Logging file system journaling .
+This provides rapid file system consistency checking after a system outage.
+It also provides better general use performance over regular FFS.
+See also
+.Xr wapbl 4 .
+.El
+.Ss Options for the LFS File System
+.Bl -ohang
+.\" .It Cd options LFS_KERNEL_RFW
+.\" There is no documentation for this. (XXX)
+.\" .It Cd options LFS_QUOTA
+.\" Enable traditional quota support for LFS.
+.\" (It is not clear if this works.)
+.\" .It Cd options LFS_QUOTA2
+.\" Enable modernized 64-bit quota support for LFS.
+.\" (This does not work yet.)
+.It Cd options LFS_EI
+Enable
+.Dq Endian-Independent
+LFS support.
+This allows (at a small performance cost) mounting an LFS file system
+created for another architecture.
+.\" .It Cd options LFS_EXTATTR
+.\" Enable extended attribute support for LFS.
+.\" (It is not clear if this works.)
+.It Cd options LFS_DIRHASH
+Increase lookup performance by maintaining in-core hash tables
+for large directories.
+.El
+.Ss Options for the NFS File System
+.Bl -ohang
+.It Cd options NFS_BOOT_BOOTP
+Enable use of the BOOTP protocol (RFCs 951 and 1048) to get configuration
+information if NFS is used to mount the root file system.
+See
+.Xr diskless 8
+for details.
+.It Cd options NFS_BOOT_BOOTSTATIC
+Enable use of static values defined as
+.Dq NFS_BOOTSTATIC_MYIP ,
+.Dq NFS_BOOTSTATIC_GWIP ,
+.Dq NFS_BOOTSTATIC_SERVADDR ,
+and
+.Dq NFS_BOOTSTATIC_SERVER
+in kernel options to get configuration information
+if NFS is used to mount the root file system.
+.It Cd options NFS_BOOT_DHCP
+Same as
+.Dq NFS_BOOT_BOOTP ,
+but use the DHCP extensions to the
+BOOTP protocol (RFC 1541).
+.It Cd options NFS_BOOT_BOOTP_REQFILE
+Specifies the string sent in the bp_file field of the BOOTP/DHCP
+request packet.
+.It Cd options NFS_BOOT_BOOTPARAM
+Enable use of the BOOTPARAM protocol, consisting of RARP and
+BOOTPARAM RPC, to get configuration information if NFS
+is used to mount the root file system.
+See
+.Xr diskless 8
+for details.
+.It Cd options NFS_BOOT_RWSIZE=value
+Set the initial NFS read and write sizes for diskless-boot requests.
+The normal default is 8Kbytes.
+This option provides a way to lower the value (e.g., to 1024 bytes)
+as a workaround for buggy network interface cards or boot PROMs.
+Once booted, the read and write request sizes can be increased by
+remounting the file system.
+See
+.Xr mount_nfs 8
+for details.
+.It Cd options NFS_V2_ONLY
+Reduce the size of the NFS client code by omitting code that's only required
+for NFSv3 and NQNFS support, leaving only that code required to use NFSv2
+servers.
+.It Cd options NFS_BOOT_UDP
+Use NFS over UDP instead of the default TCP, for mounting root.
+.El
+.Ss Buffer queue strategy options
+The following options enable alternative buffer queue strategies.
+.Bl -ohang
+.It Cd options BUFQ_READPRIO
+Enable alternate buffer queue strategy for disk I/O.
+In the default strategy, outstanding disk requests are ordered by
+sector number and sent to the disk, regardless of whether the
+operation is a read or write; this option gives priority to issuing
+read requests over write requests.
+Although requests may therefore be issued out of sector-order, causing
+more seeks and thus lower overall throughput, interactive system
+responsiveness under heavy disk I/O load may be improved, as processes
+blocking on disk reads are serviced sooner (file writes typically
+don't cause applications to block).
+The performance effect varies greatly depending on the hardware, drive
+firmware, file system configuration, workload, and desired performance
+trade-off.
+Systems using drive write-cache (most modern IDE disks, by default)
+are unlikely to benefit and may well suffer; such disks acknowledge
+writes very quickly, and optimize them internally according to
+physical layout.
+Giving these disks as many requests to work with as possible (the
+standard strategy) will typically produce the best results, especially
+if the drive has a large cache; the drive will silently complete
+writes from cache as it seeks for reads.
+Disks that support a large number of concurrent tagged requests (SCSI
+disks and many hardware RAID controllers) expose this internal
+scheduling with tagged responses, and don't block for reads; such
+disks may not see a noticeable difference with either strategy.
+However, if IDE disks are run with write-cache disabled for safety,
+writes are not acknowledged until actually completed, and only one
+request can be outstanding; a large number of small writes in one
+locality can keep the disk busy, starving reads elsewhere on the disk.
+Such systems are likely to see the most benefit from this option.
+Finally, the performance interaction of this option with ffs soft
+dependencies can be subtle, as that mechanism can drastically alter
+the workload for file system metadata writes.
+.It Cd options BUFQ_PRIOCSCAN
+Enable another buffer queue strategy for disk I/O, per-priority cyclical scan.
+.It Cd options NEW_BUFQ_STRATEGY
+Synonym of
+.Em BUFQ_READPRIO .
+.El
+.Ss Miscellaneous Options
+.Bl -ohang
+.It Cd options CPU_UCODE
+Support cpu microcode loading via
+.Xr cpuctl 8 .
+.It Cd options MEMORY_DISK_DYNAMIC
+This option makes the
+.Xr md 4
+RAM disk size dynamically sized.
+It is incompatible with
+.Xr mdsetimage 8 .
+.It Cd options MEMORY_DISK_HOOKS
+This option allows for some machine dependent functions to be called when
+the
+.Xr md 4
+RAM disk driver is configured.
+This can result in automatically loading a RAM disk from floppy on
+open (among other things).
+.It Cd options MEMORY_DISK_IS_ROOT
+Forces the
+.Xr md 4
+RAM disk to be the root device.
+This can only be overridden when
+the kernel is booted in the 'ask-for-root' mode.
+.It Cd options MEMORY_DISK_ROOT_SIZE=integer
+Allocates the given number of 512 byte blocks as memory for the
+.Xr md 4
+RAM disk, to be populated with
+.Xr mdsetimage 8 .
+.It Cd options MEMORY_DISK_SERVER=0
+Do not include the interface to a userland memory disk server process.
+Per default, this option is set to 1, including the support code.
+Useful for install media kernels.
+.It Cd options MEMORY_DISK_RBFLAGS=value
+This option sets the
+.Xr reboot 2
+flags used when booting with a memory disk as root file system.
+Possible values include
+.Dv RB_AUTOBOOT
+(boot in the usual fashion - default value), and
+.Dv RB_SINGLE
+(boot in single-user mode).
+.It Cd options MODULAR
+Enables the framework for kernel modules (see
+.Xr module 7 ) .
+.It Cd options MODULAR_DEFAULT_AUTOLOAD
+Enables the autoloading of kernel modules by default.
+This sets the default value of the
+.Em kern.module.autoload
+.Xr sysctl 3
+variable which may be changed at run time.
+.It Cd options MODULAR_DEFAULT_VERBOSE
+Enables verbose debug messages of kernel modules by default.
+This sets the default value of the
+.Em kern.module.verbose
+.Xr sysctl 3
+variable which may be changed at run time.
+.It Cd options VND_COMPRESSION
+Enables the
+.Xr vnd 4
+driver to also handle compressed images.
+See
+.Xr vndcompress 1 ,
+.Xr vnd 4
+and
+.Xr vnconfig 8
+for more information.
+.It Cd options SELFRELOC
+Make the kernel able to self relocate at bootstrap, so that it can
+run whatever its load address is.
+This is intented to be used with the
+.Ic reloc
+bootstrap command documented in
+.Xr x86/boot 8 ,
+to workaround UEFI bugs, and is only available on amd64.
+.It Cd options SPLDEBUG
+Help the kernel programmer find bugs related to the interrupt priority
+level.
+When
+.Fn spllower
+or
+.Fn splraise
+changes the current CPU's interrupt priority level to or from
+.Dv IPL_HIGH ,
+record a backtrace.
+Read
+.Xr i386/return_address 9
+for caveats about collecting backtraces.
+This feature is experimental, and it is only available on i386.
+See
+.Pa sys/kern/subr_spldebug.c .
+.It Cd options TFTPROOT
+Download the root memory disk through TFTP at root mount time.
+This enables the use of a root RAM disk without requiring it to be
+embedded in the kernel using
+.Xr mdsetimage 8 .
+The RAM disk name is obtained using DHCP's filename parameter.
+This option requires
+.Em MEMORY_DISK_HOOKS
+and
+.Em MEMORY_DISK_DYNAMIC .
+It is incompatible with
+.Em MEMORY_DISK_ROOT_SIZE .
+.It Cd options HEARTBEAT
+Turns on heartbeat checks to panic if any CPU in the system or the
+timecounter appears stuck.
+.Pp
+Each CPU will periodically check in hard interrupt context that the
+timecounter has advanced and soft interrupts have run on the current
+CPU, and each CPU will also be periodically checked for progress by
+another CPU.
+.Pp
+If a CPU detects no progress has been made after
+.Dv HEARTBEAT_MAX_PERIOD
+seconds,
+.Nx
+will panic, giving the opportunity to enter ddb or get a crash dump
+even if the system has become totally unresponsive to keyboard input.
+.Pp
+This is different from a hardware watchdog timer
+.Pq Xr wdogctl 8 :
+.Bl -bullet
+.It
+.Cd options HEARTBEAT
+is purely a software mechanism, so if hard interrupts are stuck on all
+CPUs, then
+.Cd options HEARTBEAT
+cannot trigger, but a hardware watchdog timer can.
+.It
+A hardware watchdog timer won't notice if a single CPU is stuck, or if
+the system timecounter is stuck, as long as at least one CPU is not
+stuck and able to run
+.Xr wdogctl 8
+or the kernel watchdog tickle thread.
+In contrast,
+.Cd options HEARTBEAT
+uses hard interrupts on each CPU to cross-check soft interrupt progress
+on another CPU as well as the timecounter, so it can detect when a
+single CPU is unable to make progress when others are able.
+.El
+.It Cd options HEARTBEAT_MAX_PERIOD_DEFAULT=integer
+Time in seconds since the last
+.Cd options HEARTBEAT
+progress check has passed before it will trigger a panic.
+Default: 15.
+.Pp
+Can be changed at runtime via the
+.Li kern.heartbeat.max_period
+.Xr sysctl 7
+knob.
+.It Cd options HZ=integer
+On ports that support it, set the system clock frequency (see
+.Xr hz 9 )
+to the supplied value.
+Handle with care.
+.It Cd options NTP
+Turns on in-kernel precision timekeeping support used by software
+implementing
+.Em NTP
+(Network Time Protocol, RFC 1305).
+The
+.Em NTP
+option adds an in-kernel Phase-Locked Loop (PLL) for normal
+.Em NTP
+operation, and a Frequency-Locked Loop (FLL) for intermittently-connected
+operation.
+.Xr ntpd 8
+will employ a user-level PLL when kernel support is unavailable,
+but the in-kernel version has lower latency and more precision, and
+so typically keeps much better time.
+.Pp
+The interface to the kernel
+.Em NTP
+support is provided by the
+.Xr ntp_adjtime 2
+and
+.Xr ntp_gettime 2
+system calls, which are intended for use by
+.Xr ntpd 8
+and are enabled by the option.
+On systems with sub-microsecond resolution timers, or where (HZ/100000)
+is not an integer, the
+.Em NTP
+option also enables extended-precision arithmetic to keep track of
+fractional clock ticks at NTP time-format precision.
+.It Cd options PPS_SYNC
+This option enables a kernel serial line discipline for receiving time
+phase signals from an external reference clock such as a radio clock.
+Some reference clocks generate a Pulse Per Second (PPS) signal in
+phase with their time source.
+The
+.Em PPS
+line discipline receives this signal on either the data leads
+or the DCD control lead of a serial port.
+.Pp
+.Em NTP
+uses the PPS signal to discipline the local clock oscillator to a high
+degree of precision (typically less than 50 microseconds in time and
+0.1 ppm in accuracy).
+.Em PPS
+can also generate a serial output pulse when the system receives a PPS
+interrupt.
+This can be used to measure the system interrupt latency and thus calibrate
+.Em NTP
+to account for it.
+Using
+.Em PPS
+usually requires a gadget box
+to convert from TTL to RS-232 signal levels.
+The gadget box and PPS are described in more detail in the HTML documentation
+for
+.Xr ntpd 8
+in
+.Pa /usr/share/doc/reference/ref8/ntp .
+.Pp
+.Nx
+currently supports this option in
+.Xr com 4
+and
+.Xr zsc 4 .
+.Pp
+.Em NOTE :
+Using this option will also enable
+.Em options NTP .
+.It Cd options SETUIDSCRIPTS
+Allows scripts with the setuid bit set to execute as the effective
+user rather than the real user, just like binary executables.
+.Pp
+.Em NOTE :
+Using this option will also enable
+.Em options FDSCRIPTS
+.It Cd options FDSCRIPTS
+Allows execution of scripts with the execute bit set, but not the
+read bit, by opening the file and passing the file descriptor to
+the shell, rather than the filename.
+.Pp
+.Em NOTE :
+Execute only (non-readable) scripts will have
+.Va argv[0]
+set to
+.Pa /dev/fd/* .
+What this option allows as far as security is
+concerned, is the ability to safely ensure that the correct script
+is run by the interpreter, as it is passed as an already open file.
+.It Cd options RTC_OFFSET=integer
+The kernel (and typically the hardware battery backed-up clock on
+those machines that have one) keeps time in
+.Em UTC
+(Universal Coordinated Time, once known as
+.Em GMT ,
+or Greenwich Mean Time)
+and not in the time of the local time zone.
+The
+.Em RTC_OFFSET
+option is used on some ports (such as the i386) to tell the kernel
+that the hardware clock is offset from
+.Em UTC
+by the specified number of minutes.
+This is typically used when a machine boots several operating
+systems and one of them wants the hardware clock to run in the
+local time zone and not in
+.Em UTC ,
+e.g.
+.Em RTC_OFFSET=300
+means
+the hardware clock is set to US Eastern Time (300 minutes behind
+.Em UTC ) ,
+and not
+.Em UTC .
+(Note:
+.Em RTC_OFFSET
+is used to initialize a kernel variable named
+.Va rtc_offset
+which is the source actually used to determine the clock offset, and
+which may be accessed via the kern.rtc_offset sysctl variable.
+See
+.Xr sysctl 8
+and
+.Xr sysctl 3
+for details.
+Since the kernel clock is initialized from the hardware clock very
+early in the boot process, it is not possible to meaningfully change
+.Va rtc_offset
+in system initialization scripts.
+Changing this value currently may only be done at kernel compile
+time or by patching the kernel and rebooting).
+.Pp
+.Em NOTE :
+Unfortunately, in many cases where the hardware clock
+is kept in local time, it is adjusted for Daylight Savings
+Time; this means that attempting to use
+.Em RTC_OFFSET
+to let
+.Nx
+coexist with such an operating system, like Windows,
+would necessitate changing
+.Em RTC_OFFSET
+twice a year.
+As such, this solution is imperfect.
+.It Cd options MAXUPRC=integer
+Sets the soft
+.Dv RLIMIT_NPROC
+resource limit, which specifies the maximum number of simultaneous
+processes a user is permitted to run, for process 0;
+this value is inherited by its child processes.
+It defaults to
+.Em CHILD_MAX ,
+which is currently defined to be 160.
+Setting
+.Em MAXUPRC
+to a value less than
+.Em CHILD_MAX
+is not permitted, as this would result in a violation of the semantics of
+.St -p1003.1-90 .
+.It Cd options NOFILE=integer
+Sets the soft
+.Dv RLIMIT_NOFILE
+resource limit, which specifies the maximum number of open
+file descriptors for each process;
+this value is inherited by its child processes.
+It defaults to
+.Em OPEN_MAX ,
+which is currently defined to be 128.
+.It Cd options MAXFILES=integer
+Sets the default value of the
+.Em kern.maxfiles
+sysctl variable, which indicates the maximum number of files that may
+be open in the system.
+.It Cd options DEFCORENAME=string
+Sets the default value of the
+.Em kern.defcorename
+sysctl variable, otherwise it is set to
+.Nm %n.core .
+See
+.Xr sysctl 8
+and
+.Xr sysctl 3
+for details.
+.It Cd options RASOPS_CLIPPING
+Enables clipping within the
+.Nm rasops
+raster-console output system.
+.Em NOTE :
+only available on architectures that use
+.Nm rasops
+for console output.
+.It Cd options RASOPS_SMALL
+Removes optimized character writing code from the
+.Nm rasops
+raster-console output system.
+.Em NOTE :
+only available on architectures that use
+.Nm rasops
+for console output.
+.It Cd options INCLUDE_CONFIG_FILE
+Embeds the kernel config file used to define the kernel in the kernel
+binary itself.
+The embedded data also includes any files directly included by the config
+file itself, e.g.
+.Pa GENERIC.local
+or
+.Pa std.$MACHINE .
+The embedded config file can be extracted from the resulting kernel with
+.Xr config 1
+.Fl x ,
+or by the following command:
+.Bd -literal -offset indent
+strings netbsd | sed -n 's/^_CFG_//p' | unvis
+.Ed
+.It Cd options INCLUDE_JUST_CONFIG
+Similar to the above option, but includes just the actual config file,
+not any included files.
+.It Cd options PIPE_SOCKETPAIR
+Use slower, but smaller socketpair(2)-based pipe implementation instead
+of default faster, but bigger one.
+Primarily useful for installation kernels.
+.It Cd options USERCONF
+Compiles in the in-kernel device configuration manager.
+See
+.Xr userconf 4
+for details.
+.It Cd options SCDEBUG_DEFAULT
+Used with the
+.Cd options SYSCALL_DEBUG
+described below to choose which types of events are displayed.
+.Pp
+.Bl -tag -width "SCDEBUG_KERNHIST" -compact -offset indent
+.It Dv SCDEBUG_CALLS
+Show system call entry points.
+.It Dv SCDEBUG_RETURNS
+Show system call exit points.
+.It Dv SCDEBUG_ALL
+Show all system call requests, including unimplemented calls.
+.It Dv SCDEBUG_SHOWARGS
+Show the arguments provided.
+.It Dv SCDEBUG_KERNHIST
+Store a restricted form of the system call debug in a kernel history
+instead of printing it to the console.
+This option relies upon
+.Cd options KERNHIST .
+.El
+.Pp
+The default value is
+.Dv (SCDEBUG_CALLS|SCDEBUG_RETURNS|SCDEBUG_SHOWARGS) .
+.It Cd options SYSCALL_DEBUG
+Useful for debugging system call issues, usually in early single user bringup.
+By default, writes entries to the system console for most system call events.
+Can be configured with the
+.Cd options SCDEBUG_DEFAULT
+option to to use the
+.Cd options KERNHIST
+facility instead.
+.It Cd options SYSCALL_STATS
+Count the number of times each system call number is called.
+The values can be read through the sysctl interface and displayed using
+.Xr systat 1 .
+.Em NOTE :
+not yet available on all architectures.
+.It Cd options SYSCALL_TIMES
+Count the time spent (using
+.Fn cpu_counter32 )
+in each system call.
+.Em NOTE :
+Using this option will also enable
+.Cd options SYSCALL_STATS .
+.It Cd options SYSCALL_TIMES_HASCOUNTER
+Force use of
+.Fn cpu_counter32
+even if
+.Fn cpu_hascounter
+reports false.
+Useful for systems where the cycle counter doesn't run at a constant rate
+(e.g. Soekris boxes).
+.It Cd options XSERVER_DDB
+A supplement to XSERVER that adds support for entering
+.Xr ddb 4
+while in X11.
+.It Cd options FILEASSOC
+Support for
+.Xr fileassoc 9 .
+Required for
+.Cd options PAX_SEGVGUARD
+and
+.Cd pseudo-device veriexec .
+.It Cd options FILEASSOC_NHOOKS=integer
+Number of storage slots per file for
+.Xr fileassoc 9 .
+Default is 4.
+.El
+.Ss Networking Options
+.Bl -ohang
+.It Cd options GATEWAY
+Enables
+.Em IPFORWARDING
+and (on most ports) increases the size of
+.Em NMBCLUSTERS .
+In general,
+.Em GATEWAY
+is used to indicate that a system should act as a router, and
+.Em IPFORWARDING
+is not invoked directly.
+(Note that
+.Em GATEWAY
+has no impact on protocols other than IP).
+.Em GATEWAY
+option also compiles IPv4 and IPv6 fast forwarding code into the kernel.
+.It Cd options IPFORWARDING=value
+If
+.Em value
+is 1 this enables IP routing behavior.
+If
+.Em value
+is 0 (the default), it disables it.
+The
+.Em GATEWAY
+option sets this to 1 automatically.
+With this option enabled, the machine will forward IP datagrams destined
+for other machines between its interfaces.
+Note that even without this option, the kernel will
+still forward some packets (such as source routed packets) \(em removing
+.Em GATEWAY
+and
+.Em IPFORWARDING
+is insufficient to stop all routing through a bastion host on a
+firewall \(em source routing is controlled independently.
+Note that IP forwarding may be turned on and off independently of the
+setting of the
+.Em IPFORWARDING
+option through the use of the
+.Em net.inet.ip.forwarding
+sysctl variable.
+If
+.Em net.inet.ip.forwarding
+is 1, IP forwarding is on.
+See
+.Xr sysctl 8
+and
+.Xr sysctl 3
+for details.
+.It Cd options IFA_STATS
+Tells the kernel to maintain per-address statistics on bytes sent
+and received over (currently) Internet and AppleTalk addresses.
+.\"This can be a fairly expensive operation, so you probably want to
+.\"keep this disabled.
+The option is not recommended as it degrades system stability.
+.It Cd options IFQ_MAXLEN=value
+Increases the allowed size of the network interface packet queues.
+The default queue size is 50 packets, and you do not normally need
+to increase it.
+.It Cd options IPSELSRC
+Includes support for source-address selection policies.
+See
+.Xr in_getifa 9 .
+.It Cd options MROUTING
+Includes support for IP multicast routers.
+You certainly want
+.Em INET
+with this.
+Multicast routing is controlled by the
+.Xr mrouted 8
+daemon.
+See also option
+.Cd PIM .
+.It Cd options PIM
+Includes support for Protocol Independent Multicast (PIM) routing.
+You need
+.Em MROUTING
+and
+.Em INET
+with this.
+Software using this can be found e.g. in
+.Pa pkgsrc/net/xorp .
+.It Cd options INET
+Includes support for the TCP/IP protocol stack.
+You almost certainly want this.
+See
+.Xr inet 4
+for details.
+.It Cd options INET6
+Includes support for the IPv6 protocol stack.
+See
+.Xr inet6 4
+for details.
+Unlike
+.Em INET ,
+.Em INET6
+enables multicast routing code as well.
+This option requires
+.Em INET
+at this moment, but it should not.
+.It Cd options ND6_DEBUG
+The option sets the default value of net.inet6.icmp6.nd6_debug to 1,
+for debugging IPv6 neighbor discovery protocol handling.
+See
+.Xr sysctl 3
+for details.
+.It Cd options IPSEC
+Includes support for the IPsec protocol, using the implementation derived from
+.Ox ,
+relying on
+.Xr opencrypto 9
+to carry out cryptographic operations.
+See
+.Xr ipsec 4
+for details.
+.It Cd options IPSEC_DEBUG
+Enables debugging code in IPsec stack.
+See
+.Xr ipsec 4
+for details.
+The
+.Cd IPSEC
+option includes support for IPsec Network Address Translator traversal
+(NAT-T), as described in RFCs 3947 and 3948.
+This feature might be patent-encumbered in some countries.
+.It Cd options ALTQ
+Enabled ALTQ (Alternate Queueing).
+For simple rate-limiting, use
+.Xr tbrconfig 8
+to set up the interface transmission rate.
+To use queueing disciplines, their appropriate kernel options should also
+be defined (documented below).
+Queueing disciplines are managed by
+.Xr altqd 8 .
+See
+.Xr altq 9
+for details.
+.It Cd options ALTQ_HFSC
+Include support for ALTQ-implemented HFSC (Hierarchical Fair Service Curve)
+module.
+HFSC supports both link-sharing and guaranteed real-time services.
+HFSC employs a service curve based QoS model, and its unique feature
+is an ability to decouple delay and bandwidth allocation.
+Requires
+.Em ALTQ_RED
+to use the RED queueing discipline on HFSC classes, or
+.Em ALTQ_RIO
+to use the RIO queueing discipline on HFSC classes.
+This option assumes
+.Em ALTQ .
+.It Cd options ALTQ_PRIQ
+Include support for ALTQ-implemented PRIQ (Priority Queueing).
+PRIQ implements a simple priority-based queueing discipline.
+A higher priority class is always served first.
+Requires
+.Em ALTQ_RED
+to use the RED queueing discipline on HFSC classes, or
+.Em ALTQ_RIO
+to use the RIO queueing discipline on HFSC classes.
+This option assumes
+.Em ALTQ .
+.It Cd options ALTQ_WFQ
+Include support for ALTQ-implemented WFQ (Weighted Fair Queueing).
+WFQ implements a weighted-round robin scheduler for a set of queues.
+A weight can be assigned to each queue to give a different proportion
+of the link capacity.
+A hash function is used to map a flow to one of a set of queues.
+This option assumes
+.Em ALTQ .
+.It Cd options ALTQ_FIFOQ
+Include support for ALTQ-implemented FIFO queueing.
+FIFOQ is a simple drop-tail FIFO (First In, First Out) queueing discipline.
+This option assumes
+.Em ALTQ .
+.It Cd options ALTQ_RIO
+Include support for ALTQ-implemented RIO (RED with In/Out).
+The original RIO has 2 sets of RED parameters; one for in-profile
+packets and the other for out-of-profile packets.
+At the ingress of the network, profile meters tag packets as IN or
+OUT based on contracted profiles for customers.
+Inside the network, IN packets receive preferential treatment by
+the RIO dropper.
+ALTQ/RIO has 3 drop precedence levels defined for the Assured Forwarding
+PHB of DiffServ (RFC 2597).
+This option assumes
+.Em ALTQ .
+.It Cd options ALTQ_BLUE
+Include support for ALTQ-implemented Blue buffer management.
+Blue is another active buffer management mechanism.
+This option assumes
+.Em ALTQ .
+.It Cd options ALTQ_FLOWVALVE
+Include support for ALTQ-implemented Flowvalve.
+Flowvalve is a simple implementation of a RED penalty box that identifies
+and punishes misbehaving flows.
+This option requires
+.Em ALTQ_RED
+and assumes
+.Em ALTQ .
+.It Cd options ALTQ_CDNR
+Include support for ALTQ-implemented CDNR (diffserv traffic conditioner)
+packet marking/manipulation.
+Traffic conditioners are components to meter, mark, or drop incoming
+packets according to some rules.
+As opposed to queueing disciplines, traffic conditioners handle incoming
+packets at an input interface.
+This option assumes
+.Em ALTQ .
+.It Cd options ALTQ_NOPCC
+Disables use of processor cycle counter to measure time in ALTQ.
+This option should be defined for a non-Pentium i386 CPU which does not
+have TSC, SMP (per-CPU counters are not in sync), or power management
+which affects processor cycle counter.
+This option assumes
+.Em ALTQ .
+.It Cd options ALTQ_IPSEC
+Include support for IPsec in IPv4 ALTQ.
+This option assumes
+.Em ALTQ .
+.It Cd options ALTQ_JOBS
+Include support for ALTQ-implemented JoBS (Joint Buffer Management
+and Scheduling).
+This option assumes
+.Em ALTQ .
+.It Cd options ALTQ_AFMAP
+Include support for an undocumented ALTQ feature that is used to map an IP
+flow to an ATM VC (Virtual Circuit).
+This option assumes
+.Em ALTQ .
+.It Cd options ALTQ_LOCALQ
+Include support for ALTQ-implemented local queues.
+Its practical use is undefined.
+Assumes
+.Em ALTQ .
+.It Cd options SUBNETSARELOCAL
+Sets default value for net.inet.ip.subnetsarelocal variable, which
+controls whether non-directly-connected subnets of connected networks
+are considered "local" for purposes of choosing the MSS for a TCP
+connection.
+This is mostly present for historic reasons and completely irrelevant if
+you enable Path MTU discovery.
+.It Cd options HOSTZEROBROADCAST
+Sets default value for net.inet.ip.hostzerobroadcast variable, which
+controls whether the zeroth host address of each connected subnet is
+also considered a broadcast address.
+Default value is "1", for compatibility with old systems; if this is
+set to zero on all hosts on a subnet, you should be able to fit an extra
+host per subnet on the
+".0" address.
+.It Cd options MCLSHIFT=value
+This option is the base-2 logarithm of the size of mbuf clusters.
+The
+.Bx
+networking stack keeps network packets in a linked
+list, or chain, of kernel buffer objects called mbufs.
+The system provides larger mbuf clusters as an optimization for
+large packets, instead of using long chains for large packets.
+The mbuf cluster size,
+or
+.Em MCLBYTES ,
+must be a power of two, and is computed as two raised to the power
+.Em MCLSHIFT .
+On systems with Ethernet network adapters,
+.Em MCLSHIFT
+is often set to 11, giving 2048-byte mbuf clusters, large enough to
+hold a 1500-byte Ethernet frame in a single cluster.
+Systems with network interfaces supporting larger frame sizes like
+ATM, FDDI, or HIPPI may perform better with
+.Em MCLSHIFT
+set to 12 or 13, giving mbuf cluster sizes of 4096 and 8192 bytes,
+respectively.
+.It Cd options NETATALK
+Include support for the AppleTalk protocol stack.
+The kernel provides provision for the
+.Em Datagram Delivery Protocol
+(DDP), providing SOCK_DGRAM support and AppleTalk routing.
+This stack is used by the
+.Em NETATALK
+package, which adds support for AppleTalk server services via user
+libraries and applications.
+.It Cd options BLUETOOTH
+Include support for the Bluetooth protocol stack.
+See
+.Xr bluetooth 4
+for details.
+.It Cd options IPNOPRIVPORTS
+Normally, only root can bind a socket descriptor to a so-called
+.Dq privileged
+TCP port, that is, a port number in the range 0-1023.
+This option eliminates those checks from the kernel.
+This can be useful if there is a desire to allow daemons without
+privileges to bind those ports, e.g., on firewalls.
+The security tradeoffs in doing this are subtle.
+This option should only be used by experts.
+.It Cd options TCP_DEBUG
+Record the last
+.Em TCP_NDEBUG
+TCP packets with SO_DEBUG set, and decode to the console if
+.Em tcpconsdebug
+is set.
+.It Cd options TCP_NDEBUG
+Number of packets to record for
+.Em TCP_DEBUG .
+Defaults to 100.
+.It Cd options TCP_SENDSPACE=value
+.It Cd options TCP_RECVSPACE=value
+These options set the max TCP window size to other sizes than the default.
+The TCP window sizes can be altered via
+.Xr sysctl 8
+as well.
+.It Cd options TCP_INIT_WIN=value
+This option sets the initial TCP window size for non-local connections,
+which is used when the transmission starts.
+The default size is 1, but if the machine should act more aggressively,
+the initial size can be set to some other value.
+The initial TCP window size can be set via
+.Xr sysctl 8
+as well.
+.It Cd options TCP_SIGNATURE
+Enable MD5 TCP signatures (RFC 2385) to protect BGP sessions.
+.It Cd options IPFILTER_LOG
+This option, in conjunction with
+.Em pseudo-device ipfilter ,
+enables logging of IP packets using IP-Filter.
+.It Cd options IPFILTER_LOOKUP
+This option enables the
+IP-Filter
+.Xr ippool 8
+functionality to be enabled.
+.It Cd options IPFILTER_COMPAT
+This option enables older IP-Filter binaries to work.
+.It Cd options IPFILTER_DEFAULT_BLOCK
+This option sets the default policy of IP-Filter.
+If it is set, IP-Filter will block packets by default.
+.It Cd options MBUFTRACE
+This option can help track down mbuf leaks.
+When enabled, mbufs are tagged with the devices and protocols using them.
+This can significantly decrease network performance, particularly
+on MP systems.
+This additional information can be viewed with
+.Xr netstat 1 :
+.Dl Ic netstat Fl mssv
+Not all devices or protocols support this option.
+.El
+.Ss Sysctl Related Options
+.Bl -ohang
+.It Cd options SYSCTL_DISALLOW_CREATE
+Disallows the creation or deletion of nodes from the sysctl tree, as
+well as the assigning of descriptions to nodes that lack them, by any
+process.
+These operations are still available to kernel sub-systems, including
+loadable kernel modules.
+.It Cd options SYSCTL_DISALLOW_KWRITE
+Prevents processes from adding nodes to the sysctl tree that make
+existing kernel memory areas writable.
+Sections of kernel memory can still be read and new nodes that own
+their own data may still be writable.
+.It Cd options SYSCTL_DEBUG_SETUP
+Causes the SYSCTL_SETUP routines to print a brief message when they
+are invoked.
+This is merely meant as an aid in determining the order in which
+sections of the tree are created.
+.It Cd options SYSCTL_DEBUG_CREATE
+Prints a message each time
+.Fn sysctl_create ,
+the function that adds nodes to the tree, is called.
+.It Cd options SYSCTL_INCLUDE_DESCR
+Causes the kernel to include short, human readable descriptions for
+nodes in the sysctl tree.
+The descriptions can be retrieved programmatically (see
+.Xr sysctl 3 ) ,
+or by the sysctl binary itself (see
+.Xr sysctl 8 ) .
+The descriptions are meant to give an indication of the purpose and/or
+effects of a given node's value, not replace the documentation for the
+given subsystem as a whole.
+.El
+.Ss System V IPC Options
+.Bl -ohang
+.It Cd options SYSVMSG
+Includes support for
+.At V
+style message queues.
+See
+.Xr msgctl 2 ,
+.Xr msgget 2 ,
+.Xr msgrcv 2 ,
+.Xr msgsnd 2 .
+.It Cd options SYSVSEM
+Includes support for
+.At V
+style semaphores.
+See
+.Xr semctl 2 ,
+.Xr semget 2 ,
+.Xr semop 2 .
+.It Cd options SEMMNI=value
+Sets the number of
+.At V
+style semaphore identifiers.
+The GENERIC config file for your port will have the default.
+.It Cd options SEMMNS=value
+Sets the number of
+.At V
+style semaphores in the system.
+The GENERIC config file for your port will have the default.
+.It Cd options SEMUME=value
+Sets the maximum number of undo entries per process for
+.At V
+style semaphores.
+The GENERIC config file for your port will have the default.
+.It Cd options SEMMNU=value
+Sets the number of undo structures in the system for
+.At V
+style semaphores.
+The GENERIC config file for your port will have the default.
+.It Cd options SYSVSHM
+Includes support for
+.At V
+style shared memory.
+See
+.Xr shmat 2 ,
+.Xr shmctl 2 ,
+.Xr shmdt 2 ,
+.Xr shmget 2 .
+.It Cd options SHMMAXPGS=value
+Sets the maximum number of
+.At V
+style shared memory pages that are available through the
+.Xr shmget 2
+system call.
+Default value is 1024 on most ports.
+See
+.Pa /usr/include/machine/vmparam.h
+for the default.
+.El
+.Ss VM Related Options
+.Bl -ohang
+.It Cd options NMBCLUSTERS=value
+The number of mbuf clusters the kernel supports.
+Mbuf clusters are MCLBYTES in size (usually 2k).
+The default value is calculated from the amount of physical memory.
+Architectures without direct mapping also limit it based on the kmem_map size,
+which is used as backing store.
+Some archs limit the value with
+.Sq NMBCLUSTERS_MAX .
+See
+.Pa /usr/include/machine/param.h
+for those archs.
+This value can be accessed via the kern.mbuf.nmbclusters sysctl variable.
+Increase this value if you get
+.Dq mclpool limit reached
+messages.
+.It Cd options NMBCLUSTERS_MAX=value
+The upper limit of NMBCLUSTERS.
+.It Cd options NKMEMPAGES=value
+.It Cd options NKMEMPAGES_MIN=value
+.It Cd options NKMEMPAGES_MAX=value
+Size of kernel VM map
+.Em kmem_map ,
+in PAGE_SIZE-sized chunks (the VM page size; this value may be read
+from the
+.Xr sysctl 8
+variable
+.Em hw.pagesize
+).
+This VM map is used to map the kernel malloc arena.
+The kernel attempts to auto-size this map based on the amount of
+physical memory in the system.
+Platform-specific code may place bounds on this computed size,
+which may be viewed with the
+.Xr sysctl 8
+variable
+.Em vm.nkmempages .
+See
+.Pa /usr/include/machine/param.h
+for the default upper and lower bounds.
+The related options
+.Sq NKMEMPAGES_MIN
+and
+.Sq NKMEMPAGES_MAX
+allow the bounds to be overridden in the kernel configuration file.
+These options are provided in the event the computed value is
+insufficient resulting in an
+.Dq out of space in kmem_map
+panic.
+.It Cd options SB_MAX=value
+Sets the max size in bytes that a socket buffer is allowed to occupy.
+The default is 256k, but sometimes it needs to be increased, for example
+when using large TCP windows.
+This option can be changed via
+.Xr sysctl 8
+as well.
+.It Cd options SOMAXKVA=value
+Sets the maximum size of kernel virtual memory that the socket buffers
+are allowed to use.
+The default is 16MB, but in situations where for example large TCP
+windows are used this value must also be increased.
+This option can be changed via
+.Xr sysctl 8
+as well.
+.It Cd options BUFCACHE=value
+Size of the buffer cache as a percentage of total available RAM.
+Ignored if BUFPAGES is also specified.
+.It Cd options NBUF=value
+Sets the number of buffer headers available, i.e., the number of
+open files that may have a buffer cache entry.
+Each buffer header
+requires MAXBSIZE (machine dependent, but usually 65536) bytes.
+The default value is machine dependent, but is usually equal to the
+value of BUFPAGES.
+.It Cd options BUFPAGES=value
+These options set the number of pages available for the buffer cache.
+Their default value is a machine dependent value, often calculated as
+between 5% and 10% of total available RAM.
+.It Cd options MAXTSIZ=bytes
+Sets the maximum size limit of a process' text segment.
+See
+.Pa /usr/include/machine/vmparam.h
+for the port-specific default.
+.It Cd options DFLDSIZ=bytes
+Sets the default size limit of a process' data segment, the value that
+will be returned as the soft limit for
+.Dv RLIMIT_DATA
+(as returned by
+.Xr getrlimit 2 ) .
+See
+.Pa /usr/include/machine/vmparam.h
+for the port-specific default.
+.It Cd options MAXDSIZ=bytes
+Sets the maximum size limit of a process' data segment, the value that
+will be returned as the hard limit for
+.Dv RLIMIT_DATA
+(as returned by
+.Xr getrlimit 2 ) .
+See
+.Pa /usr/include/machine/vmparam.h
+for the port-specific default.
+.It Cd options DFLSSIZ=bytes
+Sets the default size limit of a process' stack segment, the value that
+will be returned as the soft limit for
+.Dv RLIMIT_STACK
+(as returned by
+.Xr getrlimit 2 ) .
+See
+.Pa /usr/include/machine/vmparam.h
+for the port-specific default.
+.It Cd options MAXSSIZ=bytes
+Sets the maximum size limit of a process' stack segment, the value that
+will be returned as the hard limit for
+.Dv RLIMIT_STACK
+(as returned by
+.Xr getrlimit 2 ) .
+See
+.Pa /usr/include/machine/vmparam.h
+for the port-specific default.
+.It Cd options DUMP_ON_PANIC=integer
+Defaults to one.
+If set to zero, the kernel will not dump to the dump device when
+it panics, though dumps can still be forced via
+.Xr ddb 4
+with the
+.Dq sync
+command.
+Note that this sets the value of the
+.Em kern.dump_on_panic
+.Xr sysctl 3
+variable which may be changed at run time \(em see
+.Xr sysctl 8
+for details.
+.It Cd options VMSWAP
+Enable paging device/file support.
+This option is on by default.
+.It Cd options VMSWAP_DEFAULT_PLAINTEXT
+Store swap in plaintext, not encrypted, which may expose secrets if the
+underlying nonvolatile medium is disclosed.
+This option is off by default; it is available only for extremely slow
+machines where the performance impact of swapping early at boot
+outweighs the security risks.
+Swap encryption can still be turned on dynamically with the
+.Em vm.swap_encrypt
+.Xr sysctl 7
+knob.
+.It Cd options PDPOLICY_CLOCKPRO
+Use CLOCK-Pro, an alternative page replace policy.
+.El
+.Ss Security Options
+.Bl -ohang
+.It Cd options INSECURE
+Initializes the kernel security level with \-1 instead of 0.
+This means that the system always starts in secure level \-1 mode, even when
+running multiuser, unless the securelevel variable is set to value > \-1 in
+.Pa /etc/rc.conf .
+In this case the kernel security level will be raised to that value when the
+.Pa /etc/rc.d/securelevel
+script is run during system startup.
+See the manual page for
+.Xr init 8
+for details on the implications of this.
+The kernel secure level may manipulated by the superuser by altering the
+.Em kern.securelevel
+.Xr sysctl 3
+variable (the secure level may only be lowered by a call from process ID 1,
+i.e.,
+.Xr init 8 ) .
+See also
+.Xr secmodel_securelevel 9 ,
+.Xr sysctl 8
+and
+.Xr sysctl 3 .
+.It Cd options VERIFIED_EXEC_FP_SHA256
+Enables support for SHA256 hashes in Veriexec.
+.It Cd options VERIFIED_EXEC_FP_SHA384
+Enables support for SHA384 hashes in Veriexec.
+.It Cd options VERIFIED_EXEC_FP_SHA512
+Enables support for SHA512 hashes in Veriexec.
+.It Cd options PAX_MPROTECT=value
+Enables PaX MPROTECT,
+.Xr mprotect 2
+restrictions from the PaX project.
+.Pp
+The
+.Ar value
+is the default value for the
+.Em global
+knob, see
+.Xr sysctl 3 .
+If 0, PaX MPROTECT will be enabled only if explicitly set on programs
+using
+.Xr paxctl 8 .
+If 1, PaX MPROTECT will be enabled for all programs.
+Programs can be exempted using
+.Xr paxctl 8 .
+.Pp
+See
+.Xr security 7
+for more details.
+.It Cd options PAX_SEGVGUARD=value
+Enables PaX Segvguard.
+Requires
+.Cd options FILEASSOC .
+.Pp
+The
+.Ar value
+is the default value for the
+.Em global
+knob, see
+.Xr sysctl 3 .
+If 0, PaX Segvguard will be enabled only if explicitly set on programs
+using
+.Xr paxctl 8 .
+If 1, PaX Segvguard will be enabled to all programs, and exemption can
+be done using
+.Xr paxctl 8 .
+.Pp
+See
+.Xr security 7
+for more details.
+.It Cd options PAX_ASLR=value
+Enables PaX ASLR.
+.Pp
+The
+.Ar value
+is the default value for the
+.Em global
+knob, see
+.Xr sysctl 3 .
+If 0, PaX ASLR will be enabled only if explicitly set on programs
+using
+.Xr paxctl 8 .
+If 1, PaX ASLR will be enabled to all programs, and exemption can
+be done using
+.Xr paxctl 8 .
+.Pp
+See
+.Xr security 7
+for more details.
+.It Cd options USER_VA0_DISABLE_DEFAULT=value
+Sets the initial value of the flag which controls whether user programs
+can map virtual address 0.
+The flag can be changed at runtime by
+.Xr sysctl 3 .
+.It Cd options KASAN
+Enables Kernel Address Sanitizer.
+.Em NOTE :
+not available on all architectures.
+.It Cd options KASLR
+Enables Kernel ASLR.
+This randomizes the location of the kernel image in memory.
+.Em NOTE :
+not available on all architectures.
+.It Cd options SVS
+Enables Separate Virtual Space.
+On architectures that are designed to function with a shared address
+space, this option explicitly isolates the kernel and user spaces.
+.Em NOTE :
+not available on all architectures.
+.El
+.Ss amiga-specific Options
+.Bl -ohang
+.It Cd options BB060STUPIDROM
+When the bootloader (which passes AmigaOS ROM information) claims
+we have a 68060 CPU without FPU, go look into the Processor
+Configuration Register (PCR) to find out.
+You need this with Amiga ROMs up to (at least) V40.xxx (OS3.1),
+when you boot via the bootblocks and don't have a DraCo.
+.It Cd options IOBZCLOCK=frequency
+The IOBlix boards come with two different serial master clocks: older ones
+use 24 MHz, newer ones use 22.1184 MHz.
+The driver normally assumes the latter.
+If your board uses 24 MHz, you can recompile your kernel with
+options IOBZCLOCK=24000000
+or patch the kernel variable iobzclock to the same value.
+.It Cd options LIMITMEM=value
+If there, limit the part of the first memory bank used by
+.Nx
+to value megabytes.
+Default is unlimited.
+.It Cd options P5PPC68KBOARD
+Add special support for Phase5 mixed 68k+PPC boards.
+Currently, this only affects rebooting from
+.Nx
+and is only needed on 68040+PPC, not on
+68060+PPC; without this, affected machines will hang after
+.Nx
+has shut
+down and will only restart after a keyboard reset or a power cycle.
+.El
+.Ss atari-specific Options
+.Bl -ohang
+.It Cd options DISKLABEL_AHDI
+Include support for AHDI (native Atari) disklabels.
+.It Cd options DISKLABEL_NBDA
+Include support for
+.Nx Ns /atari
+labels.
+If you don't set this option, it will be set automatically.
+.Nx Ns /atari
+will not work without it.
+.It Cd options FALCON_SCSI
+Include support for the 5380-SCSI configuration as found on the Falcon.
+.It Cd options RELOC_KERNEL
+If set, the kernel will relocate itself to TT-RAM, if possible.
+This will give you a slightly faster system.
+.Em Beware
+that on some TT030 systems,
+the system will frequently dump with MMU-faults with this option enabled.
+.It Cd options SERCONSOLE
+Allow the modem1-port to act as the system-console.
+A carrier should be active on modem1 during system boot to active
+the console functionality.
+.It Cd options TT_SCSI
+Include support for the 5380-SCSI configuration as found on the TT030
+and Hades.
+.El
+.Ss i386-specific Options
+.Bl -ohang
+.It Cd options CPURESET_DELAY=value
+Specifies the time (in millisecond) to wait before doing a hardware reset
+in the last phase of a reboot.
+This gives the user a chance to see error messages from the shutdown
+operations (like NFS unmounts, buffer cache flush, etc ...).
+Setting this to 0 will disable the delay.
+Default is 2 seconds.
+.It Cd options USER_LDT
+Include i386-specific system calls for modifying the local descriptor table,
+used by Windows emulators.
+.It Cd options PAE
+Enable PAE (Physical Address Extension) mode.
+PAE permits up to 36 bits physical addressing (64GB of physical
+memory), and turns physical addresses to 64 bits entities in the
+memory management subsystem.
+Userland virtual address space remains at 32 bits (4GB).
+PAE mode is required to enable the NX/XD (No-eXecute/eXecute Disable)
+bit for pages, which allows marking certain ones as not being executable.
+Any attempt to execute code from such a page will raise an exception.
+.It Cd options REALBASEMEM=integer
+Overrides the base memory size passed in from the boot block.
+(Value given in kilobytes.)
+Use this option only if the boot block reports the size incorrectly.
+(Note that some BIOSes put the extended BIOS
+data area at the top of base memory, and therefore report a smaller
+base memory size to prevent programs overwriting it.
+This is correct behavior, and you should not use the
+.Em REALBASEMEM
+option to access this memory).
+.It Cd options SPECTRE_V2_GCC_MITIGATION=1
+Enable GCC-specific Spectre variant 2 mitigations.
+For 32-bit kernels this means these options:
+.Bd -literal -offset indent
+-mindirect-branch=thunk -mindirect-branch-register
+.Ed
+.Pp
+For 64-bit kernels this means these options:
+.Bd -literal -offset indent
+-mindirect-branch=thunk-inline -mindirect-branch-register
+.Ed
+.It Cd options REALEXTMEM=integer
+Overrides the extended memory size passed in from the boot block.
+(Value given in kilobytes.
+Extended memory does not include the first megabyte.)
+Use this option only if the boot block reports the size incorrectly.
+.It Cd options CYRIX_CACHE_WORKS
+Relevant only to the Cyrix 486DLC CPU.
+This option is used to turn on the cache in hold-flush mode.
+It is not turned on by default because it is known to have problems in
+certain motherboard implementations.
+.It Cd options CYRIX_CACHE_REALLY_WORKS
+Relevant only to the Cyrix 486DLC CPU.
+This option is used to turn on the cache in write-back mode.
+It is not turned on by default because it is known to have problems in
+certain motherboard implementations.
+In order for this option to take effect, option
+.Em CYRIX_CACHE_WORKS
+must also be specified.
+.It Cd options PCIBIOS
+Enable support for initializing the PCI bus using information from
+the BIOS.
+See
+.Xr pcibios 4
+for details.
+.It Cd options MTRR
+Include support for accessing MTRR registers from user-space.
+See
+.Xr i386_get_mtrr 2 .
+.It Cd options BEEP_ONHALT
+Make the system speaker emit several beeps when it is completely safe to
+power down the computer after a
+.Xr halt 8
+command.
+Requires
+.Xr sysbeep 4
+support.
+.It Cd options BEEP_ONHALT_COUNT=times
+Number of times to beep the speaker when
+.Cd options BEEP_ONHALT
+is enabled.
+Defaults to 3.
+.It Cd options BEEP_ONHALT_PITCH=hz
+The tone frequency used when
+.Cd options BEEP_ONHALT
+option, in hertz.
+Defaults to 1500.
+.It Cd options BEEP_ONHALT_PERIOD=msecs
+The duration of each beep when
+.Cd options BEEP_ONHALT
+is enabled, in milliseconds.
+Defaults to 250.
+.It Cd options MULTIBOOT
+Makes the kernel Multiboot-compliant, allowing it to be booted through
+a Multiboot-compliant boot manager such as GRUB.
+See
+.Xr multiboot 8
+for more information.
+.It Cd options SPLASHSCREEN
+Display a splash screen during boot.
+.El
+.Ss isa-specific Options
+Options specific to
+.Xr isa 4
+busses.
+.Bl -ohang
+.It Cd options PCIC_ISA_ALLOC_IOBASE=address, PCIC_ISA_ALLOC_IOSIZE=size
+Control the section of IO bus space used for PCMCIA bus space mapping.
+Ideally the probed defaults are satisfactory, however in practice
+that is not always the case.
+See
+.Xr pcmcia 4
+for details.
+.It Cd options PCIC_ISA_INTR_ALLOC_MASK=mask
+Controls the allowable interrupts that may be used for PCMCIA
+devices.
+This mask is a logical-or of power-of-2s of allowable interrupts:
+.Bd -literal -offset 04n
+.Em "IRQ Val IRQ Val IRQ Val IRQ Val"
+ 0 0x0001 4 0x0010 8 0x0100 12 0x1000
+ 1 0x0002 5 0x0020 9 0x0200 13 0x2000
+ 2 0x0004 6 0x0040 10 0x0400 14 0x4000
+ 3 0x0008 7 0x0080 11 0x0800 15 0x8000
+.Ed
+.It Cd options PCKBC_CNATTACH_SELFTEST
+Perform a self test of the keyboard controller before attaching it as a
+console.
+This might be necessary on machines where we boot on cold iron, and
+pckbc refuses to talk until we request a self test.
+Currently only the netwinder port uses it.
+.It Cd options PCKBD_CNATTACH_MAY_FAIL
+If this option is set the PS/2 keyboard will not be used as the console
+if it cannot be found during boot.
+This allows other keyboards, like USB, to be the console keyboard.
+.It Cd options PCKBD_LAYOUT=layout
+Sets the default keyboard layout, see
+.Xr pckbd 4 .
+.El
+.Ss m68k-specific Options
+.Bl -ohang
+.It Cd options FPU_EMULATE
+Include support for MC68881/MC68882 emulator.
+.It Cd options FPSP
+Include support for 68040 floating point.
+.It Cd options M68020,M68030,M68040,M68060
+Include support for a specific CPU,
+at least one (the one you are using) should be specified.
+.It Cd options M060SP
+Include software support for 68060.
+This provides emulation of unimplemented
+integer instructions as well as emulation of unimplemented floating point
+instructions and data types and software support for floating point traps.
+.El
+.Ss powerpc-specific Options (OEA Only)
+.Bl -ohang
+.It Cd options PMAP_MEMLIMIT=value
+Limit the amount of memory seen by the kernel to
+.Ar value
+bytes.
+.It Cd options PTEGCOUNT=value
+Specify the size of the page table as
+.Ar value
+PTE groups.
+Normally, one PTEG is allocated per physical page frame.
+.El
+.Ss sparc-specific Options
+.Bl -ohang
+.It Cd options AUDIO_DEBUG
+Enable simple event debugging of the logging of the
+.Xr audio 4
+device.
+.It Cd options BLINK
+Enable blinking of LED.
+Blink rate is full cycle every N seconds for
+N < then current load average.
+See
+.Xr getloadavg 3 .
+.\" .It Cd options COLORFONT_CACHE
+.\" What does this do?
+.It Cd options COUNT_SW_LEFTOVERS
+Count how many times the sw SCSI device has left 3, 2, 1 and 0 in the
+sw_3_leftover, sw_2_leftover, sw_1_leftover, and sw_0_leftover
+variables accessible from
+.Xr ddb 4 .
+See
+.Xr sw 4 .
+.It Cd options DEBUG_ALIGN
+Adds debugging messages calls when user-requested alignment fault
+handling happens.
+.It Cd options DEBUG_EMUL
+Adds debugging messages calls for emulated floating point and
+alignment fixing operations.
+.It Cd options EXTREME_DEBUG
+Adds debugging functions callable from
+.Xr ddb 4 .
+The debug_pagetables, test_region and print_fe_map
+functions print information about page tables for the SUN4M
+platforms only.
+.It Cd options EXTREME_EXTREME_DEBUG
+Adds extra info to
+.Em options EXTREME_DEBUG .
+.It Cd options FPU_CONTEXT
+Make
+.Em options COMPAT_SVR4
+getcontext and setcontext include floating point registers.
+.It Cd options MAGMA_DEBUG
+Adds debugging messages to the
+.Xr magma 4
+device.
+.It Cd options RASTERCONS_FULLSCREEN
+Use the entire screen for the console.
+.It Cd options RASTERCONS_SMALLFONT
+Use the Fixed font on the console, instead of the normal font.
+.It Cd options SUN4
+Support sun4 class machines.
+.It Cd options SUN4C
+Support sun4c class machines.
+.It Cd options SUN4M
+Support sun4m class machines.
+.It Cd options SUN4_MMU3L
+.\" XXX ???
+Enable support for sun4 3-level MMU machines.
+.It Cd options V9
+Enable SPARC V9 assembler in
+.Xr ddb 4 .
+.El
+.Ss sparc64-specific Options
+.Bl -ohang
+.It Cd options AUDIO_DEBUG
+Enable simple event debugging of the logging of the
+.Xr audio 4
+device.
+.It Cd options BLINK
+Enable blinking of LED.
+Blink rate is full cycle every N seconds for
+N < then current load average.
+See
+.Xr getloadavg 3 .
+.El
+.Ss x68k-specific Options
+.Bl -ohang
+.It Cd options EXTENDED_MEMORY
+Include support for extended memory, e.g., TS-6BE16 and 060turbo on-board.
+.It Cd options JUPITER
+Include support for Jupiter-X MPU accelerator
+.It Cd options ZSCONSOLE,ZSCN_SPEED=value
+Use the built-in serial port as the system-console.
+Speed is specified in bps, defaults to 9600.
+.It Cd options ITE_KERNEL_ATTR=value
+Set the kernel message attribute for ITE.
+Value, an integer, is a logical or of the following values:
+.Bl -tag -width 4n -compact -offset indent
+.It 1
+color inversed
+.It 2
+underlined
+.It 4
+bolded
+.El
+.El
+.Ss x86-specific Options
+.Bl -ohang
+.It Cd options NO_PCI_MSI_MSIX
+Disable support for MSI/MSIX in the kernel.
+See
+.Xr pci_msi 9
+for details of MSI/MSIX support
+.It Cd options NO_PREEMPTION
+Disables
+.Xr kpreempt 9
+support in the kernel.
+.El
+.\" The following requests should be uncommented and used where appropriate.
+.\" .Sh FILES
+.\" .Sh EXAMPLES
+.Sh SEE ALSO
+.Xr config 1 ,
+.Xr gcc 1 ,
+.Xr gdb 1 ,
+.Xr ktrace 1 ,
+.Xr quota 1 ,
+.Xr vndcompress 1 ,
+.Xr gettimeofday 2 ,
+.Xr i386_get_mtrr 2 ,
+.Xr i386_iopl 2 ,
+.Xr msgctl 2 ,
+.Xr msgget 2 ,
+.Xr msgrcv 2 ,
+.Xr msgsnd 2 ,
+.Xr ntp_adjtime 2 ,
+.Xr ntp_gettime 2 ,
+.Xr reboot 2 ,
+.Xr semctl 2 ,
+.Xr semget 2 ,
+.Xr semop 2 ,
+.Xr shmat 2 ,
+.Xr shmctl 2 ,
+.Xr shmdt 2 ,
+.Xr shmget 2 ,
+.Xr sysctl 3 ,
+.Xr apm 4 ,
+.Xr ddb 4 ,
+.Xr inet 4 ,
+.Xr md 4 ,
+.Xr pcibios 4 ,
+.Xr pcmcia 4 ,
+.Xr ppp 4 ,
+.Xr userconf 4 ,
+.Xr vnd 4 ,
+.Xr wscons 4 ,
+.Xr config 5 ,
+.Xr edquota 8 ,
+.Xr init 8 ,
+.Xr mdsetimage 8 ,
+.Xr mount_cd9660 8 ,
+.Xr mount_fdesc 8 ,
+.Xr mount_kernfs 8 ,
+.Xr mount_lfs 8 ,
+.Xr mount_mfs 8 ,
+.Xr mount_msdos 8 ,
+.Xr mount_nfs 8 ,
+.Xr mount_ntfs 8 ,
+.Xr mount_null 8 ,
+.Xr mount_portal 8 ,
+.Xr mount_procfs 8 ,
+.Xr mount_udf 8 ,
+.Xr mount_umap 8 ,
+.Xr mount_union 8 ,
+.Xr mrouted 8 ,
+.Xr newfs_lfs 8 ,
+.Xr ntpd 8 ,
+.Xr quotaon 8 ,
+.Xr rpc.rquotad 8 ,
+.Xr sysctl 8 ,
+.Xr cnmagic 9 ,
+.Xr in_getifa 9 ,
+.Xr kernhist 9
+.Sh HISTORY
+The
+.Nm
+man page first appeared in
+.Nx 1.3 .