xref: /freebsd/lib/libc/gen/sysctl.3 (revision 3e0f6b97b257a96f7275e4442204263e44b16686)
1.\" Copyright (c) 1993
2.\"	The Regents of the University of California.  All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\" 3. All advertising materials mentioning features or use of this software
13.\"    must display the following acknowledgement:
14.\"	This product includes software developed by the University of
15.\"	California, Berkeley and its contributors.
16.\" 4. Neither the name of the University nor the names of its contributors
17.\"    may be used to endorse or promote products derived from this software
18.\"    without specific prior written permission.
19.\"
20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30.\" SUCH DAMAGE.
31.\"
32.\"	@(#)sysctl.3	8.1 (Berkeley) 6/4/93
33.\"
34.Dd "June 4, 1993"
35.Dt SYSCTL 3
36.Os
37.Sh NAME
38.Nm sysctl
39.Nd get or set system information
40.Sh SYNOPSIS
41.Fd #include <sys/types.h>
42.Fd #include <sys/sysctl.h>
43.Ft int
44.Fn sysctl "int *name" "u_int namelen" "void *oldp" "size_t *oldlenp" "void *newp" "size_t newlen"
45.Sh DESCRIPTION
46The
47.Fn sysctl
48function retrieves system information and allows processes with
49appropriate privileges to set system information.
50The information available from
51.Fn sysctl
52consists of integers, strings, and tables.
53Information may be retrieved and set from the command interface
54using the
55.Xr sysctl 8
56utility.
57.Pp
58Unless explicitly noted below,
59.Fn sysctl
60returns a consistent snapshot of the data requested.
61Consistency is obtained by locking the destination
62buffer into memory so that the data may be copied out without blocking.
63Calls to
64.Fn sysctl
65are serialized to avoid deadlock.
66.Pp
67The state is described using a ``Management Information Base'' (MIB)
68style name, listed in
69.Fa name ,
70which is a
71.Fa namelen
72length array of integers.
73.Pp
74The information is copied into the buffer specified by
75.Fa oldp .
76The size of the buffer is given by the location specified by
77.Fa oldlenp
78before the call,
79and that location gives the amount of data copied after a successful call
80and after a call that returns with the error code ENOMEM.
81If the amount of data available is greater
82than the size of the buffer supplied,
83the call supplies as much data as fits in the buffer provided
84and returns with the error code ENOMEM.
85If the old value is not desired,
86.Fa oldp
87and
88.Fa oldlenp
89should be set to NULL.
90.Pp
91The size of the available data can be determined by calling
92.Fn sysctl
93with a NULL parameter for
94.Fa oldp .
95The size of the available data will be returned in the location pointed to by
96.Fa oldlenp .
97For some operations, the amount of space may change often.
98For these operations,
99the system attempts to round up so that the returned size is
100large enough for a call to return the data shortly thereafter.
101.Pp
102To set a new value,
103.Fa newp
104is set to point to a buffer of length
105.Fa newlen
106from which the requested value is to be taken.
107If a new value is not to be set,
108.Fa newp
109should be set to NULL and
110.Fa newlen
111set to 0.
112.Pp
113The top level names are defined with a CTL_ prefix in
114.Pa <sys/sysctl.h> ,
115and are as follows.
116The next and subsequent levels down are found in the include files
117listed here, and described in separate sections below.
118.Pp
119.Bl -column CTLXMACHDEPXXX "Next level namesXXXXXX" -offset indent
120.It Sy Pa Name	Next level names	Description
121.It CTL\_DEBUG	sys/sysctl.h	Debugging
122.It CTL\_VFS	sys/sysctl.h	File system
123.It CTL\_HW	sys/sysctl.h	Generic CPU, I/O
124.It CTL\_KERN	sys/sysctl.h	High kernel limits
125.It CTL\_MACHDEP	sys/sysctl.h	Machine dependent
126.It CTL\_NET	sys/socket.h	Networking
127.It CTL\_USER	sys/sysctl.h	User-level
128.It CTL\_VM	vm/vm_param.h	Virtual memory
129.El
130.Pp
131For example, the following retrieves the maximum number of processes allowed
132in the system:
133.Pp
134.Bd -literal -offset indent -compact
135int mib[2], maxproc;
136size_t len;
137
138mib[0] = CTL_KERN;
139mib[1] = KERN_MAXPROC;
140len = sizeof(maxproc);
141sysctl(mib, 2, &maxproc, &len, NULL, 0);
142.Ed
143.Pp
144To retrieve the standard search path for the system utilities:
145.Pp
146.Bd -literal -offset indent -compact
147int mib[2];
148size_t len;
149char *p;
150
151mib[0] = CTL_USER;
152mib[1] = USER_CS_PATH;
153sysctl(mib, 2, NULL, &len, NULL, 0);
154p = malloc(len);
155sysctl(mib, 2, p, &len, NULL, 0);
156.Ed
157.Sh CTL_DEBUG
158The debugging variables vary from system to system.
159A debugging variable may be added or deleted without need to recompile
160.Fn sysctl
161to know about it.
162Each time it runs,
163.Fn sysctl
164gets the list of debugging variables from the kernel and
165displays their current values.
166The system defines twenty
167.Ns ( Va struct ctldebug )
168variables named
169.Nm debug0
170through
171.Nm debug19 .
172They are declared as separate variables so that they can be
173individually initialized at the location of their associated variable.
174The loader prevents multiple use of the same variable by issuing errors
175if a variable is initialized in more than one place.
176For example, to export the variable
177.Nm dospecialcheck
178as a debugging variable, the following declaration would be used:
179.Bd -literal -offset indent -compact
180int dospecialcheck = 1;
181struct ctldebug debug5 = { "dospecialcheck", &dospecialcheck };
182.Ed
183.Sh CTL_VFS
184There are currently no second level names for the file system.
185.Sh CTL_HW
186The string and integer information available for the CTL_HW level
187is detailed below.
188The changeable column shows whether a process with appropriate
189privilege may change the value.
190.Bl -column "Second level nameXXXXXX" integerXXX -offset indent
191.It Sy Pa Second level name	Type	Changeable
192.It HW\_MACHINE	string	no
193.It HW\_MODEL	string	no
194.It HW\_NCPU	integer	no
195.It HW\_BYTEORDER	integer	no
196.It HW\_PHYSMEM	integer	no
197.It HW\_USERMEM	integer	no
198.It HW\_PAGESIZE	integer	no
199.It HW\_FLOATINGPOINT	integer	no
200.\".It HW\_DISKNAMES	integer	no
201.\".It HW\_DISKSTATS	integer	no
202.El
203.Pp
204.Bl -tag -width "123456"
205.It Li HW_MACHINE
206The machine class.
207.It Li HW_MODEL
208The machine model
209.It Li HW_NCPU
210The number of cpus.
211.It Li HW_BYTEORDER
212The byteorder (4,321, or 1,234).
213.It Li HW_PHYSMEM
214The bytes of physical memory.
215.It Li HW_USERMEM
216The bytes of non-kernel memory.
217.It Li HW_PAGESIZE
218The software page size.
219.It Li HW_FLOATINGPOINT
220Nonzero if the floating point support is in hardware.
221.\".It Fa HW_DISKNAMES
222.\".It Fa HW_DISKSTATS
223.El
224.Sh CTL_KERN
225The string and integer information available for the CTL_KERN level
226is detailed below.
227The changeable column shows whether a process with appropriate
228privilege may change the value.
229The types of data currently available are process information,
230system vnodes, the open file entries, routing table entries,
231virtual memory statistics, load average history, and clock rate
232information.
233.Bl -column "KERNXMAXFILESPERPROCXXX" "struct clockrateXXX" -offset indent
234.It Sy Pa Second level name	Type	Changeable
235.It KERN\_ARGMAX	integer	no
236.It KERN\_BOOTFILE	string	yes
237.It KERN\_BOOTTIME	struct timeval	no
238.It KERN\_CLOCKRATE	struct clockinfo	no
239.It KERN\_FILE	struct file	no
240.It KERN\_HOSTID	integer	yes
241.It KERN\_HOSTNAME	string	yes
242.It KERN\_JOB\_CONTROL	integer	no
243.It KERN\_MAXFILES	integer	yes
244.It KERN\_MAXFILESPERPROC	integer	yes
245.It KERN\_MAXPROC	integer	yes
246.It KERN\_MAXPROCPERUID	integer	yes
247.It KERN\_MAXVNODES	integer	yes
248.It KERN\_NGROUPS	integer	no
249.It KERN\_NISDOMAINNAME	string	yes
250.It KERN\_OSRELDATE	integer	no
251.It KERN\_OSRELEASE	string	no
252.It KERN\_OSREV	integer	no
253.It KERN\_OSTYPE	string	no
254.It KERN\_POSIX1	integer	no
255.It KERN\_PROC	struct proc	no
256.It KERN\_PROF	node	not applicable
257.It KERN\_SAVED\_IDS	integer	no
258.It KERN\_SECURELVL	integer	raise only
259.It KERN\_UPDATEINTERVAL	integer	no
260.It KERN\_VERSION	string	no
261.It KERN\_VNODE	struct vnode	no
262.El
263.Pp
264.Bl -tag -width "123456"
265.It Li KERN_ARGMAX
266The maximum bytes of argument to
267.Xr execve 2 .
268.It Li KERN_BOOTFILE
269The full pathname of the file from which the kernel was loaded.
270.It Li KERN_BOOTTIME
271A
272.Va struct timeval
273structure is returned.
274This structure contains the time that the system was booted.
275.It Li KERN_CLOCKRATE
276A
277.Va struct clockinfo
278structure is returned.
279This structure contains the clock, statistics clock and profiling clock
280frequencies, and the number of micro-seconds per hz tick.
281.It Li KERN_FILE
282Return the entire file table.
283The returned data consists of a single
284.Va struct filehead
285followed by an array of
286.Va struct file ,
287whose size depends on the current number of such objects in the system.
288.It Li KERN_HOSTID
289Get or set the host id.
290.It Li KERN_HOSTNAME
291Get or set the hostname.
292.It Li KERN_JOB_CONTROL
293Return 1 if job control is available on this system, otherwise 0.
294.It Li KERN_MAXFILES
295The maximum number of files that may be open in the system.
296.It Li KERN_MAXFILESPERPROC
297The maximum number of files that may be open for a single process.
298This limit only applies to processes with an effective uid of nonzero
299at the time of the open request.
300Files that have already been opened are not affected if the limit
301or the effective uid is changed.
302.It Li KERN_MAXPROC
303The maximum number of concurrent processes the system will allow.
304.It Li KERN_MAXPROCPERUID
305The maximum number of concurrent processes the system will allow
306for a single effective uid.
307This limit only applies to processes with an effective uid of nonzero
308at the time of a fork request.
309Processes that have already been started are not affected if the limit
310is changed.
311.It Li KERN_MAXVNODES
312The maximum number of vnodes available on the system.
313.It Li KERN_NGROUPS
314The maximum number of supplemental groups.
315.It Li KERN_NISDOMAINNAME
316The name of the current YP/NIS domain.
317.It Li KERN_OSRELDATE
318The system release date in YYYYMM format
319(January 1996 is encoded as 199601).
320.It Li KERN_OSRELEASE
321The system release string.
322.It Li KERN_OSREV
323The system revision string.
324.It Li KERN_OSTYPE
325The system type string.
326.It Li KERN_POSIX1
327The version of ISO/IEC 9945 (POSIX 1003.1) with which the system
328attempts to comply.
329.It Li KERN_PROC
330Return the entire process table, or a subset of it.
331An array of
332.Va struct kinfo_proc
333structures is returned,
334whose size depends on the current number of such objects in the system.
335The third and fourth level names are as follows:
336.Bl -column "Third level nameXXXXXX" "Fourth level is:XXXXXX" -offset indent
337.It Pa Third level name	Fourth level is:
338.It KERN\_PROC\_ALL	None
339.It KERN\_PROC\_PID	A process ID
340.It KERN\_PROC\_PGRP	A process group
341.It KERN\_PROC\_TTY	A tty device
342.It KERN\_PROC\_UID	A user ID
343.It KERN\_PROC\_RUID	A real user ID
344.El
345.It Li KERN_PROF
346Return profiling information about the kernel.
347If the kernel is not compiled for profiling,
348attempts to retrieve any of the KERN_PROF values will
349fail with EOPNOTSUPP.
350The third level names for the string and integer profiling information
351is detailed below.
352The changeable column shows whether a process with appropriate
353privilege may change the value.
354.Bl -column "GPROFXGMONPARAMXXX" "struct gmonparamXXX" -offset indent
355.It Sy Pa Third level name	Type	Changeable
356.It GPROF\_STATE	integer	yes
357.It GPROF\_COUNT	u_short[\|]	yes
358.It GPROF\_FROMS	u_short[\|]	yes
359.It GPROF\_TOS	struct tostruct	yes
360.It GPROF\_GMONPARAM	struct gmonparam	no
361.El
362.Pp
363The variables are as follows:
364.Bl -tag -width "123456"
365.It Li GPROF_STATE
366Returns GMON_PROF_ON or GMON_PROF_OFF to show that profiling
367is running or stopped.
368.It Li GPROF_COUNT
369Array of statistical program counter counts.
370.It Li GPROF_FROMS
371Array indexed by program counter of call-from points.
372.It Li GPROF_TOS
373Array of
374.Va struct tostruct
375describing destination of calls and their counts.
376.It Li GPROF_GMONPARAM
377Structure giving the sizes of the above arrays.
378.El
379.It Li KERN_SAVED_IDS
380Returns 1 if saved set-group and saved set-user ID is available.
381.It Li KERN_SECURELVL
382The system security level.
383This level may be raised by processes with appropriate privilege.
384It may only be lowered by process 1.
385.It Li KERN_VERSION
386The system version string.
387.It Li KERN_VNODE
388Return the entire vnode table.
389Note, the vnode table is not necessarily a consistent snapshot of
390the system.
391The returned data consists of an array whose size depends on the
392current number of such objects in the system.
393Each element of the array contains the kernel address of a vnode
394.Va struct vnode *
395followed by the vnode itself
396.Va struct vnode .
397.It Li KERN_UPDATEINTERVAL
398The interval between
399.Xr sync 2
400calls in the
401.Xr update 4
402process.
403.El
404.Sh CTL_MACHDEP
405The set of variables defined is architecture dependent.
406The following variables are defined for the i386 architecture.
407.Bl -column "CONSOLE_DEVICEXXX" "struct bootinfoXXX" -offset indent
408.It Sy Pa Second level name	Type	Changeable
409.It Li CPU_CONSDEV	dev_t	no
410.It Li CPU_ADJKERNTZ	int	yes
411.It Li CPU_DISRTCSET	int	yes
412.It Li CPU_BOOTINFO	struct bootinfo	no
413.It Li CPU_WALLCLOCK	int	yes
414.El
415.Sh CTL_NET
416The string and integer information available for the CTL_NET level
417is detailed below.
418The changeable column shows whether a process with appropriate
419privilege may change the value.
420.Bl -column "Second level nameXXXXXX" "routing messagesXXX" -offset indent
421.It Sy Pa Second level name	Type	Changeable
422.It PF\_ROUTE	routing messages	no
423.It PF\_INET	internet values	yes
424.El
425.Pp
426.Bl -tag -width "123456"
427.It Li PF_ROUTE
428Return the entire routing table or a subset of it.
429The data is returned as a sequence of routing messages (see
430.Xr route 4
431for the header file, format and meaning).
432The length of each message is contained in the message header.
433.Pp
434The third level name is a protocol number, which is currently always 0.
435The fourth level name is an address family, which may be set to 0 to
436select all address families.
437The fifth and sixth level names are as follows:
438.Bl -column "Fifth level nameXXXXXX" "Sixth level is:XXX" -offset indent
439.It Pa Fifth level name	Sixth level is:
440.It NET\_RT\_FLAGS	rtflags
441.It NET\_RT\_DUMP	None
442.It NET\_RT\_IFLIST	None
443.El
444.It Li PF_INET
445Get or set various global information about the internet protocols.
446The third level name is the protocol.
447The fourth level name is the variable name.
448The currently defined protocols and names are:
449.Bl -column "Protocol nameXXXXXX" "Variable nameXXX" "integerXXX" -offset indent
450.It Pa Protocol name	Variable name	Type	Changeable
451.It ip	forwarding	integer	yes
452.It ip	redirect	integer	yes
453.It ip	ttl	integer	yes
454.It icmp	maskrepl	integer	yes
455.It udp	checksum	integer	yes
456.El
457.Pp
458The variables are as follows:
459.Bl -tag -width "123456"
460.It Li ip.forwarding
461Returns 1 when IP forwarding is enabled for the host,
462meaning that the host is acting as a router.
463.It Li ip.redirect
464Returns 1 when ICMP redirects may be sent by the host.
465This option is ignored unless the host is routing IP packets,
466and should normally be enabled on all systems.
467.It Li ip.ttl
468The maximum time-to-live (hop count) value for an IP packet sourced by
469the system.
470This value applies to normal transport protocols, not to ICMP.
471.It Li icmp.maskrepl
472Returns 1 if ICMP network mask requests are to be answered.
473.It Li udp.checksum
474Returns 1 when UDP checksums are being computed and checked.
475Disabling UDP checksums is strongly discouraged.
476.El
477.Sh CTL_USER
478The string and integer information available for the CTL_USER level
479is detailed below.
480The changeable column shows whether a process with appropriate
481privilege may change the value.
482.Bl -column "USER_COLL_WEIGHTS_MAXXXX" "integerXXX" -offset indent
483.It Sy Pa Second level name	Type	Changeable
484.It USER\_BC\_BASE\_MAX	integer	no
485.It USER\_BC\_DIM\_MAX	integer	no
486.It USER\_BC\_SCALE\_MAX	integer	no
487.It USER\_BC\_STRING\_MAX	integer	no
488.It USER\_COLL\_WEIGHTS\_MAX	integer	no
489.It USER\_CS\_PATH	string	no
490.It USER\_EXPR\_NEST\_MAX	integer	no
491.It USER\_LINE\_MAX	integer	no
492.It USER\_POSIX2\_CHAR\_TERM	integer	no
493.It USER\_POSIX2\_C\_BIND	integer	no
494.It USER\_POSIX2\_C\_DEV	integer	no
495.It USER\_POSIX2\_FORT\_DEV	integer	no
496.It USER\_POSIX2\_FORT\_RUN	integer	no
497.It USER\_POSIX2\_LOCALEDEF	integer	no
498.It USER\_POSIX2\_SW\_DEV	integer	no
499.It USER\_POSIX2\_UPE	integer	no
500.It USER\_POSIX2\_VERSION	integer	no
501.It USER\_RE\_DUP\_MAX	integer	no
502.It USER\_STREAM\_MAX	integer	no
503.It USER\_TZNAME\_MAX	integer	no
504.El
505.Bl -tag -width "123456"
506.Pp
507.It Li USER_BC_BASE_MAX
508The maximum ibase/obase values in the
509.Xr bc 1
510utility.
511.It Li USER_BC_DIM_MAX
512The maximum array size in the
513.Xr bc 1
514utility.
515.It Li USER_BC_SCALE_MAX
516The maximum scale value in the
517.Xr bc 1
518utility.
519.It Li USER_BC_STRING_MAX
520The maximum string length in the
521.Xr bc 1
522utility.
523.It Li USER_COLL_WEIGHTS_MAX
524The maximum number of weights that can be assigned to any entry of
525the LC_COLLATE order keyword in the locale definition file.
526.It Li USER_CS_PATH
527Return a value for the
528.Ev PATH
529environment variable that finds all the standard utilities.
530.It Li USER_EXPR_NEST_MAX
531The maximum number of expressions that can be nested within
532parenthesis by the
533.Xr expr 1
534utility.
535.It Li USER_LINE_MAX
536The maximum length in bytes of a text-processing utility's input
537line.
538.It Li USER_POSIX2_CHAR_TERM
539Return 1 if the system supports at least one terminal type capable of
540all operations described in POSIX 1003.2, otherwise 0.
541.It Li USER_POSIX2_C_BIND
542Return 1 if the system's C-language development facilities support the
543C-Language Bindings Option, otherwise 0.
544.It Li USER_POSIX2_C_DEV
545Return 1 if the system supports the C-Language Development Utilities Option,
546otherwise 0.
547.It Li USER_POSIX2_FORT_DEV
548Return 1 if the system supports the FORTRAN Development Utilities Option,
549otherwise 0.
550.It Li USER_POSIX2_FORT_RUN
551Return 1 if the system supports the FORTRAN Runtime Utilities Option,
552otherwise 0.
553.It Li USER_POSIX2_LOCALEDEF
554Return 1 if the system supports the creation of locales, otherwise 0.
555.It Li USER_POSIX2_SW_DEV
556Return 1 if the system supports the Software Development Utilities Option,
557otherwise 0.
558.It Li USER_POSIX2_UPE
559Return 1 if the system supports the User Portability Utilities Option,
560otherwise 0.
561.It Li USER_POSIX2_VERSION
562The version of POSIX 1003.2 with which the system attempts to comply.
563.It Li USER_RE_DUP_MAX
564The maximum number of repeated occurrences of a regular expression
565permitted when using interval notation.
566.It Li USER_STREAM_MAX
567The minimum maximum number of streams that a process may have open
568at any one time.
569.It Li USER_TZNAME_MAX
570The minimum maximum number of types supported for the name of a
571timezone.
572.El
573.Sh CTL_VM
574The string and integer information available for the CTL_VM level
575is detailed below.
576The changeable column shows whether a process with appropriate
577privilege may change the value.
578.Bl -column "Second level nameXXXXXX" "struct loadavgXXX" -offset indent
579.It Sy Pa Second level name	Type	Changeable
580.It VM\_LOADAVG	struct loadavg	no
581.It VM\_METER	struct vmtotal	no
582.El
583.Pp
584.Bl -tag -width "123456"
585.It Li VM_LOADAVG
586Return the load average history.
587The returned data consists of a
588.Va struct loadavg .
589.It Li VM_METER
590Return the system wide virtual memory statistics.
591The returned data consists of a
592.Va struct vmtotal .
593.El
594.Sh RETURN VALUES
595If the call to
596.Fn sysctl
597is successful, 0 is returned.
598Otherwise \-1 is returned and
599.Va errno
600is set appropriately.
601.Sh ERRORS
602The following errors may be reported:
603.Bl -tag -width Er
604.It Bq Er EFAULT
605The buffer
606.Fa name ,
607.Fa oldp ,
608.Fa newp ,
609or length pointer
610.Fa oldlenp
611contains an invalid address.
612.It Bq Er EINVAL
613The
614.Fa name
615array is less than two or greater than CTL_MAXNAME.
616.It Bq Er EINVAL
617A non-null
618.Fa newp
619is given and its specified length in
620.Fa newlen
621is too large or too small.
622.It Bq Er ENOMEM
623The length pointed to by
624.Fa oldlenp
625is too short to hold the requested value.
626.It Bq Er ENOTDIR
627The
628.Fa name
629array specifies an intermediate rather than terminal name.
630.It Bq Er EOPNOTSUPP
631The
632.Fa name
633array specifies a value that is unknown.
634.It Bq Er EPERM
635An attempt is made to set a read-only value.
636.It Bq Er EPERM
637A process without appropriate privilege attempts to set a value.
638.El
639.Sh FILES
640.Bl -tag -width <netinet/icmpXvar.h> -compact
641.It Pa <sys/sysctl.h>
642definitions for top level identifiers, second level kernel and hardware
643identifiers, and user level identifiers
644.It Pa <sys/socket.h>
645definitions for second level network identifiers
646.It Pa <sys/gmon.h>
647definitions for third level profiling identifiers
648.It Pa <vm/vm_param.h>
649definitions for second level virtual memory identifiers
650.It Pa <netinet/in.h>
651definitions for third level Internet identifiers and
652fourth level IP identifiers
653.It Pa <netinet/icmp_var.h>
654definitions for fourth level ICMP identifiers
655.It Pa <netinet/udp_var.h>
656definitions for fourth level UDP identifiers
657.El
658.Sh SEE ALSO
659.Xr sysctl 8
660.Sh HISTORY
661The
662.Fn sysctl
663function first appeared in
664.Bx 4.4 .
665