#include <sys/sysctl.h>

sys/sysctl.h

includes: sys/cdefs.h, sys/appleapiopts.h, sys/time.h, sys/ucred.h, sys/proc.h, sys/vm.h
231 macros · 6 structs · 3 functions · 1 variable

macroCTL_MAXNAME

#define CTL_MAXNAME 12
largest number of components supported

structctlname

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. When declaring new sysctl names, use the CTLFLAG_LOCKED flag in the type to indicate that all necessary locking will be handled within the sysctl. Any sysctl defined without CTLFLAG_LOCKED is considered legacy and will be protected by a global mutex. Note: This is not optimal, so it is best to handle locking yourself, if you are able to do so. A simple design pattern for use to avoid in a single function known to potentially be in the paging path ot doing a DMA to physical memory in a user space process is: lock perform operation vs. local buffer unlock SYSCTL_OUT(rey, local buffer, length) ...this assumes you are not using a deep call graph or are unable to pass a local buffer address as a parameter into your deep call graph. Note that very large user buffers can fail the wire if to do so would require more physical pages than are available (the caller will get an ENOMEM error, see sysctl_mem_hold() for details).
size 16, align 8
char *ctl_namesubsystem name
intctl_typetype of name

macroCTLTYPE

#define CTLTYPE 0xf
Mask for the type

macroCTLTYPE_NODE

#define CTLTYPE_NODE 1
name is a node

macroCTLTYPE_INT

#define CTLTYPE_INT 2
name describes an integer

macroCTLTYPE_STRING

#define CTLTYPE_STRING 3
name describes a string

macroCTLTYPE_QUAD

#define CTLTYPE_QUAD 4
name describes a 64-bit number

macroCTLTYPE_OPAQUE

#define CTLTYPE_OPAQUE 5
name describes a structure

macroCTLTYPE_STRUCT

#define CTLTYPE_STRUCT CTLTYPE_OPAQUE
name describes a structure

macroCTLFLAG_RD

#define CTLFLAG_RD 0x80000000
Allow reads of variable

macroCTLFLAG_WR

#define CTLFLAG_WR 0x40000000
Allow writes to the variable

macroCTLFLAG_RW

#define CTLFLAG_RW (CTLFLAG_RD|CTLFLAG_WR)

macroCTLFLAG_NOLOCK

#define CTLFLAG_NOLOCK 0x20000000
XXX Don't Lock

macroCTLFLAG_ANYBODY

#define CTLFLAG_ANYBODY 0x10000000
All users can set this var

macroCTLFLAG_SECURE

#define CTLFLAG_SECURE 0x08000000
Permit set only if securelevel<=0

macroCTLFLAG_MASKED

#define CTLFLAG_MASKED 0x04000000
deprecated variable, do not display

macroCTLFLAG_NOAUTO

#define CTLFLAG_NOAUTO 0x02000000
do not auto-register

macroCTLFLAG_KERN

#define CTLFLAG_KERN 0x01000000
valid inside the kernel

macroCTLFLAG_LOCKED

#define CTLFLAG_LOCKED 0x00800000
node will handle locking itself

macroCTLFLAG_OID2

#define CTLFLAG_OID2 0x00400000
struct sysctl_oid has version info

macroCTLFLAG_EXPERIMENT

#define CTLFLAG_EXPERIMENT 0x00100000
Allows read/write w/ the trial experiment entitlement.

macroCTLFLAG_LEGACY_EXPERIMENT

#define CTLFLAG_LEGACY_EXPERIMENT 0x00080000
Allows writing w/ the legacy trial experiment entitlement.

macroCTLFLAG_OID_AUTO

#define CTLFLAG_OID_AUTO 0x00040000
Remembers OID_AUTO to restore oid_number on unregister

macroCTLFLAG_KERNEL_PRIVATE_MASK

mask of flags which are kernel private and will be masked for user space
#define CTLFLAG_KERNEL_PRIVATE_MASK (CTLFLAG_OID_AUTO)

macroOID_AUTO

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, ""); Note that linker set technology will automatically register all nodes declared like this on kernel initialization, UNLESS they are defined in I/O-Kit. In this case, you have to call sysctl_register_oid() manually - just like in a KEXT.
#define OID_AUTO (-1)

macroOID_AUTO_START

#define OID_AUTO_START 100
conventional

macroSYSCTL_DEF_ENABLED

