]>
Commit | Line | Data |
---|---|---|
5b2abdfb A |
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.4 (Berkeley) 5/9/95 | |
9385eb3d | 33 | .\" $FreeBSD: src/lib/libc/gen/sysctl.3,v 1.57 2002/12/19 09:40:21 ru Exp $ |
5b2abdfb A |
34 | .\" |
35 | .Dd January 23, 2001 | |
36 | .Dt SYSCTL 3 | |
37 | .Os | |
38 | .Sh NAME | |
39 | .Nm sysctl , | |
40 | .Nm sysctlbyname , | |
41 | .Nm sysctlnametomib | |
42 | .Nd get or set system information | |
43 | .Sh LIBRARY | |
44 | .Lb libc | |
45 | .Sh SYNOPSIS | |
46 | .In sys/types.h | |
47 | .In sys/sysctl.h | |
48 | .Ft int | |
49 | .Fn sysctl "int *name" "u_int namelen" "void *oldp" "size_t *oldlenp" "void *newp" "size_t newlen" | |
50 | .Ft int | |
51 | .Fn sysctlbyname "const char *name" "void *oldp" "size_t *oldlenp" "void *newp" "size_t newlen" | |
52 | .Ft int | |
53 | .Fn sysctlnametomib "const char *name" "int *mibp" "size_t *sizep" | |
54 | .Sh DESCRIPTION | |
55 | The | |
56 | .Fn sysctl | |
57 | function retrieves system information and allows processes with | |
58 | appropriate privileges to set system information. | |
59 | The information available from | |
60 | .Fn sysctl | |
61 | consists of integers, strings, and tables. | |
62 | Information may be retrieved and set from the command interface | |
63 | using the | |
64 | .Xr sysctl 8 | |
65 | utility. | |
66 | .Pp | |
67 | Unless explicitly noted below, | |
68 | .Fn sysctl | |
69 | returns a consistent snapshot of the data requested. | |
70 | Consistency is obtained by locking the destination | |
71 | buffer into memory so that the data may be copied out without blocking. | |
72 | Calls to | |
73 | .Fn sysctl | |
74 | are serialized to avoid deadlock. | |
75 | .Pp | |
76 | The state is described using a ``Management Information Base'' (MIB) | |
77 | style name, listed in | |
78 | .Fa name , | |
79 | which is a | |
80 | .Fa namelen | |
81 | length array of integers. | |
82 | .Pp | |
83 | The | |
84 | .Fn sysctlbyname | |
85 | function accepts an ASCII representation of the name and internally | |
86 | looks up the integer name vector. Apart from that, it behaves the same | |
87 | as the standard | |
88 | .Fn sysctl | |
89 | function. | |
90 | .Pp | |
91 | The information is copied into the buffer specified by | |
92 | .Fa oldp . | |
93 | The size of the buffer is given by the location specified by | |
94 | .Fa oldlenp | |
95 | before the call, | |
96 | and that location gives the amount of data copied after a successful call | |
97 | and after a call that returns with the error code | |
98 | .Er ENOMEM . | |
99 | If the amount of data available is greater | |
100 | than the size of the buffer supplied, | |
101 | the call supplies as much data as fits in the buffer provided | |
102 | and returns with the error code | |
103 | .Er ENOMEM . | |
104 | If the old value is not desired, | |
105 | .Fa oldp | |
106 | and | |
107 | .Fa oldlenp | |
108 | should be set to NULL. | |
109 | .Pp | |
110 | The size of the available data can be determined by calling | |
111 | .Fn sysctl | |
9385eb3d A |
112 | with the |
113 | .Dv NULL | |
114 | argument for | |
5b2abdfb A |
115 | .Fa oldp . |
116 | The size of the available data will be returned in the location pointed to by | |
117 | .Fa oldlenp . | |
118 | For some operations, the amount of space may change often. | |
119 | For these operations, | |
120 | the system attempts to round up so that the returned size is | |
121 | large enough for a call to return the data shortly thereafter. | |
122 | .Pp | |
123 | To set a new value, | |
124 | .Fa newp | |
125 | is set to point to a buffer of length | |
126 | .Fa newlen | |
127 | from which the requested value is to be taken. | |
128 | If a new value is not to be set, | |
129 | .Fa newp | |
130 | should be set to NULL and | |
131 | .Fa newlen | |
132 | set to 0. | |
133 | .Pp | |
134 | The | |
135 | .Fn sysctlnametomib | |
136 | function accepts an ASCII representation of the name, | |
137 | looks up the integer name vector, | |
138 | and returns the numeric representation in the mib array pointed to by | |
139 | .Fa mibp . | |
140 | The number of elements in the mib array is given by the location specified by | |
141 | .Fa sizep | |
142 | before the call, | |
143 | and that location gives the number of entries copied after a successful call. | |
144 | The resulting | |
145 | .Fa mib | |
146 | and | |
147 | .Fa size | |
148 | may be used in subsequent | |
149 | .Fn sysctl | |
150 | calls to get the data associated with the requested ASCII name. | |
151 | This interface is intended for use by applications that want to | |
152 | repeatedly request the same variable (the | |
153 | .Fn sysctl | |
154 | function runs in about a third the time as the same request made via the | |
155 | .Fn sysctlbyname | |
156 | function). | |
157 | The | |
9385eb3d | 158 | .Fn sysctlnametomib |
5b2abdfb A |
159 | function is also useful for fetching mib prefixes and then adding |
160 | a final component. | |
161 | For example, to fetch process information | |
162 | for processes with pid's less than 100: | |
163 | .Pp | |
164 | .Bd -literal -offset indent -compact | |
165 | int i, mib[4]; | |
166 | size_t len; | |
167 | struct kinfo_proc kp; | |
168 | ||
169 | /* Fill out the first three components of the mib */ | |
170 | len = 4; | |
171 | sysctlnametomib("kern.proc.pid", mib, &len); | |
172 | ||
173 | /* Fetch and print entries for pid's < 100 */ | |
174 | for (i = 0; i < 100; i++) { | |
175 | mib[3] = i; | |
176 | len = sizeof(kp); | |
177 | if (sysctl(mib, 4, &kp, &len, NULL, 0) == -1) | |
178 | perror("sysctl"); | |
179 | else if (len > 0) | |
180 | printkproc(&kp); | |
181 | } | |
182 | .Ed | |
183 | .Pp | |
184 | The top level names are defined with a CTL_ prefix in | |
185 | .Aq Pa sys/sysctl.h , | |
186 | and are as follows. | |
187 | The next and subsequent levels down are found in the include files | |
188 | listed here, and described in separate sections below. | |
189 | .Pp | |
190 | .Bl -column CTLXMACHDEPXXX "Next level namesXXXXXX" -offset indent | |
191 | .It Sy "Name Next level names Description" | |
192 | .It "CTL\_DEBUG sys/sysctl.h Debugging" | |
9385eb3d | 193 | .It "CTL\_VFS sys/mount.h File system" |
5b2abdfb A |
194 | .It "CTL\_HW sys/sysctl.h Generic CPU, I/O" |
195 | .It "CTL\_KERN sys/sysctl.h High kernel limits" | |
196 | .It "CTL\_MACHDEP sys/sysctl.h Machine dependent" | |
197 | .It "CTL\_NET sys/socket.h Networking" | |
198 | .It "CTL\_USER sys/sysctl.h User-level" | |
199 | .It "CTL\_VM vm/vm_param.h Virtual memory" | |
200 | .El | |
201 | .Pp | |
202 | For example, the following retrieves the maximum number of processes allowed | |
203 | in the system: | |
204 | .Pp | |
205 | .Bd -literal -offset indent -compact | |
206 | int mib[2], maxproc; | |
207 | size_t len; | |
208 | ||
209 | mib[0] = CTL_KERN; | |
210 | mib[1] = KERN_MAXPROC; | |
211 | len = sizeof(maxproc); | |
212 | sysctl(mib, 2, &maxproc, &len, NULL, 0); | |
213 | .Ed | |
214 | .Pp | |
215 | To retrieve the standard search path for the system utilities: | |
216 | .Pp | |
217 | .Bd -literal -offset indent -compact | |
218 | int mib[2]; | |
219 | size_t len; | |
220 | char *p; | |
221 | ||
222 | mib[0] = CTL_USER; | |
223 | mib[1] = USER_CS_PATH; | |
224 | sysctl(mib, 2, NULL, &len, NULL, 0); | |
225 | p = malloc(len); | |
226 | sysctl(mib, 2, p, &len, NULL, 0); | |
227 | .Ed | |
228 | .Ss CTL_DEBUG | |
229 | The debugging variables vary from system to system. | |
230 | A debugging variable may be added or deleted without need to recompile | |
231 | .Fn sysctl | |
232 | to know about it. | |
233 | Each time it runs, | |
234 | .Fn sysctl | |
235 | gets the list of debugging variables from the kernel and | |
236 | displays their current values. | |
237 | The system defines twenty | |
9385eb3d | 238 | .Pq Vt "struct ctldebug" |
5b2abdfb | 239 | variables named |
9385eb3d | 240 | .Va debug0 |
5b2abdfb | 241 | through |
9385eb3d | 242 | .Va debug19 . |
5b2abdfb A |
243 | They are declared as separate variables so that they can be |
244 | individually initialized at the location of their associated variable. | |
245 | The loader prevents multiple use of the same variable by issuing errors | |
246 | if a variable is initialized in more than one place. | |
247 | For example, to export the variable | |
9385eb3d | 248 | .Va dospecialcheck |
5b2abdfb | 249 | as a debugging variable, the following declaration would be used: |
9385eb3d | 250 | .Pp |
5b2abdfb A |
251 | .Bd -literal -offset indent -compact |
252 | int dospecialcheck = 1; | |
253 | struct ctldebug debug5 = { "dospecialcheck", &dospecialcheck }; | |
254 | .Ed | |
255 | .Ss CTL_VFS | |
256 | A distinguished second level name, VFS_GENERIC, | |
9385eb3d | 257 | is used to get general information about all file systems. |
5b2abdfb | 258 | One of its third level identifiers is VFS_MAXTYPENUM |
9385eb3d | 259 | that gives the highest valid file system type number. |
5b2abdfb | 260 | Its other third level identifier is VFS_CONF that |
9385eb3d | 261 | returns configuration information about the file system |
5b2abdfb A |
262 | type given as a fourth level identifier (see |
263 | .Xr getvfsbyname 3 | |
264 | as an example of its use). | |
265 | The remaining second level identifiers are the | |
9385eb3d | 266 | file system type number returned by a |
5b2abdfb A |
267 | .Xr statfs 2 |
268 | call or from VFS_CONF. | |
9385eb3d | 269 | The third level identifiers available for each file system |
5b2abdfb | 270 | are given in the header file that defines the mount |
9385eb3d | 271 | argument structure for that file system. |
5b2abdfb A |
272 | .Ss CTL_HW |
273 | The string and integer information available for the CTL_HW level | |
274 | is detailed below. | |
275 | The changeable column shows whether a process with appropriate | |
276 | privilege may change the value. | |
277 | .Bl -column "Second level nameXXXXXX" integerXXX -offset indent | |
278 | .It Sy "Second level name Type Changeable" | |
279 | .It "HW\_MACHINE string no" | |
280 | .It "HW\_MODEL string no" | |
281 | .It "HW\_NCPU integer no" | |
282 | .It "HW\_BYTEORDER integer no" | |
283 | .It "HW\_PHYSMEM integer no" | |
284 | .It "HW\_USERMEM integer no" | |
285 | .It "HW\_PAGESIZE integer no" | |
286 | .It "HW\_FLOATINGPOINT integer no" | |
287 | .It "HW\_MACHINE\_ARCH string no" | |
288 | .\".It "HW\_DISKNAMES integer no" | |
289 | .\".It "HW\_DISKSTATS integer no" | |
290 | .El | |
291 | .Pp | |
292 | .Bl -tag -width 6n | |
293 | .It Li HW_MACHINE | |
294 | The machine class. | |
295 | .It Li HW_MODEL | |
296 | The machine model | |
297 | .It Li HW_NCPU | |
298 | The number of cpus. | |
299 | .It Li HW_BYTEORDER | |
300 | The byteorder (4,321, or 1,234). | |
301 | .It Li HW_PHYSMEM | |
302 | The bytes of physical memory. | |
303 | .It Li HW_USERMEM | |
304 | The bytes of non-kernel memory. | |
305 | .It Li HW_PAGESIZE | |
306 | The software page size. | |
307 | .It Li HW_FLOATINGPOINT | |
308 | Nonzero if the floating point support is in hardware. | |
309 | .It Li HW_MACHINE_ARCH | |
310 | The machine dependent architecture type. | |
311 | .\".It Fa HW_DISKNAMES | |
312 | .\".It Fa HW_DISKSTATS | |
313 | .El | |
314 | .Ss CTL_KERN | |
315 | The string and integer information available for the CTL_KERN level | |
316 | is detailed below. | |
317 | The changeable column shows whether a process with appropriate | |
318 | privilege may change the value. | |
319 | The types of data currently available are process information, | |
320 | system vnodes, the open file entries, routing table entries, | |
321 | virtual memory statistics, load average history, and clock rate | |
322 | information. | |
323 | .Bl -column "KERNXMAXFILESPERPROCXXX" "struct clockrateXXX" -offset indent | |
324 | .It Sy "Second level name Type Changeable" | |
325 | .It "KERN\_ARGMAX integer no" | |
326 | .It "KERN\_BOOTFILE string yes" | |
327 | .It "KERN\_BOOTTIME struct timeval no" | |
328 | .It "KERN\_CLOCKRATE struct clockinfo no" | |
329 | .It "KERN\_FILE struct file no" | |
330 | .It "KERN\_HOSTID integer yes" | |
331 | .It "KERN\_HOSTNAME string yes" | |
332 | .It "KERN\_JOB\_CONTROL integer no" | |
333 | .It "KERN\_MAXFILES integer yes" | |
334 | .It "KERN\_MAXFILESPERPROC integer yes" | |
335 | .It "KERN\_MAXPROC integer no" | |
336 | .It "KERN\_MAXPROCPERUID integer yes" | |
337 | .It "KERN\_MAXVNODES integer yes" | |
338 | .It "KERN\_NGROUPS integer no" | |
339 | .It "KERN\_NISDOMAINNAME string yes" | |
340 | .It "KERN\_OSRELDATE integer no" | |
341 | .It "KERN\_OSRELEASE string no" | |
342 | .It "KERN\_OSREV integer no" | |
343 | .It "KERN\_OSTYPE string no" | |
344 | .It "KERN\_POSIX1 integer no" | |
345 | .It "KERN\_PROC struct proc no" | |
346 | .It "KERN\_PROF node not applicable" | |
347 | .It "KERN\_QUANTUM integer yes" | |
348 | .It "KERN\_SAVED\_IDS integer no" | |
349 | .It "KERN\_SECURELVL integer raise only" | |
350 | .It "KERN\_UPDATEINTERVAL integer no" | |
351 | .It "KERN\_VERSION string no" | |
352 | .It "KERN\_VNODE struct vnode no" | |
353 | .El | |
354 | .Pp | |
355 | .Bl -tag -width 6n | |
356 | .It Li KERN_ARGMAX | |
357 | The maximum bytes of argument to | |
358 | .Xr execve 2 . | |
359 | .It Li KERN_BOOTFILE | |
360 | The full pathname of the file from which the kernel was loaded. | |
361 | .It Li KERN_BOOTTIME | |
362 | A | |
363 | .Va struct timeval | |
364 | structure is returned. | |
365 | This structure contains the time that the system was booted. | |
366 | .It Li KERN_CLOCKRATE | |
367 | A | |
368 | .Va struct clockinfo | |
369 | structure is returned. | |
370 | This structure contains the clock, statistics clock and profiling clock | |
371 | frequencies, the number of micro-seconds per hz tick and the skew rate. | |
372 | .It Li KERN_FILE | |
373 | Return the entire file table. | |
374 | The returned data consists of a single | |
375 | .Va struct filehead | |
376 | followed by an array of | |
377 | .Va struct file , | |
378 | whose size depends on the current number of such objects in the system. | |
379 | .It Li KERN_HOSTID | |
380 | Get or set the host id. | |
381 | .It Li KERN_HOSTNAME | |
382 | Get or set the hostname. | |
383 | .It Li KERN_JOB_CONTROL | |
384 | Return 1 if job control is available on this system, otherwise 0. | |
385 | .It Li KERN_MAXFILES | |
386 | The maximum number of files that may be open in the system. | |
387 | .It Li KERN_MAXFILESPERPROC | |
388 | The maximum number of files that may be open for a single process. | |
389 | This limit only applies to processes with an effective uid of nonzero | |
390 | at the time of the open request. | |
391 | Files that have already been opened are not affected if the limit | |
392 | or the effective uid is changed. | |
393 | .It Li KERN_MAXPROC | |
394 | The maximum number of concurrent processes the system will allow. | |
395 | .It Li KERN_MAXPROCPERUID | |
396 | The maximum number of concurrent processes the system will allow | |
397 | for a single effective uid. | |
398 | This limit only applies to processes with an effective uid of nonzero | |
399 | at the time of a fork request. | |
400 | Processes that have already been started are not affected if the limit | |
401 | is changed. | |
402 | .It Li KERN_MAXVNODES | |
403 | The maximum number of vnodes available on the system. | |
404 | .It Li KERN_NGROUPS | |
405 | The maximum number of supplemental groups. | |
406 | .It Li KERN_NISDOMAINNAME | |
407 | The name of the current YP/NIS domain. | |
408 | .It Li KERN_OSRELDATE | |
409 | The system release date in YYYYMM format | |
410 | (January 1996 is encoded as 199601). | |
411 | .It Li KERN_OSRELEASE | |
412 | The system release string. | |
413 | .It Li KERN_OSREV | |
414 | The system revision string. | |
415 | .It Li KERN_OSTYPE | |
416 | The system type string. | |
417 | .It Li KERN_POSIX1 | |
418 | The version of | |
419 | .St -p1003.1 | |
420 | with which the system | |
421 | attempts to comply. | |
422 | .It Li KERN_PROC | |
423 | Return the entire process table, or a subset of it. | |
424 | An array of pairs of | |
425 | .Va struct proc | |
426 | followed by corresponding | |
427 | .Va struct eproc | |
428 | structures is returned, | |
429 | whose size depends on the current number of such objects in the system. | |
430 | The third and fourth level names are as follows: | |
431 | .Bl -column "Third level nameXXXXXX" "Fourth level is:XXXXXX" -offset indent | |
432 | .It "Third level name Fourth level is:" | |
433 | .It "KERN\_PROC\_ALL None" | |
434 | .It "KERN\_PROC\_PID A process ID" | |
435 | .It "KERN\_PROC\_PGRP A process group" | |
436 | .It "KERN\_PROC\_TTY A tty device" | |
437 | .It "KERN\_PROC\_UID A user ID" | |
438 | .It "KERN\_PROC\_RUID A real user ID" | |
439 | .El | |
440 | .Pp | |
441 | If the third level name is KERN_PROC_ARGS then the command line argument | |
442 | array is returned in a flattened form, i.e. zero-terminated arguments | |
443 | follow each other. | |
444 | The total size of array is returned. | |
445 | It is also possible for a process to set its own process title this way. | |
446 | .Bl -column "Third level nameXXXXXX" "Fourth level is:XXXXXX" -offset indent | |
447 | .It Sy "Third level name Fourth level is:" | |
448 | .It "KERN\_PROC\_ARGS A process ID" | |
449 | .El | |
450 | .It Li KERN_PROF | |
451 | Return profiling information about the kernel. | |
452 | If the kernel is not compiled for profiling, | |
453 | attempts to retrieve any of the KERN_PROF values will | |
454 | fail with | |
9385eb3d | 455 | .Er ENOENT . |
5b2abdfb A |
456 | The third level names for the string and integer profiling information |
457 | is detailed below. | |
458 | The changeable column shows whether a process with appropriate | |
459 | privilege may change the value. | |
460 | .Bl -column "GPROFXGMONPARAMXXX" "struct gmonparamXXX" -offset indent | |
461 | .It Sy "Third level name Type Changeable" | |
462 | .It "GPROF\_STATE integer yes" | |
463 | .It "GPROF\_COUNT u_short[\|] yes" | |
464 | .It "GPROF\_FROMS u_short[\|] yes" | |
465 | .It "GPROF\_TOS struct tostruct yes" | |
466 | .It "GPROF\_GMONPARAM struct gmonparam no" | |
467 | .El | |
468 | .Pp | |
469 | The variables are as follows: | |
470 | .Bl -tag -width 6n | |
471 | .It Li GPROF_STATE | |
472 | Returns GMON_PROF_ON or GMON_PROF_OFF to show that profiling | |
473 | is running or stopped. | |
474 | .It Li GPROF_COUNT | |
475 | Array of statistical program counter counts. | |
476 | .It Li GPROF_FROMS | |
477 | Array indexed by program counter of call-from points. | |
478 | .It Li GPROF_TOS | |
479 | Array of | |
480 | .Va struct tostruct | |
481 | describing destination of calls and their counts. | |
482 | .It Li GPROF_GMONPARAM | |
483 | Structure giving the sizes of the above arrays. | |
484 | .El | |
485 | .It Li KERN_QUANTUM | |
486 | The maximum period of time, in microseconds, for which a process is allowed | |
487 | to run without being preempted if other processes are in the run queue. | |
488 | .It Li KERN_SAVED_IDS | |
489 | Returns 1 if saved set-group and saved set-user ID is available. | |
490 | .It Li KERN_SECURELVL | |
491 | The system security level. | |
492 | This level may be raised by processes with appropriate privilege. | |
493 | It may not be lowered. | |
494 | .It Li KERN_VERSION | |
495 | The system version string. | |
496 | .It Li KERN_VNODE | |
497 | Return the entire vnode table. | |
498 | Note, the vnode table is not necessarily a consistent snapshot of | |
499 | the system. | |
500 | The returned data consists of an array whose size depends on the | |
501 | current number of such objects in the system. | |
502 | Each element of the array contains the kernel address of a vnode | |
503 | .Va struct vnode * | |
504 | followed by the vnode itself | |
505 | .Va struct vnode . | |
506 | .El | |
507 | .Ss CTL_MACHDEP | |
508 | The set of variables defined is architecture dependent. | |
509 | The following variables are defined for the i386 architecture. | |
510 | .Bl -column "CONSOLE_DEVICEXXX" "struct bootinfoXXX" -offset indent | |
511 | .It Sy "Second level name Type Changeable" | |
512 | .It Li "CPU_CONSDEV dev_t no" | |
513 | .It Li "CPU_ADJKERNTZ int yes" | |
514 | .It Li "CPU_DISRTCSET int yes" | |
515 | .It Li "CPU_BOOTINFO struct bootinfo no" | |
516 | .It Li "CPU_WALLCLOCK int yes" | |
517 | .El | |
518 | .Ss CTL_NET | |
519 | The string and integer information available for the CTL_NET level | |
520 | is detailed below. | |
521 | The changeable column shows whether a process with appropriate | |
522 | privilege may change the value. | |
523 | .Bl -column "Second level nameXXXXXX" "routing messagesXXX" -offset indent | |
524 | .It Sy "Second level name Type Changeable" | |
525 | .It "PF\_ROUTE routing messages no" | |
526 | .It "PF\_INET IPv4 values yes" | |
527 | .It "PF\_INET6 IPv6 values yes" | |
528 | .El | |
529 | .Pp | |
530 | .Bl -tag -width 6n | |
531 | .It Li PF_ROUTE | |
532 | Return the entire routing table or a subset of it. | |
533 | The data is returned as a sequence of routing messages (see | |
534 | .Xr route 4 | |
535 | for the header file, format and meaning). | |
536 | The length of each message is contained in the message header. | |
537 | .Pp | |
538 | The third level name is a protocol number, which is currently always 0. | |
539 | The fourth level name is an address family, which may be set to 0 to | |
540 | select all address families. | |
541 | The fifth and sixth level names are as follows: | |
542 | .Bl -column "Fifth level nameXXXXXX" "Sixth level is:XXX" -offset indent | |
543 | .It Sy "Fifth level name Sixth level is:" | |
544 | .It "NET\_RT\_FLAGS rtflags" | |
545 | .It "NET\_RT\_DUMP None" | |
9385eb3d | 546 | .It "NET\_RT\_IFLIST 0 or if_index" |
5b2abdfb A |
547 | .El |
548 | .It Li PF_INET | |
549 | Get or set various global information about the IPv4 | |
550 | (Internet Protocol version 4). | |
551 | The third level name is the protocol. | |
552 | The fourth level name is the variable name. | |
553 | The currently defined protocols and names are: | |
554 | .Bl -column ProtocolXX VariableXX TypeXX ChangeableXX | |
555 | .It Sy "Protocol Variable Type Changeable" | |
556 | .It "icmp bmcastecho integer yes" | |
557 | .It "icmp maskrepl integer yes" | |
558 | .It "ip forwarding integer yes" | |
559 | .It "ip redirect integer yes" | |
560 | .It "ip ttl integer yes" | |
561 | .It "udp checksum integer yes" | |
562 | .El | |
563 | .Pp | |
564 | The variables are as follows: | |
565 | .Bl -tag -width 6n | |
566 | .It Li icmp.bmcastecho | |
567 | Returns 1 if an ICMP echo request to a broadcast or multicast address is | |
568 | to be answered. | |
569 | .It Li icmp.maskrepl | |
570 | Returns 1 if ICMP network mask requests are to be answered. | |
571 | .It Li ip.forwarding | |
572 | Returns 1 when IP forwarding is enabled for the host, | |
573 | meaning that the host is acting as a router. | |
574 | .It Li ip.redirect | |
575 | Returns 1 when ICMP redirects may be sent by the host. | |
576 | This option is ignored unless the host is routing IP packets, | |
577 | and should normally be enabled on all systems. | |
578 | .It Li ip.ttl | |
579 | The maximum time-to-live (hop count) value for an IP packet sourced by | |
580 | the system. | |
581 | This value applies to normal transport protocols, not to ICMP. | |
582 | .It Li udp.checksum | |
583 | Returns 1 when UDP checksums are being computed and checked. | |
584 | Disabling UDP checksums is strongly discouraged. | |
585 | .Pp | |
586 | For variables net.inet.*.ipsec, please refer to | |
587 | .Xr ipsec 4 . | |
588 | .El | |
589 | .It Li PF_INET6 | |
590 | Get or set various global information about the IPv6 | |
591 | (Internet Protocol version 6). | |
592 | The third level name is the protocol. | |
593 | The fourth level name is the variable name. | |
594 | .Pp | |
595 | For variables net.inet6.* please refer to | |
596 | .Xr inet6 4 . | |
597 | For variables net.inet6.*.ipsec6, please refer to | |
598 | .Xr ipsec 4 . | |
599 | .El | |
600 | .Ss CTL_USER | |
601 | The string and integer information available for the CTL_USER level | |
602 | is detailed below. | |
603 | The changeable column shows whether a process with appropriate | |
604 | privilege may change the value. | |
605 | .Bl -column "USER_COLL_WEIGHTS_MAXXXX" "integerXXX" -offset indent | |
606 | .It Sy "Second level name Type Changeable" | |
607 | .It "USER\_BC\_BASE\_MAX integer no" | |
608 | .It "USER\_BC\_DIM\_MAX integer no" | |
609 | .It "USER\_BC\_SCALE\_MAX integer no" | |
610 | .It "USER\_BC\_STRING\_MAX integer no" | |
611 | .It "USER\_COLL\_WEIGHTS\_MAX integer no" | |
612 | .It "USER\_CS\_PATH string no" | |
613 | .It "USER\_EXPR\_NEST\_MAX integer no" | |
614 | .It "USER\_LINE\_MAX integer no" | |
615 | .It "USER\_POSIX2\_CHAR\_TERM integer no" | |
616 | .It "USER\_POSIX2\_C\_BIND integer no" | |
617 | .It "USER\_POSIX2\_C\_DEV integer no" | |
618 | .It "USER\_POSIX2\_FORT\_DEV integer no" | |
619 | .It "USER\_POSIX2\_FORT\_RUN integer no" | |
620 | .It "USER\_POSIX2\_LOCALEDEF integer no" | |
621 | .It "USER\_POSIX2\_SW\_DEV integer no" | |
622 | .It "USER\_POSIX2\_UPE integer no" | |
623 | .It "USER\_POSIX2\_VERSION integer no" | |
624 | .It "USER\_RE\_DUP\_MAX integer no" | |
625 | .It "USER\_STREAM\_MAX integer no" | |
626 | .It "USER\_TZNAME\_MAX integer no" | |
627 | .El | |
628 | .Bl -tag -width 6n | |
629 | .Pp | |
630 | .It Li USER_BC_BASE_MAX | |
631 | The maximum ibase/obase values in the | |
632 | .Xr bc 1 | |
633 | utility. | |
634 | .It Li USER_BC_DIM_MAX | |
635 | The maximum array size in the | |
636 | .Xr bc 1 | |
637 | utility. | |
638 | .It Li USER_BC_SCALE_MAX | |
639 | The maximum scale value in the | |
640 | .Xr bc 1 | |
641 | utility. | |
642 | .It Li USER_BC_STRING_MAX | |
643 | The maximum string length in the | |
644 | .Xr bc 1 | |
645 | utility. | |
646 | .It Li USER_COLL_WEIGHTS_MAX | |
647 | The maximum number of weights that can be assigned to any entry of | |
648 | the LC_COLLATE order keyword in the locale definition file. | |
649 | .It Li USER_CS_PATH | |
650 | Return a value for the | |
651 | .Ev PATH | |
652 | environment variable that finds all the standard utilities. | |
653 | .It Li USER_EXPR_NEST_MAX | |
654 | The maximum number of expressions that can be nested within | |
655 | parenthesis by the | |
656 | .Xr expr 1 | |
657 | utility. | |
658 | .It Li USER_LINE_MAX | |
659 | The maximum length in bytes of a text-processing utility's input | |
660 | line. | |
661 | .It Li USER_POSIX2_CHAR_TERM | |
662 | Return 1 if the system supports at least one terminal type capable of | |
663 | all operations described in | |
664 | .St -p1003.2 , | |
665 | otherwise 0. | |
666 | .It Li USER_POSIX2_C_BIND | |
667 | Return 1 if the system's C-language development facilities support the | |
668 | C-Language Bindings Option, otherwise 0. | |
669 | .It Li USER_POSIX2_C_DEV | |
670 | Return 1 if the system supports the C-Language Development Utilities Option, | |
671 | otherwise 0. | |
672 | .It Li USER_POSIX2_FORT_DEV | |
673 | Return 1 if the system supports the FORTRAN Development Utilities Option, | |
674 | otherwise 0. | |
675 | .It Li USER_POSIX2_FORT_RUN | |
676 | Return 1 if the system supports the FORTRAN Runtime Utilities Option, | |
677 | otherwise 0. | |
678 | .It Li USER_POSIX2_LOCALEDEF | |
679 | Return 1 if the system supports the creation of locales, otherwise 0. | |
680 | .It Li USER_POSIX2_SW_DEV | |
681 | Return 1 if the system supports the Software Development Utilities Option, | |
682 | otherwise 0. | |
683 | .It Li USER_POSIX2_UPE | |
684 | Return 1 if the system supports the User Portability Utilities Option, | |
685 | otherwise 0. | |
686 | .It Li USER_POSIX2_VERSION | |
687 | The version of | |
688 | .St -p1003.2 | |
689 | with which the system attempts to comply. | |
690 | .It Li USER_RE_DUP_MAX | |
691 | The maximum number of repeated occurrences of a regular expression | |
692 | permitted when using interval notation. | |
693 | .It Li USER_STREAM_MAX | |
694 | The minimum maximum number of streams that a process may have open | |
695 | at any one time. | |
696 | .It Li USER_TZNAME_MAX | |
697 | The minimum maximum number of types supported for the name of a | |
698 | timezone. | |
699 | .El | |
700 | .Ss CTL_VM | |
701 | The string and integer information available for the CTL_VM level | |
702 | is detailed below. | |
703 | The changeable column shows whether a process with appropriate | |
704 | privilege may change the value. | |
705 | .Bl -column "Second level nameXXXXXX" "struct loadavgXXX" -offset indent | |
706 | .It Sy "Second level name Type Changeable" | |
707 | .It "VM\_LOADAVG struct loadavg no" | |
708 | .It "VM\_METER struct vmtotal no" | |
709 | .It "VM\_PAGEOUT\_ALGORITHM integer yes" | |
710 | .It "VM\_SWAPPING\_ENABLED integer maybe" | |
711 | .It "VM\_V\_CACHE\_MAX integer yes" | |
712 | .It "VM\_V\_CACHE\_MIN integer yes" | |
713 | .It "VM\_V\_FREE\_MIN integer yes" | |
714 | .It "VM\_V\_FREE\_RESERVED integer yes" | |
715 | .It "VM\_V\_FREE\_TARGET integer yes" | |
716 | .It "VM\_V\_INACTIVE\_TARGET integer yes" | |
717 | .It "VM\_V\_PAGEOUT\_FREE\_MIN integer yes" | |
718 | .El | |
719 | .Pp | |
720 | .Bl -tag -width 6n | |
721 | .It Li VM_LOADAVG | |
722 | Return the load average history. | |
723 | The returned data consists of a | |
724 | .Va struct loadavg . | |
725 | .It Li VM_METER | |
726 | Return the system wide virtual memory statistics. | |
727 | The returned data consists of a | |
728 | .Va struct vmtotal . | |
729 | .It Li VM_PAGEOUT_ALGORITHM | |
730 | 0 if the statistics-based page management algorithm is in use | |
731 | or 1 if the near-LRU algorithm is in use. | |
732 | .It Li VM_SWAPPING_ENABLED | |
733 | 1 if process swapping is enabled or 0 if disabled. This variable is | |
734 | permanently set to 0 if the kernel was built with swapping disabled. | |
735 | .It Li VM_V_CACHE_MAX | |
736 | Maximum desired size of the cache queue. | |
737 | .It Li VM_V_CACHE_MIN | |
738 | Minimum desired size of the cache queue. If the cache queue size | |
739 | falls very far below this value, the pageout daemon is awakened. | |
740 | .It Li VM_V_FREE_MIN | |
741 | Minimum amount of memory (cache memory plus free memory) | |
742 | required to be available before a process waiting on memory will be | |
743 | awakened. | |
744 | .It Li VM_V_FREE_RESERVED | |
745 | Processes will awaken the pageout daemon and wait for memory if the | |
746 | number of free and cached pages drops below this value. | |
747 | .It Li VM_V_FREE_TARGET | |
748 | The total amount of free memory (including cache memory) that the | |
749 | pageout daemon tries to maintain. | |
750 | .It Li VM_V_INACTIVE_TARGET | |
751 | The desired number of inactive pages that the pageout daemon should | |
752 | achieve when it runs. Inactive pages can be quickly inserted into | |
753 | process address space when needed. | |
754 | .It Li VM_V_PAGEOUT_FREE_MIN | |
755 | If the amount of free and cache memory falls below this value, the | |
756 | pageout daemon will enter "memory conserving mode" to avoid deadlock. | |
757 | .El | |
758 | .Sh RETURN VALUES | |
759 | .Rv -std | |
760 | .Sh ERRORS | |
761 | The following errors may be reported: | |
762 | .Bl -tag -width Er | |
763 | .It Bq Er EFAULT | |
764 | The buffer | |
765 | .Fa name , | |
766 | .Fa oldp , | |
767 | .Fa newp , | |
768 | or length pointer | |
769 | .Fa oldlenp | |
770 | contains an invalid address. | |
771 | .It Bq Er EINVAL | |
772 | The | |
773 | .Fa name | |
774 | array is less than two or greater than CTL_MAXNAME. | |
775 | .It Bq Er EINVAL | |
776 | A non-null | |
777 | .Fa newp | |
778 | is given and its specified length in | |
779 | .Fa newlen | |
780 | is too large or too small. | |
781 | .It Bq Er ENOMEM | |
782 | The length pointed to by | |
783 | .Fa oldlenp | |
784 | is too short to hold the requested value. | |
785 | .It Bq Er ENOTDIR | |
786 | The | |
787 | .Fa name | |
788 | array specifies an intermediate rather than terminal name. | |
789 | .It Bq Er EISDIR | |
790 | The | |
791 | .Fa name | |
792 | array specifies a terminal name, but the actual name is not terminal. | |
9385eb3d | 793 | .It Bq Er ENOENT |
5b2abdfb A |
794 | The |
795 | .Fa name | |
796 | array specifies a value that is unknown. | |
797 | .It Bq Er EPERM | |
798 | An attempt is made to set a read-only value. | |
799 | .It Bq Er EPERM | |
800 | A process without appropriate privilege attempts to set a value. | |
801 | .El | |
802 | .Sh FILES | |
803 | .Bl -tag -width <netinet/icmpXvar.h> -compact | |
804 | .It Aq Pa sys/sysctl.h | |
805 | definitions for top level identifiers, second level kernel and hardware | |
806 | identifiers, and user level identifiers | |
807 | .It Aq Pa sys/socket.h | |
808 | definitions for second level network identifiers | |
809 | .It Aq Pa sys/gmon.h | |
810 | definitions for third level profiling identifiers | |
811 | .It Aq Pa vm/vm_param.h | |
812 | definitions for second level virtual memory identifiers | |
813 | .It Aq Pa netinet/in.h | |
814 | definitions for third level IPv4/IPv6 identifiers and | |
815 | fourth level IPv4/v6 identifiers | |
816 | .It Aq Pa netinet/icmp_var.h | |
817 | definitions for fourth level ICMP identifiers | |
818 | .It Aq Pa netinet/icmp6.h | |
819 | definitions for fourth level ICMPv6 identifiers | |
820 | .It Aq Pa netinet/udp_var.h | |
821 | definitions for fourth level UDP identifiers | |
822 | .El | |
823 | .Sh SEE ALSO | |
824 | .Xr sysconf 3 , | |
825 | .Xr sysctl 8 | |
826 | .Sh HISTORY | |
827 | The | |
828 | .Fn sysctl | |
829 | function first appeared in | |
830 | .Bx 4.4 . |