sysctl.h revision 12623
131567Ssef/*
2204977Simp * Copyright (c) 1989, 1993
331899Ssef *	The Regents of the University of California.  All rights reserved.
431899Ssef *
531899Ssef * This code is derived from software contributed to Berkeley by
631899Ssef * Mike Karels at Berkeley Software Design, Inc.
731899Ssef *
831899Ssef * Redistribution and use in source and binary forms, with or without
931899Ssef * modification, are permitted provided that the following conditions
1031899Ssef * are met:
1131899Ssef * 1. Redistributions of source code must retain the above copyright
1231899Ssef *    notice, this list of conditions and the following disclaimer.
1331899Ssef * 2. Redistributions in binary form must reproduce the above copyright
1431899Ssef *    notice, this list of conditions and the following disclaimer in the
1531899Ssef *    documentation and/or other materials provided with the distribution.
1631899Ssef * 3. All advertising materials mentioning features or use of this software
1731899Ssef *    must display the following acknowledgement:
1831899Ssef *	This product includes software developed by the University of
1931899Ssef *	California, Berkeley and its contributors.
2031899Ssef * 4. Neither the name of the University nor the names of its contributors
2131899Ssef *    may be used to endorse or promote products derived from this software
2231899Ssef *    without specific prior written permission.
2331899Ssef *
2431899Ssef * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
2531899Ssef * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2631899Ssef * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2731899Ssef * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2831899Ssef * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2931899Ssef * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
3031899Ssef * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
3131899Ssef * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
3232275Scharnier * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
3332275Scharnier * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3450477Speter * SUCH DAMAGE.
3532275Scharnier *
3632275Scharnier *	@(#)sysctl.h	8.1 (Berkeley) 6/2/93
3731899Ssef * $Id: sysctl.h,v 1.36 1995/12/02 20:40:20 phk Exp $
3831567Ssef */
3931567Ssef
4031567Ssef#ifndef _SYS_SYSCTL_H_
4131567Ssef#define	_SYS_SYSCTL_H_
42255493Sjhb
43127328Salfred/*
44168569Sdelphij * Definitions for sysctl call.  The sysctl call uses a hierarchical name
4585292Sdes * for objects that can be examined or modified.  The name is expressed as
46104581Smike * a sequence of integers.  Like a file path name, the meaning of each
4785292Sdes * component depends on its place in the hierarchy.  The top-level and kern
48255493Sjhb * identifiers are defined here, and other identifiers are defined in the
4985292Sdes * respective subsystem header files.
5085292Sdes */
51158630Spav
52158630Spav#define CTL_MAXNAME	12	/* largest number of components supported */
53158630Spav
54158630Spav/*
55158630Spav * Each subsystem defined by sysctl defines a list of variables
56158630Spav * for that subsystem. Each name is either a node with further
57158630Spav * levels defined below it, or it is a leaf of some particular
5885292Sdes * type given below. Each sysctl level defines a set of name/type
5986138Sgreen * pairs to be used by sysctl(1) in manipulating the subsystem.
6032275Scharnier */
61127328Salfredstruct ctlname {
62127332Sdwmalone	char	*ctl_name;	/* subsystem name */
6385292Sdes	int	ctl_type;	/* type of name */
64127332Sdwmalone};
6531567Ssef
6631567Ssef#define CTLTYPE		0xf	/* Mask for the type */
6731567Ssef#define	CTLTYPE_NODE	1	/* name is a node */
68101423Smdodd#define	CTLTYPE_INT	2	/* name describes an integer */
6931567Ssef#define	CTLTYPE_STRING	3	/* name describes a string */
70158630Spav#define	CTLTYPE_QUAD	4	/* name describes a 64-bit number */
7185292Sdes#define	CTLTYPE_OPAQUE	5	/* name describes a structure */
72101282Smdodd#define	CTLTYPE_STRUCT	CTLTYPE_OPAQUE	/* name describes a structure */
7387703Smarkm
7431567Ssef#define CTLFLAG_RD	0x80000000	/* Allow reads of variable */
7531567Ssef#define CTLFLAG_WR	0x40000000	/* Allow writes to the variable */
76171646Smarcel#define CTLFLAG_RW	(CTLFLAG_RD|CTLFLAG_WR)
77171646Smarcel#define CTLFLAG_NOLOCK	0x20000000	/* XXX Don't Lock */
78171646Smarcel
79171646Smarcel#define OID_AUTO	(-1)
80171646Smarcel
81171646Smarcel#ifdef KERNEL
82171646Smarcel#define SYSCTL_HANDLER_ARGS (struct sysctl_oid *oidp, void *arg1, int arg2, \
83171646Smarcel	struct sysctl_req *req)
84171646Smarcel
85171646Smarcel/*
86171646Smarcel * This describes the access space for a sysctl request.  This is needed
87171646Smarcel * so that we can use the interface from the kernel or from user-space.
88171646Smarcel */
89171646Smarcelstruct sysctl_req {
9031567Ssef	struct proc	*p;
91158630Spav	int		lock;
9231567Ssef	void		*oldptr;
93228396Sed	int		oldlen;
94192025Sdds	int		oldidx;
95192025Sdds	int		(*oldfunc)(struct sysctl_req *, void *, int);
96200751Sjh	void		*newptr;
97253850Smarkj	int		newlen;
98253850Smarkj	int		newidx;
99253850Smarkj	int		(*newfunc)(struct sysctl_req *, void *, int);
100200751Sjh};
101200751Sjh
102200751Sjh/*
103200751Sjh * This describes one "oid" in the MIB tree.  Potentially more nodes can
104200751Sjh * be hidden behind it, expanded by the handler.
105200751Sjh */
106200751Sjhstruct sysctl_oid {
107200751Sjh	int		oid_number;
108200751Sjh	int		oid_kind;
109200751Sjh	void		*oid_arg1;
110200751Sjh	int		oid_arg2;
111192025Sdds	const char	*oid_name;
112192025Sdds	int 		(*oid_handler) SYSCTL_HANDLER_ARGS;
113192025Sdds	const char	*oid_fmt;
114192025Sdds};
115192025Sdds
116192025Sdds#define SYSCTL_IN(r, p, l) (r->newfunc)(r, p, l)
117192025Sdds#define SYSCTL_OUT(r, p, l) (r->oldfunc)(r, p, l)
118192025Sdds
119192025Sddsint sysctl_handle_int SYSCTL_HANDLER_ARGS;
120192025Sddsint sysctl_handle_string SYSCTL_HANDLER_ARGS;
121192025Sddsint sysctl_handle_opaque SYSCTL_HANDLER_ARGS;
122192025Sdds
123192025Sdds/* This is the "raw" function for a mib-oid */
124192025Sdds#define SYSCTL_OID(parent, nbr, name, kind, a1, a2, handler, fmt, descr) \
125192025Sdds	static const struct sysctl_oid sysctl__##parent##_##name = { \
126192025Sdds		nbr, kind, a1, a2, #name, handler, fmt }; \
127192025Sdds	TEXT_SET(sysctl_##parent, sysctl__##parent##_##name);
128192025Sdds
129192025Sdds/* This makes a node from which other oids can hang */
130192025Sdds#define SYSCTL_NODE(parent, nbr, name, access, handler, descr) \
131192025Sdds	extern struct linker_set sysctl_##parent##_##name; \
132192025Sdds	SYSCTL_OID(parent, nbr, name, CTLTYPE_NODE|access, \
133192025Sdds		(void*)&sysctl_##parent##_##name, 0, handler, "N", descr); \
134192025Sdds	TEXT_SET(sysctl_##parent##_##name, sysctl__##parent##_##name);
135192025Sdds
136192025Sdds/* This is a string len can be 0 to indicate '\0' termination */
137192025Sdds#define SYSCTL_STRING(parent, nbr, name, access, arg, len, descr) \
138192025Sdds	SYSCTL_OID(parent, nbr, name, CTLTYPE_STRING|access, \
139192025Sdds		arg, len, sysctl_handle_string, "A", descr);
140192025Sdds
141192025Sdds/* This is a integer, if ptr is NULL, val is returned */
142192025Sdds#define SYSCTL_INT(parent, nbr, name, access, ptr, val, descr) \
143192025Sdds	SYSCTL_OID(parent, nbr, name, CTLTYPE_INT|access, \
144192025Sdds		ptr, val, sysctl_handle_int, "I", descr);
145192025Sdds
146192025Sdds/* This is anything, specified by a pointer and a lenth */
147192025Sdds#define SYSCTL_OPAQUE(parent, nbr, name, access, ptr, len, descr) \
148192025Sdds	SYSCTL_OID(parent, nbr, name, CTLTYPE_OPAQUE|access, \
149192025Sdds		ptr, len, sysctl_handle_opaque, "O", descr);
150192025Sdds
151192025Sdds/* This is a struct, specified by a pointer and type */
152192025Sdds#define SYSCTL_STRUCT(parent, nbr, name, access, ptr, type, descr) \
153192025Sdds	SYSCTL_OID(parent, nbr, name, CTLTYPE_OPAQUE|access, \
154192025Sdds		ptr, sizeof(struct type), sysctl_handle_opaque, \
155192025Sdds		"S," #type, descr);
156192025Sdds
157192025Sdds/* Needs a proc.  Specify by pointer and arg */
158192025Sdds#define SYSCTL_PROC(parent, nbr, name, access, ptr, arg, handler, fmt, descr) \
159192025Sdds	SYSCTL_OID(parent, nbr, name, access, \
160192025Sdds		ptr, arg, handler, fmt, descr);
161192025Sdds#endif /* KERNEL */
162192025Sdds
163192025Sdds/*
164192025Sdds * Top-level identifiers
165192025Sdds */
166192025Sdds#define	CTL_UNSPEC	0		/* unused */
167192025Sdds#define	CTL_KERN	1		/* "high kernel": proc, limits */
168192025Sdds#define	CTL_VM		2		/* virtual memory */
169192025Sdds#define	CTL_FS		3		/* file system, mount type is next */
170192025Sdds#define	CTL_NET		4		/* network, see socket.h */
171192025Sdds#define	CTL_DEBUG	5		/* debugging parameters */
172192025Sdds#define	CTL_HW		6		/* generic cpu/io */
173192025Sdds#define	CTL_MACHDEP	7		/* machine dependent */
174192025Sdds#define	CTL_USER	8		/* user-level */
175192025Sdds#define	CTL_MAXID	9		/* number of valid top-level ids */
176192025Sdds
177192025Sdds#define CTL_NAMES { \
178192025Sdds	{ 0, 0 }, \
179192025Sdds	{ "kern", CTLTYPE_NODE }, \
180192025Sdds	{ "vm", CTLTYPE_NODE }, \
181192025Sdds	{ "fs", CTLTYPE_NODE }, \
182192025Sdds	{ "net", CTLTYPE_NODE }, \
183192025Sdds	{ "debug", CTLTYPE_NODE }, \
184192025Sdds	{ "hw", CTLTYPE_NODE }, \
185192025Sdds	{ "machdep", CTLTYPE_NODE }, \
186192025Sdds	{ "user", CTLTYPE_NODE }, \
187192025Sdds}
188192025Sdds
189192025Sdds/*
190192025Sdds * CTL_KERN identifiers
191192025Sdds */
192192025Sdds#define	KERN_OSTYPE	 	 1	/* string: system version */
193192025Sdds#define	KERN_OSRELEASE	 	 2	/* string: system release */
194192025Sdds#define	KERN_OSREV	 	 3	/* int: system revision */
195192025Sdds#define	KERN_VERSION	 	 4	/* string: compile time info */
196192025Sdds#define	KERN_MAXVNODES	 	 5	/* int: max vnodes */
197192025Sdds#define	KERN_MAXPROC	 	 6	/* int: max processes */
198192025Sdds#define	KERN_MAXFILES	 	 7	/* int: max open files */
199192025Sdds#define	KERN_ARGMAX	 	 8	/* int: max arguments to exec */
200192025Sdds#define	KERN_SECURELVL	 	 9	/* int: system security level */
201192025Sdds#define	KERN_HOSTNAME		10	/* string: hostname */
202192025Sdds#define	KERN_HOSTID		11	/* int: host identifier */
203192025Sdds#define	KERN_CLOCKRATE		12	/* struct: struct clockrate */
204192025Sdds#define	KERN_VNODE		13	/* struct: vnode structures */
205192025Sdds#define	KERN_PROC		14	/* struct: process entries */
206192025Sdds#define	KERN_FILE		15	/* struct: file entries */
207192025Sdds#define	KERN_PROF		16	/* node: kernel profiling info */
208192025Sdds#define	KERN_POSIX1		17	/* int: POSIX.1 version */
209192025Sdds#define	KERN_NGROUPS		18	/* int: # of supplemental group ids */
210192025Sdds#define	KERN_JOB_CONTROL	19	/* int: is job control available */
211192025Sdds#define	KERN_SAVED_IDS		20	/* int: saved set-user/group-ID */
212192025Sdds#define	KERN_BOOTTIME		21	/* struct: time kernel was booted */
213192025Sdds#define KERN_DOMAINNAME		22	/* string: YP domain name */
214192025Sdds#define KERN_UPDATEINTERVAL	23	/* int: update process sleep time */
215192025Sdds#define KERN_OSRELDATE		24	/* int: OS release date */
216192025Sdds#define KERN_NTP_PLL		25	/* node: NTP PLL control */
217192025Sdds#define	KERN_BOOTFILE		26	/* string: name of booted kernel */
218192025Sdds#define	KERN_MAXFILESPERPROC	27	/* int: max open files per proc */
219192025Sdds#define	KERN_MAXPROCPERUID 	28	/* int: max processes per uid */
220192025Sdds#define KERN_DUMPDEV		29	/* dev_t: device to dump on */
221192025Sdds#define	KERN_SOMAXCONN		30	/* int: max connections in listen q */
222192025Sdds#define	KERN_MAXSOCKBUF		31	/* int: max size of a socket buffer */
223192025Sdds#define KERN_MAXID		32      /* number of valid kern ids */
224192025Sdds
225192025Sdds#define CTL_KERN_NAMES { \
226192025Sdds	{ 0, 0 }, \
227192025Sdds	{ "ostype", CTLTYPE_STRING }, \
228192025Sdds	{ "osrelease", CTLTYPE_STRING }, \
229192025Sdds	{ "osrevision", CTLTYPE_INT }, \
230192025Sdds	{ "version", CTLTYPE_STRING }, \
231192025Sdds	{ "maxvnodes", CTLTYPE_INT }, \
232192025Sdds	{ "maxproc", CTLTYPE_INT }, \
233192025Sdds	{ "maxfiles", CTLTYPE_INT }, \
234192025Sdds	{ "argmax", CTLTYPE_INT }, \
235192025Sdds	{ "securelevel", CTLTYPE_INT }, \
236192025Sdds	{ "hostname", CTLTYPE_STRING }, \
237192025Sdds	{ "hostid", CTLTYPE_INT }, \
238192025Sdds	{ "clockrate", CTLTYPE_STRUCT }, \
239192025Sdds	{ "vnode", CTLTYPE_STRUCT }, \
240192025Sdds	{ "proc", CTLTYPE_STRUCT }, \
241192025Sdds	{ "file", CTLTYPE_STRUCT }, \
242192025Sdds	{ "profiling", CTLTYPE_NODE }, \
243192025Sdds	{ "posix1version", CTLTYPE_INT }, \
244192025Sdds	{ "ngroups", CTLTYPE_INT }, \
245192025Sdds	{ "job_control", CTLTYPE_INT }, \
246192025Sdds	{ "saved_ids", CTLTYPE_INT }, \
247192025Sdds	{ "boottime", CTLTYPE_STRUCT }, \
248192025Sdds	{ "domainname", CTLTYPE_STRING }, \
249200780Sjh	{ "update", CTLTYPE_INT }, \
250200780Sjh	{ "osreldate", CTLTYPE_INT }, \
251192025Sdds        { "ntp_pll", CTLTYPE_NODE }, \
252192025Sdds	{ "bootfile", CTLTYPE_STRING }, \
253192025Sdds	{ "maxfilesperproc", CTLTYPE_INT }, \
254192025Sdds	{ "maxprocperuid", CTLTYPE_INT }, \
255192025Sdds	{ "dumpdev", CTLTYPE_STRUCT }, /* we lie; don't print as int */ \
256192025Sdds	{ "somaxconn", CTLTYPE_INT }, \
257192025Sdds	{ "maxsockbuf", CTLTYPE_INT }, \
258192025Sdds}
259192025Sdds
260192025Sdds/*
261192025Sdds * CTL_FS identifiers
262192025Sdds */
263192025Sdds#define FS_VFSCONF		0	/* get configured filesystems */
264192025Sdds#define FS_MAXID		1	/* number of items */
265200902Sed
266200902Sed#define CTL_FS_NAMES { \
267255493Sjhb	{ "vfsconf", CTLTYPE_STRUCT }, \
268255493Sjhb}
269255493Sjhb
270255493Sjhb/*
271255493Sjhb * KERN_PROC subtypes
272255493Sjhb */
273192025Sdds#define KERN_PROC_ALL		0	/* everything */
27431567Ssef#define	KERN_PROC_PID		1	/* by process id */
27531567Ssef#define	KERN_PROC_PGRP		2	/* by process group id */
276158630Spav#define	KERN_PROC_SESSION	3	/* by session of pid */
277158630Spav#define	KERN_PROC_TTY		4	/* by controlling tty */
278158630Spav#define	KERN_PROC_UID		5	/* by effective uid */
279168569Sdelphij#define	KERN_PROC_RUID		6	/* by real uid */
280158630Spav
281158630Spav/*
282240005Szont * CTL_HW identifiers
283240005Szont */
284158630Spav#define	HW_MACHINE	 1		/* string: machine class */
285158630Spav#define	HW_MODEL	 2		/* string: specific machine model */
286158630Spav#define	HW_NCPU		 3		/* int: number of cpus */
287158630Spav#define	HW_BYTEORDER	 4		/* int: machine byte order */
288201350Sbrooks#define	HW_PHYSMEM	 5		/* int: total memory */
289158630Spav#define	HW_USERMEM	 6		/* int: non-kernel memory */
290158630Spav#define	HW_PAGESIZE	 7		/* int: software page size */
291158630Spav#define	HW_DISKNAMES	 8		/* strings: disk drive names */
292158630Spav#define	HW_DISKSTATS	 9		/* struct: diskstats[] */
293158630Spav#define HW_FLOATINGPT	10		/* int: has HW floating point? */
294158630Spav#define HW_DEVCONF	11		/* node: device configuration */
295158630Spav#define	HW_MAXID	12		/* number of valid hw ids */
296228396Sed
297158630Spav#define CTL_HW_NAMES { \
298158630Spav	{ 0, 0 }, \
299158630Spav	{ "machine", CTLTYPE_STRING }, \
300158630Spav	{ "model", CTLTYPE_STRING }, \
301158630Spav	{ "ncpu", CTLTYPE_INT }, \
302158630Spav	{ "byteorder", CTLTYPE_INT }, \
303158630Spav	{ "physmem", CTLTYPE_INT }, \
304158630Spav	{ "usermem", CTLTYPE_INT }, \
305158630Spav	{ "pagesize", CTLTYPE_INT }, \
306255426Sjhb	{ "disknames", CTLTYPE_STRUCT }, \
307255426Sjhb	{ "diskstats", CTLTYPE_STRUCT }, \
308255426Sjhb	{ "floatingpoint", CTLTYPE_INT }, \
309255426Sjhb	{ "devconf", CTLTYPE_NODE }, \
310255426Sjhb}
311158630Spav
312158630Spav/*
313158630Spav * CTL_USER definitions
314158630Spav */
315158630Spav#define	USER_CS_PATH		 1	/* string: _CS_PATH */
316158630Spav#define	USER_BC_BASE_MAX	 2	/* int: BC_BASE_MAX */
317158630Spav#define	USER_BC_DIM_MAX		 3	/* int: BC_DIM_MAX */
318158630Spav#define	USER_BC_SCALE_MAX	 4	/* int: BC_SCALE_MAX */
319158630Spav#define	USER_BC_STRING_MAX	 5	/* int: BC_STRING_MAX */
320158630Spav#define	USER_COLL_WEIGHTS_MAX	 6	/* int: COLL_WEIGHTS_MAX */
321158630Spav#define	USER_EXPR_NEST_MAX	 7	/* int: EXPR_NEST_MAX */
322158630Spav#define	USER_LINE_MAX		 8	/* int: LINE_MAX */
323158630Spav#define	USER_RE_DUP_MAX		 9	/* int: RE_DUP_MAX */
324158630Spav#define	USER_POSIX2_VERSION	10	/* int: POSIX2_VERSION */
325158630Spav#define	USER_POSIX2_C_BIND	11	/* int: POSIX2_C_BIND */
326158630Spav#define	USER_POSIX2_C_DEV	12	/* int: POSIX2_C_DEV */
327158630Spav#define	USER_POSIX2_CHAR_TERM	13	/* int: POSIX2_CHAR_TERM */
328158630Spav#define	USER_POSIX2_FORT_DEV	14	/* int: POSIX2_FORT_DEV */
329158630Spav#define	USER_POSIX2_FORT_RUN	15	/* int: POSIX2_FORT_RUN */
330158630Spav#define	USER_POSIX2_LOCALEDEF	16	/* int: POSIX2_LOCALEDEF */
331158630Spav#define	USER_POSIX2_SW_DEV	17	/* int: POSIX2_SW_DEV */
332158630Spav#define	USER_POSIX2_UPE		18	/* int: POSIX2_UPE */
333158630Spav#define	USER_STREAM_MAX		19	/* int: POSIX2_STREAM_MAX */
334158630Spav#define	USER_TZNAME_MAX		20	/* int: POSIX2_TZNAME_MAX */
335158630Spav#define	USER_MAXID		21	/* number of valid user ids */
336158630Spav
337158630Spav#define	CTL_USER_NAMES { \
338158630Spav	{ 0, 0 }, \
339158630Spav	{ "cs_path", CTLTYPE_STRING }, \
340158630Spav	{ "bc_base_max", CTLTYPE_INT }, \
341158630Spav	{ "bc_dim_max", CTLTYPE_INT }, \
342158630Spav	{ "bc_scale_max", CTLTYPE_INT }, \
343158630Spav	{ "bc_string_max", CTLTYPE_INT }, \
344158630Spav	{ "coll_weights_max", CTLTYPE_INT }, \
345158630Spav	{ "expr_nest_max", CTLTYPE_INT }, \
346158630Spav	{ "line_max", CTLTYPE_INT }, \
347158630Spav	{ "re_dup_max", CTLTYPE_INT }, \
348158630Spav	{ "posix2_version", CTLTYPE_INT }, \
349158630Spav	{ "posix2_c_bind", CTLTYPE_INT }, \
350158630Spav	{ "posix2_c_dev", CTLTYPE_INT }, \
351158630Spav	{ "posix2_char_term", CTLTYPE_INT }, \
352158630Spav	{ "posix2_fort_dev", CTLTYPE_INT }, \
353158630Spav	{ "posix2_fort_run", CTLTYPE_INT }, \
354158630Spav	{ "posix2_localedef", CTLTYPE_INT }, \
355158630Spav	{ "posix2_sw_dev", CTLTYPE_INT }, \
356158630Spav	{ "posix2_upe", CTLTYPE_INT }, \
357158630Spav	{ "stream_max", CTLTYPE_INT }, \
358158630Spav	{ "tzname_max", CTLTYPE_INT }, \
359158630Spav}
360252414Smjg
361158630Spav#ifdef KERNEL
362158630Spav
363158630Spavextern char	cpu_model[];
364158630Spavextern char	machine[];
365158630Spavextern char	osrelease[];
366158630Spavextern char	ostype[];
367158630Spav
368158630Spavint userland_sysctl(struct proc *p, int *name, u_int namelen, void *old, size_t *oldlenp, int inkernel, void *new, size_t newlen, int *retval);
369158630Spav/*
370158630Spavint	sysctl_clockrate __P((char *, size_t*));
371158630Spavint	sysctl_file __P((char *, size_t*));
372158630Spavint	sysctl_doproc __P((int *, u_int, char *, size_t*));
373158630Spavint	sysctl_doprof __P((int *, u_int, void *, size_t *, void *, size_t));
374158630Spav*/
375158630Spav
376158630Spav#else	/* !KERNEL */
377158630Spav#include <sys/cdefs.h>
378158630Spav
379158630Spav__BEGIN_DECLS
380158630Spavint	sysctl __P((int *, u_int, void *, size_t *, void *, size_t));
381158630Spav__END_DECLS
382158630Spav#endif	/* KERNEL */
383158630Spav
384158630Spav#endif	/* !_SYS_SYSCTL_H_ */
385158630Spav