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