#define SYSCTL_DEF_ENABLED 

macroCTL_UNSPEC

Top-level identifiers
#define CTL_UNSPEC 0
unused

macroCTL_KERN

#define CTL_KERN 1
"high kernel": proc, limits

macroCTL_VM

#define CTL_VM 2
virtual memory

macroCTL_VFS

#define CTL_VFS 3
file system, mount type is next

macroCTL_NET

#define CTL_NET 4
network, see socket.h

macroCTL_DEBUG

#define CTL_DEBUG 5
debugging parameters

macroCTL_HW

#define CTL_HW 6
generic cpu/io

macroCTL_MACHDEP

#define CTL_MACHDEP 7
machine dependent

macroCTL_USER

#define CTL_USER 8
user-level

macroCTL_MAXID

#define CTL_MAXID 9
number of valid top-level ids

macroCTL_NAMES

#define CTL_NAMES {
	{ 0, 0 },
	{ "kern", CTLTYPE_NODE },
	{ "vm", CTLTYPE_NODE },
	{ "vfs", CTLTYPE_NODE },
	{ "net", CTLTYPE_NODE },
	{ "debug", CTLTYPE_NODE },
	{ "hw", CTLTYPE_NODE },
	{ "machdep", CTLTYPE_NODE },
	{ "user", CTLTYPE_NODE },
}

macroKERN_OSTYPE

CTL_KERN identifiers
#define KERN_OSTYPE 1
string: system version

macroKERN_OSRELEASE

#define KERN_OSRELEASE 2
string: system release

macroKERN_OSREV

#define KERN_OSREV 3
int: system revision

macroKERN_VERSION

#define KERN_VERSION 4
string: compile time info

macroKERN_MAXVNODES

#define KERN_MAXVNODES 5
int: max vnodes

macroKERN_MAXPROC

#define KERN_MAXPROC 6
int: max processes

macroKERN_MAXFILES

#define KERN_MAXFILES 7
int: max open files

macroKERN_ARGMAX

#define KERN_ARGMAX 8
int: max arguments to exec

macroKERN_SECURELVL

#define KERN_SECURELVL 9
int: system security level

macroKERN_HOSTNAME

#define KERN_HOSTNAME 10
string: hostname

macroKERN_HOSTID

#define KERN_HOSTID 11
int: host identifier

macroKERN_CLOCKRATE

#define KERN_CLOCKRATE 12
struct: struct clockrate

macroKERN_VNODE

#define KERN_VNODE 13
struct: vnode structures

macroKERN_PROC

#define KERN_PROC 14
struct: process entries

macroKERN_FILE

#define KERN_FILE 15
struct: file entries

macroKERN_PROF

#define KERN_PROF 16
node: kernel profiling info

macroKERN_POSIX1

#define KERN_POSIX1 17
int: POSIX.1 version

macroKERN_NGROUPS

#define KERN_NGROUPS 18
int: # of supplemental group ids

macroKERN_JOB_CONTROL

#define KERN_JOB_CONTROL 19
int: is job control available

macroKERN_SAVED_IDS

#define KERN_SAVED_IDS 20
int: saved set-user/group-ID

macroKERN_BOOTTIME

#define KERN_BOOTTIME 21
struct: time kernel was booted

macroKERN_NISDOMAINNAME

#define KERN_NISDOMAINNAME 22
string: YP domain name

macroKERN_DOMAINNAME

#define KERN_DOMAINNAME KERN_NISDOMAINNAME

macroKERN_MAXPARTITIONS

#define KERN_MAXPARTITIONS 23
int: number of partitions/disk

macroKERN_KDEBUG

#define KERN_KDEBUG 24
int: kernel trace points

macroKERN_UPDATEINTERVAL

#define KERN_UPDATEINTERVAL 25
int: update process sleep time

macroKERN_OSRELDATE

#define KERN_OSRELDATE 26
int: OS release date

macroKERN_NTP_PLL

#define KERN_NTP_PLL 27
node: NTP PLL control

macroKERN_BOOTFILE

#define KERN_BOOTFILE 28
string: name of booted kernel

macroKERN_MAXFILESPERPROC

#define KERN_MAXFILESPERPROC 29
int: max open files per proc

macroKERN_MAXPROCPERUID

#define KERN_MAXPROCPERUID 30
int: max processes per uid

