Home | History | Annotate | Line # | Download | only in conf
param.c revision 1.10
      1 /* NetBSD $Id: param.c,v 1.10 1994/06/27 19:44:07 cgd Exp $ */
      2 /*
      3  * Copyright (c) 1980, 1986, 1989 Regents of the University of California.
      4  * All rights reserved.
      5  * (c) UNIX System Laboratories, Inc.
      6  * All or some portions of this file are derived from material licensed
      7  * to the University of California by American Telephone and Telegraph
      8  * Co. or Unix System Laboratories, Inc. and are reproduced herein with
      9  * the permission of UNIX System Laboratories, Inc.
     10  *
     11  * Redistribution and use in source and binary forms, with or without
     12  * modification, are permitted provided that the following conditions
     13  * are met:
     14  * 1. Redistributions of source code must retain the above copyright
     15  *    notice, this list of conditions and the following disclaimer.
     16  * 2. Redistributions in binary form must reproduce the above copyright
     17  *    notice, this list of conditions and the following disclaimer in the
     18  *    documentation and/or other materials provided with the distribution.
     19  * 3. All advertising materials mentioning features or use of this software
     20  *    must display the following acknowledgement:
     21  *	This product includes software developed by the University of
     22  *	California, Berkeley and its contributors.
     23  * 4. Neither the name of the University nor the names of its contributors
     24  *    may be used to endorse or promote products derived from this software
     25  *    without specific prior written permission.
     26  *
     27  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     28  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     29  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     30  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     31  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     32  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     33  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     34  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     35  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     36  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     37  * SUCH DAMAGE.
     38  *
     39  *	@(#)param.c	7.20 (Berkeley) 6/27/91
     40  */
     41 
     42 #include <sys/param.h>
     43 #include <sys/systm.h>
     44 #include <sys/socket.h>
     45 #include <sys/proc.h>
     46 #include <sys/vnode.h>
     47 #include <sys/file.h>
     48 #include <sys/callout.h>
     49 #include <sys/clist.h>
     50 #include <sys/mbuf.h>
     51 #include <ufs/ufs/quota.h>
     52 #include <sys/kernel.h>
     53 #include <sys/utsname.h>
     54 #ifdef SYSVSHM
     55 #include <machine/vmparam.h>
     56 #include <sys/shm.h>
     57 #endif
     58 #ifdef SYSVSEM
     59 #include <sys/sem.h>
     60 #endif
     61 #ifdef SYSVMSG
     62 #include <sys/msg.h>
     63 #endif
     64 
     65 /*
     66  * System parameter formulae.
     67  *
     68  * This file is copied into each directory where we compile
     69  * the kernel; it should be modified there to suit local taste
     70  * if necessary.
     71  *
     72  * Compiled with -DHZ=xx -DTIMEZONE=x -DDST=x -DMAXUSERS=xx
     73  */
     74 
     75 #ifndef HZ
     76 #define	HZ 100
     77 #endif
     78 int	hz = HZ;
     79 int	tick = 1000000 / HZ;
     80 int	tickadj = 240000 / (60 * HZ);		/* can adjust 240ms in 60s */
     81 struct	timezone tz = { TIMEZONE, DST };
     82 #define	NPROC (20 + 16 * MAXUSERS)
     83 int	maxproc = NPROC;
     84 #define	NTEXT (80 + NPROC / 8)			/* actually the object cache */
     85 #define	NVNODE (NPROC + NTEXT + 100)
     86 int	desiredvnodes = NVNODE;
     87 int	maxfiles = 3 * (NPROC + MAXUSERS) + 80;
     88 int	ncallout = 16 + NPROC;
     89 int	nclist = 60 + 12 * MAXUSERS;
     90 int	nmbclusters = NMBCLUSTERS;
     91 int	fscale = FSCALE;	/* kernel uses `FSCALE', user uses `fscale' */
     92 
     93 /*
     94  * Values in support of System V compatible shared memory.	XXX
     95  */
     96 #ifdef SYSVSHM
     97 #define	SHMMAX	(SHMMAXPGS*NBPG)
     98 #define	SHMMIN	1
     99 #define	SHMMNI	32			/* <= SHMMMNI in shm.h */
    100 #define	SHMSEG	8
    101 #define	SHMALL	(SHMMAXPGS/CLSIZE)
    102 
    103 struct	shminfo shminfo = {
    104 	SHMMAX,
    105 	SHMMIN,
    106 	SHMMNI,
    107 	SHMSEG,
    108 	SHMALL
    109 };
    110 #endif
    111 
    112 /*
    113  * Values in support of System V compatible semaphores.
    114  */
    115 
    116 #ifdef SYSVSEM
    117 
    118 struct seminfo seminfo = {
    119 		SEMMAP,		/* # of entries in semaphore map */
    120 		SEMMNI,		/* # of semaphore identifiers */
    121 		SEMMNS,		/* # of semaphores in system */
    122 		SEMMNU,		/* # of undo structures in system */
    123 		SEMMSL,		/* max # of semaphores per id */
    124 		SEMOPM,		/* max # of operations per semop call */
    125 		SEMUME,		/* max # of undo entries per process */
    126 		SEMUSZ,		/* size in bytes of undo structure */
    127 		SEMVMX,		/* semaphore maximum value */
    128 		SEMAEM		/* adjust on exit max value */
    129 };
    130 #endif
    131 
    132 /*
    133  * Values in support of System V compatible messages.
    134  */
    135 
    136 #ifdef SYSVMSG
    137 
    138 struct msginfo msginfo = {
    139 		MSGMAX,		/* max chars in a message */
    140 		MSGMNI,		/* # of message queue identifiers */
    141 		MSGMNB,		/* max chars in a queue */
    142 		MSGTQL,		/* max messages in system */
    143 		MSGSSZ,		/* size of a message segment */
    144 				/* (must be small power of 2 greater than 4) */
    145 		MSGSEG		/* number of message segments */
    146 };
    147 #endif
    148 
    149 /*
    150  * These are initialized at bootstrap time
    151  * to values dependent on memory size
    152  */
    153 int	nbuf, nswbuf;
    154 
    155 /*
    156  * These have to be allocated somewhere; allocating
    157  * them here forces loader errors if this file is omitted
    158  * (if they've been externed everywhere else; hah!).
    159  */
    160 struct 	callout *callout;
    161 struct	cblock *cfree;
    162 struct	buf *buf, *swbuf;
    163 char	*buffers;
    164 
    165 /*
    166  * Proc/pgrp hashing.
    167  * Here so that hash table sizes can depend on MAXUSERS/NPROC.
    168  * Hash size must be a power of two.
    169  * NOW omission of this file will cause loader errors!
    170  */
    171 
    172 #if NPROC > 1024
    173 #define	PIDHSZ		512
    174 #else
    175 #if NPROC > 512
    176 #define	PIDHSZ		256
    177 #else
    178 #if NPROC > 256
    179 #define	PIDHSZ		128
    180 #else
    181 #define	PIDHSZ		64
    182 #endif
    183 #endif
    184 #endif
    185 
    186 struct	proc *pidhash[PIDHSZ];
    187 struct	pgrp *pgrphash[PIDHSZ];
    188 int	pidhashmask = PIDHSZ - 1;
    189 
    190 struct	utsname utsname;
    191