SYSCTL man page on 4.4BSD

Man page or keyword search:  
man Server   1065 pages
apropos Keyword Search (all sections)
Output format
4.4BSD logo
[printable version]

SYSCTL(3)		 BSD Library Functions Manual		     SYSCTL(3)

NAME
     sysctl — get or set system information

SYNOPSIS
     #include <sys/sysctl.h>

     int
     sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, void *newp,
	 size_t newlen);

DESCRIPTION
     The sysctl function retrieves system information and allows processes
     with appropriate privileges to set system information.  The information
     available from sysctl consists of integers, strings, and tables.  Infor‐
     mation may be retrieved and set from the command interface using the
     sysctl(1) utility.

     Unless explicitly noted below, sysctl returns a consistent snapshot of
     the data requested.  Consistency is obtained by locking the destination
     buffer into memory so that the data may be copied out without blocking.
     Calls to sysctl are serialized to avoid deadlock.

     The state is described using a ``Management Information Base'' (MIB)
     style name, listed in name, which is a namelen length array of integers.

     The information is copied into the buffer specified by oldp.  The size of
     the buffer is given by the location specified by oldlenp before the call,
     and that location gives the amount of data copied after a successful
     call.  If the amount of data available is greater than the size of the
     buffer supplied, the call supplies as much data as fits in the buffer
     provided and returns with the error code ENOMEM.  If the old value is not
     desired, oldp and oldlenp should be set to NULL.

     The size of the available data can be determined by calling sysctl with a
     NULL parameter for oldp.  The size of the available data will be returned
     in the location pointed to by oldlenp.  For some operations, the amount
     of space may change often.	 For these operations, the system attempts to
     round up so that the returned size is large enough for a call to return
     the data shortly thereafter.

     To set a new value, newp is set to point to a buffer of length newlen
     from which the requested value is to be taken.  If a new value is not to
     be set, newp should be set to NULL and newlen set to 0.

     The top level names are defined with a CTL_ prefix 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.

	   Name		     Next level names	       Description
	   CTL_DEBUG	     sys/sysctl.h	       Debugging
	   CTL_VFS	     sys/mount.h	       Filesystem
	   CTL_HW	     sys/sysctl.h	       Generic CPU, I/O
	   CTL_KERN	     sys/sysctl.h	       High kernel limits
	   CTL_MACHDEP	     sys/sysctl.h	       Machine dependent
	   CTL_NET	     sys/socket.h	       Networking
	   CTL_USER	     sys/sysctl.h	       User-level
	   CTL_VM	     vm/vm_param.h	       Virtual memory

     For example, the following retrieves the maximum number of processes
     allowed in the system:
	   int mib[2], maxproc;
	   size_t len;

	   mib[0] = CTL_KERN;
	   mib[1] = KERN_MAXPROC;
	   len = sizeof(maxproc);
	   sysctl(mib, 2, &maxproc, &len, NULL, 0);

     To retrieve the standard search path for the system utilities:
	   int mib[2];
	   size_t len;
	   char *p;

	   mib[0] = CTL_USER;
	   mib[1] = USER_CS_PATH;
	   sysctl(mib, 2, NULL, &len, NULL, 0);
	   p = malloc(len);
	   sysctl(mib, 2, p, &len, NULL, 0);

CTL_DEBUG
     The debugging variables vary from system to system.  A debugging variable
     may be added or deleted without need to recompile sysctl to know about
     it.  Each time it runs, sysctl gets the list of debugging variables from
     the kernel and displays their current values.  The system defines twenty
     (struct ctldebug) variables named debug0 through debug19.	They are
     declared as separate variables so that they can be individually initial‐
     ized at the location of their associated variable.	 The loader prevents
     multiple use of the same variable by issuing errors if a variable is ini‐
     tialized in more than one place.  For example, to export the variable
     dospecialcheck as a debugging variable, the following declaration would
     be used:
	   int dospecialcheck = 1;
	   struct ctldebug debug5 = { "dospecialcheck", &dospecialcheck };