macroKERN_DUMPDEV

#define KERN_DUMPDEV 31
dev_t: device to dump on

macroKERN_IPC

#define KERN_IPC 32
node: anything related to IPC

macroKERN_DUMMY

#define KERN_DUMMY 33
unused

macroKERN_PS_STRINGS

#define KERN_PS_STRINGS 34
int: address of PS_STRINGS

macroKERN_USRSTACK32

#define KERN_USRSTACK32 35
int: address of USRSTACK

macroKERN_LOGSIGEXIT

#define KERN_LOGSIGEXIT 36
int: do we log sigexit procs?

macroKERN_SYMFILE

#define KERN_SYMFILE 37
string: kernel symbol filename

macroKERN_PROCARGS

#define KERN_PROCARGS 38

macroKERN_NETBOOT

39 was KERN_PCSAMPLES... now obsolete
#define KERN_NETBOOT 40
int: are we netbooted? 1=yes,0=no

macroKERN_SYSV

41 was KERN_PANICINFO : panic UI information (deprecated)
#define KERN_SYSV 42
node: System V IPC information

macroKERN_AFFINITY

#define KERN_AFFINITY 43
xxx

macroKERN_TRANSLATE

#define KERN_TRANSLATE 44
xxx

macroKERN_CLASSIC

#define KERN_CLASSIC KERN_TRANSLATE
XXX backwards compat

macroKERN_EXEC

#define KERN_EXEC 45
xxx

macroKERN_CLASSICHANDLER

#define KERN_CLASSICHANDLER KERN_EXEC
XXX backwards compatibility

macroKERN_AIOMAX

#define KERN_AIOMAX 46
int: max aio requests

macroKERN_AIOPROCMAX

#define KERN_AIOPROCMAX 47
int: max aio requests per process

macroKERN_AIOTHREADS

#define KERN_AIOTHREADS 48
int: max aio worker threads

macroKERN_PROCARGS2

#define KERN_PROCARGS2 49

macroKERN_COREFILE

#define KERN_COREFILE 50
string: corefile format string

macroKERN_COREDUMP

#define KERN_COREDUMP 51
int: whether to coredump at all

macroKERN_SUGID_COREDUMP

#define KERN_SUGID_COREDUMP 52
int: whether to dump SUGID cores

macroKERN_PROCDELAYTERM

#define KERN_PROCDELAYTERM 53
int: set/reset current proc for delayed termination during shutdown

macroKERN_SHREG_PRIVATIZABLE

#define KERN_SHREG_PRIVATIZABLE 54
int: can shared regions be privatized ?

macroKERN_LOW_PRI_WINDOW

55 was KERN_PROC_LOW_PRI_IO... now deprecated
#define KERN_LOW_PRI_WINDOW 56
int: set/reset throttle window - milliseconds

macroKERN_LOW_PRI_DELAY

#define KERN_LOW_PRI_DELAY 57
int: set/reset throttle delay - milliseconds

macroKERN_POSIX

#define KERN_POSIX 58
node: posix tunables

macroKERN_USRSTACK64

#define KERN_USRSTACK64 59
LP64 user stack query

macroKERN_NX_PROTECTION

#define KERN_NX_PROTECTION 60
int: whether no-execute protection is enabled

macroKERN_TFP

#define KERN_TFP 61
Task for pid settings

macroKERN_PROCNAME

#define KERN_PROCNAME 62
setup process program name(2*MAXCOMLEN)

macroKERN_THALTSTACK

#define KERN_THALTSTACK 63
for compat with older x86 and does nothing

macroKERN_SPECULATIVE_READS

#define KERN_SPECULATIVE_READS 64
int: whether speculative reads are disabled

macroKERN_OSVERSION

#define KERN_OSVERSION 65
for build number i.e. 9A127

macroKERN_SAFEBOOT

#define KERN_SAFEBOOT 66
are we booted safe?

macroKERN_RAGEVNODE

67 was KERN_LCTX (login context)
#define KERN_RAGEVNODE 68

macroKERN_TTY

#define KERN_TTY 69
node: tty settings

macroKERN_CHECKOPENEVT

#define KERN_CHECKOPENEVT 70
spi: check the VOPENEVT flag on vnodes at open time

macroKERN_THREADNAME

#define KERN_THREADNAME 71
set/get thread name

macroKERN_MAXID

#define KERN_MAXID 72
number of valid kern ids

