summaryrefslogtreecommitdiff
path: root/rtl/darwin/sysctlh.inc
diff options
context:
space:
mode:
Diffstat (limited to 'rtl/darwin/sysctlh.inc')
-rw-r--r--rtl/darwin/sysctlh.inc541
1 files changed, 541 insertions, 0 deletions
diff --git a/rtl/darwin/sysctlh.inc b/rtl/darwin/sysctlh.inc
new file mode 100644
index 0000000000..1c94fd934d
--- /dev/null
+++ b/rtl/darwin/sysctlh.inc
@@ -0,0 +1,541 @@
+{
+ $Id: sysctlh.inc,v 1.2 2005/02/14 17:13:22 peter Exp $
+}
+
+{$PACKRECORDS C}
+
+ {
+ Copyright (c) 2000-2003 Apple Computer, Inc. All rights reserved.
+
+ @APPLE_LICENSE_HEADER_START@
+
+ The contents of this file constitute Original Code as defined in and
+ are subject to the Apple Public Source License Version 1.1 (the
+ "License"). You may not use this file except in compliance with the
+ License. Please obtain a copy of the License at
+ http://www.apple.com/publicsource and read it before using this file.
+
+ This Original Code and all software distributed under the License are
+ distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
+ License for the specific language governing rights and limitations
+ under the License.
+
+ @APPLE_LICENSE_HEADER_END@
+ }
+ { Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved }
+ {
+ Copyright (c) 1989, 1993
+ The Regents of the University of California. All rights reserved.
+
+ This code is derived from software contributed to Berkeley by
+ Mike Karels at Berkeley Software Design, Inc.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. All advertising materials mentioning features or use of this software
+ must display the following acknowledgement:
+ This product includes software developed by the University of
+ California, Berkeley and its contributors.
+ 4. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+ @(#)sysctl.h 8.1 (Berkeley) 6/2/93
+ }
+ {
+ These are for the eproc structure defined below.
+ }
+ {
+ Definitions for sysctl call. The sysctl call uses a hierarchical name
+ for objects that can be examined or modified. The name is expressed as
+ a sequence of integers. Like a file path name, the meaning of each
+ component depends on its place in the hierarchy. The top-level and kern
+ identifiers are defined here, and other identifiers are defined in the
+ respective subsystem header files.
+ }
+ { largest number of components supported }
+
+ const
+ CTL_MAXNAME = 12;
+ {
+ Each subsystem defined by sysctl defines a list of variables
+ for that subsystem. Each name is either a node with further
+ levels defined below it, or it is a leaf of some particular
+ type given below. Each sysctl level defines a set of name/type
+ pairs to be used by sysctl(1) in manipulating the subsystem.
+ }
+ { subsystem name }
+ { type of name }
+
+ type
+ ctlname = record
+ ctl_name : ^char;
+ ctl_type : longint;
+ end;
+
+ { Mask for the type }
+
+ const
+ CTLTYPE = $f;
+ { name is a node }
+ CTLTYPE_NODE = 1;
+ { name describes an integer }
+ CTLTYPE_INT = 2;
+ { name describes a string }
+ CTLTYPE_STRING = 3;
+ { name describes a 64-bit number }
+ CTLTYPE_QUAD = 4;
+ { name describes a structure }
+ CTLTYPE_OPAQUE = 5;
+ { name describes a structure }
+ CTLTYPE_STRUCT = CTLTYPE_OPAQUE;
+ { Allow reads of variable }
+ CTLFLAG_RD = $80000000;
+ { Allow writes to the variable }
+ CTLFLAG_WR = $40000000;
+ CTLFLAG_RW = CTLFLAG_RD or CTLFLAG_WR;
+ { XXX Don't Lock }
+ CTLFLAG_NOLOCK = $20000000;
+ { All users can set this var }
+ CTLFLAG_ANYBODY = $10000000;
+ { Permit set only if securelevel<=0 }
+ CTLFLAG_SECURE = $08000000;
+ { deprecated variable, do not display }
+ CTLFLAG_MASKED = $04000000;
+ { do not auto-register }
+ CTLFLAG_NOAUTO = $02000000;
+ { valid inside the kernel }
+ CTLFLAG_KERN = $01000000;
+ {
+ USE THIS instead of a hardwired number from the categories below
+ to get dynamically assigned sysctl entries using the linker-set
+ technology. This is the way nearly all new sysctl variables should
+ be implemented.
+ e.g. SYSCTL_INT(_parent, OID_AUTO, name, CTLFLAG_RW, &variable, 0, "");
+ }
+ OID_AUTO = -(1);
+ {
+ Top-level identifiers
+ }
+ { unused }
+ CTL_UNSPEC = 0;
+ { "high kernel": proc, limits }
+ CTL_KERN = 1;
+ { virtual memory }
+ CTL_VM = 2;
+ { file system, mount type is next }
+ CTL_VFS = 3;
+ { network, see socket.h }
+ CTL_NET = 4;
+ { debugging parameters }
+ CTL_DEBUG = 5;
+ { generic cpu/io }
+ CTL_HW = 6;
+ { machine dependent }
+ CTL_MACHDEP = 7;
+ { user-level }
+ CTL_USER = 8;
+ { number of valid top-level ids }
+ CTL_MAXID = 9;
+ {
+ CTL_KERN identifiers
+ }
+ { string: system version }
+ KERN_OSTYPE = 1;
+ { string: system release }
+ KERN_OSRELEASE = 2;
+ { int: system revision }
+ KERN_OSREV = 3;
+ { string: compile time info }
+ KERN_VERSION = 4;
+ { int: max vnodes }
+ KERN_MAXVNODES = 5;
+ { int: max processes }
+ KERN_MAXPROC = 6;
+ { int: max open files }
+ KERN_MAXFILES = 7;
+ { int: max arguments to exec }
+ KERN_ARGMAX = 8;
+ { int: system security level }
+ KERN_SECURELVL = 9;
+ { string: hostname }
+ KERN_HOSTNAME = 10;
+ { int: host identifier }
+ KERN_HOSTID = 11;
+ { struct: struct clockrate }
+ KERN_CLOCKRATE = 12;
+ { struct: vnode structures }
+ KERN_VNODE = 13;
+ { struct: process entries }
+ KERN_PROC = 14;
+ { struct: file entries }
+ KERN_FILE = 15;
+ { node: kernel profiling info }
+ KERN_PROF = 16;
+ { int: POSIX.1 version }
+ KERN_POSIX1 = 17;
+ { int: # of supplemental group ids }
+ KERN_NGROUPS = 18;
+ { int: is job control available }
+ KERN_JOB_CONTROL = 19;
+ { int: saved set-user/group-ID }
+ KERN_SAVED_IDS = 20;
+ { struct: time kernel was booted }
+ KERN_BOOTTIME = 21;
+ { string: YP domain name }
+ KERN_NISDOMAINNAME = 22;
+ KERN_DOMAINNAME = KERN_NISDOMAINNAME;
+ { int: number of partitions/disk }
+ KERN_MAXPARTITIONS = 23;
+ { int: kernel trace points }
+ KERN_KDEBUG = 24;
+ { int: update process sleep time }
+ KERN_UPDATEINTERVAL = 25;
+ { int: OS release date }
+ KERN_OSRELDATE = 26;
+ { node: NTP PLL control }
+ KERN_NTP_PLL = 27;
+ { string: name of booted kernel }
+ KERN_BOOTFILE = 28;
+ { int: max open files per proc }
+ KERN_MAXFILESPERPROC = 29;
+ { int: max processes per uid }
+ KERN_MAXPROCPERUID = 30;
+ { dev_t: device to dump on }
+ KERN_DUMPDEV = 31;
+ { node: anything related to IPC }
+ KERN_IPC = 32;
+ { unused }
+ KERN_DUMMY = 33;
+ { int: address of PS_STRINGS }
+ KERN_PS_STRINGS = 34;
+ { int: address of USRSTACK }
+ KERN_USRSTACK = 35;
+ { int: do we log sigexit procs? }
+ KERN_LOGSIGEXIT = 36;
+ { string: kernel symbol filename }
+ KERN_SYMFILE = 37;
+ KERN_PROCARGS = 38;
+ { node: pc sampling }
+ KERN_PCSAMPLES = 39;
+ { int: are we netbooted? 1=yes,0=no }
+ KERN_NETBOOT = 40;
+ { node: panic UI information }
+ KERN_PANICINFO = 41;
+ { node: panic UI information }
+ KERN_SYSV = 42;
+ { xxx }
+ KERN_AFFINITY = 43;
+ { xxx }
+ KERN_CLASSIC = 44;
+ { xxx }
+ KERN_CLASSICHANDLER = 45;
+ { int: max aio requests }
+ KERN_AIOMAX = 46;
+ { int: max aio requests per process }
+ KERN_AIOPROCMAX = 47;
+ { int: max aio worker threads }
+ KERN_AIOTHREADS = 48;
+ { __APPLE_API_UNSTABLE }
+ { number of valid kern ids }
+
+ const
+ KERN_MAXID = 50;
+ { KERN_KDEBUG types }
+ KERN_KDEFLAGS = 1;
+ KERN_KDDFLAGS = 2;
+ KERN_KDENABLE = 3;
+ KERN_KDSETBUF = 4;
+ KERN_KDGETBUF = 5;
+ KERN_KDSETUP = 6;
+ KERN_KDREMOVE = 7;
+ KERN_KDSETREG = 8;
+ KERN_KDGETREG = 9;
+ KERN_KDREADTR = 10;
+ KERN_KDPIDTR = 11;
+ KERN_KDTHRMAP = 12;
+ { Don't use 13 as it is overloaded with KERN_VNODE }
+ KERN_KDPIDEX = 14;
+ KERN_KDSETRTCDEC = 15;
+ KERN_KDGETENTROPY = 16;
+ { KERN_PCSAMPLES types }
+ KERN_PCDISABLE = 1;
+ KERN_PCSETBUF = 2;
+ KERN_PCGETBUF = 3;
+ KERN_PCSETUP = 4;
+ KERN_PCREMOVE = 5;
+ KERN_PCREADBUF = 6;
+ KERN_PCSETREG = 7;
+ KERN_PCCOMM = 8;
+ { KERN_PANICINFO types }
+ { quad: panic UI image size limit }
+ KERN_PANICINFO_MAXSIZE = 1;
+ { string: path to the panic UI (16 bit) }
+ KERN_PANICINFO_IMAGE16 = 2;
+ { string: path to the panic UI (32 bit) }
+ KERN_PANICINFO_IMAGE32 = 3;
+ {
+ KERN_SYSV identifiers
+ }
+ { int: max shared memory segment size (bytes) }
+ KSYSV_SHMMAX = 1;
+ { int: min shared memory segment size (bytes) }
+ KSYSV_SHMMIN = 2;
+ { int: max number of shared memory identifiers }
+ KSYSV_SHMMNI = 3;
+ { int: max shared memory segments per process }
+ KSYSV_SHMSEG = 4;
+ { int: max amount of shared memory (pages) }
+ KSYSV_SHMALL = 5;
+ { int: max num of semaphore identifiers }
+ KSYSV_SEMMNI = 6;
+ { int: max num of semaphores in system }
+ KSYSV_SEMMNS = 7;
+ { int: max num of undo structures in system }
+ KSYSV_SEMMNU = 8;
+ { int: max num of semaphores per id }
+ KSYSV_SEMMSL = 9;
+ { int: max num of undo entries per process }
+ KSYSV_SEMUNE = 10;
+ error1 = 1;
+ {
+ KERN_PROC subtypes
+ }
+ { everything }
+ KERN_PROC_ALL = 0;
+ { by process id }
+ KERN_PROC_PID = 1;
+ { by process group id }
+ KERN_PROC_PGRP = 2;
+ { by session of pid }
+ KERN_PROC_SESSION = 3;
+ { by controlling tty }
+ KERN_PROC_TTY = 4;
+ { by effective uid }
+ KERN_PROC_UID = 5;
+ { by real uid }
+ KERN_PROC_RUID = 6;
+ {
+ KERN_PROC subtype ops return arrays of augmented proc structures:
+ }
+ {
+ KERN_IPC identifiers
+ }
+ { int: max size of a socket buffer }
+
+ const
+ KIPC_MAXSOCKBUF = 1;
+ { int: wastage factor in sockbuf }
+ KIPC_SOCKBUF_WASTE = 2;
+ { int: max length of connection q }
+ KIPC_SOMAXCONN = 3;
+ { int: max length of link header }
+ KIPC_MAX_LINKHDR = 4;
+ { int: max length of network header }
+ KIPC_MAX_PROTOHDR = 5;
+ { int: max total length of headers }
+ KIPC_MAX_HDR = 6;
+ { int: max length of data? }
+ KIPC_MAX_DATALEN = 7;
+ { struct: mbuf usage statistics }
+ KIPC_MBSTAT = 8;
+ { int: maximum mbuf clusters }
+ KIPC_NMBCLUSTERS = 9;
+ {
+ CTL_VM identifiers
+ }
+ { struct vmmeter }
+ VM_METER = 1;
+ { struct loadavg }
+ VM_LOADAVG = 2;
+ { number of valid vm ids }
+ VM_MAXID = 3;
+ { struct loadavg with mach factor }
+ VM_MACHFACTOR = 4;
+ {
+ CTL_HW identifiers
+ }
+ { string: machine class }
+ HW_MACHINE = 1;
+ { string: specific machine model }
+ HW_MODEL = 2;
+ { int: number of cpus }
+ HW_NCPU = 3;
+ { int: machine byte order }
+ HW_BYTEORDER = 4;
+ { int: total memory }
+ HW_PHYSMEM = 5;
+ { int: non-kernel memory }
+ HW_USERMEM = 6;
+ { int: software page size }
+ HW_PAGESIZE = 7;
+ { strings: disk drive names }
+ HW_DISKNAMES = 8;
+ { struct: diskstats[] }
+ HW_DISKSTATS = 9;
+ { int: 0 for Legacy, else NewWorld }
+ HW_EPOCH = 10;
+ { int: has HW floating point? }
+ HW_FLOATINGPT = 11;
+ { string: machine architecture }
+ HW_MACHINE_ARCH = 12;
+ { int: has HW vector unit? }
+ HW_VECTORUNIT = 13;
+ { int: Bus Frequency }
+ HW_BUS_FREQ = 14;
+ { int: CPU Frequency }
+ HW_CPU_FREQ = 15;
+ { int: Cache Line Size in Bytes }
+ HW_CACHELINE = 16;
+ { int: L1 I Cache Size in Bytes }
+ HW_L1ICACHESIZE = 17;
+ { int: L1 D Cache Size in Bytes }
+ HW_L1DCACHESIZE = 18;
+ { int: L2 Cache Settings }
+ HW_L2SETTINGS = 19;
+ { int: L2 Cache Size in Bytes }
+ HW_L2CACHESIZE = 20;
+ { int: L3 Cache Settings }
+ HW_L3SETTINGS = 21;
+ { int: L3 Cache Size in Bytes }
+ HW_L3CACHESIZE = 22;
+ { int: Bus Frequency }
+ HW_TB_FREQ = 23;
+ { uint64_t: physical ram size }
+ HW_MEMSIZE = 24;
+ { int: number of available CPUs }
+ HW_AVAILCPU = 25;
+ { number of valid hw ids }
+ HW_MAXID = 26;
+
+ {
+ These are the support HW selectors for sysctlbyname. Parameters that are byte count or frequencies are 64 bit numbers.
+ All other parameters are 32 bit numbers.
+
+ hw.memsize - The number of bytes of physical memory in the system.
+
+ hw.ncpu - The number maximum number of processor that could be available this boot.
+ Use this value for sizing of static per processor arrays; i.e. processor load statistics.
+
+ hw.activecpu - The number of cpus currently available for executing threads.
+ Use this number to determine the number threads to create in SMP aware applications.
+ This number can change when power management modes are changed.
+
+ hw.tbfrequency - This gives the time base frequency used by the OS and is the basis of all timing services.
+ In general is is better to use mach's or higher level timing services, but this value
+ is needed to convert the PPC Time Base registers to real time.
+
+ hw.cpufrequency - These values provide the current, min and max cpu frequency. The min and max are for
+ hw.cpufrequency_max - all power management modes. The current frequency is the max frequency in the current mode.
+ hw.cpufrequency_min - All frequencies are in Hz.
+
+ hw.busfrequency - These values provide the current, min and max bus frequency. The min and max are for
+ hw.busfrequency_max - all power management modes. The current frequency is the max frequency in the current mode.
+ hw.busfrequency_min - All frequencies are in Hz.
+
+ hw.cputype - These values provide the mach-o cpu type and subtype. A complete list is in <mach/machine.h>
+ hw.cpusubtype - These values should be used to determine what processor family the running cpu is from so that
+ the best binary can be chosen, or the best dynamic code generated. They should not be used
+ to determine if a given processor feature is available.
+
+ hw.byteorder - Gives the byte order of the processor. 4321 for big endian, 1234 for little.
+
+ hw.pagesize - Gives the size in bytes of the pages used by the processor and VM system.
+
+ hw.cachelinesize - Gives the size in bytes of the processor's cache lines.
+ This value should be use to control the strides of loops that use cache control instructions
+ like dcbz, dcbt or dcbst.
+
+ hw.l1dcachesize - These values provide the size in bytes of the L1, L2 and L3 caches. If a cache is not present
+ hw.l1icachesize - then the selector will return and error.
+ hw.l2cachesize -
+ hw.l3cachesize -
+
+
+ These are the selectors for optional processor features. Selectors that return errors are not support on the system.
+ Supported features will return 1 if they are recommended or 0 if they are supported but are not expected to help performance.
+ Future versions of these selectors may return larger values as necessary so it is best to test for non zero.
+
+ hw.optional.floatingpoint - Floating Point Instructions
+ hw.optional.altivec - AltiVec Instructions
+ hw.optional.graphicsops - Graphics Operations
+ hw.optional.64bitops - 64-bit Instructions
+ hw.optional.fsqrt - HW Floating Point Square Root Instruction
+ hw.optional.stfiwx - Store Floating Point as Integer Word Indexed Instructions
+ hw.optional.dcba - Data Cache Block Allocate Instruction
+ hw.optional.datastreams - Data Streams Instructions
+ hw.optional.dcbtstreams - Data Cache Block Touch Steams Instruction Form
+
+ }
+ {
+ CTL_USER definitions
+ }
+ { string: _CS_PATH }
+ { int: BC_BASE_MAX }
+ USER_BC_BASE_MAX = 2;
+ { int: BC_DIM_MAX }
+ USER_BC_DIM_MAX = 3;
+ { int: BC_SCALE_MAX }
+ USER_BC_SCALE_MAX = 4;
+ { int: BC_STRING_MAX }
+ USER_BC_STRING_MAX = 5;
+ { int: COLL_WEIGHTS_MAX }
+ USER_COLL_WEIGHTS_MAX = 6;
+ { int: EXPR_NEST_MAX }
+ USER_EXPR_NEST_MAX = 7;
+ { int: LINE_MAX }
+ USER_LINE_MAX = 8;
+ { int: RE_DUP_MAX }
+ USER_RE_DUP_MAX = 9;
+ { int: POSIX2_VERSION }
+ USER_POSIX2_VERSION = 10;
+ { int: POSIX2_C_BIND }
+ USER_POSIX2_C_BIND = 11;
+ { int: POSIX2_C_DEV }
+ USER_POSIX2_C_DEV = 12;
+ { int: POSIX2_CHAR_TERM }
+ USER_POSIX2_CHAR_TERM = 13;
+ { int: POSIX2_FORT_DEV }
+ USER_POSIX2_FORT_DEV = 14;
+ { int: POSIX2_FORT_RUN }
+ USER_POSIX2_FORT_RUN = 15;
+ { int: POSIX2_LOCALEDEF }
+ USER_POSIX2_LOCALEDEF = 16;
+ { int: POSIX2_SW_DEV }
+ USER_POSIX2_SW_DEV = 17;
+ { int: POSIX2_UPE }
+ USER_POSIX2_UPE = 18;
+ { int: POSIX2_STREAM_MAX }
+ USER_STREAM_MAX = 19;
+ { int: POSIX2_TZNAME_MAX }
+ USER_TZNAME_MAX = 20;
+ { number of valid user ids }
+ USER_MAXID = 21;
+
+{
+ $Log: sysctlh.inc,v $
+ Revision 1.2 2005/02/14 17:13:22 peter
+ * truncate log
+
+}