CTL_VFS
     A distinguished second level name, VFS_GENERIC, is used to get general
     information about all filesystems.	 One of its third level identifiers is
     VFS_MAXTYPENUM that gives the highest valid filesystem type number.  Its
     other third level identifier is VFS_CONF that returns configuration
     information about the filesystem type given as a fourth level identifier
     (see getvfsbyname(3) as an example of its use).  The remaining second
     level identifiers are the filesystem type number returned by a statfs(2)
     call or from VFS_CONF.  The third level identifiers available for each
     filesystem are given in the header file that defines the mount argument
     structure for that filesystem.

CTL_HW
     The string and integer information available for the CTL_HW level is
     detailed below.  The changeable column shows whether a process with
     appropriate privilege may change the value.

	   Second level name	      Type	    Changeable
	   HW_MACHINE		      string	    no
	   HW_MODEL		      string	    no
	   HW_NCPU		      integer	    no
	   HW_BYTEORDER		      integer	    no
	   HW_PHYSMEM		      integer	    no
	   HW_USERMEM		      integer	    no
	   HW_PAGESIZE		      integer	    no

     HW_MACHINE
	     The machine class.

     HW_MODEL
	     The machine model

     HW_NCPU

	     The number of cpus.

     HW_BYTEORDER
	     The byteorder (4,321, or 1,234).

     HW_PHYSMEM
	     The bytes of physical memory.

     HW_USERMEM
	     The bytes of non-kernel memory.

     HW_PAGESIZE
	     The software page size.