macroKERN_USRSTACK

#define KERN_USRSTACK KERN_USRSTACK64

macroKERN_RAGE_PROC

#define KERN_RAGE_PROC 1

macroKERN_RAGE_THREAD

#define KERN_RAGE_THREAD 2

macroKERN_UNRAGE_PROC

#define KERN_UNRAGE_PROC 3

macroKERN_UNRAGE_THREAD

#define KERN_UNRAGE_THREAD 4

macroKERN_OPENEVT_PROC

KERN_OPENEVT types
#define KERN_OPENEVT_PROC 1

macroKERN_UNOPENEVT_PROC

#define KERN_UNOPENEVT_PROC 2

macroKERN_TFP_POLICY

KERN_TFP types
#define KERN_TFP_POLICY 1

macroKERN_TFP_POLICY_DENY

KERN_TFP_POLICY values . All policies allow task port for self
#define KERN_TFP_POLICY_DENY 0
Deny Mode: None allowed except privileged

macroKERN_TFP_POLICY_DEFAULT

#define KERN_TFP_POLICY_DEFAULT 2
Default Mode: related ones allowed and upcall authentication

macroKERN_KDEFLAGS

#define KERN_KDEFLAGS 1

macroKERN_KDDFLAGS

#define KERN_KDDFLAGS 2

macroKERN_KDENABLE

#define KERN_KDENABLE 3

macroKERN_KDSETBUF

#define KERN_KDSETBUF 4

macroKERN_KDGETBUF

#define KERN_KDGETBUF 5

macroKERN_KDSETUP

#define KERN_KDSETUP 6

macroKERN_KDREMOVE

#define KERN_KDREMOVE 7

macroKERN_KDSETREG

#define KERN_KDSETREG 8

macroKERN_KDGETREG

#define KERN_KDGETREG 9

macroKERN_KDREADTR

#define KERN_KDREADTR 10

macroKERN_KDPIDTR

#define KERN_KDPIDTR 11

macroKERN_KDTHRMAP

#define KERN_KDTHRMAP 12

macroKERN_KDPIDEX

Don't use 13 as it is overloaded with KERN_VNODE
#define KERN_KDPIDEX 14

macroKERN_KDSETRTCDEC

#define KERN_KDSETRTCDEC 15
obsolete

macroKERN_KDGETENTROPY

#define KERN_KDGETENTROPY 16
obsolete

macroKERN_KDWRITETR

#define KERN_KDWRITETR 17

macroKERN_KDWRITEMAP

#define KERN_KDWRITEMAP 18

macroKERN_KDTEST

#define KERN_KDTEST 19

macroKERN_KDREADCURTHRMAP

20 unused
#define KERN_KDREADCURTHRMAP 21

macroKERN_KDSET_TYPEFILTER

#define KERN_KDSET_TYPEFILTER 22

macroKERN_KDBUFWAIT

#define KERN_KDBUFWAIT 23

macroKERN_KDCPUMAP

#define KERN_KDCPUMAP 24

macroKERN_KDCPUMAP_EXT

#define KERN_KDCPUMAP_EXT 25

macroKERN_KDSET_EDM

#define KERN_KDSET_EDM 26

macroKERN_KDGET_EDM

#define KERN_KDGET_EDM 27

macroKERN_KDWRITETR_V3

#define KERN_KDWRITETR_V3 28

macroCTL_KERN_NAMES

