--- sysctl.3.orig 2010-04-28 23:38:49.000000000 -0700 +++ sysctl.3 2010-04-29 10:13:28.000000000 -0700 @@ -32,7 +32,7 @@ .\" @(#)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 @@ -182,13 +182,21 @@ for (i = 0; i < 100; i++) { } .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" @@ -197,7 +205,8 @@ listed here, and described in separate s .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 @@ -279,7 +288,7 @@ privilege may change the value. .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" @@ -296,8 +305,16 @@ privilege may change the value. 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 @@ -346,7 +363,7 @@ information. .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" @@ -440,10 +457,8 @@ with which the system 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: @@ -456,16 +471,6 @@ The third and fourth level names are as .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, @@ -731,7 +736,6 @@ privilege may change the value. .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" @@ -748,10 +752,6 @@ privilege may change the value. 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. @@ -848,7 +848,7 @@ identifiers, and user level identifiers 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