.\" @(#)sysctl.3 8.4 (Berkeley) 5/9/95
.\" $FreeBSD: src/lib/libc/gen/sysctl.3,v 1.63 2004/07/02 23:52:10 ru Exp $
.\"
-.Dd January 23, 2001
+.Dd October 21, 2008
.Dt SYSCTL 3
.Os
.Sh NAME
}
.Ed
.Pp
+Note: Implementation of
+.Fn printkproc
+-- to print whatever data deemed necessary from the large
+.Vt kinfo_proc
+structure (
+.In sys/sysctl.h
+) -- is left as an exercise for the reader.
+.Pp
The top level names are defined with a CTL_ prefix in
.In sys/sysctl.h ,
and are as follows.
The next and subsequent levels down are found in the include files
listed here, and described in separate sections below.
.Pp
-.Bl -column CTLXMACHDEPXXX "Next level namesXXXXXX" -offset indent
+.Bl -column CTLXMACHDEP "Next level names" -offset indent
.It Sy "Name Next level names Description"
.It "CTL_DEBUG sys/sysctl.h Debugging"
.It "CTL_VFS sys/mount.h File system"
.It "CTL_MACHDEP sys/sysctl.h Machine dependent"
.It "CTL_NET sys/socket.h Networking"
.It "CTL_USER sys/sysctl.h User-level"
-.It "CTL_VM vm/vm_param.h Virtual memory"
+.It "CTL_VM sys/resources.h Virtual memory (struct loadavg)"
+.It "CTL_VM sys/vmmeter.h Virtual memory (struct vmtotal)"
.El
.Pp
For example, the following retrieves the maximum number of processes allowed
.It Sy "Second level name Type Changeable"
.It "HW_MACHINE string no"
.It "HW_MODEL string no"
-.It "HW_NCPU integer no"
+.It "HW_NCPU integer no (DEPRECATED)"
.It "HW_BYTEORDER integer no"
.It "HW_PHYSMEM integer no"
.It "HW_MEMSIZE integer no"
The machine class.
.It Li HW_MODEL
The machine model
-.It Li HW_NCPU
-The number of cpus.
+.It Li HW_NCPU (DEPRECATED)
+The number of cpus. It is recommended that you use "hw.physicalcpu" "hw.physicalcpu_max" "hw.logicalcpu" or "hw.logicalcpu_max" instead.
+.It Li "hw.physicalcpu"
+The number of physical processors available in the current power management mode.
+.It Li "hw.physicalcpu_max"
+The maximum number of physical processors that could be available this boot.
+.It Li "hw.logicalcpu"
+The number of logical processors available in the current power management mode.
+.It Li "hw.logicalcpu_max"
+The maximum number of logical processors that could be available this boot.
.It Li HW_BYTEORDER
The byteorder (4,321, or 1,234).
.It Li HW_PHYSMEM
.It "KERN_OSREV integer no"
.It "KERN_OSTYPE string no"
.It "KERN_POSIX1 integer no"
-.It "KERN_PROC struct proc no"
+.It "KERN_PROC struct kinfo_proc no"
.It "KERN_PROF node not applicable"
.It "KERN_QUANTUM integer yes"
.It "KERN_SAVED_IDS integer no"
attempts to comply.
.It Li KERN_PROC
Return the entire process table, or a subset of it.
-An array of pairs of
-.Va struct proc
-followed by corresponding
-.Va struct eproc
+An array of
+.Va struct kinfo_proc
structures is returned,
whose size depends on the current number of such objects in the system.
The third and fourth level names are as follows:
.It "KERN_PROC_UID A user ID"
.It "KERN_PROC_RUID A real user ID"
.El
-.Pp
-If the third level name is KERN_PROC_ARGS then the command line argument
-array is returned in a flattened form, i.e., zero-terminated arguments
-follow each other.
-The total size of array is returned.
-It is also possible for a process to set its own process title this way.
-.Bl -column "Third level nameXXXXXX" "Fourth level is:XXXXXX" -offset indent
-.It Sy "Third level name Fourth level is:"
-.It "KERN_PROC_ARGS A process ID"
-.El
.It Li KERN_PROF
Return profiling information about the kernel.
If the kernel is not compiled for profiling,
.Bl -column "Second level nameXXXXXX" "struct loadavgXXX" -offset indent
.It Sy "Second level name Type Changeable"
.It "VM_LOADAVG struct loadavg no"
-.It "VM_METER struct vmtotal no"
.It "VM_PAGEOUT_ALGORITHM integer yes"
.It "VM_SWAPPING_ENABLED integer maybe"
.It "VM_V_CACHE_MAX integer yes"
Return the load average history.
The returned data consists of a
.Va struct loadavg .
-.It Li VM_METER
-Return the system wide virtual memory statistics.
-The returned data consists of a
-.Va struct vmtotal .
.It Li VM_PAGEOUT_ALGORITHM
0 if the statistics-based page management algorithm is in use
or 1 if the near-LRU algorithm is in use.
definitions for second level network identifiers
.It In sys/gmon.h
definitions for third level profiling identifiers
-.It In vm/vm_param.h
+.It In mach/vm_param.h
definitions for second level virtual memory identifiers
.It In netinet/in.h
definitions for third level IPv4/IPv6 identifiers and