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