CTL_KERN
     The string and integer information available for the CTL_KERN level is
     detailed below.  The changeable column shows whether a process with
     appropriate privilege may change the value.  The types of data currently
     available are process information, system vnodes, the open file entries,
     routing table entries, virtual memory statistics, load average history,
     and clock rate information.

	   Second level name	       Type		      Changeable
	   KERN_ARGMAX		       integer		      no
	   KERN_BOOTTIME	       struct timeval	      no
	   KERN_CHOWN_RESTRICTED       integer		      no
	   KERN_CLOCKRATE	       struct clockinfo	      no
	   KERN_FILE		       struct file	      no
	   KERN_HOSTID		       integer		      yes
	   KERN_HOSTNAME	       string		      yes
	   KERN_JOB_CONTROL	       integer		      no
	   KERN_LINK_MAX	       integer		      no
	   KERN_MAXFILES	       integer		      yes
	   KERN_MAXPROC		       integer		      yes
	   KERN_MAXVNODES	       integer		      yes
	   KERN_MAX_CANON	       integer		      no
	   KERN_MAX_INPUT	       integer		      no
	   KERN_NAME_MAX	       integer		      no
	   KERN_NGROUPS		       integer		      no
	   KERN_NO_TRUNC	       integer		      no
	   KERN_OSRELEASE	       string		      no
	   KERN_OSREV		       integer		      no
	   KERN_OSTYPE		       string		      no
	   KERN_PATH_MAX	       integer		      no
	   KERN_PIPE_BUF	       integer		      no
	   KERN_POSIX1		       integer		      no
	   KERN_PROC		       struct proc	      no
	   KERN_PROF		       node		      not applicable
	   KERN_SAVED_IDS	       integer		      no
	   KERN_SECURELVL	       integer		      raise only
	   KERN_VDISABLE	       integer		      no
	   KERN_VERSION		       string		      no
	   KERN_VNODE		       struct vnode	      no

     KERN_ARGMAX
	     The maximum bytes of argument to exec(2).

     KERN_BOOTTIME
	     A struct timeval structure is returned.  This structure contains
	     the time that the system was booted.

     KERN_CHOWN_RESTRICTED
	     Return 1 if appropriate privileges are required for the chown(2)
	     system call, otherwise 0.

     KERN_CLOCKRATE
	     A struct clockinfo structure is returned.	This structure con‐
	     tains the clock, statistics clock and profiling clock frequen‐
	     cies, and the number of micro-seconds per hz tick.

     KERN_FILE
	     Return the entire file table.  The returned data consists of a
	     single struct filehead followed by an array of struct file, whose
	     size depends on the current number of such objects in the system.

     KERN_HOSTID
	     Get or set the host id.

     KERN_HOSTNAME
	     Get or set the hostname.

     KERN_JOB_CONTROL
	     Return 1 if job control is available on this system, otherwise 0.

     KERN_LINK_MAX
	     The maximum file link count.

     KERN_MAXFILES
	     The maximum number of open files that may be open in the system.

     KERN_MAXPROC
	     The maximum number of simultaneous processes the system will
	     allow.

     KERN_MAXVNODES
	     The maximum number of vnodes available on the system.

     KERN_MAX_CANON
	     The maximum number of bytes in terminal canonical input line.

     KERN_MAX_INPUT
	     The minimum maximum number of bytes for which space is available
	     in a terminal input queue.

     KERN_NAME_MAX
	     The maximum number of bytes in a file name.

     KERN_NGROUPS
	     The maximum number of supplemental groups.

     KERN_NO_TRUNC
	     Return 1 if file names longer than KERN_NAME_MAX are truncated.

     KERN_OSRELEASE
	     The system release string.

     KERN_OSREV
	     The system revision string.

     KERN_OSTYPE
	     The system type string.

     KERN_PATH_MAX
	     The maximum number of bytes in a pathname.

     KERN_PIPE_BUF
	     The maximum number of bytes which will be written atomically to a
	     pipe.

     KERN_POSIX1
	     The version of ISO/IEC 9945 (POSIX 1003.1) with which the system
	     attempts to comply.

     KERN_PROC
	     Return the entire process table, or a subset of it.  An array of
	     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:

		   Third level name	     Fourth level is:
		   KERN_PROC_ALL	     None
		   KERN_PROC_PID	     A process ID
		   KERN_PROC_PGRP	     A process group
		   KERN_PROC_TTY	     A tty device
		   KERN_PROC_UID	     A user ID
		   KERN_PROC_RUID	     A real user ID

     KERN_PROF
	     Return profiling information about the kernel.  If the kernel is
	     not compiled for profiling, attempts to retrieve any of the
	     KERN_PROF values will fail with EOPNOTSUPP.  The third level
	     names for the string and integer profiling information is
	     detailed below.  The changeable column shows whether a process
	     with appropriate privilege may change the value.

		   Third level name	 Type			Changeable
		   GPROF_STATE		 integer		yes
		   GPROF_COUNT		 u_short[]		yes
		   GPROF_FROMS		 u_short[]		yes
		   GPROF_TOS		 struct tostruct	yes
		   GPROF_GMONPARAM	 struct gmonparam	no

	     The variables are as follows:

	     GPROF_STATE
		     Returns GMON_PROF_ON or GMON_PROF_OFF to show that pro‐
		     filing is running or stopped.

	     GPROF_COUNT
		     Array of statistical program counter counts.

	     GPROF_FROMS
		     Array indexed by program counter of call-from points.

	     GPROF_TOS
		     Array of struct tostruct describing destination of calls
		     and their counts.

	     GPROF_GMONPARAM
		     Structure giving the sizes of the above arrays.

     KERN_SAVED_IDS
	     Returns 1 if saved set-group and saved set-user ID is available.

     KERN_SECURELVL
	     The system security level.	 This level may be raised by processes
	     with appropriate privilege.  It may only be lowered by process 1.

     KERN_VDISABLE
	     Returns the terminal character disabling value.

     KERN_VERSION
	     The system version string.

     KERN_VNODE
	     Return the entire vnode table.  Note, the vnode table is not nec‐
	     essarily a consistent snapshot of the system.  The returned data
	     consists of an array whose size depends on the current number of
	     such objects in the system.  Each element of the array contains
	     the kernel address of a vnode struct vnode * followed by the
	     vnode itself struct vnode.

CTL_MACHDEP
     The set of variables defined is architecture dependent.  Most architec‐
     tures define at least the following variables.

	   Second level name	Type	      Changeable
	   CPU_CONSDEV		dev_t	      no

