1*c446e4efSbloom /* param.h 6.9 85/06/07 */ 25db792e4Sbill 35db792e4Sbill /* 44951e502Ssam * Machine type dependent parameters. 55db792e4Sbill */ 68a98aca3Ssam #ifdef KERNEL 7d747881bSkarels #include "../machine/machparam.h" 88a98aca3Ssam #else 9d747881bSkarels #include <machine/machparam.h> 10b481cdefSroot #endif 115db792e4Sbill 12b481cdefSroot #define NPTEPG (NBPG/(sizeof (struct pte))) 13b481cdefSroot 14b481cdefSroot /* 15b481cdefSroot * Machine-independent constants 16b481cdefSroot */ 1774c6c69bSkarels #define NMOUNT 20 /* number of mountable file systems */ 18f0028148Skarels /* NMOUNT must be <= 255 unless c_mdev (cmap.h) is expanded */ 19818d21a2Skarels #define MSWAPX NMOUNT /* pseudo mount table index for swapdev */ 205db792e4Sbill #define MAXUPRC 25 /* max processes per user */ 21e3c8cc35Skarels #define NOFILE 64 /* max open files per process */ 225db792e4Sbill #define CANBSIZ 256 /* max size of typewriter line */ 2374c6c69bSkarels #define NCARGS 20480 /* # characters in exec arglist */ 240b98f570Skarels #define NGROUPS 16 /* max number groups */ 2545ac661dSwnj 26e74c57f3Ssam #define NOGROUP -1 /* marker for empty group set member */ 27e74c57f3Ssam 285db792e4Sbill /* 29b481cdefSroot * Priorities 305db792e4Sbill */ 315db792e4Sbill #define PSWP 0 325db792e4Sbill #define PINOD 10 335db792e4Sbill #define PRIBIO 20 345db792e4Sbill #define PRIUBA 24 355db792e4Sbill #define PZERO 25 365db792e4Sbill #define PPIPE 26 375db792e4Sbill #define PWAIT 30 38bea46c20Ssam #define PLOCK 35 395db792e4Sbill #define PSLEP 40 405db792e4Sbill #define PUSER 50 415db792e4Sbill 4274c6c69bSkarels #define NZERO 0 435db792e4Sbill 445db792e4Sbill /* 45b481cdefSroot * Signals 465db792e4Sbill */ 47586761c3Ssam #ifdef KERNEL 4864691dc4Sbloom #include "signal.h" 49586761c3Ssam #else 5046cc71adSbill #include <signal.h> 5146cc71adSbill #endif 52c6983186Sbill 53586761c3Ssam #define ISSIG(p) \ 54586761c3Ssam ((p)->p_sig && ((p)->p_flag&STRC || \ 55eb2beebeSroot ((p)->p_sig &~ ((p)->p_sigignore | (p)->p_sigmask))) && issig()) 5603c2128fSroot 57c6983186Sbill /* 58b481cdefSroot * Fundamental constants of the implementation. 59c6983186Sbill */ 60e163c03cSwnj #define NBBY 8 /* number of bits in a byte */ 615db792e4Sbill #define NBPW sizeof(int) /* number of bytes in an integer */ 625db792e4Sbill 635db792e4Sbill #define NULL 0 64f0028148Skarels #define CMASK 022 /* default mask for file creation */ 655db792e4Sbill #define NODEV (dev_t)(-1) 665db792e4Sbill 675db792e4Sbill /* 685db792e4Sbill * Clustering of hardware pages on machines with ridiculously small 695db792e4Sbill * page sizes is done here. The paging subsystem deals with units of 70f0028148Skarels * CLSIZE pte's describing NBPG (from vm.h) pages each. 715db792e4Sbill * 725db792e4Sbill * NOTE: SSIZE, SINCR and UPAGES must be multiples of CLSIZE 735db792e4Sbill */ 74248881f8Swnj #define CLBYTES (CLSIZE*NBPG) 75e163c03cSwnj #define CLOFSET (CLSIZE*NBPG-1) /* for clusters, like PGOFSET */ 76248881f8Swnj #define claligned(x) ((((int)(x))&CLOFSET)==0) 77248881f8Swnj #define CLOFF CLOFSET 78b481cdefSroot #define CLSHIFT (PGSHIFT+CLSIZELOG2) 795db792e4Sbill 80b481cdefSroot #if CLSIZE==1 81b481cdefSroot #define clbase(i) (i) 82b481cdefSroot #define clrnd(i) (i) 83b481cdefSroot #else 845db792e4Sbill /* give the base virtual address (first of CLSIZE) */ 855db792e4Sbill #define clbase(i) ((i) &~ (CLSIZE-1)) 865db792e4Sbill /* round a number of clicks up to a whole cluster */ 875db792e4Sbill #define clrnd(i) (((i) + (CLSIZE-1)) &~ (CLSIZE-1)) 88b481cdefSroot #endif 895db792e4Sbill 905db792e4Sbill #ifndef INTRLVE 915db792e4Sbill /* macros replacing interleaving functions */ 925db792e4Sbill #define dkblock(bp) ((bp)->b_blkno) 935db792e4Sbill #define dkunit(bp) (minor((bp)->b_dev) >> 3) 945db792e4Sbill #endif 955db792e4Sbill 965db792e4Sbill #define CBSIZE 28 /* number of chars in a clist block */ 975db792e4Sbill #define CROUND 0x1F /* clist rounding; sizeof(int *) + CBSIZE -1*/ 985db792e4Sbill 99e0ff83f9Swnj #ifndef KERNEL 100e0ff83f9Swnj #include <sys/types.h> 101e0ff83f9Swnj #else 10272d10768Ssam #ifndef LOCORE 10364691dc4Sbloom #include "types.h" 104e0ff83f9Swnj #endif 10572d10768Ssam #endif 10676379a38Sbill 1075db792e4Sbill /* 108389af1dfSmckusic * File system parameters and macros. 109389af1dfSmckusic * 110389af1dfSmckusic * The file system is made out of blocks of at most MAXBSIZE units, 111389af1dfSmckusic * with smaller units (fragments) only in the last direct block. 112389af1dfSmckusic * MAXBSIZE primarily determines the size of buffers in the buffer 113389af1dfSmckusic * pool. It may be made larger without any effect on existing 114389af1dfSmckusic * file systems; however making it smaller make make some file 115389af1dfSmckusic * systems unmountable. 116389af1dfSmckusic * 117389af1dfSmckusic * Note that the blocked devices are assumed to have DEV_BSIZE 118389af1dfSmckusic * "sectors" and that fragments must be some multiple of this size. 11991d57239Smckusick * Block devices are read in BLKDEV_IOSIZE units. This number must 12091d57239Smckusick * be a power of two and in the range of 12191d57239Smckusick * DEV_BSIZE <= BLKDEV_IOSIZE <= MAXBSIZE 12291d57239Smckusick * This size has no effect upon the file system, but is usually set 12391d57239Smckusick * to the block size of the root file system, so as to maximize the 12491d57239Smckusick * speed of ``fsck''. 125389af1dfSmckusic */ 126389af1dfSmckusic #define MAXBSIZE 8192 127389af1dfSmckusic #define DEV_BSIZE 512 128c6047a37Ssam #define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */ 1291641975aSsam #define BLKDEV_IOSIZE 2048 130389af1dfSmckusic #define MAXFRAG 8 131389af1dfSmckusic 132c6047a37Ssam #define btodb(bytes) /* calculates (bytes / DEV_BSIZE) */ \ 133c6047a37Ssam ((unsigned)(bytes) >> DEV_BSHIFT) 134c6047a37Ssam #define dbtob(db) /* calculates (db * DEV_BSIZE) */ \ 135c6047a37Ssam ((unsigned)(db) << DEV_BSHIFT) 136c6047a37Ssam 137389af1dfSmckusic /* 138edc472f6Skre * Map a ``block device block'' to a file system block. 139edc472f6Skre * This should be device dependent, and will be after we 140edc472f6Skre * add an entry to cdevsw for that purpose. For now though 141edc472f6Skre * just use DEV_BSIZE. 142edc472f6Skre */ 143b481cdefSroot #define bdbtofsb(bn) ((bn) / (BLKDEV_IOSIZE/DEV_BSIZE)) 144edc472f6Skre 145edc472f6Skre /* 146389af1dfSmckusic * MAXPATHLEN defines the longest permissable path length 147389af1dfSmckusic * after expanding symbolic links. It is used to allocate 148389af1dfSmckusic * a temporary buffer from the buffer pool in which to do the 149389af1dfSmckusic * name expansion, hence should be a power of two, and must 150389af1dfSmckusic * be less than or equal to MAXBSIZE. 151389af1dfSmckusic * MAXSYMLINKS defines the maximum number of symbolic links 152389af1dfSmckusic * that may be expanded in a path name. It should be set high 153389af1dfSmckusic * enough to allow all legitimate uses, but halt infinite loops 154389af1dfSmckusic * reasonably quickly. 155389af1dfSmckusic */ 156389af1dfSmckusic #define MAXPATHLEN 1024 157389af1dfSmckusic #define MAXSYMLINKS 8 158389af1dfSmckusic 159389af1dfSmckusic /* 160389af1dfSmckusic * bit map related macros 161389af1dfSmckusic */ 162389af1dfSmckusic #define setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY)) 163389af1dfSmckusic #define clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY))) 164389af1dfSmckusic #define isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY))) 165389af1dfSmckusic #define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0) 166389af1dfSmckusic 167389af1dfSmckusic /* 168389af1dfSmckusic * Macros for fast min/max. 169389af1dfSmckusic */ 170389af1dfSmckusic #define MIN(a,b) (((a)<(b))?(a):(b)) 171389af1dfSmckusic #define MAX(a,b) (((a)>(b))?(a):(b)) 172389af1dfSmckusic 173389af1dfSmckusic /* 174389af1dfSmckusic * Macros for counting and rounding. 175389af1dfSmckusic */ 176389af1dfSmckusic #define howmany(x, y) (((x)+((y)-1))/(y)) 177389af1dfSmckusic #define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) 178*c446e4efSbloom 179*c446e4efSbloom /* 180*c446e4efSbloom * Maximum size of hostname recognized and stroed in the kernel. 181*c446e4efSbloom */ 182*c446e4efSbloom #define MAXHOSTNAMELEN 32 183