#define CTL_KERN_NAMES {
	{ 0, 0 },
	{ "ostype", CTLTYPE_STRING },
	{ "osrelease", CTLTYPE_STRING },
	{ "osrevision", CTLTYPE_INT },
	{ "version", CTLTYPE_STRING },
	{ "maxvnodes", CTLTYPE_INT },
	{ "maxproc", CTLTYPE_INT },
	{ "maxfiles", CTLTYPE_INT },
	{ "argmax", CTLTYPE_INT },
	{ "securelevel", CTLTYPE_INT },
	{ "hostname", CTLTYPE_STRING },
	{ "hostid", CTLTYPE_INT },
	{ "clockrate", CTLTYPE_STRUCT },
	{ "vnode", CTLTYPE_STRUCT },
	{ "proc", CTLTYPE_STRUCT },
	{ "file", CTLTYPE_STRUCT },
	{ "profiling", CTLTYPE_NODE },
	{ "posix1version", CTLTYPE_INT },
	{ "ngroups", CTLTYPE_INT },
	{ "job_control", CTLTYPE_INT },
	{ "saved_ids", CTLTYPE_INT },
	{ "boottime", CTLTYPE_STRUCT },
	{ "nisdomainname", CTLTYPE_STRING },
	{ "maxpartitions", CTLTYPE_INT },
	{ "kdebug", CTLTYPE_INT },
	{ "update", CTLTYPE_INT },
	{ "osreldate", CTLTYPE_INT },
	{ "ntp_pll", CTLTYPE_NODE },
	{ "bootfile", CTLTYPE_STRING },
	{ "maxfilesperproc", CTLTYPE_INT },
	{ "maxprocperuid", CTLTYPE_INT },
	{ "dumpdev", CTLTYPE_STRUCT }, /* we lie; don't print as int */
	{ "ipc", CTLTYPE_NODE },
	{ "dummy", CTLTYPE_INT },
	{ "dummy", CTLTYPE_INT },
	{ "usrstack", CTLTYPE_INT },
	{ "logsigexit", CTLTYPE_INT },
	{ "symfile",CTLTYPE_STRING },
	{ "procargs",CTLTYPE_STRUCT },
	{ "dummy", CTLTYPE_INT },               /* deprecated pcsamples */
	{ "netboot", CTLTYPE_INT },
	{ "dummy", CTLTYPE_INT },               /* deprecated: panicinfo */
	{ "sysv", CTLTYPE_NODE },
	{ "dummy", CTLTYPE_INT },
	{ "dummy", CTLTYPE_INT },
	{ "exec", CTLTYPE_NODE },
	{ "aiomax", CTLTYPE_INT },
	{ "aioprocmax", CTLTYPE_INT },
	{ "aiothreads", CTLTYPE_INT },
	{ "procargs2",CTLTYPE_STRUCT },
	{ "corefile",CTLTYPE_STRING },
	{ "coredump", CTLTYPE_INT },
	{ "sugid_coredump", CTLTYPE_INT },
	{ "delayterm", CTLTYPE_INT },
	{ "shreg_private", CTLTYPE_INT },
	{ "proc_low_pri_io", CTLTYPE_INT },
	{ "low_pri_window", CTLTYPE_INT },
	{ "low_pri_delay", CTLTYPE_INT },
	{ "posix", CTLTYPE_NODE },
	{ "usrstack64", CTLTYPE_QUAD },
	{ "nx", CTLTYPE_INT },
	{ "tfp", CTLTYPE_NODE },
	{ "procname", CTLTYPE_STRING },
	{ "threadsigaltstack", CTLTYPE_INT },
	{ "speculative_reads_disabled", CTLTYPE_INT },
	{ "osversion", CTLTYPE_STRING },
	{ "safeboot", CTLTYPE_INT },
	{ "dummy", CTLTYPE_INT },               /* deprecated: lctx */
	{ "rage_vnode", CTLTYPE_INT },
	{ "tty", CTLTYPE_NODE },
	{ "check_openevt", CTLTYPE_INT },
	{ "thread_name", CTLTYPE_STRING }
}

macroCTL_VFS_NAMES

CTL_VFS identifiers
#define CTL_VFS_NAMES {
	{ "vfsconf", CTLTYPE_STRUCT }
}

macroKERN_PROC_ALL

KERN_PROC subtypes
#define KERN_PROC_ALL 0
everything

macroKERN_PROC_PID

#define KERN_PROC_PID 1
by process id

macroKERN_PROC_PGRP

#define KERN_PROC_PGRP 2
by process group id

macroKERN_PROC_SESSION

#define KERN_PROC_SESSION 3
by session of pid

macroKERN_PROC_TTY

#define KERN_PROC_TTY 4
by controlling tty

macroKERN_PROC_UID

#define KERN_PROC_UID 5
by effective uid

macroKERN_PROC_RUID

#define KERN_PROC_RUID 6
by real uid

macroKERN_PROC_LCID

#define KERN_PROC_LCID 7
by login context id

macroKERN_VFSNSPACE_HANDLE_PROC

KERN_VFSNSPACE subtypes
#define KERN_VFSNSPACE_HANDLE_PROC 1

macroKERN_VFSNSPACE_UNHANDLE_PROC

#define KERN_VFSNSPACE_UNHANDLE_PROC 2

