epoc32/include/stdapis/sys/sysctl.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
child 4 837f303aceeb
     1.1 --- a/epoc32/include/stdapis/sys/sysctl.h	Tue Nov 24 13:55:44 2009 +0000
     1.2 +++ b/epoc32/include/stdapis/sys/sysctl.h	Tue Mar 16 16:12:26 2010 +0000
     1.3 @@ -1,1 +1,585 @@
     1.4 -sysctl.h
     1.5 +/*-
     1.6 + * Copyright (c) 1989, 1993
     1.7 + *	The Regents of the University of California.  All rights reserved.
     1.8 + *
     1.9 + * This code is derived from software contributed to Berkeley by
    1.10 + * Mike Karels at Berkeley Software Design, Inc.
    1.11 + *
    1.12 + * Redistribution and use in source and binary forms, with or without
    1.13 + * modification, are permitted provided that the following conditions
    1.14 + * are met:
    1.15 + * 1. Redistributions of source code must retain the above copyright
    1.16 + *    notice, this list of conditions and the following disclaimer.
    1.17 + * 2. Redistributions in binary form must reproduce the above copyright
    1.18 + *    notice, this list of conditions and the following disclaimer in the
    1.19 + *    documentation and/or other materials provided with the distribution.
    1.20 + * 4. Neither the name of the University nor the names of its contributors
    1.21 + *    may be used to endorse or promote products derived from this software
    1.22 + *    without specific prior written permission.
    1.23 + *
    1.24 + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
    1.25 + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    1.26 + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    1.27 + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
    1.28 + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    1.29 + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    1.30 + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    1.31 + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    1.32 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    1.33 + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    1.34 + * SUCH DAMAGE.
    1.35 + * © Portions copyright (c) 2007 Symbian Software Ltd. All rights reserved.
    1.36 + *	@(#)sysctl.h	8.1 (Berkeley) 6/2/93
    1.37 + * $FreeBSD: src/sys/sys/sysctl.h,v 1.138 2005/04/18 02:10:37 das Exp $
    1.38 + */
    1.39 +
    1.40 +#ifndef _SYS_SYSCTL_H_
    1.41 +#define	_SYS_SYSCTL_H_
    1.42 +
    1.43 +#include <sys/queue.h>
    1.44 +
    1.45 +struct thread;
    1.46 +/*
    1.47 + * Definitions for sysctl call.  The sysctl call uses a hierarchical name
    1.48 + * for objects that can be examined or modified.  The name is expressed as
    1.49 + * a sequence of integers.  Like a file path name, the meaning of each
    1.50 + * component depends on its place in the hierarchy.  The top-level and kern
    1.51 + * identifiers are defined here, and other identifiers are defined in the
    1.52 + * respective subsystem header files.
    1.53 + */
    1.54 +
    1.55 +#define CTL_MAXNAME	24	/* largest number of components supported */
    1.56 +
    1.57 +/*
    1.58 + * Each subsystem defined by sysctl defines a list of variables
    1.59 + * for that subsystem. Each name is either a node with further
    1.60 + * levels defined below it, or it is a leaf of some particular
    1.61 + * type given below. Each sysctl level defines a set of name/type
    1.62 + * pairs to be used by sysctl(8) in manipulating the subsystem.
    1.63 + */
    1.64 +struct ctlname {
    1.65 +	char	*ctl_name;	/* subsystem name */
    1.66 +	int	ctl_type;	/* type of name */
    1.67 +};
    1.68 +
    1.69 +#define CTLTYPE		0xf	/* Mask for the type */
    1.70 +#define	CTLTYPE_NODE	1	/* name is a node */
    1.71 +#define	CTLTYPE_INT	2	/* name describes an integer */
    1.72 +#define	CTLTYPE_STRING	3	/* name describes a string */
    1.73 +#define	CTLTYPE_QUAD	4	/* name describes a 64-bit number */
    1.74 +#define	CTLTYPE_OPAQUE	5	/* name describes a structure */
    1.75 +#define	CTLTYPE_STRUCT	CTLTYPE_OPAQUE	/* name describes a structure */
    1.76 +#define	CTLTYPE_UINT	6	/* name describes an unsigned integer */
    1.77 +#define	CTLTYPE_LONG	7	/* name describes a long */
    1.78 +#define	CTLTYPE_ULONG	8	/* name describes an unsigned long */
    1.79 +
    1.80 +#define CTLFLAG_RD	0x80000000	/* Allow reads of variable */
    1.81 +#define CTLFLAG_WR	0x40000000	/* Allow writes to the variable */
    1.82 +#define CTLFLAG_RW	(CTLFLAG_RD|CTLFLAG_WR)
    1.83 +#define CTLFLAG_NOLOCK	0x20000000	/* XXX Don't Lock */
    1.84 +#define CTLFLAG_ANYBODY	0x10000000	/* All users can set this var */
    1.85 +#define CTLFLAG_SECURE	0x08000000	/* Permit set only if securelevel<=0 */
    1.86 +#define CTLFLAG_PRISON	0x04000000	/* Prisoned roots can fiddle */
    1.87 +#define CTLFLAG_DYN	0x02000000	/* Dynamic oid - can be freed */
    1.88 +#define CTLFLAG_SKIP	0x01000000	/* Skip this sysctl when listing */
    1.89 +#define CTLMASK_SECURE	0x00F00000	/* Secure level */
    1.90 +#define CTLFLAG_TUN	0x00080000	/* Tunable variable */
    1.91 +#define CTLFLAG_RDTUN	(CTLFLAG_RD|CTLFLAG_TUN)
    1.92 +
    1.93 +/*
    1.94 + * Secure level.   Note that CTLFLAG_SECURE == CTLFLAG_SECURE1.  
    1.95 + *
    1.96 + * Secure when the securelevel is raised to at least N.
    1.97 + */
    1.98 +#define CTLSHIFT_SECURE	20
    1.99 +#define CTLFLAG_SECURE1	(CTLFLAG_SECURE | (0 << CTLSHIFT_SECURE))
   1.100 +#define CTLFLAG_SECURE2	(CTLFLAG_SECURE | (1 << CTLSHIFT_SECURE))
   1.101 +#define CTLFLAG_SECURE3	(CTLFLAG_SECURE | (2 << CTLSHIFT_SECURE))
   1.102 +
   1.103 +/*
   1.104 + * USE THIS instead of a hardwired number from the categories below
   1.105 + * to get dynamically assigned sysctl entries using the linker-set
   1.106 + * technology. This is the way nearly all new sysctl variables should
   1.107 + * be implemented.
   1.108 + * e.g. SYSCTL_INT(_parent, OID_AUTO, name, CTLFLAG_RW, &variable, 0, "");
   1.109 + */ 
   1.110 +#define OID_AUTO	(-1)
   1.111 +
   1.112 +/*
   1.113 + * The starting number for dynamically-assigned entries.  WARNING!
   1.114 + * ALL static sysctl entries should have numbers LESS than this!
   1.115 + */
   1.116 +#define CTL_AUTO_START	0x100
   1.117 +
   1.118 +#ifdef _KERNEL
   1.119 +#define SYSCTL_HANDLER_ARGS struct sysctl_oid *oidp, void *arg1, int arg2, \
   1.120 +	struct sysctl_req *req
   1.121 +
   1.122 +/* definitions for sysctl_req 'lock' member */
   1.123 +#define REQ_UNLOCKED	0	/* not locked and not wired */
   1.124 +#define REQ_LOCKED	1	/* locked and not wired */
   1.125 +#define REQ_WIRED	2	/* locked and wired */
   1.126 +
   1.127 +/* definitions for sysctl_req 'flags' member */
   1.128 +#if defined(__amd64__) || defined(__ia64__)
   1.129 +#define	SCTL_MASK32	1	/* 32 bit emulation */
   1.130 +#endif
   1.131 +
   1.132 +/*
   1.133 + * This describes the access space for a sysctl request.  This is needed
   1.134 + * so that we can use the interface from the kernel or from user-space.
   1.135 + */
   1.136 +struct sysctl_req {
   1.137 +	struct thread	*td;		/* used for access checking */
   1.138 +	int		lock;		/* locking/wiring state */
   1.139 +	void		*oldptr;
   1.140 +	size_t		oldlen;
   1.141 +	size_t		oldidx;
   1.142 +	int		(*oldfunc)(struct sysctl_req *, const void *, size_t);
   1.143 +	void		*newptr;
   1.144 +	size_t		newlen;
   1.145 +	size_t		newidx;
   1.146 +	int		(*newfunc)(struct sysctl_req *, void *, size_t);
   1.147 +	size_t		validlen;
   1.148 +	int		flags;
   1.149 +};
   1.150 +
   1.151 +/*
   1.152 + * This describes one "oid" in the MIB tree.  Potentially more nodes can
   1.153 + * be hidden behind it, expanded by the handler.
   1.154 + */
   1.155 +struct sysctl_oid {
   1.156 +	struct sysctl_oid_list *oid_parent;
   1.157 +	SLIST_ENTRY(sysctl_oid) oid_link;
   1.158 +	int		oid_number;
   1.159 +	u_int		oid_kind;
   1.160 +	void		*oid_arg1;
   1.161 +	int		oid_arg2;
   1.162 +	const char	*oid_name;
   1.163 +	int 		(*oid_handler)(SYSCTL_HANDLER_ARGS);
   1.164 +	const char	*oid_fmt;
   1.165 +	int		oid_refcnt;
   1.166 +	const char	*oid_descr;
   1.167 +};
   1.168 +
   1.169 +#define SYSCTL_IN(r, p, l) (r->newfunc)(r, p, l)
   1.170 +#define SYSCTL_OUT(r, p, l) (r->oldfunc)(r, p, l)
   1.171 +
   1.172 +/* Declare a static oid to allow child oids to be added to it. */
   1.173 +#define SYSCTL_DECL(name)					\
   1.174 +	extern struct sysctl_oid_list sysctl_##name##_children
   1.175 +
   1.176 +/* Hide these in macros */
   1.177 +#define	SYSCTL_CHILDREN(oid_ptr) (struct sysctl_oid_list *) \
   1.178 +	(oid_ptr)->oid_arg1
   1.179 +#define	SYSCTL_CHILDREN_SET(oid_ptr, val) \
   1.180 +	(oid_ptr)->oid_arg1 = (val);
   1.181 +#define	SYSCTL_STATIC_CHILDREN(oid_name) \
   1.182 +	(&sysctl_##oid_name##_children)
   1.183 +
   1.184 +/* === Structs and macros related to context handling === */
   1.185 +
   1.186 +/* All dynamically created sysctls can be tracked in a context list. */
   1.187 +struct sysctl_ctx_entry {
   1.188 +	struct sysctl_oid *entry;
   1.189 +	TAILQ_ENTRY(sysctl_ctx_entry) link;
   1.190 +};
   1.191 +
   1.192 +#define SYSCTL_NODE_CHILDREN(parent, name) \
   1.193 +	sysctl_##parent##_##name##_children
   1.194 +
   1.195 +/* This constructs a "raw" MIB oid. */
   1.196 +#define SYSCTL_OID(parent, nbr, name, kind, a1, a2, handler, fmt, descr) \
   1.197 +	static struct sysctl_oid sysctl__##parent##_##name = {		 \
   1.198 +		&sysctl_##parent##_children, { 0 },			 \
   1.199 +		nbr, kind, a1, a2, #name, handler, fmt, 0, descr };	 \
   1.200 +	DATA_SET(sysctl_set, sysctl__##parent##_##name)
   1.201 +
   1.202 +#define SYSCTL_ADD_OID(ctx, parent, nbr, name, kind, a1, a2, handler, fmt, descr) \
   1.203 +	sysctl_add_oid(ctx, parent, nbr, name, kind, a1, a2, handler, fmt, descr)
   1.204 +
   1.205 +/* This constructs a node from which other oids can hang. */
   1.206 +#define SYSCTL_NODE(parent, nbr, name, access, handler, descr)		    \
   1.207 +	struct sysctl_oid_list SYSCTL_NODE_CHILDREN(parent, name);	    \
   1.208 +	SYSCTL_OID(parent, nbr, name, CTLTYPE_NODE|(access),		    \
   1.209 +		   (void*)&SYSCTL_NODE_CHILDREN(parent, name), 0, handler, \
   1.210 +		   "N", descr)
   1.211 +
   1.212 +#define SYSCTL_ADD_NODE(ctx, parent, nbr, name, access, handler, descr)	    \
   1.213 +	sysctl_add_oid(ctx, parent, nbr, name, CTLTYPE_NODE|(access),	    \
   1.214 +	0, 0, handler, "N", descr)
   1.215 +
   1.216 +/* Oid for a string.  len can be 0 to indicate '\0' termination. */
   1.217 +#define SYSCTL_STRING(parent, nbr, name, access, arg, len, descr) \
   1.218 +	SYSCTL_OID(parent, nbr, name, CTLTYPE_STRING|(access), \
   1.219 +		arg, len, sysctl_handle_string, "A", descr)
   1.220 +
   1.221 +#define SYSCTL_ADD_STRING(ctx, parent, nbr, name, access, arg, len, descr)  \
   1.222 +	sysctl_add_oid(ctx, parent, nbr, name, CTLTYPE_STRING|(access),	    \
   1.223 +	arg, len, sysctl_handle_string, "A", descr)
   1.224 +
   1.225 +/* Oid for an int.  If ptr is NULL, val is returned. */
   1.226 +#define SYSCTL_INT(parent, nbr, name, access, ptr, val, descr) \
   1.227 +	SYSCTL_OID(parent, nbr, name, CTLTYPE_INT|(access), \
   1.228 +		ptr, val, sysctl_handle_int, "I", descr)
   1.229 +
   1.230 +#define SYSCTL_ADD_INT(ctx, parent, nbr, name, access, ptr, val, descr)	    \
   1.231 +	sysctl_add_oid(ctx, parent, nbr, name, CTLTYPE_INT|(access),	    \
   1.232 +	ptr, val, sysctl_handle_int, "I", descr)
   1.233 +
   1.234 +/* Oid for an unsigned int.  If ptr is NULL, val is returned. */
   1.235 +#define SYSCTL_UINT(parent, nbr, name, access, ptr, val, descr) \
   1.236 +	SYSCTL_OID(parent, nbr, name, CTLTYPE_UINT|(access), \
   1.237 +		ptr, val, sysctl_handle_int, "IU", descr)
   1.238 +
   1.239 +#define SYSCTL_ADD_UINT(ctx, parent, nbr, name, access, ptr, val, descr)    \
   1.240 +	sysctl_add_oid(ctx, parent, nbr, name, CTLTYPE_UINT|(access),	    \
   1.241 +	ptr, val, sysctl_handle_int, "IU", descr)
   1.242 +
   1.243 +/* Oid for a long.  The pointer must be non NULL. */
   1.244 +#define SYSCTL_LONG(parent, nbr, name, access, ptr, val, descr) \
   1.245 +	SYSCTL_OID(parent, nbr, name, CTLTYPE_LONG|(access), \
   1.246 +		ptr, val, sysctl_handle_long, "L", descr)
   1.247 +
   1.248 +#define SYSCTL_ADD_LONG(ctx, parent, nbr, name, access, ptr, descr)	    \
   1.249 +	sysctl_add_oid(ctx, parent, nbr, name, CTLTYPE_LONG|(access),	    \
   1.250 +	ptr, 0, sysctl_handle_long, "L", descr)
   1.251 +
   1.252 +/* Oid for an unsigned long.  The pointer must be non NULL. */
   1.253 +#define SYSCTL_ULONG(parent, nbr, name, access, ptr, val, descr) \
   1.254 +	SYSCTL_OID(parent, nbr, name, CTLTYPE_ULONG|(access), \
   1.255 +		ptr, val, sysctl_handle_long, "LU", descr)
   1.256 +
   1.257 +#define SYSCTL_ADD_ULONG(ctx, parent, nbr, name, access, ptr, descr)	    \
   1.258 +	sysctl_add_oid(ctx, parent, nbr, name, CTLTYPE_ULONG|(access),	    \
   1.259 +	ptr, 0, sysctl_handle_long, "LU", descr)
   1.260 +
   1.261 +/* Oid for an opaque object.  Specified by a pointer and a length. */
   1.262 +#define SYSCTL_OPAQUE(parent, nbr, name, access, ptr, len, fmt, descr) \
   1.263 +	SYSCTL_OID(parent, nbr, name, CTLTYPE_OPAQUE|(access), \
   1.264 +		ptr, len, sysctl_handle_opaque, fmt, descr)
   1.265 +
   1.266 +#define SYSCTL_ADD_OPAQUE(ctx, parent, nbr, name, access, ptr, len, fmt, descr)\
   1.267 +	sysctl_add_oid(ctx, parent, nbr, name, CTLTYPE_OPAQUE|(access),	    \
   1.268 +	ptr, len, sysctl_handle_opaque, fmt, descr)
   1.269 +
   1.270 +/* Oid for a struct.  Specified by a pointer and a type. */
   1.271 +#define SYSCTL_STRUCT(parent, nbr, name, access, ptr, type, descr) \
   1.272 +	SYSCTL_OID(parent, nbr, name, CTLTYPE_OPAQUE|(access), \
   1.273 +		ptr, sizeof(struct type), sysctl_handle_opaque, \
   1.274 +		"S," #type, descr)
   1.275 +
   1.276 +#define SYSCTL_ADD_STRUCT(ctx, parent, nbr, name, access, ptr, type, descr) \
   1.277 +	sysctl_add_oid(ctx, parent, nbr, name, CTLTYPE_OPAQUE|(access),	    \
   1.278 +	ptr, sizeof(struct type), sysctl_handle_opaque, "S," #type, descr)
   1.279 +
   1.280 +/* Oid for a procedure.  Specified by a pointer and an arg. */
   1.281 +#define SYSCTL_PROC(parent, nbr, name, access, ptr, arg, handler, fmt, descr) \
   1.282 +	SYSCTL_OID(parent, nbr, name, (access), \
   1.283 +		ptr, arg, handler, fmt, descr)
   1.284 +
   1.285 +#define SYSCTL_ADD_PROC(ctx, parent, nbr, name, access, ptr, arg, handler, fmt, descr) \
   1.286 +	sysctl_add_oid(ctx, parent, nbr, name, (access),			    \
   1.287 +	ptr, arg, handler, fmt, descr)
   1.288 +
   1.289 +#endif /* _KERNEL */
   1.290 +
   1.291 +/*
   1.292 + * Top-level identifiers
   1.293 + */
   1.294 +#define	CTL_UNSPEC	0		/* unused */
   1.295 +#define	CTL_KERN	1		/* "high kernel": proc, limits */
   1.296 +#define	CTL_VM		2		/* virtual memory */
   1.297 +#define	CTL_VFS		3		/* filesystem, mount type is next */
   1.298 +#define	CTL_NET		4		/* network, see socket.h */
   1.299 +#define	CTL_DEBUG	5		/* debugging parameters */
   1.300 +#define	CTL_HW		6		/* generic cpu/io */
   1.301 +#define	CTL_MACHDEP	7		/* machine dependent */
   1.302 +#define	CTL_USER	8		/* user-level */
   1.303 +#define	CTL_P1003_1B	9		/* POSIX 1003.1B */
   1.304 +#define	CTL_MAXID	10		/* number of valid top-level ids */
   1.305 +
   1.306 +#define CTL_NAMES { \
   1.307 +	{ 0, 0 }, \
   1.308 +	{ "kern", CTLTYPE_NODE }, \
   1.309 +	{ "vm", CTLTYPE_NODE }, \
   1.310 +	{ "vfs", CTLTYPE_NODE }, \
   1.311 +	{ "net", CTLTYPE_NODE }, \
   1.312 +	{ "debug", CTLTYPE_NODE }, \
   1.313 +	{ "hw", CTLTYPE_NODE }, \
   1.314 +	{ "machdep", CTLTYPE_NODE }, \
   1.315 +	{ "user", CTLTYPE_NODE }, \
   1.316 +	{ "p1003_1b", CTLTYPE_NODE }, \
   1.317 +}
   1.318 +
   1.319 +/*
   1.320 + * CTL_KERN identifiers
   1.321 + */
   1.322 +#define	KERN_OSTYPE	 	 1	/* string: system version */
   1.323 +#define	KERN_OSRELEASE	 	 2	/* string: system release */
   1.324 +#define	KERN_OSREV	 	 3	/* int: system revision */
   1.325 +#define	KERN_VERSION	 	 4	/* string: compile time info */
   1.326 +#define	KERN_MAXVNODES	 	 5	/* int: max vnodes */
   1.327 +#define	KERN_MAXPROC	 	 6	/* int: max processes */
   1.328 +#define	KERN_MAXFILES	 	 7	/* int: max open files */
   1.329 +#define	KERN_ARGMAX	 	 8	/* int: max arguments to exec */
   1.330 +#define	KERN_SECURELVL	 	 9	/* int: system security level */
   1.331 +#define	KERN_HOSTNAME		10	/* string: hostname */
   1.332 +#define	KERN_HOSTID		11	/* int: host identifier */
   1.333 +#define	KERN_CLOCKRATE		12	/* struct: struct clockrate */
   1.334 +#define	KERN_VNODE		13	/* struct: vnode structures */
   1.335 +#define	KERN_PROC		14	/* struct: process entries */
   1.336 +#define	KERN_FILE		15	/* struct: file entries */
   1.337 +#define	KERN_PROF		16	/* node: kernel profiling info */
   1.338 +#define	KERN_POSIX1		17	/* int: POSIX.1 version */
   1.339 +#define	KERN_NGROUPS		18	/* int: # of supplemental group ids */
   1.340 +#define	KERN_JOB_CONTROL	19	/* int: is job control available */
   1.341 +#define	KERN_SAVED_IDS		20	/* int: saved set-user/group-ID */
   1.342 +#define	KERN_BOOTTIME		21	/* struct: time kernel was booted */
   1.343 +#define KERN_NISDOMAINNAME	22	/* string: YP domain name */
   1.344 +#define KERN_UPDATEINTERVAL	23	/* int: update process sleep time */
   1.345 +#define KERN_OSRELDATE		24	/* int: kernel release date */
   1.346 +#define KERN_NTP_PLL		25	/* node: NTP PLL control */
   1.347 +#define	KERN_BOOTFILE		26	/* string: name of booted kernel */
   1.348 +#define	KERN_MAXFILESPERPROC	27	/* int: max open files per proc */
   1.349 +#define	KERN_MAXPROCPERUID 	28	/* int: max processes per uid */
   1.350 +#define KERN_DUMPDEV		29	/* struct cdev *: device to dump on */
   1.351 +#define	KERN_IPC		30	/* node: anything related to IPC */
   1.352 +#define	KERN_DUMMY		31	/* unused */
   1.353 +#define	KERN_PS_STRINGS		32	/* int: address of PS_STRINGS */
   1.354 +#define	KERN_USRSTACK		33	/* int: address of USRSTACK */
   1.355 +#define	KERN_LOGSIGEXIT		34	/* int: do we log sigexit procs? */
   1.356 +#define	KERN_IOV_MAX		35	/* int: value of UIO_MAXIOV */
   1.357 +#define KERN_MAXID		36	/* number of valid kern ids */
   1.358 +
   1.359 +#define CTL_KERN_NAMES { \
   1.360 +	{ 0, 0 }, \
   1.361 +	{ "ostype", CTLTYPE_STRING }, \
   1.362 +	{ "osrelease", CTLTYPE_STRING }, \
   1.363 +	{ "osrevision", CTLTYPE_INT }, \
   1.364 +	{ "version", CTLTYPE_STRING }, \
   1.365 +	{ "maxvnodes", CTLTYPE_INT }, \
   1.366 +	{ "maxproc", CTLTYPE_INT }, \
   1.367 +	{ "maxfiles", CTLTYPE_INT }, \
   1.368 +	{ "argmax", CTLTYPE_INT }, \
   1.369 +	{ "securelevel", CTLTYPE_INT }, \
   1.370 +	{ "hostname", CTLTYPE_STRING }, \
   1.371 +	{ "hostid", CTLTYPE_UINT }, \
   1.372 +	{ "clockrate", CTLTYPE_STRUCT }, \
   1.373 +	{ "vnode", CTLTYPE_STRUCT }, \
   1.374 +	{ "proc", CTLTYPE_STRUCT }, \
   1.375 +	{ "file", CTLTYPE_STRUCT }, \
   1.376 +	{ "profiling", CTLTYPE_NODE }, \
   1.377 +	{ "posix1version", CTLTYPE_INT }, \
   1.378 +	{ "ngroups", CTLTYPE_INT }, \
   1.379 +	{ "job_control", CTLTYPE_INT }, \
   1.380 +	{ "saved_ids", CTLTYPE_INT }, \
   1.381 +	{ "boottime", CTLTYPE_STRUCT }, \
   1.382 +	{ "nisdomainname", CTLTYPE_STRING }, \
   1.383 +	{ "update", CTLTYPE_INT }, \
   1.384 +	{ "osreldate", CTLTYPE_INT }, \
   1.385 +	{ "ntp_pll", CTLTYPE_NODE }, \
   1.386 +	{ "bootfile", CTLTYPE_STRING }, \
   1.387 +	{ "maxfilesperproc", CTLTYPE_INT }, \
   1.388 +	{ "maxprocperuid", CTLTYPE_INT }, \
   1.389 +	{ "ipc", CTLTYPE_NODE }, \
   1.390 +	{ "dummy", CTLTYPE_INT }, \
   1.391 +	{ "ps_strings", CTLTYPE_INT }, \
   1.392 +	{ "usrstack", CTLTYPE_INT }, \
   1.393 +	{ "logsigexit", CTLTYPE_INT }, \
   1.394 +	{ "iov_max", CTLTYPE_INT }, \
   1.395 +}
   1.396 +
   1.397 +/*
   1.398 + * CTL_VFS identifiers
   1.399 + */
   1.400 +#define CTL_VFS_NAMES { \
   1.401 +	{ "vfsconf", CTLTYPE_STRUCT }, \
   1.402 +}
   1.403 +
   1.404 +/*
   1.405 + * KERN_PROC subtypes
   1.406 + */
   1.407 +#define KERN_PROC_ALL		0	/* everything */
   1.408 +#define	KERN_PROC_PID		1	/* by process id */
   1.409 +#define	KERN_PROC_PGRP		2	/* by process group id */
   1.410 +#define	KERN_PROC_SESSION	3	/* by session of pid */
   1.411 +#define	KERN_PROC_TTY		4	/* by controlling tty */
   1.412 +#define	KERN_PROC_UID		5	/* by effective uid */
   1.413 +#define	KERN_PROC_RUID		6	/* by real uid */
   1.414 +#define	KERN_PROC_ARGS		7	/* get/set arguments/proctitle */
   1.415 +#define	KERN_PROC_PROC		8	/* only return procs */
   1.416 +#define	KERN_PROC_SV_NAME	9	/* get syscall vector name */
   1.417 +#define	KERN_PROC_RGID		10	/* by real group id */
   1.418 +#define	KERN_PROC_GID		11	/* by effective group id */
   1.419 +#define	KERN_PROC_PATHNAME	12	/* path to executable */
   1.420 +#define	KERN_PROC_INC_THREAD	0x10	/*
   1.421 +					 * modifier for pid, pgrp, tty,
   1.422 +					 * uid, ruid, gid, rgid and proc
   1.423 +					 */
   1.424 +
   1.425 +/*
   1.426 + * KERN_IPC identifiers
   1.427 + */
   1.428 +#define KIPC_MAXSOCKBUF		1	/* int: max size of a socket buffer */
   1.429 +#define	KIPC_SOCKBUF_WASTE	2	/* int: wastage factor in sockbuf */
   1.430 +#define	KIPC_SOMAXCONN		3	/* int: max length of connection q */
   1.431 +#define	KIPC_MAX_LINKHDR	4	/* int: max length of link header */
   1.432 +#define	KIPC_MAX_PROTOHDR	5	/* int: max length of network header */
   1.433 +#define	KIPC_MAX_HDR		6	/* int: max total length of headers */
   1.434 +#define	KIPC_MAX_DATALEN	7	/* int: max length of data? */
   1.435 +
   1.436 +/*
   1.437 + * CTL_HW identifiers
   1.438 + */
   1.439 +#define	HW_MACHINE	 1		/* string: machine class */
   1.440 +#define	HW_MODEL	 2		/* string: specific machine model */
   1.441 +#define	HW_NCPU		 3		/* int: number of cpus */
   1.442 +#define	HW_BYTEORDER	 4		/* int: machine byte order */
   1.443 +#define	HW_PHYSMEM	 5		/* int: total memory */
   1.444 +#define	HW_USERMEM	 6		/* int: non-kernel memory */
   1.445 +#define	HW_PAGESIZE	 7		/* int: software page size */
   1.446 +#define	HW_DISKNAMES	 8		/* strings: disk drive names */
   1.447 +#define	HW_DISKSTATS	 9		/* struct: diskstats[] */
   1.448 +#define HW_FLOATINGPT	10		/* int: has HW floating point? */
   1.449 +#define HW_MACHINE_ARCH	11		/* string: machine architecture */
   1.450 +#define	HW_REALMEM	12		/* int: 'real' memory */
   1.451 +#define	HW_MAXID	13		/* number of valid hw ids */
   1.452 +
   1.453 +#define CTL_HW_NAMES { \
   1.454 +	{ 0, 0 }, \
   1.455 +	{ "machine", CTLTYPE_STRING }, \
   1.456 +	{ "model", CTLTYPE_STRING }, \
   1.457 +	{ "ncpu", CTLTYPE_INT }, \
   1.458 +	{ "byteorder", CTLTYPE_INT }, \
   1.459 +	{ "physmem", CTLTYPE_ULONG }, \
   1.460 +	{ "usermem", CTLTYPE_ULONG }, \
   1.461 +	{ "pagesize", CTLTYPE_INT }, \
   1.462 +	{ "disknames", CTLTYPE_STRUCT }, \
   1.463 +	{ "diskstats", CTLTYPE_STRUCT }, \
   1.464 +	{ "floatingpoint", CTLTYPE_INT }, \
   1.465 +	{ "realmem", CTLTYPE_ULONG }, \
   1.466 +}
   1.467 +
   1.468 +/*
   1.469 + * CTL_USER definitions
   1.470 + */
   1.471 +#define	USER_CS_PATH		 1	/* string: _CS_PATH */
   1.472 +#define	USER_BC_BASE_MAX	 2	/* int: BC_BASE_MAX */
   1.473 +#define	USER_BC_DIM_MAX		 3	/* int: BC_DIM_MAX */
   1.474 +#define	USER_BC_SCALE_MAX	 4	/* int: BC_SCALE_MAX */
   1.475 +#define	USER_BC_STRING_MAX	 5	/* int: BC_STRING_MAX */
   1.476 +#define	USER_COLL_WEIGHTS_MAX	 6	/* int: COLL_WEIGHTS_MAX */
   1.477 +#define	USER_EXPR_NEST_MAX	 7	/* int: EXPR_NEST_MAX */
   1.478 +#define	USER_LINE_MAX		 8	/* int: LINE_MAX */
   1.479 +#define	USER_RE_DUP_MAX		 9	/* int: RE_DUP_MAX */
   1.480 +#define	USER_POSIX2_VERSION	10	/* int: POSIX2_VERSION */
   1.481 +#define	USER_POSIX2_C_BIND	11	/* int: POSIX2_C_BIND */
   1.482 +#define	USER_POSIX2_C_DEV	12	/* int: POSIX2_C_DEV */
   1.483 +#define	USER_POSIX2_CHAR_TERM	13	/* int: POSIX2_CHAR_TERM */
   1.484 +#define	USER_POSIX2_FORT_DEV	14	/* int: POSIX2_FORT_DEV */
   1.485 +#define	USER_POSIX2_FORT_RUN	15	/* int: POSIX2_FORT_RUN */
   1.486 +#define	USER_POSIX2_LOCALEDEF	16	/* int: POSIX2_LOCALEDEF */
   1.487 +#define	USER_POSIX2_SW_DEV	17	/* int: POSIX2_SW_DEV */
   1.488 +#define	USER_POSIX2_UPE		18	/* int: POSIX2_UPE */
   1.489 +#define	USER_STREAM_MAX		19	/* int: POSIX2_STREAM_MAX */
   1.490 +#define	USER_TZNAME_MAX		20	/* int: POSIX2_TZNAME_MAX */
   1.491 +#define	USER_MAXID		21	/* number of valid user ids */
   1.492 +
   1.493 +#define	CTL_USER_NAMES { \
   1.494 +	{ 0, 0 }, \
   1.495 +	{ "cs_path", CTLTYPE_STRING }, \
   1.496 +	{ "bc_base_max", CTLTYPE_INT }, \
   1.497 +	{ "bc_dim_max", CTLTYPE_INT }, \
   1.498 +	{ "bc_scale_max", CTLTYPE_INT }, \
   1.499 +	{ "bc_string_max", CTLTYPE_INT }, \
   1.500 +	{ "coll_weights_max", CTLTYPE_INT }, \
   1.501 +	{ "expr_nest_max", CTLTYPE_INT }, \
   1.502 +	{ "line_max", CTLTYPE_INT }, \
   1.503 +	{ "re_dup_max", CTLTYPE_INT }, \
   1.504 +	{ "posix2_version", CTLTYPE_INT }, \
   1.505 +	{ "posix2_c_bind", CTLTYPE_INT }, \
   1.506 +	{ "posix2_c_dev", CTLTYPE_INT }, \
   1.507 +	{ "posix2_char_term", CTLTYPE_INT }, \
   1.508 +	{ "posix2_fort_dev", CTLTYPE_INT }, \
   1.509 +	{ "posix2_fort_run", CTLTYPE_INT }, \
   1.510 +	{ "posix2_localedef", CTLTYPE_INT }, \
   1.511 +	{ "posix2_sw_dev", CTLTYPE_INT }, \
   1.512 +	{ "posix2_upe", CTLTYPE_INT }, \
   1.513 +	{ "stream_max", CTLTYPE_INT }, \
   1.514 +	{ "tzname_max", CTLTYPE_INT }, \
   1.515 +}
   1.516 +
   1.517 +#define CTL_P1003_1B_ASYNCHRONOUS_IO		1	/* boolean */
   1.518 +#define CTL_P1003_1B_MAPPED_FILES		2	/* boolean */
   1.519 +#define CTL_P1003_1B_MEMLOCK			3	/* boolean */
   1.520 +#define CTL_P1003_1B_MEMLOCK_RANGE		4	/* boolean */
   1.521 +#define CTL_P1003_1B_MEMORY_PROTECTION		5	/* boolean */
   1.522 +#define CTL_P1003_1B_MESSAGE_PASSING		6	/* boolean */
   1.523 +#define CTL_P1003_1B_PRIORITIZED_IO		7	/* boolean */
   1.524 +#define CTL_P1003_1B_PRIORITY_SCHEDULING	8	/* boolean */
   1.525 +#define CTL_P1003_1B_REALTIME_SIGNALS		9	/* boolean */
   1.526 +#define CTL_P1003_1B_SEMAPHORES			10	/* boolean */
   1.527 +#define CTL_P1003_1B_FSYNC			11	/* boolean */
   1.528 +#define CTL_P1003_1B_SHARED_MEMORY_OBJECTS	12	/* boolean */
   1.529 +#define CTL_P1003_1B_SYNCHRONIZED_IO		13	/* boolean */
   1.530 +#define CTL_P1003_1B_TIMERS			14	/* boolean */
   1.531 +#define CTL_P1003_1B_AIO_LISTIO_MAX		15	/* int */
   1.532 +#define CTL_P1003_1B_AIO_MAX			16	/* int */
   1.533 +#define CTL_P1003_1B_AIO_PRIO_DELTA_MAX		17	/* int */
   1.534 +#define CTL_P1003_1B_DELAYTIMER_MAX		18	/* int */
   1.535 +#define CTL_P1003_1B_MQ_OPEN_MAX		19	/* int */
   1.536 +#define CTL_P1003_1B_PAGESIZE			20	/* int */
   1.537 +#define CTL_P1003_1B_RTSIG_MAX			21	/* int */
   1.538 +#define CTL_P1003_1B_SEM_NSEMS_MAX		22	/* int */
   1.539 +#define CTL_P1003_1B_SEM_VALUE_MAX		23	/* int */
   1.540 +#define CTL_P1003_1B_SIGQUEUE_MAX		24	/* int */
   1.541 +#define CTL_P1003_1B_TIMER_MAX			25	/* int */
   1.542 +
   1.543 +#define CTL_P1003_1B_MAXID		26
   1.544 +
   1.545 +#define	CTL_P1003_1B_NAMES { \
   1.546 +	{ 0, 0 }, \
   1.547 +	{ "asynchronous_io", CTLTYPE_INT }, \
   1.548 +	{ "mapped_files", CTLTYPE_INT }, \
   1.549 +	{ "memlock", CTLTYPE_INT }, \
   1.550 +	{ "memlock_range", CTLTYPE_INT }, \
   1.551 +	{ "memory_protection", CTLTYPE_INT }, \
   1.552 +	{ "message_passing", CTLTYPE_INT }, \
   1.553 +	{ "prioritized_io", CTLTYPE_INT }, \
   1.554 +	{ "priority_scheduling", CTLTYPE_INT }, \
   1.555 +	{ "realtime_signals", CTLTYPE_INT }, \
   1.556 +	{ "semaphores", CTLTYPE_INT }, \
   1.557 +	{ "fsync", CTLTYPE_INT }, \
   1.558 +	{ "shared_memory_objects", CTLTYPE_INT }, \
   1.559 +	{ "synchronized_io", CTLTYPE_INT }, \
   1.560 +	{ "timers", CTLTYPE_INT }, \
   1.561 +	{ "aio_listio_max", CTLTYPE_INT }, \
   1.562 +	{ "aio_max", CTLTYPE_INT }, \
   1.563 +	{ "aio_prio_delta_max", CTLTYPE_INT }, \
   1.564 +	{ "delaytimer_max", CTLTYPE_INT }, \
   1.565 +	{ "mq_open_max", CTLTYPE_INT }, \
   1.566 +	{ "pagesize", CTLTYPE_INT }, \
   1.567 +	{ "rtsig_max", CTLTYPE_INT }, \
   1.568 +	{ "nsems_max", CTLTYPE_INT }, \
   1.569 +	{ "sem_value_max", CTLTYPE_INT }, \
   1.570 +	{ "sigqueue_max", CTLTYPE_INT }, \
   1.571 +	{ "timer_max", CTLTYPE_INT }, \
   1.572 +}
   1.573 +
   1.574 +#ifdef _KERNEL
   1.575 +
   1.576 +/*
   1.577 + * Declare some common oids.
   1.578 + */
   1.579 +extern struct sysctl_oid_list sysctl__children;
   1.580 +
   1.581 +extern char	machine[];
   1.582 +extern char	osrelease[];
   1.583 +extern char	ostype[];
   1.584 +extern char	kern_ident[];
   1.585 +
   1.586 +
   1.587 +#endif	/* _KERNEL */
   1.588 +
   1.589 +#endif	/* !_SYS_SYSCTL_H_ */