kern_mib.c revision 28918
130465Ssos/*- 2222175Suqs * Copyright (c) 1982, 1986, 1989, 1993 330465Ssos * The Regents of the University of California. All rights reserved. 430465Ssos * 530465Ssos * This code is derived from software contributed to Berkeley by 630465Ssos * Mike Karels at Berkeley Software Design, Inc. 730465Ssos * 830465Ssos * Quite extensively rewritten by Poul-Henning Kamp of the FreeBSD 930465Ssos * project, to make these variables more userfriendly. 1030465Ssos * 1130465Ssos * Redistribution and use in source and binary forms, with or without 1230465Ssos * modification, are permitted provided that the following conditions 1330465Ssos * are met: 1430465Ssos * 1. Redistributions of source code must retain the above copyright 1597748Sschweikh * notice, this list of conditions and the following disclaimer. 1630465Ssos * 2. Redistributions in binary form must reproduce the above copyright 1730465Ssos * notice, this list of conditions and the following disclaimer in the 1830465Ssos * documentation and/or other materials provided with the distribution. 1930465Ssos * 3. All advertising materials mentioning features or use of this software 2030465Ssos * must display the following acknowledgement: 2130465Ssos * This product includes software developed by the University of 2230465Ssos * California, Berkeley and its contributors. 2330465Ssos * 4. Neither the name of the University nor the names of its contributors 2430465Ssos * may be used to endorse or promote products derived from this software 2530465Ssos * without specific prior written permission. 2630465Ssos * 2730465Ssos * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2850476Speter * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2930465Ssos * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 3030465Ssos * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 3130465Ssos * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 3266834Sphk * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 3366834Sphk * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3466834Sphk * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3554592Sbillf * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3630465Ssos * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3730465Ssos * SUCH DAMAGE. 3830465Ssos * 3930465Ssos * @(#)kern_sysctl.c 8.4 (Berkeley) 4/14/94 4054592Sbillf * $Id: kern_mib.c,v 1.10 1997/08/29 09:03:02 kato Exp $ 4153013Syokota */ 4230465Ssos 4330465Ssos#include <sys/param.h> 4466834Sphk#include <sys/kernel.h> 45222175Suqs#include <sys/systm.h> 46222175Suqs#include <sys/sysctl.h> 47222175Suqs#include <sys/proc.h> 4830465Ssos#include <sys/unistd.h> 4930465Ssos 5030465Ssos#include <machine/cpu.h> 5130465Ssos 5230465SsosSYSCTL_NODE(, 0, sysctl, CTLFLAG_RW, 0, 53222175Suqs "Sysctl internal magic"); 5430465SsosSYSCTL_NODE(, CTL_KERN, kern, CTLFLAG_RW, 0, 5530465Ssos "High kernel, proc, limits &c"); 5630465SsosSYSCTL_NODE(, CTL_VM, vm, CTLFLAG_RW, 0, 5730465Ssos "Virtual memory"); 5853013SyokotaSYSCTL_NODE(, CTL_VFS, vfs, CTLFLAG_RW, 0, 5953013Syokota "File system"); 6053013SyokotaSYSCTL_NODE(, CTL_NET, net, CTLFLAG_RW, 0, 6153013Syokota "Network, (see socket.h)"); 6230465SsosSYSCTL_NODE(, CTL_DEBUG, debug, CTLFLAG_RW, 0, 6330465Ssos "Debugging"); 64222175SuqsSYSCTL_NODE(, CTL_HW, hw, CTLFLAG_RW, 0, 6530465Ssos "hardware"); 6630465SsosSYSCTL_NODE(, CTL_MACHDEP, machdep, CTLFLAG_RW, 0, 6730465Ssos "machine dependent"); 6830465SsosSYSCTL_NODE(, CTL_USER, user, CTLFLAG_RW, 0, 6930465Ssos "user-level"); 7030465Ssos 7130465SsosSYSCTL_STRING(_kern, KERN_OSRELEASE, osrelease, CTLFLAG_RD, osrelease, 0, ""); 7230465Ssos 7330465SsosSYSCTL_INT(_kern, KERN_OSREV, osrevision, CTLFLAG_RD, 0, BSD, ""); 7430465Ssos 75222175SuqsSYSCTL_STRING(_kern, KERN_VERSION, version, CTLFLAG_RD, version, 0, ""); 7630465Ssos 7730465SsosSYSCTL_STRING(_kern, KERN_OSTYPE, ostype, CTLFLAG_RD, ostype, 0, ""); 7830465Ssos 7930465Ssosextern int osreldate; 8030465SsosSYSCTL_INT(_kern, KERN_OSRELDATE, osreldate, CTLFLAG_RD, &osreldate, 0, ""); 8130465Ssos 8230465SsosSYSCTL_INT(_kern, KERN_MAXPROC, maxproc, CTLFLAG_RW, &maxproc, 0, ""); 8330465Ssos 8430465SsosSYSCTL_INT(_kern, KERN_MAXPROCPERUID, maxprocperuid, 8530465Ssos CTLFLAG_RW, &maxprocperuid, 0, ""); 8630465Ssos 8730465SsosSYSCTL_INT(_kern, KERN_ARGMAX, argmax, CTLFLAG_RD, 0, ARG_MAX, ""); 8830465Ssos 89222175SuqsSYSCTL_INT(_kern, KERN_POSIX1, posix1version, CTLFLAG_RD, 0, _POSIX_VERSION, ""); 9030465Ssos 9130465SsosSYSCTL_INT(_kern, KERN_NGROUPS, ngroups, CTLFLAG_RD, 0, NGROUPS_MAX, ""); 9253013Syokota 9353013SyokotaSYSCTL_INT(_kern, KERN_JOB_CONTROL, job_control, CTLFLAG_RD, 0, 1, ""); 9430465Ssos 9530465Ssos#ifdef _POSIX_SAVED_IDS 9653013SyokotaSYSCTL_INT(_kern, KERN_SAVED_IDS, saved_ids, CTLFLAG_RD, 0, 1, ""); 9753013Syokota#else 9830465SsosSYSCTL_INT(_kern, KERN_SAVED_IDS, saved_ids, CTLFLAG_RD, 0, 0, ""); 9953013Syokota#endif 10053013Syokota 10130465Ssoschar kernelname[MAXPATHLEN] = "/kernel"; /* XXX bloat */ 10230465Ssos 10330465SsosSYSCTL_STRING(_kern, KERN_BOOTFILE, bootfile, 10430465Ssos CTLFLAG_RW, kernelname, sizeof kernelname, ""); 10530465Ssos 10630465SsosSYSCTL_INT(_hw, HW_NCPU, ncpu, CTLFLAG_RD, 0, 1, ""); 10730465Ssos 10830465SsosSYSCTL_INT(_hw, HW_BYTEORDER, byteorder, CTLFLAG_RD, 0, BYTE_ORDER, ""); 109222175Suqs 110222175SuqsSYSCTL_INT(_hw, HW_PAGESIZE, pagesize, CTLFLAG_RD, 0, PAGE_SIZE, ""); 11130465Ssos 11230465Ssosstatic char machine_arch[] = MACHINE_ARCH; 11330465SsosSYSCTL_STRING(_hw, HW_MACHINE_ARCH, machine_arch, CTLFLAG_RD, 114222175Suqs machine_arch, 0, ""); 11530465Ssos 11630465Ssoschar hostname[MAXHOSTNAMELEN]; 11730465Ssos 11830465SsosSYSCTL_STRING(_kern, KERN_HOSTNAME, hostname, CTLFLAG_RW, 11930465Ssos hostname, sizeof(hostname), ""); 12030465Ssos 12130465Ssosint securelevel = -1; 12230465Ssos 123static int 124sysctl_kern_securelvl SYSCTL_HANDLER_ARGS 125{ 126 int error, level; 127 128 level = securelevel; 129 error = sysctl_handle_int(oidp, &level, 0, req); 130 if (error || !req->newptr) 131 return (error); 132 if (level < securelevel) 133 return (EPERM); 134 securelevel = level; 135 return (error); 136} 137 138SYSCTL_PROC(_kern, KERN_SECURELVL, securelevel, CTLTYPE_INT|CTLFLAG_RW, 139 0, 0, sysctl_kern_securelvl, "I", ""); 140 141char domainname[MAXHOSTNAMELEN]; 142SYSCTL_STRING(_kern, KERN_NISDOMAINNAME, domainname, CTLFLAG_RW, 143 &domainname, sizeof(domainname), ""); 144 145long hostid; 146/* Some trouble here, if sizeof (int) != sizeof (long) */ 147SYSCTL_INT(_kern, KERN_HOSTID, hostid, CTLFLAG_RW, &hostid, 0, ""); 148 149/* 150 * This is really cheating. These actually live in the libc, something 151 * which I'm not quite sure is a good idea anyway, but in order for 152 * getnext and friends to actually work, we define dummies here. 153 */ 154SYSCTL_STRING(_user, USER_CS_PATH, cs_path, CTLFLAG_RD, "", 0, ""); 155SYSCTL_INT(_user, USER_BC_BASE_MAX, bc_base_max, CTLFLAG_RD, 0, 0, ""); 156SYSCTL_INT(_user, USER_BC_DIM_MAX, bc_dim_max, CTLFLAG_RD, 0, 0, ""); 157SYSCTL_INT(_user, USER_BC_SCALE_MAX, bc_scale_max, CTLFLAG_RD, 0, 0, ""); 158SYSCTL_INT(_user, USER_BC_STRING_MAX, bc_string_max, CTLFLAG_RD, 0, 0, ""); 159SYSCTL_INT(_user, USER_COLL_WEIGHTS_MAX, coll_weights_max, CTLFLAG_RD, 0, 0, ""); 160SYSCTL_INT(_user, USER_EXPR_NEST_MAX, expr_nest_max, CTLFLAG_RD, 0, 0, ""); 161SYSCTL_INT(_user, USER_LINE_MAX, line_max, CTLFLAG_RD, 0, 0, ""); 162SYSCTL_INT(_user, USER_RE_DUP_MAX, re_dup_max, CTLFLAG_RD, 0, 0, ""); 163SYSCTL_INT(_user, USER_POSIX2_VERSION, posix2_version, CTLFLAG_RD, 0, 0, ""); 164SYSCTL_INT(_user, USER_POSIX2_C_BIND, posix2_c_bind, CTLFLAG_RD, 0, 0, ""); 165SYSCTL_INT(_user, USER_POSIX2_C_DEV, posix2_c_dev, CTLFLAG_RD, 0, 0, ""); 166SYSCTL_INT(_user, USER_POSIX2_CHAR_TERM, posix2_char_term, CTLFLAG_RD, 0, 0, ""); 167SYSCTL_INT(_user, USER_POSIX2_FORT_DEV, posix2_fort_dev, CTLFLAG_RD, 0, 0, ""); 168SYSCTL_INT(_user, USER_POSIX2_FORT_RUN, posix2_fort_run, CTLFLAG_RD, 0, 0, ""); 169SYSCTL_INT(_user, USER_POSIX2_LOCALEDEF, posix2_localedef, CTLFLAG_RD, 0, 0, ""); 170SYSCTL_INT(_user, USER_POSIX2_SW_DEV, posix2_sw_dev, CTLFLAG_RD, 0, 0, ""); 171SYSCTL_INT(_user, USER_POSIX2_UPE, posix2_upe, CTLFLAG_RD, 0, 0, ""); 172SYSCTL_INT(_user, USER_STREAM_MAX, stream_max, CTLFLAG_RD, 0, 0, ""); 173SYSCTL_INT(_user, USER_TZNAME_MAX, tzname_max, CTLFLAG_RD, 0, 0, ""); 174