xref: /csrg-svn/lib/libc/gen/sysctl.3 (revision 60274)
158401Smckusick.\" Copyright (c) 1993 The Regents of the University of California.
258401Smckusick.\" All rights reserved.
358401Smckusick.\"
458401Smckusick.\" %sccs.include.redist.roff%
558401Smckusick.\"
6*60274Sbostic.\"	@(#)sysctl.3	6.8 (Berkeley) 05/24/93
758401Smckusick.\"
858401Smckusick.Dd ""
959868Sbostic.Dt SYSCTL 3
1058401Smckusick.Os
1158401Smckusick.Sh NAME
1258401Smckusick.Nm sysctl
1359868Sbostic.Nd get or set system information
1458401Smckusick.Sh SYNOPSIS
1558401Smckusick.Fd #include <sys/sysctl.h>
1658401Smckusick.Ft int
1759868Sbostic.Fn sysctl "int *name" "u_int namelen" "void *oldp" "size_t *oldlenp" "void *newp" "size_t newlen"
1858401Smckusick.Sh DESCRIPTION
1958401SmckusickThe
2059868Sbostic.Nm sysctl
2159868Sbosticfunction retrieves system information and allows processes with
2259868Sbosticappropriate privileges to set system information.
2359868SbosticThe information available from
2459868Sbostic.Nm sysctl
2559868Sbosticconsists of integers, strings, and tables.
2659868SbosticInformation may be retrieved and set from the command interface
2759868Sbosticusing the
2859868Sbostic.Xr sysctl 1
2959868Sbosticutility.
3059868Sbostic.Pp
3159978SmckusickUnless explicitly noted below,
3259978Smckusick.Nm sysctl
3359978Smckusickreturns a consistent snapshot of the data requested.
3459978SmckusickConsistency is obtained by locking the destination
3559978Smckusickbuffer into memory so that the data may be copied out without blocking.
3659978SmckusickCalls to
3759978Smckusick.Nm sysctl
3859978Smckusickare serialized to avoid deadlock.
3959978Smckusick.Pp
4059868SbosticThe state is described using a ``Management Information Base'' (MIB)
4159868Sbosticstyle name, listed in
4259868Sbostic.Fa name ,
4359868Sbosticwhich is a
4458401Smckusick.Fa namelen
4559868Sbosticlength array of integers.
4658401Smckusick.Pp
4758507SmckusickThe information is copied into the buffer specified by
4859868Sbostic.Fa oldp .
4958507SmckusickThe size of the buffer is given by the location specified by
5058507Smckusick.Fa oldlenp
5158507Smckusickbefore the call,
5258507Smckusickand that location gives the amount of data copied after a successful call.
5358507SmckusickIf the amount of data available is greater
5458507Smckusickthan the size of the buffer supplied,
5558507Smckusickthe call supplies as much data as fits in the buffer provided
5659978Smckusickand returns with the error code ENOMEM.
5758401SmckusickIf the old value is not desired,
5859868Sbostic.Fa oldp
5958401Smckusickand
6058401Smckusick.Fa oldlenp
6159868Sbosticshould be set to NULL.
6258401Smckusick.Pp
6358507SmckusickThe size of the available data can be determined by calling
6459868Sbostic.Nm sysctl
6558507Smckusickwith a NULL parameter for
6659868Sbostic.Fa oldp .
6759978SmckusickThe size of the available data will be returned in the location pointed to by
6858507Smckusick.Fa oldlenp .
6959978SmckusickFor some operations, the amount of space may change often.
7059978SmckusickFor these operations,
7158507Smckusickthe system attempts to round up so that the returned size is
7258507Smckusicklarge enough for a call to return the data shortly thereafter.
7358507Smckusick.Pp
7458401SmckusickTo set a new value,
7559868Sbostic.Fa newp
7658401Smckusickis set to point to a buffer of length
7758401Smckusick.Fa newlen
7858401Smckusickfrom which the requested value is to be taken.
7958507SmckusickIf a new value is not to be set,
8059868Sbostic.Fa newp
8158401Smckusickshould be set to NULL and
8258401Smckusick.Fa newlen
8358401Smckusickset to 0.
8458401Smckusick.Pp
8559868SbosticThe top level names are defined with a CTL_ prefix in
8659868Sbostic.Pa <sys/sysctl.h> ,
8759868Sbosticand are as follows.
8859868SbosticThe next and subsequent levels down are found in the include files
8959868Sbosticlisted here, and described in separate sections below.
9059868Sbostic.Pp
9159978Smckusick.Bl -column CTLXMACHDEPXXX "Next level namesXXXXXX" -offset indent
9259868Sbostic.It Sy Pa Name	Next level names	Description
9359868Sbostic.It CTL\_DEBUG	sys/sysctl.h	Debugging
9459868Sbostic.It CTL\_FS	sys/sysctl.h	File system
9559868Sbostic.It CTL\_HW	sys/sysctl.h	Generic CPU, I/O
9659868Sbostic.It CTL\_KERN	sys/sysctl.h	High kernel: processes, limits
9759868Sbostic.It CTL\_MACHDEP	sys/sysctl.h	Machine dependent
9859868Sbostic.It CTL\_NET	sys/socket.h	Networking
9959868Sbostic.It CTL\_USER	sys/sysctl.h	User-level
10059868Sbostic.It CTL\_VM	vm/vm_param.h	Virtual memory
10158507Smckusick.El
10258507Smckusick.Pp
10358507SmckusickFor example, the following retrieves the maximum number of processes allowed
10458507Smckusickin the system:
10558401Smckusick.Bd -literal -offset indent -compact
10659868Sbosticint mib[2], maxproc;
10758462Sbosticsize_t len;
10858507Smckusick.sp
10959868Sbosticmib[0] = CTL_KERN;
11059868Sbosticmib[1] = KERN_MAXPROC;
11158462Sbosticlen = sizeof(maxproc);
11259868Sbosticsysctl(mib, 2, &maxproc, &len, NULL, 0);
11358401Smckusick.Ed
11459868Sbostic.sp
11559868SbosticTo retrieve the standard search path for the system utilities:
11659868Sbostic.Bd -literal -offset indent -compact
11759868Sbosticint mib[2];
11859868Sbosticsize_t len;
11959868Sbosticchar *p;
12059868Sbostic.sp
12159868Sbosticmib[0] = CTL_USER;
12259868Sbosticmib[1] = USER_CS_PATH;
12359868Sbosticsysctl(mib, 2, NULL, &len, NULL, 0);
12459868Sbosticp = malloc(len);
12559868Sbosticsysctl(mib, 2, p, &len, NULL, 0);
12659868Sbostic.Ed
12759978Smckusick.Sh CTL_DEBUG
12859978SmckusickThe debugging variables vary from system to system.
12959978SmckusickA debugging variable may be added or deleted without need to recompile
13059868Sbostic.Nm sysctl
13159978Smckusickto know about it.
13259978SmckusickEach time it runs,
13359978Smckusick.Nm sysctl
13459978Smckusickgets the list of debugging variables from the kernel and
13559978Smckusickdisplays their current values.
13659978SmckusickThe system defines twenty
13759978Smckusick.Ns ( Va struct ctldebug )
13859978Smckusickvariables named
13959978Smckusick.Nm debug0
14059978Smckusickthrough
14159978Smckusick.Nm debug19 .
14259978SmckusickThey are declared as separate variables so that they can be
14359978Smckusickindividually initialized at the location of their associated variable.
14459978SmckusickThe loader prevents multiple use of the same variable by issuing errors
14559978Smckusickif a variable is initialized in more than one place.
14659978SmckusickFor example, to export the variable
14759978Smckusick.Nm dospecialcheck
14859978Smckusickas a debugging variable, the following declaration would be used:
14959978Smckusick.Bd -literal -offset indent -compact
15059978Smckusickint dospecialcheck = 1;
15159978Smckusickstruct ctldebug debug5 = { "dospecialcheck", &dospecialcheck };
15259978Smckusick.Ed
15359868Sbostic.Sh CTL_FS
15459868SbosticThere are currently no second level names for the file system.
15559868Sbostic.Sh CTL_HW
15659978SmckusickThe string and integer information available for the CTL_HW level
15759868Sbosticis detailed below.
15859868SbosticThe changeable column shows whether a process with appropriate
15959868Sbosticprivilege may change the value.
16059978Smckusick.Bl -column "Second level nameXXXXXX" integerXXX -offset indent
16159868Sbostic.It Sy Pa Second level name	Type	Changeable
16259868Sbostic.It HW\_MACHINE	string	no
16359868Sbostic.It HW\_MODEL	string	no
16459868Sbostic.It HW\_NCPU	integer	no
16559868Sbostic.It HW\_BYTEORDER	integer	no
16659868Sbostic.It HW\_PHYSMEM	integer	no
16759868Sbostic.It HW\_USERMEM	integer	no
16859868Sbostic.It HW\_PAGESIZE	integer	no
16959868Sbostic.\".It HW\_DISKNAMES	integer	no
17059868Sbostic.\".It HW\_DISKSTATS	integer	no
17159868Sbostic.El
17258507Smckusick.Pp
17359868Sbostic.Bl -tag -width "123456"
17459868Sbostic.It Li HW_MACHINE
17559978SmckusickThe machine class.
17659868Sbostic.It Li HW_MODEL
17759978SmckusickThe machine model
17859868Sbostic.It Li HW_NCPU
17959978SmckusickThe number of cpus.
18059868Sbostic.It Li HW_BYTEORDER
18159978SmckusickThe byteorder (4,321, or 1,234).
18259868Sbostic.It Li HW_PHYSMEM
18359978SmckusickThe bytes of physical memory.
18459868Sbostic.It Li HW_USERMEM
18559978SmckusickThe bytes of non-kernel memory.
18659868Sbostic.It Li HW_PAGESIZE
18759978SmckusickThe software page size.
18859868Sbostic.\".It Fa HW_DISKNAMES
18959868Sbostic.\".It Fa HW_DISKSTATS
19059868Sbostic.El
19159868Sbostic.Sh CTL_KERN
19259868SbosticThe string and integer information available for the CTL_KERN level
19359868Sbosticis detailed below.
19459868SbosticThe changeable column shows whether a process with appropriate
19559868Sbosticprivilege may change the value.
19658507SmckusickThe types of data currently available are process information,
19758507Smckusicksystem vnodes, the open file entries, routing table entries,
19859868Sbosticvirtual memory statistics, load average history, and clock rate
19959868Sbosticinformation.
20059868Sbostic.Bl -column "KERNXCHOWNXRESTRICTEDXXX" "struct clockrateXXX" -offset indent
20159868Sbostic.It Sy Pa Second level name	Type	Changeable
20259868Sbostic.It KERN\_ARGMAX	integer	no
20360166Smckusick.It KERN\_BOOTTIME	struct timeval	no
20459868Sbostic.It KERN\_CHOWN\_RESTRICTED	integer	no
20559978Smckusick.It KERN\_CLOCKRATE	struct clockinfo	no
20659978Smckusick.It KERN\_FILE	struct file	no
20759868Sbostic.It KERN\_HOSTID	integer	yes
20859868Sbostic.It KERN\_HOSTNAME	string	yes
20959868Sbostic.It KERN\_JOB\_CONTROL	integer	no
21059868Sbostic.It KERN\_LINK\_MAX	integer	no
21159868Sbostic.It KERN\_MAXFILES	integer	yes
21259868Sbostic.It KERN\_MAXPROC	integer	yes
213*60274Sbostic.It KERN\_MAXUFILES	integer	yes
214*60274Sbostic.It KERN\_MAXUPROC	integer	yes
21559978Smckusick.It KERN\_MAXVNODES	integer	yes
21659868Sbostic.It KERN\_MAX\_CANON	integer	no
21759868Sbostic.It KERN\_MAX\_INPUT	integer	no
21859868Sbostic.It KERN\_NAME\_MAX	integer	no
21959868Sbostic.It KERN\_NGROUPS	integer	no
22059868Sbostic.It KERN\_NO\_TRUNC	integer	no
22159868Sbostic.It KERN\_OSRELEASE	string	no
22259868Sbostic.It KERN\_OSREV	integer	no
22359868Sbostic.It KERN\_OSTYPE	string	no
22459868Sbostic.It KERN\_PATH\_MAX	integer	no
22559868Sbostic.It KERN\_PIPE\_BUF	integer	no
22659868Sbostic.It KERN\_POSIX1	integer	no
22759978Smckusick.It KERN\_PROC	struct proc	no
22859978Smckusick.It KERN\_PROF	node	not applicable
22959868Sbostic.It KERN\_SAVED\_IDS	integer	no
23059868Sbostic.It KERN\_SECURELVL	integer	raise only
23159868Sbostic.It KERN\_VDISABLE	integer	no
23259868Sbostic.It KERN\_VERSION	string	no
23359978Smckusick.It KERN\_VNODE	struct vnode	no
23459868Sbostic.El
23558507Smckusick.Pp
23659868Sbostic.Bl -tag -width "123456"
23759868Sbostic.It Li KERN_ARGMAX
238*60274SbosticThe maximum bytes of argument to
239*60274Sbostic.Xr exec 2 .
24060166Smckusick.It Li KERN_BOOTTIME
24160166SmckusickA
24260166Smckusick.Va struct timeval
24360166Smckusickstructure is returned.
24460166SmckusickThis structure contains the time that the system was booted.
24559868Sbostic.It Li KERN_CHOWN_RESTRICTED
24659868SbosticReturn 1 if appropriate privileges are required for the
24759868Sbostic.Xr chown 2
24859868Sbosticsystem call, otherwise 0.
24959868Sbostic.It Li KERN_CLOCKRATE
25059868SbosticA
25159978Smckusick.Va struct clockinfo
25259868Sbosticstructure is returned.
25359868SbosticThis structure contains the clock, statistics clock and profiling clock
25459868Sbosticfrequencies, and the number of micro-seconds per hz tick.
25559868Sbostic.It Li KERN_FILE
25659868SbosticReturn the entire file table.
25759868SbosticThe returned data consists of a single
25859978Smckusick.Va struct filehead
25959868Sbosticfollowed by an array of
26059978Smckusick.Va struct file ,
26159868Sbosticwhose size depends on the current number of such objects in the system.
26259868Sbostic.It Li KERN_HOSTID
26359978SmckusickGet or set the host id.
26459868Sbostic.It Li KERN_HOSTNAME
26559978SmckusickGet or set the hostname.
26659868Sbostic.It Li KERN_JOB_CONTROL
26759868SbosticReturn 1 if job control is available on this system, otherwise 0.
26859868Sbostic.It Li KERN_LINK_MAX
26959978SmckusickThe maximum file link count.
27059868Sbostic.It Li KERN_MAXFILES
27159978SmckusickThe maximum number of open files that may be open in the system.
27259868Sbostic.It Li KERN_MAXPROC
27359978SmckusickThe maximum number of simultaneous processes the system will allow.
274*60274Sbostic.It Li KERN_MAXUFILES
275*60274SbosticThe maximum number of open files per user id.
276*60274Sbostic.It Li KERN_MAXUPROC
277*60274SbosticThe maximum number of simultaneous processes per user id.
27859868Sbostic.It Li KERN_MAXVNODES
27959978SmckusickThe maximum number of vnodes available on the system.
28059868Sbostic.It Li KERN_MAX_CANON
28159978SmckusickThe maximum number of bytes in terminal canonical input line.
28259868Sbostic.It Li KERN_MAX_INPUT
28359978SmckusickThe minimum number of bytes for which space is available in
28459868Sbostica terminal input queue.
28559868Sbostic.It Li KERN_NAME_MAX
28659978SmckusickThe maximum number of bytes in a file name.
28759868Sbostic.It Li KERN_NGROUPS
28859978SmckusickThe maximum number of supplemental groups.
28959868Sbostic.It Li KERN_NO_TRUNC
29059978SmckusickReturn 1 if file names longer than KERN_NAME_MAX are truncated.
29159868Sbostic.It Li KERN_OSRELEASE
29259978SmckusickThe system release string.
29359868Sbostic.It Li KERN_OSREV
29459978SmckusickThe system revision string.
29559868Sbostic.It Li KERN_OSTYPE
29659978SmckusickThe system type string.
29759868Sbostic.It Li KERN_PATH_MAX
29859978SmckusickThe maximum number of bytes in a pathname.
29959868Sbostic.It Li KERN_PIPE_BUF
30059978SmckusickThe maximum number of bytes which will be written atomically to a pipe.
30159868Sbostic.It Li KERN_POSIX1
302*60274SbosticThe version of ISO/IEC 9945 (POSIX 1003.1) with which the system
303*60274Sbosticattempts to comply.
30459868Sbostic.It Li KERN_PROC
30559868SbosticReturn the entire process table, or a subset of it.
30658507SmckusickAn array of
30759978Smckusick.Va struct kinfo_proc
30858507Smckusickstructures is returned,
30958507Smckusickwhose size depends on the current number of such objects in the system.
31059868SbosticThe third and fourth level names are as follows:
31159978Smckusick.Bl -column "Third level nameXXXXXX" "Fourth level is:XXXXXX" -offset indent
31259868Sbostic.It Pa Third level name	Fourth level is:
31359868Sbostic.It KERN\_PROC\_ALL	None
31459868Sbostic.It KERN\_PROC\_PID	A process ID
31559868Sbostic.It KERN\_PROC\_PGRP	A process group
31659868Sbostic.It KERN\_PROC\_TTY	A tty device
31759868Sbostic.It KERN\_PROC\_UID	A user ID
31859868Sbostic.It KERN\_PROC\_RUID	A real user ID
31958507Smckusick.El
32059868Sbostic.It Li KERN_PROF
32159978SmckusickReturn profiling information about the kernel.
32259978SmckusickIf the kernel is not compiled for profiling,
32359978Smckusickattempts to retrieve any of the KERN_PROF values will
32459978Smckusickfail with EOPNOTSUPP.
32559978SmckusickThe third level names for the string and integer profiling information
32659978Smckusickis detailed below.
32759978SmckusickThe changeable column shows whether a process with appropriate
32859978Smckusickprivilege may change the value.
32959978Smckusick.Bl -column "GPROFXGMONPARAMXXX" "struct gmonparamXXX" -offset indent
33059978Smckusick.It Sy Pa Third level name	Type	Changeable
33159978Smckusick.It GPROF\_STATE	integer	yes
33259978Smckusick.It GPROF\_COUNT	u_short[\|]	yes
33359978Smckusick.It GPROF\_FROMS	u_short[\|]	yes
33459978Smckusick.It GPROF\_TOS	struct tostruct	yes
33559978Smckusick.It GPROF\_GMONPARAM	struct gmonparam	no
33659978Smckusick.El
33759978Smckusick.Pp
33859978SmckusickThe variables are as follows:
33959978Smckusick.Bl -tag -width "123456"
34059978Smckusick.It Li GPROF_STATE
34159978SmckusickReturns GMON_PROF_ON or GMON_PROF_OFF to show that profiling
34259978Smckusickis running or stopped.
34359978Smckusick.It Li GPROF_COUNT
34459978SmckusickArray of statistical program counter counts.
34559978Smckusick.It Li GPROF_FROMS
34659978SmckusickArray indexed by program counter of call-from points.
34759978Smckusick.It Li GPROF_TOS
34859978SmckusickArray of
34959978Smckusick.Va struct tostruct
35059978Smckusickdescribing destination of calls and their counts.
35159978Smckusick.It Li GPROF_GMONPARAM
35259978SmckusickStructure giving the sizes of the above arrays.
35359978Smckusick.El
35459868Sbostic.It Li KERN_SAVED_IDS
35559868SbosticReturns 1 if saved set-group and saved set-user ID is available.
35659868Sbostic.It Li KERN_SECURELVL
35759978SmckusickThe system security level.
35859868SbosticThis level may be raised by processes with appropriate privilege.
35959978SmckusickIt may only be lowered by process 1.
36059868Sbostic.It Li KERN_VDISABLE
36159868SbosticReturns the terminal character disabling value.
36259868Sbostic.It Li KERN_VERSION
36359978SmckusickThe system version string.
36459868Sbostic.It Li KERN_VNODE
36559868SbosticReturn the entire vnode table.
36659978SmckusickNote, the vnode table is not necessarily a consistent snapshot of
36759978Smckusickthe system.
36859868SbosticThe returned data consists of an array whose size depends on the
36959868Sbosticcurrent number of such objects in the system.
37058507SmckusickEach element of the array contains the kernel address of a vnode
37159978Smckusick.Va struct vnode *
37258507Smckusickfollowed by the vnode itself
37359978Smckusick.Va struct vnode .
37459868Sbostic.El
37559868Sbostic.Sh CTL_MACHDEP
37659868SbosticThere are currently no second level names for the machine dependent
37759868Sbosticinterface.
37859868Sbostic.Sh CTL_NET
37959868SbosticThe string and integer information available for the CTL_NET level
38059868Sbosticis detailed below.
38159868SbosticThe changeable column shows whether a process with appropriate
38259868Sbosticprivilege may change the value.
38359978Smckusick.Bl -column "Second level nameXXXXXX" "routing messagesXXX" -offset indent
38459868Sbostic.It Sy Pa Second level name	Type	Changeable
38559978Smckusick.It PF\_ROUTE	routing messages	no
38659978Smckusick.It PF\_INET	internet values	yes
38759868Sbostic.El
38858507Smckusick.Pp
38959868Sbostic.Bl -tag -width "123456"
39059868Sbostic.It Li PF_ROUTE
39159868SbosticReturn the entire routing table or a subset of it.
39259868SbosticThe data is returned as a sequence of routing messages (see
39359868Sbostic.Xr route 4
39459868Sbosticfor the header file, format and meaning).
39559868SbosticThe length of each message is contained in the message header.
39658507Smckusick.Pp
39759868SbosticThe third level name is a protocol number, which is currently always 0.
39859868SbosticThe fourth level name is an address family, which may be set to 0 to
39959868Sbosticselect all address families.
40059868SbosticThe fifth and sixth level names are as follows:
40159978Smckusick.Bl -column "Fifth level nameXXXXXX" "Sixth level is:XXX" -offset indent
40259868Sbostic.It Pa Fifth level name	Sixth level is:
40359868Sbostic.It NET\_RT\_FLAGS	rtflags
40459868Sbostic.It NET\_RT\_DUMP	None
40559868Sbostic.It NET\_RT\_IFLIST	None
40659868Sbostic.El
40759978Smckusick.It Li PF_INET
40859978SmckusickGet or set various global information about the internet protocols.
40959978SmckusickThe third level name is the protocol.
41059978SmckusickThe fourth level name is the variable name.
41159978SmckusickThe currently defined protocols and names are:
41259978Smckusick.Bl -column "Protocol nameXXXXXX" "Variable nameXXX" "integerXXX" -offset indent
41359978Smckusick.It Pa Protocol name	Variable name	Type	Changeable
41459978Smckusick.It ip	forwarding	integer	yes
41559978Smckusick.It ip	redirect	integer	yes
41659978Smckusick.It ip	ttl	integer	yes
41759978Smckusick.It icmp	maskrepl	integer	yes
41859978Smckusick.It udp	checksum	integer	yes
41959978Smckusick.El
42059978Smckusick.Pp
42159978SmckusickThe variables are as follows:
42259978Smckusick.Bl -tag -width "123456"
42359978Smckusick.It Li ip.forwarding
42460011SmckusickReturns 1 when IP forwarding is enabled for the host,
42560011Smckusickmeaning that the host is acting as a router.
42659978Smckusick.It Li ip.redirect
42760011SmckusickReturns 1 when ICMP redirects may be sent by the host.
42860011SmckusickThis option is ignored unless the host is routing IP packets,
42960011Smckusickand should normally be enabled on all systems.
43059978Smckusick.It Li ip.ttl
43160011SmckusickThe maximum time-to-live (hop count) value for an IP packet sourced by
43260011Smckusickthe system.
43360011SmckusickThis value applies to normal transport protocols, not to ICMP.
43459978Smckusick.It Li icmp.maskrepl
43560011SmckusickReturns 1 if ICMP network mask requests are to be answered.
43659978Smckusick.It Li udp.checksum
43760011SmckusickReturns 1 when UDP checksums are being computed and checked.
43860011SmckusickDisabling UDP checksums is strongly discouraged.
43959978Smckusick.El
44059868Sbostic.Sh CTL_USER
44159868SbosticThe string and integer information available for the CTL_USER level
44259868Sbosticis detailed below.
44359868SbosticThe changeable column shows whether a process with appropriate
44459868Sbosticprivilege may change the value.
44559978Smckusick.Bl -column "USER_COLL_WEIGHTS_MAXXXX" "integerXXX" -offset indent
44659868Sbostic.It Sy Pa Second level name	Type	Changeable
44759868Sbostic.It USER\_BC\_BASE\_MAX	integer	no
44859868Sbostic.It USER\_BC\_DIM\_MAX	integer	no
44959868Sbostic.It USER\_BC\_SCALE\_MAX	integer	no
45059868Sbostic.It USER\_BC\_STRING\_MAX	integer	no
45159868Sbostic.It USER\_COLL\_WEIGHTS\_MAX	integer	no
45259868Sbostic.It USER\_CS\_PATH	string	no
45359868Sbostic.It USER\_EXPR\_NEST\_MAX	integer	no
45459868Sbostic.It USER\_LINE\_MAX	integer	no
45559868Sbostic.It USER\_POSIX2\_CHAR\_TERM	integer	no
45659868Sbostic.It USER\_POSIX2\_C\_BIND	integer	no
45759868Sbostic.It USER\_POSIX2\_C\_DEV	integer	no
45859868Sbostic.It USER\_POSIX2\_FORT\_DEV	integer	no
45959868Sbostic.It USER\_POSIX2\_FORT\_RUN	integer	no
46059868Sbostic.It USER\_POSIX2\_LOCALEDEF	integer	no
46159868Sbostic.It USER\_POSIX2\_SW\_DEV	integer	no
46259868Sbostic.It USER\_POSIX2\_UPE	integer	no
46359868Sbostic.It USER\_POSIX2\_VERSION	integer	no
46459868Sbostic.It USER\_RE\_DUP\_MAX	integer	no
465*60274Sbostic.It USER\_STREAM\_MAX	integer	no
466*60274Sbostic.It USER\_TZNAME\_MAX	integer	no
46759868Sbostic.El
46859868Sbostic.Bl -tag -width "123456"
46958507Smckusick.Pp
47059868Sbostic.It Li USER_BC_BASE_MAX
47159978SmckusickThe maximum ibase/obase values in the
47259868Sbostic.Xr bc 1
473*60274Sbosticutility.
47459868Sbostic.It Li USER_BC_DIM_MAX
47559978SmckusickThe maximum array size in the
47659868Sbostic.Xr bc 1
47759868Sbosticutility.
47859868Sbostic.It Li USER_BC_SCALE_MAX
47959978SmckusickThe maximum scale value in the
48059868Sbostic.Xr bc 1
48159868Sbosticutility.
48259868Sbostic.It Li USER_BC_STRING_MAX
48359978SmckusickThe maximum string length in the
48459868Sbostic.Xr bc 1
48559868Sbosticutility.
48659868Sbostic.It Li USER_COLL_WEIGHTS_MAX
48759978SmckusickThe maximum number of weights that can be assigned to any entry of
48859868Sbosticthe LC_COLLATE order keyword in the locale definition file.
48959868Sbostic.It Li USER_CS_PATH
49059868SbosticReturn a value for the
49159868Sbostic.Ev PATH
49259978Smckusickenvironment variable that finds all the standard utilities.
49359868Sbostic.It Li USER_EXPR_NEST_MAX
49459978SmckusickThe maximum number of expressions that can be nested within
49559868Sbosticparenthesis by the
49659868Sbostic.Xr expr 1
49759868Sbosticutility.
49859868Sbostic.It Li USER_LINE_MAX
49959978SmckusickThe maximum length in bytes of a text-processing utility's input
50059868Sbosticline.
50159868Sbostic.It Li USER_POSIX2_CHAR_TERM
50259868SbosticReturn 1 if the system supports at least one terminal type capable of
50359868Sbosticall operations described in POSIX 1003.2, otherwise 0.
50459868Sbostic.It Li USER_POSIX2_C_BIND
50559868SbosticReturn 1 if the system's C-language development facilities support the
50659868SbosticC-Language Bindings Option, otherwise 0.
50759868Sbostic.It Li USER_POSIX2_C_DEV
50859868SbosticReturn 1 if the system supports the C-Language Development Utilities Option,
50959868Sbosticotherwise 0.
51059868Sbostic.It Li USER_POSIX2_FORT_DEV
51159868SbosticReturn 1 if the system supports the FORTRAN Development Utilities Option,
51259868Sbosticotherwise 0.
51359868Sbostic.It Li USER_POSIX2_FORT_RUN
51459868SbosticReturn 1 if the system supports the FORTRAN Runtime Utilities Option,
51559868Sbosticotherwise 0.
51659868Sbostic.It Li USER_POSIX2_LOCALEDEF
51759868SbosticReturn 1 if the system supports the creation of locales, otherwise 0.
51859868Sbostic.It Li USER_POSIX2_SW_DEV
51959868SbosticReturn 1 if the system supports the Software Development Utilities Option,
52059868Sbosticotherwise 0.
52159868Sbostic.It Li USER_POSIX2_UPE
52259868SbosticReturn 1 if the system supports the User Portability Utilities Option,
52359868Sbosticotherwise 0.
52459868Sbostic.It Li USER_POSIX2_VERSION
525*60274SbosticThe version of POSIX 1003.2 with which the system attempts to comply.
52659868Sbostic.It Li USER_RE_DUP_MAX
52759978SmckusickThe maximum number of repeated occurrences of a regular expression
52859868Sbosticpermitted when using interval notation.
529*60274Sbostic.It Li USER_STREAM_MAX
530*60274SbosticThe minimum maximum number of streams that a process may have open
531*60274Sbosticat any one time.
532*60274Sbostic.It Li USER_TZNAME_MAX
533*60274SbosticThe minimum maximum number of types supported for the name of a
534*60274Sbostictimezone.
53559868Sbostic.El
53659868Sbostic.Sh CTL_VM
53759868SbosticThe string and integer information available for the CTL_VM level
53859868Sbosticis detailed below.
53959868SbosticThe changeable column shows whether a process with appropriate
54059868Sbosticprivilege may change the value.
54159978Smckusick.Bl -column "Second level nameXXXXXX" "struct loadavgXXX" -offset indent
54259868Sbostic.It Sy Pa Second level name	Type	Changeable
54359868Sbostic.It VM\_LOADAVG	struct loadavg	no
54459868Sbostic.It VM\_METER	struct vmtotal	no
54559868Sbostic.El
54658507Smckusick.Pp
54759868Sbostic.Bl -tag -width "123456"
54859868Sbostic.It Li VM_LOADAVG
54959868SbosticReturn the load average history.
55058507SmckusickThe returned data consists of a
55159978Smckusick.Va struct loadavg .
55259868Sbostic.It Li VM_METER
55359868SbosticReturn the system wide virtual memory statistics.
55459868SbosticThe returned data consists of a
55559978Smckusick.Va struct vmtotal .
55658507Smckusick.El
55759978Smckusick.Sh RETURN VALUES
55859978SmckusickIf the call to
55959978Smckusick.Nm sysctl
56059978Smckusickis successful, 0 is returned.
56159978SmckusickOtherwise \-1 is returned and
56259978Smckusick.Va errno
56359978Smckusickis set appropriately.
56458401Smckusick.Sh ERRORS
56559868SbosticThe following errors may be reported:
56658401Smckusick.Bl -tag -width Er
56758401Smckusick.It Bq Er EFAULT
56858401SmckusickThe buffer
56958401Smckusick.Fa name ,
57059868Sbostic.Fa oldp ,
57159868Sbostic.Fa newp ,
57258401Smckusickor length pointer
57358401Smckusick.Fa oldlenp
57458401Smckusickcontains an invalid address.
57558401Smckusick.It Bq Er EINVAL
57658401SmckusickThe
57758401Smckusick.Fa name
57858401Smckusickarray is less than two or greater than CTL_MAXNAME.
57958401Smckusick.It Bq Er EINVAL
58058401SmckusickA non-null
58159868Sbostic.Fa newp
58258401Smckusickis given and its specified length in
58358401Smckusick.Fa newlen
58458401Smckusickis too large or too small.
58558401Smckusick.It Bq Er ENOMEM
58658401SmckusickThe length pointed to by
58758401Smckusick.Fa oldlenp
58858401Smckusickis too short to hold the requested value.
58958401Smckusick.It Bq Er ENOTDIR
59058401SmckusickThe
59158401Smckusick.Fa name
59258401Smckusickarray specifies an intermediate rather than terminal name.
59358401Smckusick.It Bq Er EOPNOTSUPP
59458401SmckusickThe
59558401Smckusick.Fa name
59658401Smckusickarray specifies a value that is unknown.
59758401Smckusick.It Bq Er EPERM
59858401SmckusickAn attempt is made to set a read-only value.
59958401Smckusick.It Bq Er EPERM
60058401SmckusickA process without appropriate privilege attempts to set a value.
60158401Smckusick.El
60258401Smckusick.Sh FILES
60359978Smckusick.Bl -tag -width <netinet/icmpXvar.h> -compact
60458401Smckusick.It Pa <sys/sysctl.h>
60559868Sbosticdefinitions for top level identifiers, second level kernel and hardware
60659978Smckusickidentifiers, and user level identifiers
60758401Smckusick.It Pa <sys/socket.h>
60858401Smckusickdefinitions for second level network identifiers
60959978Smckusick.It Pa <sys/gmon.h>
61059978Smckusickdefinitions for third level profiling identifiers
61158401Smckusick.It Pa <vm/vm_param.h>
61258401Smckusickdefinitions for second level virtual memory identifiers
61359978Smckusick.It Pa <netinet/in.h>
61459978Smckusickdefinitions for third level Internet identifiers and
61559978Smckusickfourth level IP identifiers
61659978Smckusick.It Pa <netinet/icmp_var.h>
61759978Smckusickdefinitions for fourth level ICMP identifiers
61859978Smckusick.It Pa <netinet/udp_var.h>
61959978Smckusickdefinitions for fourth level UDP identifiers
62058401Smckusick.El
62158401Smckusick.Sh SEE ALSO
62258401Smckusick.Xr sysctl 8
62358401Smckusick.Sh HISTORY
62458507SmckusickThe
62559868Sbostic.Nm sysctl
62658507Smckusickfunction first appeared in 4.4BSD.
627