]> git.saurik.com Git - apple/libc.git/blobdiff - gen/sysctl.3
Libc-825.24.tar.gz
[apple/libc.git] / gen / sysctl.3
diff --git a/gen/sysctl.3 b/gen/sysctl.3
deleted file mode 100644 (file)
index 8c8e4bc..0000000
+++ /dev/null
@@ -1,870 +0,0 @@
-.\" Copyright (c) 1993
-.\"    The Regents of the University of California.  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 acknowledgement:
-.\"    This product includes software developed by the University of
-.\"    California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
-.\"
-.\"    @(#)sysctl.3    8.4 (Berkeley) 5/9/95
-.\" $FreeBSD: src/lib/libc/gen/sysctl.3,v 1.63 2004/07/02 23:52:10 ru Exp $
-.\"
-.Dd October 21, 2008
-.Dt SYSCTL 3
-.Os
-.Sh NAME
-.Nm sysctl ,
-.Nm sysctlbyname ,
-.Nm sysctlnametomib
-.Nd get or set system information
-.Sh LIBRARY
-.Lb libc
-.Sh SYNOPSIS
-.In sys/types.h
-.In sys/sysctl.h
-.Ft int
-.Fn sysctl "int *name" "u_int namelen" "void *oldp" "size_t *oldlenp" "void *newp" "size_t newlen"
-.Ft int
-.Fn sysctlbyname "const char *name" "void *oldp" "size_t *oldlenp" "void *newp" "size_t newlen"
-.Ft int
-.Fn sysctlnametomib "const char *name" "int *mibp" "size_t *sizep"
-.Sh DESCRIPTION
-The
-.Fn sysctl
-function retrieves system information and allows processes with
-appropriate privileges to set system information.
-The information available from
-.Fn sysctl
-consists of integers, strings, and tables.
-Information may be retrieved and set from the command interface
-using the
-.Xr sysctl 8
-utility.
-.Pp
-Unless explicitly noted below,
-.Fn sysctl
-returns a consistent snapshot of the data requested.
-Consistency is obtained by locking the destination
-buffer into memory so that the data may be copied out without blocking.
-Calls to
-.Fn sysctl
-are serialized to avoid deadlock.
-.Pp
-The state is described using a ``Management Information Base'' (MIB)
-style name, listed in
-.Fa name ,
-which is a
-.Fa namelen
-length array of integers.
-.Pp
-The
-.Fn sysctlbyname
-function accepts an ASCII representation of the name and internally
-looks up the integer name vector.
-Apart from that, it behaves the same
-as the standard
-.Fn sysctl
-function.
-.Pp
-The information is copied into the buffer specified by
-.Fa oldp .
-The size of the buffer is given by the location specified by
-.Fa oldlenp
-before the call,
-and that location gives the amount of data copied after a successful call
-and after a call that returns with the error code
-.Er ENOMEM .
-If the amount of data available is greater
-than the size of the buffer supplied,
-the call supplies as much data as fits in the buffer provided
-and returns with the error code
-.Er ENOMEM .
-If the old value is not desired,
-.Fa oldp
-and
-.Fa oldlenp
-should be set to NULL.
-.Pp
-The size of the available data can be determined by calling
-.Fn sysctl
-with the
-.Dv NULL
-argument for
-.Fa oldp .
-The size of the available data will be returned in the location pointed to by
-.Fa oldlenp .
-For some operations, the amount of space may change often.
-For these operations,
-the system attempts to round up so that the returned size is
-large enough for a call to return the data shortly thereafter.
-.Pp
-To set a new value,
-.Fa newp
-is set to point to a buffer of length
-.Fa newlen
-from which the requested value is to be taken.
-If a new value is not to be set,
-.Fa newp
-should be set to NULL and
-.Fa newlen
-set to 0.
-.Pp
-The
-.Fn sysctlnametomib
-function accepts an ASCII representation of the name,
-looks up the integer name vector,
-and returns the numeric representation in the mib array pointed to by
-.Fa mibp .
-The number of elements in the mib array is given by the location specified by
-.Fa sizep
-before the call,
-and that location gives the number of entries copied after a successful call.
-The resulting
-.Fa mib
-and
-.Fa size
-may be used in subsequent
-.Fn sysctl
-calls to get the data associated with the requested ASCII name.
-This interface is intended for use by applications that want to
-repeatedly request the same variable (the
-.Fn sysctl
-function runs in about a third the time as the same request made via the
-.Fn sysctlbyname
-function).
-The
-.Fn sysctlnametomib
-function is also useful for fetching mib prefixes and then adding
-a final component.
-For example, to fetch process information
-for processes with pid's less than 100:
-.Pp
-.Bd -literal -offset indent -compact
-int i, mib[4];
-size_t len;
-struct kinfo_proc kp;
-
-/* Fill out the first three components of the mib */
-len = 4;
-sysctlnametomib("kern.proc.pid", mib, &len);
-
-/* Fetch and print entries for pid's < 100 */
-for (i = 0; i < 100; i++) {
-       mib[3] = i;
-       len = sizeof(kp);
-       if (sysctl(mib, 4, &kp, &len, NULL, 0) == -1)
-               perror("sysctl");
-       else if (len > 0)
-               printkproc(&kp);
-}
-.Ed
-.Pp
-Note:  Implementation of
-.Fn printkproc
--- to print whatever data deemed necessary from the large
-.Vt kinfo_proc
-structure (
-.In sys/sysctl.h
-) -- is left as an exercise for the reader.
-.Pp
-The top level names are defined with a CTL_ prefix in
-.In sys/sysctl.h ,
-and are as follows.
-The next and subsequent levels down are found in the include files
-listed here, and described in separate sections below.
-.Pp
-.Bl -column CTLXMACHDEP "Next level names" -offset indent
-.It Sy "Name   Next level names        Description"
-.It "CTL_DEBUG sys/sysctl.h    Debugging"
-.It "CTL_VFS   sys/mount.h     File system"
-.It "CTL_HW    sys/sysctl.h    Generic CPU, I/O"
-.It "CTL_KERN  sys/sysctl.h    High kernel limits"
-.It "CTL_MACHDEP       sys/sysctl.h    Machine dependent"
-.It "CTL_NET   sys/socket.h    Networking"
-.It "CTL_USER  sys/sysctl.h    User-level"
-.It "CTL_VM    sys/resources.h Virtual memory (struct loadavg)"
-.It "CTL_VM    sys/vmmeter.h   Virtual memory (struct vmtotal)"
-.El
-.Pp
-For example, the following retrieves the maximum number of processes allowed
-in the system:
-.Pp
-.Bd -literal -offset indent -compact
-int mib[2], maxproc;
-size_t len;
-
-mib[0] = CTL_KERN;
-mib[1] = KERN_MAXPROC;
-len = sizeof(maxproc);
-sysctl(mib, 2, &maxproc, &len, NULL, 0);
-.Ed
-.Pp
-To retrieve the standard search path for the system utilities:
-.Pp
-.Bd -literal -offset indent -compact
-int mib[2];
-size_t len;
-char *p;
-
-mib[0] = CTL_USER;
-mib[1] = USER_CS_PATH;
-sysctl(mib, 2, NULL, &len, NULL, 0);
-p = malloc(len);
-sysctl(mib, 2, p, &len, NULL, 0);
-.Ed
-.Ss CTL_DEBUG
-The debugging variables vary from system to system.
-A debugging variable may be added or deleted without need to recompile
-.Fn sysctl
-to know about it.
-Each time it runs,
-.Fn sysctl
-gets the list of debugging variables from the kernel and
-displays their current values.
-The system defines twenty
-.Pq Vt "struct ctldebug"
-variables named
-.Va debug0
-through
-.Va debug19 .
-They are declared as separate variables so that they can be
-individually initialized at the location of their associated variable.
-The loader prevents multiple use of the same variable by issuing errors
-if a variable is initialized in more than one place.
-For example, to export the variable
-.Va dospecialcheck
-as a debugging variable, the following declaration would be used:
-.Pp
-.Bd -literal -offset indent -compact
-int dospecialcheck = 1;
-struct ctldebug debug5 = { "dospecialcheck", &dospecialcheck };
-.Ed
-.Ss CTL_VFS
-A distinguished second level name, VFS_GENERIC,
-is used to get general information about all file systems.
-One of its third level identifiers is VFS_MAXTYPENUM
-that gives the highest valid file system type number.
-Its other third level identifier is VFS_CONF that
-returns configuration information about the file system
-type given as a fourth level identifier (see
-.Xr getvfsbyname 3
-as an example of its use).
-The remaining second level identifiers are the
-file system type number returned by a
-.Xr statfs 2
-call or from VFS_CONF.
-The third level identifiers available for each file system
-are given in the header file that defines the mount
-argument structure for that file system.
-.Ss CTL_HW
-The string and integer information available for the CTL_HW level
-is detailed below.
-The changeable column shows whether a process with appropriate
-privilege may change the value.
-.Bl -column "Second level nameXXXXXX" integerXXX -offset indent
-.It Sy "Second level name      Type    Changeable"
-.It "HW_MACHINE        string  no"
-.It "HW_MODEL  string  no"
-.It "HW_NCPU   integer no (DEPRECATED)"
-.It "HW_BYTEORDER      integer no"
-.It "HW_PHYSMEM        integer no"
-.It "HW_MEMSIZE        integer no"
-.It "HW_USERMEM        integer no"
-.It "HW_PAGESIZE       integer no"
-.It "HW_FLOATINGPOINT  integer no"
-.It "HW_MACHINE_ARCH   string  no"
-.\".It "HW_DISKNAMES   integer no"
-.\".It "HW_DISKSTATS   integer no"
-.El
-.Pp
-.Bl -tag -width 6n
-.It Li HW_MACHINE
-The machine class.
-.It Li HW_MODEL
-The machine model
-.It Li HW_NCPU (DEPRECATED)
-The number of cpus.  It is recommended that you use "hw.physicalcpu" "hw.physicalcpu_max" "hw.logicalcpu" or "hw.logicalcpu_max" instead.
-.It Li "hw.physicalcpu"
-The number of physical processors available in the current power management mode.
-.It Li "hw.physicalcpu_max"
-The maximum number of physical processors that could be available this boot.
-.It Li "hw.logicalcpu"
-The number of logical processors available in the current power management mode.
-.It Li "hw.logicalcpu_max"
-The maximum number of logical processors that could be available this boot.
-.It Li HW_BYTEORDER
-The byteorder (4,321, or 1,234).
-.It Li HW_PHYSMEM
-The bytes of physical memory represented by a 32-bit integer (for backward compatibility). Use HW_MEMSIZE instead.
-.It Li HW_MEMSIZE
-The bytes of physical memory represented by a 64-bit integer.
-.It Li HW_USERMEM
-The bytes of non-kernel memory.
-.It Li HW_PAGESIZE
-The software page size.
-.It Li HW_FLOATINGPOINT
-Nonzero if the floating point support is in hardware.
-.It Li HW_MACHINE_ARCH
-The machine dependent architecture type.
-.\".It Fa HW_DISKNAMES
-.\".It Fa HW_DISKSTATS
-.El
-.Ss CTL_KERN
-The string and integer information available for the CTL_KERN level
-is detailed below.
-The changeable column shows whether a process with appropriate
-privilege may change the value.
-The types of data currently available are process information,
-system vnodes, the open file entries, routing table entries,
-virtual memory statistics, load average history, and clock rate
-information.
-.Bl -column "KERNXMAXFILESPERPROCXXX" "struct clockrateXXX" -offset indent
-.It Sy "Second level name      Type    Changeable"
-.It "KERN_ARGMAX       integer no"
-.It "KERN_BOOTFILE     string  yes"
-.It "KERN_BOOTTIME     struct timeval  no"
-.It "KERN_CLOCKRATE    struct clockinfo        no"
-.It "KERN_FILE struct file     no"
-.It "KERN_HOSTID       integer yes"
-.It "KERN_HOSTNAME     string  yes"
-.It "KERN_JOB_CONTROL  integer no"
-.It "KERN_MAXFILES     integer yes"
-.It "KERN_MAXFILESPERPROC      integer yes"
-.It "KERN_MAXPROC      integer no"
-.It "KERN_MAXPROCPERUID        integer yes"
-.It "KERN_MAXVNODES    integer yes"
-.It "KERN_NGROUPS      integer no"
-.It "KERN_NISDOMAINNAME        string  yes"
-.It "KERN_OSRELDATE    integer no"
-.It "KERN_OSRELEASE    string  no"
-.It "KERN_OSREV        integer no"
-.It "KERN_OSTYPE       string  no"
-.It "KERN_POSIX1       integer no"
-.It "KERN_PROC struct kinfo_proc       no"
-.It "KERN_PROF node    not applicable"
-.It "KERN_QUANTUM      integer yes"
-.It "KERN_SAVED_IDS    integer no"
-.It "KERN_SECURELVL    integer raise only"
-.It "KERN_UPDATEINTERVAL       integer no"
-.It "KERN_VERSION      string  no"
-.It "KERN_VNODE        struct vnode    no"
-.El
-.Pp
-.Bl -tag -width 6n
-.It Li KERN_ARGMAX
-The maximum bytes of argument to
-.Xr execve 2 .
-.It Li KERN_BOOTFILE
-The full pathname of the file from which the kernel was loaded.
-.It Li KERN_BOOTTIME
-A
-.Va struct timeval
-structure is returned.
-This structure contains the time that the system was booted.
-.It Li KERN_CLOCKRATE
-A
-.Va struct clockinfo
-structure is returned.
-This structure contains the clock, statistics clock and profiling clock
-frequencies, the number of micro-seconds per hz tick and the skew rate.
-.It Li KERN_FILE
-Return the entire file table.
-The returned data consists of a single
-.Va struct filehead
-followed by an array of
-.Va struct file ,
-whose size depends on the current number of such objects in the system.
-.It Li KERN_HOSTID
-Get or set the host id.
-.It Li KERN_HOSTNAME
-Get or set the hostname.
-.It Li KERN_JOB_CONTROL
-Return 1 if job control is available on this system, otherwise 0.
-.It Li KERN_MAXFILES
-The maximum number of files that may be open in the system.
-.It Li KERN_MAXFILESPERPROC
-The maximum number of files that may be open for a single process.
-This limit only applies to processes with an effective uid of nonzero
-at the time of the open request.
-Files that have already been opened are not affected if the limit
-or the effective uid is changed.
-.It Li KERN_MAXPROC
-The maximum number of concurrent processes the system will allow.
-.It Li KERN_MAXPROCPERUID
-The maximum number of concurrent processes the system will allow
-for a single effective uid.
-This limit only applies to processes with an effective uid of nonzero
-at the time of a fork request.
-Processes that have already been started are not affected if the limit
-is changed.
-.It Li KERN_MAXVNODES
-The maximum number of vnodes available on the system.
-.It Li KERN_NGROUPS
-The maximum number of supplemental groups.
-.It Li KERN_NISDOMAINNAME
-The name of the current YP/NIS domain.
-.It Li KERN_OSRELDATE
-The kernel release version in the format
-.Ar M Ns Ar mm Ns Ar R Ns Ar xx ,
-where
-.Ar M
-is the major version,
-.Ar mm
-is the two digit minor version,
-.Ar R
-is 0 if release branch, otherwise 1,
-and
-.Ar xx
-is updated when the available APIs change.
-.Pp
-The userland release version is available from
-.In osreldate.h ;
-parse this file if you need to get the release version of
-the currently installed userland.
-.It Li KERN_OSRELEASE
-The system release string.
-.It Li KERN_OSREV
-The system revision string.
-.It Li KERN_OSTYPE
-The system type string.
-.It Li KERN_POSIX1
-The version of
-.St -p1003.1
-with which the system
-attempts to comply.
-.It Li KERN_PROC
-Return the entire process table, or a subset of it.
-An array of
-.Va struct kinfo_proc
-structures is returned,
-whose size depends on the current number of such objects in the system.
-The third and fourth level names are as follows:
-.Bl -column "Third level nameXXXXXX" "Fourth level is:XXXXXX" -offset indent
-.It "Third level name  Fourth level is:"
-.It "KERN_PROC_ALL     None"
-.It "KERN_PROC_PID     A process ID"
-.It "KERN_PROC_PGRP    A process group"
-.It "KERN_PROC_TTY     A tty device"
-.It "KERN_PROC_UID     A user ID"
-.It "KERN_PROC_RUID    A real user ID"
-.El
-.It Li KERN_PROF
-Return profiling information about the kernel.
-If the kernel is not compiled for profiling,
-attempts to retrieve any of the KERN_PROF values will
-fail with
-.Er ENOENT .
-The third level names for the string and integer profiling information
-is detailed below.
-The changeable column shows whether a process with appropriate
-privilege may change the value.
-.Bl -column "GPROFXGMONPARAMXXX" "struct gmonparamXXX" -offset indent
-.It Sy "Third level name       Type    Changeable"
-.It "GPROF_STATE       integer yes"
-.It "GPROF_COUNT       u_short[\|]     yes"
-.It "GPROF_FROMS       u_short[\|]     yes"
-.It "GPROF_TOS struct tostruct yes"
-.It "GPROF_GMONPARAM   struct gmonparam        no"
-.El
-.Pp
-The variables are as follows:
-.Bl -tag -width 6n
-.It Li GPROF_STATE
-Returns GMON_PROF_ON or GMON_PROF_OFF to show that profiling
-is running or stopped.
-.It Li GPROF_COUNT
-Array of statistical program counter counts.
-.It Li GPROF_FROMS
-Array indexed by program counter of call-from points.
-.It Li GPROF_TOS
-Array of
-.Va struct tostruct
-describing destination of calls and their counts.
-.It Li GPROF_GMONPARAM
-Structure giving the sizes of the above arrays.
-.El
-.It Li KERN_QUANTUM
-The maximum period of time, in microseconds, for which a process is allowed
-to run without being preempted if other processes are in the run queue.
-.It Li KERN_SAVED_IDS
-Returns 1 if saved set-group and saved set-user ID is available.
-.It Li KERN_SECURELVL
-The system security level.
-This level may be raised by processes with appropriate privilege.
-It may not be lowered.
-.It Li KERN_VERSION
-The system version string.
-.It Li KERN_VNODE
-Return the entire vnode table.
-Note, the vnode table is not necessarily a consistent snapshot of
-the system.
-The returned data consists of an array whose size depends on the
-current number of such objects in the system.
-Each element of the array contains the kernel address of a vnode
-.Va struct vnode *
-followed by the vnode itself
-.Va struct vnode .
-.El
-.Ss CTL_MACHDEP
-The set of variables defined is architecture dependent.
-The following variables are defined for the i386 architecture.
-.Bl -column "CONSOLE_DEVICEXXX" "struct bootinfoXXX" -offset indent
-.It Sy "Second level name      Type    Changeable"
-.It Li "CPU_CONSDEV    dev_t   no"
-.It Li "CPU_ADJKERNTZ  int     yes"
-.It Li "CPU_DISRTCSET  int     yes"
-.It Li "CPU_BOOTINFO   struct bootinfo no"
-.It Li "CPU_WALLCLOCK  int     yes"
-.El
-.Ss CTL_NET
-The string and integer information available for the CTL_NET level
-is detailed below.
-The changeable column shows whether a process with appropriate
-privilege may change the value.
-.Bl -column "Second level nameXXXXXX" "routing messagesXXX" -offset indent
-.It Sy "Second level name      Type    Changeable"
-.It "PF_ROUTE  routing messages        no"
-.It "PF_INET   IPv4 values     yes"
-.It "PF_INET6  IPv6 values     yes"
-.El
-.Pp
-.Bl -tag -width 6n
-.It Li PF_ROUTE
-Return the entire routing table or a subset of it.
-The data is returned as a sequence of routing messages (see
-.Xr route 4
-for the header file, format and meaning).
-The length of each message is contained in the message header.
-.Pp
-The third level name is a protocol number, which is currently always 0.
-The fourth level name is an address family, which may be set to 0 to
-select all address families.
-The fifth and sixth level names are as follows:
-.Bl -column "Fifth level nameXXXXXX" "Sixth level is:XXX" -offset indent
-.It Sy "Fifth level name       Sixth level is:"
-.It "NET_RT_FLAGS      rtflags"
-.It "NET_RT_DUMP       None"
-.It "NET_RT_IFLIST     0 or if_index"
-.It "NET_RT_IFMALIST   0 or if_index"
-.El
-.Pp
-The
-.Dv NET_RT_IFMALIST
-name returns information about multicast group memberships on all interfaces
-if 0 is specified, or for the interface specified by
-.Va if_index .
-.It Li PF_INET
-Get or set various global information about the IPv4
-(Internet Protocol version 4).
-The third level name is the protocol.
-The fourth level name is the variable name.
-The currently defined protocols and names are:
-.Bl -column ProtocolXX VariableXX TypeXX ChangeableXX
-.It Sy "Protocol       Variable        Type    Changeable"
-.It "icmp      bmcastecho      integer yes"
-.It "icmp      maskrepl        integer yes"
-.It "ip        forwarding      integer yes"
-.It "ip        redirect        integer yes"
-.It "ip        ttl     integer yes"
-.It "udp       checksum        integer yes"
-.El
-.Pp
-The variables are as follows:
-.Bl -tag -width 6n
-.It Li icmp.bmcastecho
-Returns 1 if an ICMP echo request to a broadcast or multicast address is
-to be answered.
-.It Li icmp.maskrepl
-Returns 1 if ICMP network mask requests are to be answered.
-.It Li ip.forwarding
-Returns 1 when IP forwarding is enabled for the host,
-meaning that the host is acting as a router.
-.It Li ip.redirect
-Returns 1 when ICMP redirects may be sent by the host.
-This option is ignored unless the host is routing IP packets,
-and should normally be enabled on all systems.
-.It Li ip.ttl
-The maximum time-to-live (hop count) value for an IP packet sourced by
-the system.
-This value applies to normal transport protocols, not to ICMP.
-.It Li udp.checksum
-Returns 1 when UDP checksums are being computed and checked.
-Disabling UDP checksums is strongly discouraged.
-.Pp
-For variables net.inet.*.ipsec, please refer to
-.Xr ipsec 4 .
-.El
-.It Li PF_INET6
-Get or set various global information about the IPv6
-(Internet Protocol version 6).
-The third level name is the protocol.
-The fourth level name is the variable name.
-.Pp
-For variables net.inet6.* please refer to
-.Xr inet6 4 .
-For variables net.inet6.*.ipsec6, please refer to
-.Xr ipsec 4 .
-.El
-.Ss CTL_USER
-The string and integer information available for the CTL_USER level
-is detailed below.
-The changeable column shows whether a process with appropriate
-privilege may change the value.
-.Bl -column "USER_COLL_WEIGHTS_MAXXXX" "integerXXX" -offset indent
-.It Sy "Second level name      Type    Changeable"
-.It "USER_BC_BASE_MAX  integer no"
-.It "USER_BC_DIM_MAX   integer no"
-.It "USER_BC_SCALE_MAX integer no"
-.It "USER_BC_STRING_MAX        integer no"
-.It "USER_COLL_WEIGHTS_MAX     integer no"
-.It "USER_CS_PATH      string  no"
-.It "USER_EXPR_NEST_MAX        integer no"
-.It "USER_LINE_MAX     integer no"
-.It "USER_POSIX2_CHAR_TERM     integer no"
-.It "USER_POSIX2_C_BIND        integer no"
-.It "USER_POSIX2_C_DEV integer no"
-.It "USER_POSIX2_FORT_DEV      integer no"
-.It "USER_POSIX2_FORT_RUN      integer no"
-.It "USER_POSIX2_LOCALEDEF     integer no"
-.It "USER_POSIX2_SW_DEV        integer no"
-.It "USER_POSIX2_UPE   integer no"
-.It "USER_POSIX2_VERSION       integer no"
-.It "USER_RE_DUP_MAX   integer no"
-.It "USER_STREAM_MAX   integer no"
-.It "USER_TZNAME_MAX   integer no"
-.El
-.Bl -tag -width 6n
-.Pp
-.It Li USER_BC_BASE_MAX
-The maximum ibase/obase values in the
-.Xr bc 1
-utility.
-.It Li USER_BC_DIM_MAX
-The maximum array size in the
-.Xr bc 1
-utility.
-.It Li USER_BC_SCALE_MAX
-The maximum scale value in the
-.Xr bc 1
-utility.
-.It Li USER_BC_STRING_MAX
-The maximum string length in the
-.Xr bc 1
-utility.
-.It Li USER_COLL_WEIGHTS_MAX
-The maximum number of weights that can be assigned to any entry of
-the LC_COLLATE order keyword in the locale definition file.
-.It Li USER_CS_PATH
-Return a value for the
-.Ev PATH
-environment variable that finds all the standard utilities.
-.It Li USER_EXPR_NEST_MAX
-The maximum number of expressions that can be nested within
-parenthesis by the
-.Xr expr 1
-utility.
-.It Li USER_LINE_MAX
-The maximum length in bytes of a text-processing utility's input
-line.
-.It Li USER_POSIX2_CHAR_TERM
-Return 1 if the system supports at least one terminal type capable of
-all operations described in
-.St -p1003.2 ,
-otherwise 0.
-.It Li USER_POSIX2_C_BIND
-Return 1 if the system's C-language development facilities support the
-C-Language Bindings Option, otherwise 0.
-.It Li USER_POSIX2_C_DEV
-Return 1 if the system supports the C-Language Development Utilities Option,
-otherwise 0.
-.It Li USER_POSIX2_FORT_DEV
-Return 1 if the system supports the FORTRAN Development Utilities Option,
-otherwise 0.
-.It Li USER_POSIX2_FORT_RUN
-Return 1 if the system supports the FORTRAN Runtime Utilities Option,
-otherwise 0.
-.It Li USER_POSIX2_LOCALEDEF
-Return 1 if the system supports the creation of locales, otherwise 0.
-.It Li USER_POSIX2_SW_DEV
-Return 1 if the system supports the Software Development Utilities Option,
-otherwise 0.
-.It Li USER_POSIX2_UPE
-Return 1 if the system supports the User Portability Utilities Option,
-otherwise 0.
-.It Li USER_POSIX2_VERSION
-The version of
-.St -p1003.2
-with which the system attempts to comply.
-.It Li USER_RE_DUP_MAX
-The maximum number of repeated occurrences of a regular expression
-permitted when using interval notation.
-.It Li USER_STREAM_MAX
-The minimum maximum number of streams that a process may have open
-at any one time.
-.It Li USER_TZNAME_MAX
-The minimum maximum number of types supported for the name of a
-timezone.
-.El
-.Ss CTL_VM
-The string and integer information available for the CTL_VM level
-is detailed below.
-The changeable column shows whether a process with appropriate
-privilege may change the value.
-.Bl -column "Second level nameXXXXXX" "struct loadavgXXX" -offset indent
-.It Sy "Second level name      Type    Changeable"
-.It "VM_LOADAVG        struct loadavg  no"
-.It "VM_PAGEOUT_ALGORITHM      integer yes"
-.It "VM_SWAPPING_ENABLED       integer maybe"
-.It "VM_V_CACHE_MAX    integer yes"
-.It "VM_V_CACHE_MIN    integer yes"
-.It "VM_V_FREE_MIN     integer yes"
-.It "VM_V_FREE_RESERVED        integer yes"
-.It "VM_V_FREE_TARGET  integer yes"
-.It "VM_V_INACTIVE_TARGET      integer yes"
-.It "VM_V_PAGEOUT_FREE_MIN     integer yes"
-.El
-.Pp
-.Bl -tag -width 6n
-.It Li VM_LOADAVG
-Return the load average history.
-The returned data consists of a
-.Va struct loadavg .
-.It Li VM_PAGEOUT_ALGORITHM
-0 if the statistics-based page management algorithm is in use
-or 1 if the near-LRU algorithm is in use.
-.It Li VM_SWAPPING_ENABLED
-1 if process swapping is enabled or 0 if disabled.
-This variable is
-permanently set to 0 if the kernel was built with swapping disabled.
-.It Li VM_V_CACHE_MAX
-Maximum desired size of the cache queue.
-.It Li VM_V_CACHE_MIN
-Minimum desired size of the cache queue.
-If the cache queue size
-falls very far below this value, the pageout daemon is awakened.
-.It Li VM_V_FREE_MIN
-Minimum amount of memory (cache memory plus free memory)
-required to be available before a process waiting on memory will be
-awakened.
-.It Li VM_V_FREE_RESERVED
-Processes will awaken the pageout daemon and wait for memory if the
-number of free and cached pages drops below this value.
-.It Li VM_V_FREE_TARGET
-The total amount of free memory (including cache memory) that the
-pageout daemon tries to maintain.
-.It Li VM_V_INACTIVE_TARGET
-The desired number of inactive pages that the pageout daemon should
-achieve when it runs.
-Inactive pages can be quickly inserted into
-process address space when needed.
-.It Li VM_V_PAGEOUT_FREE_MIN
-If the amount of free and cache memory falls below this value, the
-pageout daemon will enter "memory conserving mode" to avoid deadlock.
-.El
-.Sh RETURN VALUES
-.Rv -std
-.Sh ERRORS
-The following errors may be reported:
-.Bl -tag -width Er
-.It Bq Er EFAULT
-The buffer
-.Fa name ,
-.Fa oldp ,
-.Fa newp ,
-or length pointer
-.Fa oldlenp
-contains an invalid address.
-.It Bq Er EINVAL
-The
-.Fa name
-array is less than two or greater than CTL_MAXNAME.
-.It Bq Er EINVAL
-A non-null
-.Fa newp
-is given and its specified length in
-.Fa newlen
-is too large or too small.
-.It Bq Er ENOMEM
-The length pointed to by
-.Fa oldlenp
-is too short to hold the requested value.
-.It Bq Er ENOMEM
-The smaller of either the length pointed to by
-.Fa oldlenp
-or the estimated size of the returned data exceeds the
-system limit on locked memory.
-.It Bq Er ENOMEM
-Locking the buffer
-.Fa oldp ,
-or a portion of the buffer if the estimated size of the data
-to be returned is smaller,
-would cause the process to exceed its per-process locked memory limit.
-.It Bq Er ENOTDIR
-The
-.Fa name
-array specifies an intermediate rather than terminal name.
-.It Bq Er EISDIR
-The
-.Fa name
-array specifies a terminal name, but the actual name is not terminal.
-.It Bq Er ENOENT
-The
-.Fa name
-array specifies a value that is unknown.
-.It Bq Er EPERM
-An attempt is made to set a read-only value.
-.It Bq Er EPERM
-A process without appropriate privilege attempts to set a value.
-.El
-.Sh FILES
-.Bl -tag -width <netinet/icmpXvar.h> -compact
-.It In sys/sysctl.h
-definitions for top level identifiers, second level kernel and hardware
-identifiers, and user level identifiers
-.It In sys/socket.h
-definitions for second level network identifiers
-.It In sys/gmon.h
-definitions for third level profiling identifiers
-.It In mach/vm_param.h
-definitions for second level virtual memory identifiers
-.It In netinet/in.h
-definitions for third level IPv4/IPv6 identifiers and
-fourth level IPv4/v6 identifiers
-.It In netinet/icmp_var.h
-definitions for fourth level ICMP identifiers
-.It In netinet/icmp6.h
-definitions for fourth level ICMPv6 identifiers
-.It In netinet/udp_var.h
-definitions for fourth level UDP identifiers
-.El
-.Sh SEE ALSO
-.Xr sysconf 3 ,
-.Xr sysctl 8
-.Sh HISTORY
-The
-.Fn sysctl
-function first appeared in
-.Bx 4.4 .