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