123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538 |
- {
- }
- {$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;
- { Note: "3" was skipped sometime ago and should probably remain unused
- to avoid any new entry from being accepted by older kernels...}
- { struct loadavg with mach factor }
- VM_MACHFACTOR = 4;
- { total swap usage }
- VM_SWAPUSAGE = 5;
- { number of valid vm ids }
- VM_MAXID = 6;
- {
- 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;
|