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 1989 Sun Microsystems, Inc.  All rights reserved.
24 * Use is subject to license terms.
25 */
26
27#pragma ident	"%Z%%M%	%I%	%E% SMI"
28
29#ifndef	__sys_param_h
30#define	__sys_param_h
31
32/*
33 * Machine type dependent parameters.
34 */
35#include <machine/param.h>
36
37#define	NPTEPG		(NBPG/(sizeof (struct pte)))
38
39/*
40 * Machine-independent constants
41 */
42#define	NMOUNT	40		/* est. of # mountable fs for quota calc */
43#define	MSWAPX	15		/* pseudo mount table index for swapdev */
44#define	MAXUPRC	25		/* max processes per user */
45#define	NOFILE	256		/* max open files per process */
46#define	MAXPID	30000		/* max process id */
47#define	MAXUID	0xfffd		/* max user id (from 60000)  */
48#define	MAXLINK	32767		/* max links */
49#define	CANBSIZ	256		/* max size of typewriter line */
50#define	VDISABLE 0		/* use this to turn off c_cc[i] */
51#define	PIPE_BUF 4096		/* pipe buffer size */
52#ifndef	KERNEL
53/*
54 * HZ defines the ticks/second for system calls, eg, times(), which
55 * return values just in ticks; but not for getrusage(), which returns
56 * values in ticks*pages.  HZ *must* be 60 for compatibility reasons.
57 */
58#define	HZ	60
59#endif
60#define	NCARGS	0x100000	/* (absolute) max # characters in exec arglist */
61/* If NGROUPS changes, change <sys/limits.h> NGROUPS_MAX at the same time. */
62#define	NGROUPS	16		/* max number groups */
63
64#define	NOGROUP	-1		/* marker for empty group set member */
65
66#ifdef	KERNEL
67/*
68 * Priorities
69 */
70#define	PMASK	0177
71#define	PCATCH	0400		/* return if sleep interrupted, don't longjmp */
72#define	PSWP	0
73#define	PINOD	10
74#define	PAMAP	10
75#define	PRIBIO	20
76#define	PRIUBA	24
77#define	PZERO	25
78#define	PPIPE	26
79#define	PVFS	27
80#define	PWAIT	30
81#define	PLOCK	35
82#define	PSLEP	40
83
84#ifdef	VPIX
85#define	PV86	41
86#endif
87
88#define	PFLCK	42	/* File/Record lock */
89
90#define	PUSER	50
91
92#define	NZERO	20
93#endif	/* KERNEL */
94
95/*
96 * Signals
97 */
98#include <sys/signal.h>
99
100#define	ISSIG(p, flag) \
101	((p)->p_sig && ((p)->p_flag&STRC || \
102	 ((p)->p_sig &~ ((p)->p_sigignore | (p)->p_sigmask))) && issig(flag))
103
104#define	NBPW	sizeof (int)	/* number of bytes in an integer */
105
106#ifndef	NULL
107#define	NULL	0
108#endif
109#define	CMASK	0		/* default mask for file creation */
110#define	NODEV	(dev_t)(-1)
111
112#ifndef	INTRLVE
113/* macros replacing interleaving functions */
114#define	dkblock(bp)	((bp)->b_blkno)
115#define	dkunit(bp)	(minor((bp)->b_dev) >> 3)
116#endif
117
118#define	CBSIZE	28		/* number of chars in a clist block */
119#define	CROUND	0x1F		/* clist rounding; sizeof (int *) + CBSIZE-1 */
120
121#if	!defined(LOCORE) || !defined(KERNEL)
122#include <sys/types.h>
123#endif
124
125/*
126 * File system parameters and macros.
127 *
128 * The file system is made out of blocks of at most MAXBSIZE units,
129 * with smaller units (fragments) only in the last direct block.
130 * MAXBSIZE primarily determines the size of buffers in the buffer
131 * pool. It may be made larger without any effect on existing
132 * file systems; however making it smaller make make some file
133 * systems unmountable.
134 *
135 * Note that the blocked devices are assumed to have DEV_BSIZE
136 * "sectors" and that fragments must be some multiple of this size.
137 */
138#define	MAXBSIZE	8192
139#define	DEV_BSIZE	512
140#define	DEV_BSHIFT	9		/* log2(DEV_BSIZE) */
141#define	MAXFRAG 	8
142
143#define	btodb(bytes)			/* calculates (bytes / DEV_BSIZE) */ \
144	((unsigned)(bytes) >> DEV_BSHIFT)
145#define	dbtob(db)			/* calculates (db * DEV_BSIZE) */ \
146	((unsigned)(db) << DEV_BSHIFT)
147
148/*
149 * Map a ``block device block'' to a file system block.
150 * XXX - this is currently only being used for tape drives.
151 */
152#define	BLKDEV_IOSIZE	2048
153#define	bdbtofsb(bn)	((bn) / (BLKDEV_IOSIZE/DEV_BSIZE))
154
155/*
156 * MAXPATHLEN defines the longest permissable path length,
157 * including the terminating null, after expanding symbolic links.
158 * MAXSYMLINKS defines the maximum number of symbolic links
159 * that may be expanded in a path name. It should be set high
160 * enough to allow all legitimate uses, but halt infinite loops
161 * reasonably quickly.
162 */
163#define	MAXPATHLEN	1024
164#define	MAXSYMLINKS	20
165
166/*
167 * bit map related macros
168 */
169#define	setbit(a,i)	((a)[(i)/NBBY] |= 1<<((i)%NBBY))
170#define	clrbit(a,i)	((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
171#define	isset(a,i)	((a)[(i)/NBBY] & (1<<((i)%NBBY)))
172#define	isclr(a,i)	(((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
173
174/*
175 * Macros for fast min/max.
176 */
177#ifndef	MIN
178#define	MIN(a,b) (((a)<(b))?(a):(b))
179#endif
180#ifndef	MAX
181#define	MAX(a,b) (((a)>(b))?(a):(b))
182#endif
183
184/*
185 * Macros for counting and rounding.
186 */
187#ifdef	sun386
188#define	howmany(x, y)   ((((u_int)(x))+(((u_int)(y))-1))/((u_int)(y)))
189#define	roundup(x, y)   ((((u_int)(x)+((u_int)(y)-1))/(u_int)(y))*(u_int)(y))
190#else
191#define	howmany(x, y)	(((x)+((y)-1))/(y))
192#define	roundup(x, y)	((((x)+((y)-1))/(y))*(y))
193#endif
194
195/*
196 * Scale factor for scaled integers used to count
197 * %cpu time and load averages.
198 */
199#define	FSHIFT	8		/* bits to right of fixed binary point */
200#define	FSCALE	(1<<FSHIFT)
201
202/*
203 * Maximum size of hostname recognized and stored in the kernel.
204 */
205#define	MAXHOSTNAMELEN  64
206
207#endif	/* !__sys_param_h */
208