struct_pcred

size 104, align 8
char[72]pc_lockopaque content
struct ucred *pc_ucredCurrent credentials.
uid_tp_ruidReal user id.
uid_tp_svuidSaved effective user id.
gid_tp_rgidReal group id.
gid_tp_svgidSaved effective group id.
intp_refcntNumber of references.

struct_ucred

size 76, align 4
int32_tcr_refreference count
uid_tcr_uideffective user id
shortcr_ngroupsnumber of groups
gid_t[16]cr_groupsgroups

structkinfo_proc

size 648, align 8
struct extern_prockp_procproc structure
struct eprockp_eproc

macroWMESGLEN

#define WMESGLEN 7

macroEPROC_CTTY

#define EPROC_CTTY 0x01
controlling tty vnode active

macroEPROC_SLEADER

#define EPROC_SLEADER 0x02
session leader

macroCOMAPT_MAXLOGNAME

#define COMAPT_MAXLOGNAME 12

macroKIPC_MAXSOCKBUF

KERN_IPC identifiers
#define KIPC_MAXSOCKBUF 1
int: max size of a socket buffer

macroKIPC_SOCKBUF_WASTE

#define KIPC_SOCKBUF_WASTE 2
int: wastage factor in sockbuf

macroKIPC_SOMAXCONN

#define KIPC_SOMAXCONN 3
int: max length of connection q

macroKIPC_MAX_LINKHDR

#define KIPC_MAX_LINKHDR 4
int: max length of link header

macroKIPC_MAX_PROTOHDR

#define KIPC_MAX_PROTOHDR 5
int: max length of network header

macroKIPC_MAX_HDR

#define KIPC_MAX_HDR 6
int: max total length of headers

macroKIPC_MAX_DATALEN

#define KIPC_MAX_DATALEN 7
int: max length of data?

macroKIPC_MBSTAT

#define KIPC_MBSTAT 8
struct: mbuf usage statistics

macroKIPC_NMBCLUSTERS

#define KIPC_NMBCLUSTERS 9
int: maximum mbuf clusters

macroKIPC_SOQLIMITCOMPAT

#define KIPC_SOQLIMITCOMPAT 10
int: socket queue limit

macroVM_METER

CTL_VM identifiers
#define VM_METER 1
struct vmmeter

macroVM_LOADAVG

#define VM_LOADAVG 2
struct loadavg

macroVM_MACHFACTOR

Note: "3" was skipped sometime ago and should probably remain unused to avoid any new entry from being accepted by older kernels...
#define VM_MACHFACTOR 4
struct loadavg with mach factor

macroVM_SWAPUSAGE

#define VM_SWAPUSAGE 5
total swap usage

macroVM_MAXID

#define VM_MAXID 6
number of valid vm ids

macroCTL_VM_NAMES

#define CTL_VM_NAMES {
	{ 0, 0 },
	{ "vmmeter", CTLTYPE_STRUCT },
	{ "loadavg", CTLTYPE_STRUCT },
	{ 0, 0 }, /* placeholder for "3" (see comment above) */
	{ "dummy", CTLTYPE_INT },
	{ "swapusage", CTLTYPE_STRUCT }
}

structxsw_usage

size 32, align 8
u_int64_txsu_total
u_int64_txsu_avail
u_int64_txsu_used
u_int32_txsu_pagesize
boolean_txsu_encrypted

structloadavg

Load average structure. Use of fixpt_t assume <sys/types.h> in scope. XXX perhaps we should protect fixpt_t, and define it here (or discard it)
size 24, align 8
fixpt_t[3]ldavg
longfscale

variableaverunnable

extern struct loadavg averunnable

macroLSCALE

#define LSCALE 1000
scaling for "fixed point" arithmetic

macroHW_MACHINE

CTL_HW identifiers
#define HW_MACHINE 1
string: machine class (deprecated: use HW_PRODUCT)

macroHW_MODEL

#define HW_MODEL 2
string: specific machine model (deprecated: use HW_TARGET)

macroHW_NCPU

#define HW_NCPU 3
int: number of cpus

macroHW_BYTEORDER

#define HW_BYTEORDER 4
int: machine byte order

macroHW_PHYSMEM

#define HW_PHYSMEM 5
int: total memory

macroHW_USERMEM

#define HW_USERMEM 6
int: non-kernel memory