CTL_NET
     The string and integer information available for the CTL_NET level is
     detailed below.  The changeable column shows whether a process with
     appropriate privilege may change the value.

	   Second level name	      Type		     Changeable
	   PF_ROUTE		      routing messages	     no
	   PF_INET		      internet values	     yes

     PF_ROUTE
	     Return the entire routing table or a subset of it.	 The data is
	     returned as a sequence of routing messages (see route(4) for the
	     header file, format and meaning).	The length of each message is
	     contained in the message header.

	     The third level name is a protocol number, which is currently
	     always 0.	The fourth level name is an address family, which may
	     be set to 0 to select all address families.  The fifth and sixth
	     level names are as follows:

		   Fifth level name	     Sixth level is:
		   NET_RT_FLAGS		     rtflags
		   NET_RT_DUMP		     None
		   NET_RT_IFLIST	     None

     PF_INET
	     Get or set various global information about the internet proto‐
	     cols.  The third level name is the protocol.  The fourth level
	     name is the variable name.	 The currently defined protocols and
	     names are:

		   Protocol name	  Variable
									    name       Type	     Changeable
		   ip			  forwarding	      integer	    yes
		   ip			  redirect	      integer	    yes
		   ip			  ttl		      integer	    yes
		   icmp			  maskrepl	      integer	    yes
		   udp			  checksum	      integer	    yes

	     The variables are as follows:

	     ip.forwarding
		     Returns 1 when IP forwarding is enabled for the host,
		     meaning that the host is acting as a router.

	     ip.redirect
		     Returns 1 when ICMP redirects may be sent by the host.
		     This option is ignored unless the host is routing IP
		     packets, and should normally be enabled on all systems.

	     ip.ttl  The maximum time-to-live (hop count) value for an IP
		     packet sourced by the system.  This value applies to nor‐
		     mal transport protocols, not to ICMP.

	     icmp.maskrepl
		     Returns 1 if ICMP network mask requests are to be
		     answered.

	     udp.checksum
		     Returns 1 when UDP checksums are being computed and
		     checked.  Disabling UDP checksums is strongly discour‐
		     aged.

CTL_USER
     The string and integer information available for the CTL_USER level is
     detailed below.  The changeable column shows whether a process with
     appropriate privilege may change the value.

	   Second level name	       Type	     Changeable
	   USER_BC_BASE_MAX	       integer	     no
	   USER_BC_DIM_MAX	       integer	     no
	   USER_BC_SCALE_MAX	       integer	     no
	   USER_BC_STRING_MAX	       integer	     no
	   USER_COLL_WEIGHTS_MAX       integer	     no
	   USER_CS_PATH		       string	     no
	   USER_EXPR_NEST_MAX	       integer	     no
	   USER_LINE_MAX	       integer	     no
	   USER_POSIX2_CHAR_TERM       integer	     no
	   USER_POSIX2_C_BIND	       integer	     no
	   USER_POSIX2_C_DEV	       integer	     no
	   USER_POSIX2_FORT_DEV	       integer	     no
	   USER_POSIX2_FORT_RUN	       integer	     no
	   USER_POSIX2_LOCALEDEF       integer	     no
	   USER_POSIX2_SW_DEV	       integer	     no
	   USER_POSIX2_UPE	       integer	     no
	   USER_POSIX2_VERSION	       integer	     no
	   USER_RE_DUP_MAX	       integer	     no
	   USER_STREAM_MAX	       integer	     no
	   USER_TZNAME_MAX	       integer	     no

					 USER_BC_BASE_MAX
						 The maximum ibase/obase val‐
						 ues in the bc(1) utility.

					 USER_BC_DIM_MAX
						 The maximum array size in the
						 bc(1) utility.

					 USER_BC_SCALE_MAX
						 The maximum scale value in
						 the bc(1) utility.

					 USER_BC_STRING_MAX
						 The maximum string length in
						 the bc(1) utility.

					 USER_COLL_WEIGHTS_MAX
						 The maximum number of weights
						 that can be assigned to any
						 entry of the LC_COLLATE order
						 keyword in the locale defini‐
						 tion file.

					 USER_CS_PATH
						 Return a value for the PATH
						 environment variable that
						 finds all the standard utili‐
						 ties.

					 USER_EXPR_NEST_MAX
						 The maximum number of expres‐
						 sions that can be nested
						 within parenthesis by the
						 expr(1) utility.

					 USER_LINE_MAX
						 The maximum length in bytes
						 of a text-processing util‐
						 ity's input line.

					 USER_POSIX2_CHAR_TERM
						 Return 1 if the system sup‐
						 ports at least one terminal
						 type capable of all opera‐
						 tions described in POSIX
						 1003.2, otherwise 0.

					 USER_POSIX2_C_BIND
						 Return 1 if the system's C-
						 language development facili‐
						 ties support the C-Language
						 Bindings Option, otherwise 0.

					 USER_POSIX2_C_DEV
						 Return 1 if the system sup‐
						 ports the C-Language Develop‐
						 ment Utilities Option, other‐
						 wise 0.

					 USER_POSIX2_FORT_DEV
						 Return 1 if the system sup‐
						 ports the FORTRAN Development
						 Utilities Option, otherwise
						 0.

					 USER_POSIX2_FORT_RUN
						 Return 1 if the system sup‐
						 ports the FORTRAN Runtime
						 Utilities Option, otherwise
						 0.

					 USER_POSIX2_LOCALEDEF
						 Return 1 if the system sup‐
						 ports the creation of
						 locales, otherwise 0.

					 USER_POSIX2_SW_DEV
						 Return 1 if the system sup‐
						 ports the Software Develop‐
						 ment Utilities Option, other‐
						 wise 0.

					 USER_POSIX2_UPE
						 Return 1 if the system sup‐
						 ports the User Portability
						 Utilities Option, otherwise
						 0.

					 USER_POSIX2_VERSION
						 The version of POSIX 1003.2
						 with which the system
						 attempts to comply.

					 USER_RE_DUP_MAX
						 The maximum number of
						 repeated occurrences of a
						 regular expression permitted
						 when using interval notation.

					 USER_STREAM_MAX
						 The minimum maximum number of
						 streams that a process may
						 have open at any one time.

					 USER_TZNAME_MAX
						 The minimum maximum number of
						 types supported for the name
						 of a timezone.

