1 | /* $NetBSD: param.c,v 1.67 2015/11/09 01:21:18 pgoyette Exp $ */ |
2 | |
3 | /* |
4 | * Copyright (c) 1980, 1986, 1989 Regents of the University of California. |
5 | * All rights reserved. |
6 | * (c) UNIX System Laboratories, Inc. |
7 | * All or some portions of this file are derived from material licensed |
8 | * to the University of California by American Telephone and Telegraph |
9 | * Co. or Unix System Laboratories, Inc. and are reproduced herein with |
10 | * the permission of UNIX System Laboratories, Inc. |
11 | * |
12 | * Redistribution and use in source and binary forms, with or without |
13 | * modification, are permitted provided that the following conditions |
14 | * are met: |
15 | * 1. Redistributions of source code must retain the above copyright |
16 | * notice, this list of conditions and the following disclaimer. |
17 | * 2. Redistributions in binary form must reproduce the above copyright |
18 | * notice, this list of conditions and the following disclaimer in the |
19 | * documentation and/or other materials provided with the distribution. |
20 | * 3. Neither the name of the University nor the names of its contributors |
21 | * may be used to endorse or promote products derived from this software |
22 | * without specific prior written permission. |
23 | * |
24 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
25 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
26 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
27 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
28 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
29 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
30 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
31 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
32 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
33 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
34 | * SUCH DAMAGE. |
35 | * |
36 | * @(#)param.c 7.20 (Berkeley) 6/27/91 |
37 | */ |
38 | |
39 | #include <sys/cdefs.h> |
40 | __KERNEL_RCSID(0, "$NetBSD: param.c,v 1.67 2015/11/09 01:21:18 pgoyette Exp $" ); |
41 | |
42 | #ifdef _KERNEL_OPT |
43 | #include "opt_hz.h" |
44 | #include "opt_rtc_offset.h" |
45 | #include "opt_sysv.h" |
46 | #include "opt_sysvparam.h" |
47 | #include "opt_multiprocessor.h" |
48 | #endif |
49 | |
50 | #include <sys/param.h> |
51 | #include <sys/systm.h> |
52 | #include <sys/socket.h> |
53 | #include <sys/socketvar.h> |
54 | #include <sys/proc.h> |
55 | #include <sys/vnode.h> |
56 | #include <sys/file.h> |
57 | #include <sys/callout.h> |
58 | #include <sys/mbuf.h> |
59 | #include <ufs/ufs/quota.h> |
60 | #include <sys/kernel.h> |
61 | #include <sys/utsname.h> |
62 | #include <sys/lwp.h> |
63 | #ifdef SYSVSHM |
64 | #include <machine/vmparam.h> |
65 | #include <sys/shm.h> |
66 | #endif |
67 | #ifdef SYSVSEM |
68 | #include <sys/sem.h> |
69 | #endif |
70 | #ifdef SYSVMSG |
71 | #include <sys/msg.h> |
72 | #endif |
73 | |
74 | /* |
75 | * PCC cannot handle the 80KB string literal. |
76 | */ |
77 | #if !defined(__PCC__) |
78 | #define CONFIG_FILE |
79 | #include "config_file.h" |
80 | #endif |
81 | |
82 | /* |
83 | * System parameter formulae. |
84 | * |
85 | * This file is copied into each directory where we compile |
86 | * the kernel; it should be modified there to suit local taste |
87 | * if necessary. |
88 | * |
89 | * Compiled with -DHZ=xx -DRTC_OFFSET=x -DMAXUSERS=xx |
90 | */ |
91 | |
92 | #ifdef TIMEZONE |
93 | #error TIMEZONE is an obsolete kernel option. |
94 | #endif |
95 | |
96 | #ifdef DST |
97 | #error DST is an obsolete kernel option. |
98 | #endif |
99 | |
100 | #ifndef RTC_OFFSET |
101 | #define RTC_OFFSET 0 |
102 | #endif |
103 | |
104 | #ifndef HZ |
105 | #define HZ 100 |
106 | #endif |
107 | |
108 | #ifndef MAXFILES |
109 | #define MAXFILES (3 * (NPROC + MAXUSERS) + 80) |
110 | #endif |
111 | |
112 | #ifndef MAXEXEC |
113 | #define MAXEXEC 16 |
114 | #endif |
115 | |
116 | int hz = HZ; |
117 | int tick = 1000000 / HZ; |
118 | /* can adjust 240ms in 60s */ |
119 | int tickadj = (240000 / (60 * HZ)) ? (240000 / (60 * HZ)) : 1; |
120 | int rtc_offset = RTC_OFFSET; |
121 | int maxproc = NPROC; |
122 | int maxlwp = MAXLWP; |
123 | int desiredvnodes = NVNODE; |
124 | u_int maxfiles = MAXFILES; |
125 | int fscale = FSCALE; /* kernel uses `FSCALE', user uses `fscale' */ |
126 | int maxexec = MAXEXEC; /* max number of concurrent exec() calls */ |
127 | |
128 | #ifdef MULTIPROCESSOR |
129 | u_int maxcpus = MAXCPUS; |
130 | size_t coherency_unit = COHERENCY_UNIT; |
131 | #else |
132 | u_int maxcpus = 1; |
133 | size_t coherency_unit = ALIGNBYTES + 1; |
134 | #endif |
135 | |
136 | /* |
137 | * Various mbuf-related parameters. These can also be changed at run-time |
138 | * with sysctl. |
139 | */ |
140 | int nmbclusters = 0; |
141 | |
142 | #ifndef MBLOWAT |
143 | #define MBLOWAT 16 |
144 | #endif |
145 | int mblowat = MBLOWAT; |
146 | |
147 | #ifndef MCLLOWAT |
148 | #define MCLLOWAT 8 |
149 | #endif |
150 | int mcllowat = MCLLOWAT; |
151 | |
152 | #if XXX_PRG |
153 | /* |
154 | * Values in support of System V compatible shared memory. XXX |
155 | */ |
156 | #ifdef SYSVSHM |
157 | #if !defined(SHMMAX) && defined(SHMMAXPGS) |
158 | #define SHMMAX SHMMAXPGS /* shminit() performs a `*= PAGE_SIZE' */ |
159 | #elif !defined(SHMMAX) |
160 | #define SHMMAX 0 |
161 | #endif |
162 | #ifndef SHMMIN |
163 | #define SHMMIN 1 |
164 | #endif |
165 | #ifndef SHMMNI |
166 | #define SHMMNI 128 /* <64k, see IPCID_TO_IX in ipc.h */ |
167 | #endif |
168 | #ifndef SHMSEG |
169 | #define SHMSEG 128 |
170 | #endif |
171 | |
172 | struct shminfo shminfo = { |
173 | SHMMAX, |
174 | SHMMIN, |
175 | SHMMNI, |
176 | SHMSEG, |
177 | 0 |
178 | }; |
179 | #endif |
180 | |
181 | /* |
182 | * Values in support of System V compatible semaphores. |
183 | */ |
184 | #ifdef SYSVSEM |
185 | struct seminfo seminfo = { |
186 | SEMMAP, /* # of entries in semaphore map */ |
187 | SEMMNI, /* # of semaphore identifiers */ |
188 | SEMMNS, /* # of semaphores in system */ |
189 | SEMMNU, /* # of undo structures in system */ |
190 | SEMMSL, /* max # of semaphores per id */ |
191 | SEMOPM, /* max # of operations per semop call */ |
192 | SEMUME, /* max # of undo entries per process */ |
193 | SEMUSZ, /* size in bytes of undo structure */ |
194 | SEMVMX, /* semaphore maximum value */ |
195 | SEMAEM /* adjust on exit max value */ |
196 | }; |
197 | #endif |
198 | |
199 | /* |
200 | * Values in support of System V compatible messages. |
201 | */ |
202 | #ifdef SYSVMSG |
203 | struct msginfo msginfo = { |
204 | MSGMAX, /* max chars in a message */ |
205 | MSGMNI, /* # of message queue identifiers */ |
206 | MSGMNB, /* max chars in a queue */ |
207 | MSGTQL, /* max messages in system */ |
208 | MSGSSZ, /* size of a message segment */ |
209 | /* (must be small power of 2 greater than 4) */ |
210 | MSGSEG /* number of message segments */ |
211 | }; |
212 | #endif |
213 | #endif /* XXX_PRG */ |
214 | |
215 | /* |
216 | * Actual network mbuf sizes (read-only), for netstat. |
217 | */ |
218 | const int msize = MSIZE; |
219 | const int mclbytes = MCLBYTES; |
220 | |