macroHW_PAGESIZE

#define HW_PAGESIZE 7
int: software page size

macroHW_DISKNAMES

#define HW_DISKNAMES 8
strings: disk drive names

macroHW_DISKSTATS

#define HW_DISKSTATS 9
struct: diskstats[]

macroHW_EPOCH

#define HW_EPOCH 10
int: 0 for Legacy, else NewWorld

macroHW_FLOATINGPT

#define HW_FLOATINGPT 11
int: has HW floating point?

macroHW_MACHINE_ARCH

#define HW_MACHINE_ARCH 12
string: machine architecture

macroHW_VECTORUNIT

#define HW_VECTORUNIT 13
int: has HW vector unit?

macroHW_BUS_FREQ

#define HW_BUS_FREQ 14
int: Bus Frequency

macroHW_CPU_FREQ

#define HW_CPU_FREQ 15
int: CPU Frequency

macroHW_CACHELINE

#define HW_CACHELINE 16
int: Cache Line Size in Bytes

macroHW_L1ICACHESIZE

#define HW_L1ICACHESIZE 17
int: L1 I Cache Size in Bytes

macroHW_L1DCACHESIZE

#define HW_L1DCACHESIZE 18
int: L1 D Cache Size in Bytes

macroHW_L2SETTINGS

#define HW_L2SETTINGS 19
int: L2 Cache Settings

macroHW_L2CACHESIZE

#define HW_L2CACHESIZE 20
int: L2 Cache Size in Bytes

macroHW_L3SETTINGS

#define HW_L3SETTINGS 21
int: L3 Cache Settings

macroHW_L3CACHESIZE

#define HW_L3CACHESIZE 22
int: L3 Cache Size in Bytes

macroHW_TB_FREQ

#define HW_TB_FREQ 23
int: Bus Frequency

macroHW_MEMSIZE

#define HW_MEMSIZE 24
uint64_t: physical ram size

macroHW_AVAILCPU

#define HW_AVAILCPU 25
int: number of available CPUs

macroHW_TARGET

#define HW_TARGET 26
string: model identifier

macroHW_PRODUCT

#define HW_PRODUCT 27
string: product identifier

macroHW_MAXID

#define HW_MAXID 28
number of valid hw ids

macroCTL_HW_NAMES

#define CTL_HW_NAMES {
	{ 0, 0 },
	{ "machine", CTLTYPE_STRING },          /* Deprecated: use hw.product */
	{ "model", CTLTYPE_STRING },            /* Deprecated: use hw.target */
	{ "ncpu", CTLTYPE_INT },
	{ "byteorder", CTLTYPE_INT },
	{ "physmem", CTLTYPE_INT },
	{ "usermem", CTLTYPE_INT },
	{ "pagesize", CTLTYPE_INT },
	{ "disknames", CTLTYPE_STRUCT },
	{ "diskstats", CTLTYPE_STRUCT },
	{ "epoch", CTLTYPE_INT },
	{ "floatingpoint", CTLTYPE_INT },
	{ "machinearch", CTLTYPE_STRING },
	{ "vectorunit", CTLTYPE_INT },
	{ "busfrequency", CTLTYPE_INT },
	{ "cpufrequency", CTLTYPE_INT },
	{ "cachelinesize", CTLTYPE_INT },
	{ "l1icachesize", CTLTYPE_INT },
	{ "l1dcachesize", CTLTYPE_INT },
	{ "l2settings", CTLTYPE_INT },
	{ "l2cachesize", CTLTYPE_INT },
	{ "l3settings", CTLTYPE_INT },
	{ "l3cachesize", CTLTYPE_INT },
	{ "tbfrequency", CTLTYPE_INT },
	{ "memsize", CTLTYPE_QUAD },
	{ "availcpu", CTLTYPE_INT },
	{ "target", CTLTYPE_STRING },
	{ "product", CTLTYPE_STRING },
}

macroUSER_CS_PATH

CTL_USER definitions
#define USER_CS_PATH 1
string: _CS_PATH

macroUSER_BC_BASE_MAX

#define USER_BC_BASE_MAX 2

macroUSER_BC_DIM_MAX

#define USER_BC_DIM_MAX 3

macroUSER_BC_SCALE_MAX

#define USER_BC_SCALE_MAX 4

macroUSER_BC_STRING_MAX

#define USER_BC_STRING_MAX 5