CTL_VM
     The string and integer information available for the CTL_VM level is
     detailed below.  The changeable column shows whether a process with
     appropriate privilege may change the value.

	   Second level name	      Type		   Changeable
	   VM_LOADAVG		      struct loadavg	   no
	   VM_METER		      struct vmtotal	   no

     VM_LOADAVG
	     Return the load average history.  The returned data consists of a
	     struct loadavg.

     VM_METER
	     Return the system wide virtual memory statistics.	The returned
	     data consists of a struct vmtotal.

RETURN VALUES
     If the call to sysctl is successful, the number of bytes copied out is
     returned.	Otherwise -1 is returned and errno is set appropriately.

ERRORS
     The following errors may be reported:

     [EFAULT]		The buffer name, oldp, newp, or length pointer oldlenp
			contains an invalid address.

     [EINVAL]		The name array is less than two or greater than
			CTL_MAXNAME.

     [EINVAL]		A non-null newp is given and its specified length in
			newlen is too large or too small.

     [ENOMEM]		The length pointed to by oldlenp is too short to hold
			the requested value.

     [ENOTDIR]		The name array specifies an intermediate rather than
			terminal name.

     [EOPNOTSUPP]	The name array specifies a value that is unknown.

     [EPERM]		An attempt is made to set a read-only value.

     [EPERM]		A process without appropriate privilege attempts to
			set a value.

FILES
     <sys/sysctl.h>	   definitions for top level identifiers, second level
			   kernel and hardware identifiers, and user level
			   identifiers
     <sys/socket.h>	   definitions for second level network identifiers
     <sys/gmon.h>	   definitions for third level profiling identifiers
     <vm/vm_param.h>	   definitions for second level virtual memory identi‐
			   fiers
     <netinet/in.h>	   definitions for third level Internet identifiers
			   and fourth level IP identifiers
     <netinet/icmp_var.h>  definitions for fourth level ICMP identifiers
     <netinet/udp_var.h>   definitions for fourth level UDP identifiers

SEE ALSO
     sysctl(8)

HISTORY
     The sysctl function first appeared in 4.4BSD.

BSD				April 19, 2024				   BSD
[top]

List of man pages available for 4.4BSD

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net