|
|
1.1 ! root 1: /* param.h 6.1 83/07/29 */ ! 2: ! 3: /* ! 4: * Machine type dependent parameters. ! 5: */ ! 6: #ifdef KERNEL ! 7: #include "../machine/param.h" ! 8: #else ! 9: #include <machine/param.h> ! 10: #endif ! 11: ! 12: #define NPTEPG (NBPG/(sizeof (struct pte))) ! 13: ! 14: /* ! 15: * Machine-independent constants ! 16: */ ! 17: #define NMOUNT 15 /* number of mountable file systems */ ! 18: #define MSWAPX 15 /* pseudo mount table index for swapdev */ ! 19: #define MAXUPRC 25 /* max processes per user */ ! 20: #define NOFILE 20 /* max open files per process */ ! 21: /* NOFILE MUST NOT BE >= 31; SEE pte.h */ ! 22: #define CANBSIZ 256 /* max size of typewriter line */ ! 23: #define NCARGS 10240 /* # characters in exec arglist */ ! 24: #define NGROUPS 8 /* max number groups */ ! 25: ! 26: #define NOGROUP -1 /* marker for empty group set member */ ! 27: ! 28: /* ! 29: * Priorities ! 30: */ ! 31: #define PSWP 0 ! 32: #define PINOD 10 ! 33: #define PRIBIO 20 ! 34: #define PRIUBA 24 ! 35: #define PZERO 25 ! 36: #define PPIPE 26 ! 37: #define PWAIT 30 ! 38: #define PLOCK 35 ! 39: #define PSLEP 40 ! 40: #define PUSER 50 ! 41: ! 42: #define NZERO 20 ! 43: ! 44: /* ! 45: * Signals ! 46: */ ! 47: #ifdef KERNEL ! 48: #include "../h/signal.h" ! 49: #else ! 50: #include <signal.h> ! 51: #endif ! 52: ! 53: #define ISSIG(p) \ ! 54: ((p)->p_sig && ((p)->p_flag&STRC || \ ! 55: ((p)->p_sig &~ ((p)->p_sigignore | (p)->p_sigmask))) && issig()) ! 56: ! 57: /* ! 58: * Fundamental constants of the implementation. ! 59: */ ! 60: #define NBBY 8 /* number of bits in a byte */ ! 61: #define NBPW sizeof(int) /* number of bytes in an integer */ ! 62: ! 63: #define NULL 0 ! 64: #define CMASK 0 /* default mask for file creation */ ! 65: #define NODEV (dev_t)(-1) ! 66: ! 67: /* ! 68: * Clustering of hardware pages on machines with ridiculously small ! 69: * page sizes is done here. The paging subsystem deals with units of ! 70: * CLSIZE pte's describing NBPG (from vm.h) pages each... BSIZE must ! 71: * be CLSIZE*NBPG in the current implementation, that is the paging subsystem ! 72: * deals with the same size blocks that the file system uses. ! 73: * ! 74: * NOTE: SSIZE, SINCR and UPAGES must be multiples of CLSIZE ! 75: */ ! 76: #define CLBYTES (CLSIZE*NBPG) ! 77: #define CLOFSET (CLSIZE*NBPG-1) /* for clusters, like PGOFSET */ ! 78: #define claligned(x) ((((int)(x))&CLOFSET)==0) ! 79: #define CLOFF CLOFSET ! 80: #define CLSHIFT (PGSHIFT+CLSIZELOG2) ! 81: ! 82: #if CLSIZE==1 ! 83: #define clbase(i) (i) ! 84: #define clrnd(i) (i) ! 85: #else ! 86: /* give the base virtual address (first of CLSIZE) */ ! 87: #define clbase(i) ((i) &~ (CLSIZE-1)) ! 88: /* round a number of clicks up to a whole cluster */ ! 89: #define clrnd(i) (((i) + (CLSIZE-1)) &~ (CLSIZE-1)) ! 90: #endif ! 91: ! 92: #ifndef INTRLVE ! 93: /* macros replacing interleaving functions */ ! 94: #define dkblock(bp) ((bp)->b_blkno) ! 95: #define dkunit(bp) (minor((bp)->b_dev) >> 3) ! 96: #endif ! 97: ! 98: #define CBSIZE 28 /* number of chars in a clist block */ ! 99: #define CROUND 0x1F /* clist rounding; sizeof(int *) + CBSIZE -1*/ ! 100: ! 101: #ifndef KERNEL ! 102: #include <sys/types.h> ! 103: #else ! 104: #ifndef LOCORE ! 105: #include "../h/types.h" ! 106: #endif ! 107: #endif ! 108: ! 109: /* ! 110: * File system parameters and macros. ! 111: * ! 112: * The file system is made out of blocks of at most MAXBSIZE units, ! 113: * with smaller units (fragments) only in the last direct block. ! 114: * MAXBSIZE primarily determines the size of buffers in the buffer ! 115: * pool. It may be made larger without any effect on existing ! 116: * file systems; however making it smaller make make some file ! 117: * systems unmountable. ! 118: * ! 119: * Note that the blocked devices are assumed to have DEV_BSIZE ! 120: * "sectors" and that fragments must be some multiple of this size. ! 121: * Block devices are read in BLKDEV_IOSIZE units. This number must ! 122: * be a power of two and in the range of ! 123: * DEV_BSIZE <= BLKDEV_IOSIZE <= MAXBSIZE ! 124: * This size has no effect upon the file system, but is usually set ! 125: * to the block size of the root file system, so as to maximize the ! 126: * speed of ``fsck''. ! 127: */ ! 128: #define MAXBSIZE 8192 ! 129: #define DEV_BSIZE 512 ! 130: #define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */ ! 131: #define BLKDEV_IOSIZE 2048 ! 132: #define MAXFRAG 8 ! 133: ! 134: #define btodb(bytes) /* calculates (bytes / DEV_BSIZE) */ \ ! 135: ((unsigned)(bytes) >> DEV_BSHIFT) ! 136: #define dbtob(db) /* calculates (db * DEV_BSIZE) */ \ ! 137: ((unsigned)(db) << DEV_BSHIFT) ! 138: ! 139: /* ! 140: * Map a ``block device block'' to a file system block. ! 141: * This should be device dependent, and will be after we ! 142: * add an entry to cdevsw for that purpose. For now though ! 143: * just use DEV_BSIZE. ! 144: */ ! 145: #define bdbtofsb(bn) ((bn) / (BLKDEV_IOSIZE/DEV_BSIZE)) ! 146: ! 147: /* ! 148: * MAXPATHLEN defines the longest permissable path length ! 149: * after expanding symbolic links. It is used to allocate ! 150: * a temporary buffer from the buffer pool in which to do the ! 151: * name expansion, hence should be a power of two, and must ! 152: * be less than or equal to MAXBSIZE. ! 153: * MAXSYMLINKS defines the maximum number of symbolic links ! 154: * that may be expanded in a path name. It should be set high ! 155: * enough to allow all legitimate uses, but halt infinite loops ! 156: * reasonably quickly. ! 157: */ ! 158: #define MAXPATHLEN 1024 ! 159: #define MAXSYMLINKS 8 ! 160: ! 161: /* ! 162: * bit map related macros ! 163: */ ! 164: #define setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY)) ! 165: #define clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY))) ! 166: #define isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY))) ! 167: #define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0) ! 168: ! 169: /* ! 170: * Macros for fast min/max. ! 171: */ ! 172: #define MIN(a,b) (((a)<(b))?(a):(b)) ! 173: #define MAX(a,b) (((a)>(b))?(a):(b)) ! 174: ! 175: /* ! 176: * Macros for counting and rounding. ! 177: */ ! 178: #define howmany(x, y) (((x)+((y)-1))/(y)) ! 179: #define roundup(x, y) ((((x)+((y)-1))/(y))*(y))
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.