macroUSER_COLL_WEIGHTS_MAX

#define USER_COLL_WEIGHTS_MAX 6

macroUSER_EXPR_NEST_MAX

#define USER_EXPR_NEST_MAX 7

macroUSER_LINE_MAX

#define USER_LINE_MAX 8

macroUSER_RE_DUP_MAX

#define USER_RE_DUP_MAX 9

macroUSER_POSIX2_VERSION

#define USER_POSIX2_VERSION 10
int: POSIX2_VERSION

macroUSER_POSIX2_C_BIND

#define USER_POSIX2_C_BIND 11
int: POSIX2_C_BIND

macroUSER_POSIX2_C_DEV

#define USER_POSIX2_C_DEV 12
int: POSIX2_C_DEV

macroUSER_POSIX2_CHAR_TERM

#define USER_POSIX2_CHAR_TERM 13
int: POSIX2_CHAR_TERM

macroUSER_POSIX2_FORT_DEV

#define USER_POSIX2_FORT_DEV 14
int: POSIX2_FORT_DEV

macroUSER_POSIX2_FORT_RUN

#define USER_POSIX2_FORT_RUN 15
int: POSIX2_FORT_RUN

macroUSER_POSIX2_LOCALEDEF

#define USER_POSIX2_LOCALEDEF 16
int: POSIX2_LOCALEDEF

macroUSER_POSIX2_SW_DEV

#define USER_POSIX2_SW_DEV 17
int: POSIX2_SW_DEV

macroUSER_POSIX2_UPE

#define USER_POSIX2_UPE 18
int: POSIX2_UPE

macroUSER_STREAM_MAX

#define USER_STREAM_MAX 19
int: POSIX2_STREAM_MAX

macroUSER_TZNAME_MAX

#define USER_TZNAME_MAX 20
int: POSIX2_TZNAME_MAX

macroUSER_MAXID

#define USER_MAXID 21
number of valid user ids

macroCTL_USER_NAMES

#define CTL_USER_NAMES {
	{ 0, 0 },
	{ "cs_path", CTLTYPE_STRING },
	{ "bc_base_max", CTLTYPE_INT },
	{ "bc_dim_max", CTLTYPE_INT },
	{ "bc_scale_max", CTLTYPE_INT },
	{ "bc_string_max", CTLTYPE_INT },
	{ "coll_weights_max", CTLTYPE_INT },
	{ "expr_nest_max", CTLTYPE_INT },
	{ "line_max", CTLTYPE_INT },
	{ "re_dup_max", CTLTYPE_INT },
	{ "posix2_version", CTLTYPE_INT },
	{ "posix2_c_bind", CTLTYPE_INT },
	{ "posix2_c_dev", CTLTYPE_INT },
	{ "posix2_char_term", CTLTYPE_INT },
	{ "posix2_fort_dev", CTLTYPE_INT },
	{ "posix2_fort_run", CTLTYPE_INT },
	{ "posix2_localedef", CTLTYPE_INT },
	{ "posix2_sw_dev", CTLTYPE_INT },
	{ "posix2_upe", CTLTYPE_INT },
	{ "stream_max", CTLTYPE_INT },
	{ "tzname_max", CTLTYPE_INT }
}

macroCTL_DEBUG_NAME

CTL_DEBUG definitions Second level identifier specifies which debug variable. Third level identifier specifies which stucture component.
#define CTL_DEBUG_NAME 0
string: variable name

macroCTL_DEBUG_VALUE

#define CTL_DEBUG_VALUE 1
int: variable value

macroCTL_DEBUG_MAXID

#define CTL_DEBUG_MAXID 20

functionsysctl

int sysctl(
	int *,
	u_int,
	void *__sized_by(*oldlenp),
	size_t *oldlenp,
	void *__sized_by(newlen),
	size_t newlen
)
man page · May 17, 2013
sysctl(3) — get or set system information

functionsysctlbyname

int sysctlbyname(
	const char *,
	void *__sized_by(*oldlenp),
	size_t *oldlenp,
	void *__sized_by(newlen),
	size_t newlen
)
man page · May 17, 2013
sysctlbyname(3) — get or set system information

functionsysctlnametomib

int sysctlnametomib(const char *, int *__counted_by(*sizep), size_t *sizep)
man page · May 17, 2013
sysctlnametomib(3) — get or set system information