xref: /illumos-gate/usr/src/ucbhead/sys/param.h (revision 581cede61ac9c14d8d4ea452562a567189eead78)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26 
27 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
28 /*	  All Rights Reserved  	*/
29 
30 /*
31  * University Copyright- Copyright (c) 1982, 1986, 1988
32  * The Regents of the University of California
33  * All Rights Reserved
34  *
35  * University Acknowledgment- Portions of this document are derived from
36  * software developed by the University of California, Berkeley, and its
37  * contributors.
38  */
39 
40 #ifndef	_SYS_PARAM_H
41 #define	_SYS_PARAM_H
42 
43 #pragma ident	"%Z%%M%	%I%	%E% SMI"
44 
45 
46 /*
47  * Fundamental variables; don't change too often.
48  *
49  * This file is included here for compatibility with
50  * SunOS, but it does *not* include all the values
51  * define in the SunOS version of this file.
52  */
53 
54 #include <sys/isa_defs.h>
55 #include <limits.h>
56 #include <unistd.h>
57 
58 #ifdef __cplusplus
59 extern "C" {
60 #endif
61 
62 #ifndef	MAX_INPUT
63 #define	MAX_INPUT	512	/* Maximum bytes stored in the input queue */
64 #endif
65 
66 #ifndef	MAX_CANON
67 #define	MAX_CANON	256	/* Maximum bytes for canoical processing */
68 #endif
69 
70 #define	UID_NOBODY	60001
71 #define	GID_NOBODY	60001
72 
73 #define	UID_NOACCESS	60002	/* user ID no access */
74 
75 #define	MAXPID	((pid_t)sysconf(_SC_MAXPID))	/* max process id */
76 #define	MAXUID	2147483647	/* max user id */
77 #define	MAXLINK	32767		/* max links */
78 
79 #define	NMOUNT		40	/* est. of # mountable fs for quota calc */
80 
81 /* The values below are defined in limits.h */
82 #define	NOFILE	OPEN_MAX	/* max open files per process */
83 
84 #define	CANBSIZ	256		/* max size of typewriter line	*/
85 #define	HZ	((int)sysconf(_SC_CLK_TCK))  /* ticks/second of the clock */
86 #define	TICK	(1000000000/((int)sysconf(_SC_CLK_TCK)))
87 
88 #define	NCARGS	0x100000	/* # characters in exec arglist */
89 				/*   must be multiple of NBPW.  */
90 /*
91  * These define the maximum and minimum allowable values of the
92  * configurable parameter NGROUPS_MAX.
93  */
94 #define	NGROUPS_UMAX	32
95 #define	NGROUPS_UMIN	8
96 
97 #define	NGROUPS		NGROUPS_MAX	/* max number groups, from limits.h */
98 #define	NOGROUP		-1	/* marker for empty group set member */
99 
100 /*
101  * Priorities.  Should not be altered too much.
102  */
103 
104 #define	PMASK	0177
105 #define	PCATCH	0400
106 #define	PNOSTOP	01000
107 #define	PSWP	0
108 #define	PINOD	10
109 #define	PSNDD	PINOD
110 #define	PAMAP	PINOD
111 #define	PPMAP	PINOD
112 #define	PRIBIO	20
113 #define	PZERO	25
114 #define	PMEM	0
115 #define	NZERO	20
116 #define	PPIPE	26
117 #define	PVFS	27
118 #define	PWAIT	30
119 #define	PLOCK	35
120 #define	PSLEP	39
121 #define	PUSER	60
122 #define	PIDLE	127
123 
124 /*
125  * Fundamental constants of the implementation--cannot be changed easily.
126  */
127 
128 #define	NBPS	0x20000		/* Number of bytes per segment */
129 #define	NBPW	sizeof (int)	/* number of bytes in an integer */
130 
131 #if	defined(_LP64) && !defined(__cplusplus)
132 #define	NULL	0L
133 #else
134 #define	NULL	0
135 #endif
136 
137 #define	CMASK	0		/* default mask for file creation */
138 #define	CDLIMIT	(1L<<11)	/* default max write address */
139 #define	NODEV	(dev_t)(-1)
140 #define	NBPSCTR		512	/* Bytes per disk sector.	*/
141 #define	UBSIZE		512	/* unix block size.		*/
142 #define	SCTRSHFT	9	/* Shift for BPSECT.		*/
143 
144 #define	lobyte(X)	(((unsigned char *)&(X))[1])
145 #define	hibyte(X)	(((unsigned char *)&(X))[0])
146 #define	loword(X)	(((ushort_t *)&(X))[1])
147 #define	hiword(X)	(((ushort_t *)&(X))[0])
148 
149 /* REMOTE -- whether machine is primary, secondary, or regular */
150 #define	SYSNAME 9		/* # chars in system name */
151 #define	PREMOTE 39
152 
153 /*
154  * MAXPATHLEN defines the longest permissible path length,
155  * including the terminating null, after expanding symbolic links.
156  * MAXSYMLINKS defines the maximum number of symbolic links
157  * that may be expanded in a path name. It should be set high
158  * enough to allow all legitimate uses, but halt infinite loops
159  * reasonably quickly.
160  * MAXNAMELEN is the length (including the terminating null) of
161  * the longest permissible file (component) name.
162  */
163 #define	MAXPATHLEN	1024
164 #define	MAXSYMLINKS	20
165 #define	MAXNAMELEN	256
166 
167 #ifndef	NADDR
168 #define	NADDR 13
169 #endif
170 
171 /*
172  * The following are defined to be the same as
173  * defined in /usr/include/limits.h.  They are
174  * needed for pipe and FIFO compatibility.
175  */
176 #ifndef	PIPE_BUF	/* max # bytes atomic in write to a pipe */
177 #define	PIPE_BUF	5120
178 #endif	/* PIPE_BUF */
179 
180 #ifndef	PIPE_MAX	/* max # bytes written to a pipe in a write */
181 #define	PIPE_MAX	5120
182 #endif	/* PIPE_MAX */
183 
184 #define	PIPEBUF PIPE_BUF	/* pipe buffer size */
185 
186 #ifndef	NBBY
187 #define	NBBY	8			/* number of bits per byte */
188 #endif
189 
190 /* macros replacing interleaving functions */
191 #define	dkblock(bp)	((bp)->b_blkno)
192 #define	dkunit(bp)	(minor((bp)->b_dev) >> 3)
193 
194 /*
195  * File system parameters and macros.
196  *
197  * The file system is made out of blocks of at most MAXBSIZE units,
198  * with smaller units (fragments) only in the last direct block.
199  * MAXBSIZE primarily determines the size of buffers in the buffer
200  * pool. It may be made larger without any effect on existing
201  * file systems; however making it smaller make make some file
202  * systems unmountable.
203  *
204  * Note that the blocked devices are assumed to have DEV_BSIZE
205  * "sectors" and that fragments must be some multiple of this size.
206  */
207 #define	MAXBSIZE	8192
208 #define	DEV_BSIZE	512
209 #define	DEV_BSHIFT	9		/* log2(DEV_BSIZE) */
210 #define	MAXFRAG 	8
211 
212 #ifdef  _LP64
213 #define	MAXOFF_T	0x7fffffffffffffffl
214 #define	MAXOFFSET_T	0x7fffffffffffffffll
215 #else
216 #define	MAXOFF_T	0x7fffffff
217 #ifndef _LONGLONG_TYPE
218 #define	MAXOFFSET_T	0x7fffffff
219 #else
220 #define	MAXOFFSET_T	0x7fffffffffffffffLL
221 #endif
222 #endif  /* _LP64 */
223 
224 #define	btodb(bytes)			/* calculates (bytes / DEV_BSIZE) */ \
225 	((unsigned)(bytes) >> DEV_BSHIFT)
226 #define	dbtob(db)			/* calculates (db * DEV_BSIZE) */ \
227 	((unsigned)(db) << DEV_BSHIFT)
228 
229 /*
230  * PAGES* describes the logical page size used by the system.
231  */
232 
233 #define	PAGESIZE	(sysconf(_SC_PAGESIZE))	/* All the above, for logical */
234 #define	PAGEOFFSET	(PAGESIZE - 1)
235 #define	PAGEMASK	(~PAGEOFFSET)
236 
237 /*
238  * Some random macros for units conversion.
239  */
240 
241 /*
242  * pages to bytes, and back (with and without rounding)
243  */
244 #define	ptob(x)		((x) * PAGESIZE)
245 #define	btop(x)		(((unsigned)(x)) / PAGESIZE)
246 #define	btopr(x)	((((unsigned)(x) + PAGEOFFSET) / PAGESIZE))
247 
248 /*
249  * Signals
250  */
251 
252 #include <sys/signal.h>
253 #include <sys/types.h>
254 
255 /*
256  * bit map related macros
257  */
258 #define	setbit(a, i)	((a)[(i)/NBBY] |= 1<<((i)%NBBY))
259 #define	clrbit(a, i)	((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
260 #define	isset(a, i)	((a)[(i)/NBBY] & (1<<((i)%NBBY)))
261 #define	isclr(a, i)	(((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
262 
263 /*
264  * Macros for fast min/max.
265  */
266 #ifndef	MIN
267 #define	MIN(a, b)	(((a) < (b))?(a):(b))
268 #endif
269 #ifndef	MAX
270 #define	MAX(a, b)	(((a) > (b))?(a):(b))
271 #endif
272 
273 #define	howmany(x, y)	(((x)+((y)-1))/(y))
274 #define	roundup(x, y)	((((x)+((y)-1))/(y))*(y))
275 
276 /*
277  * Scale factor for scaled integers used to count
278  * %cpu time and load averages.
279  */
280 #define	FSHIFT	8		/* bits to right of fixed binary point */
281 #define	FSCALE	(1<<FSHIFT)
282 
283 /*
284  * Maximum size of hostname recognized and stored in the kernel.
285  * Same as in /usr/include/netdb.h
286  */
287 #ifndef	MAXHOSTNAMELEN
288 #define	MAXHOSTNAMELEN	256
289 #endif
290 
291 #ifdef __cplusplus
292 }
293 #endif
294 
295 #endif	/* _SYS_PARAM_H */
296