1*e163c03cSwnj /* param.h 4.7 81/02/23 */ 25db792e4Sbill 35db792e4Sbill /* 45db792e4Sbill * tunable variables 55db792e4Sbill * 6a44e3e62Sbill * NB: NBUF must be less than MAXNBUF in locore.s. 75db792e4Sbill */ 85db792e4Sbill 901391042Swnj #ifdef notdef 1001391042Swnj #define NBUF 64 /* size of buffer cache */ 1101391042Swnj #define NINODE 200 /* number of in core inodes */ 1201391042Swnj #define NFILE 175 /* number of in core file structures */ 1301391042Swnj #define NMOUNT 7 /* number of mountable file systems */ 1401391042Swnj #define MSWAPX 7 /* pseudo mount table index for swapdev */ 1501391042Swnj #define NPROC 125 /* max number of processes */ 1601391042Swnj #define NTEXT 40 /* max number of pure texts */ 1701391042Swnj #define NCLIST 250 /* max total clist size */ 1801391042Swnj #endif 19a44e3e62Sbill #define NBUF 128 /* size of buffer cache */ 2014def021Sbill #define NINODE 400 /* number of in core inodes */ 2114def021Sbill #define NFILE 350 /* number of in core file structures */ 2216850871Sbill #define NMOUNT 15 /* number of mountable file systems */ 2316850871Sbill #define MSWAPX 15 /* pseudo mount table index for swapdev */ 2401391042Swnj #define NPROC 250 /* max number of processes */ 2501391042Swnj #define NTEXT 60 /* max number of pure texts */ 2601391042Swnj #define NCLIST 500 /* max total clist size */ 275db792e4Sbill #define MAXUPRC 25 /* max processes per user */ 285db792e4Sbill #define SSIZE 4 /* initial stack size (*512 bytes) */ 295db792e4Sbill #define SINCR 4 /* increment of stack (*512 bytes) */ 305db792e4Sbill #define NOFILE 20 /* max open files per process */ 315db792e4Sbill #define CANBSIZ 256 /* max size of typewriter line */ 325db792e4Sbill #define SMAPSIZ (4*NPROC) /* size of swap allocation area */ 335db792e4Sbill #define NCALL 40 /* max simultaneous time callouts */ 345db792e4Sbill #define HZ 60 /* Ticks/second of the clock */ 355db792e4Sbill #define TIMEZONE (8*60) /* Minutes westward from Greenwich */ 365db792e4Sbill #define DSTFLAG 1 /* Daylight Saving Time applies in this locality */ 375db792e4Sbill #define MSGBUFS 128 /* Characters saved from error messages */ 385eb5d423Sbill #define NCARGS 10240 /* # characters in exec arglist */ 395db792e4Sbill /* 405db792e4Sbill * priorities 415db792e4Sbill * probably should not be 425db792e4Sbill * altered too much 435db792e4Sbill */ 445db792e4Sbill 455db792e4Sbill #define PSWP 0 465db792e4Sbill #define PINOD 10 475db792e4Sbill #define PRIBIO 20 485db792e4Sbill #define PRIUBA 24 495db792e4Sbill #define PZERO 25 505db792e4Sbill #define PPIPE 26 515db792e4Sbill #define PWAIT 30 525db792e4Sbill #define PSLEP 40 535db792e4Sbill #define PUSER 50 545db792e4Sbill 555db792e4Sbill #define NZERO 20 565db792e4Sbill 575db792e4Sbill /* 585db792e4Sbill * signals 595db792e4Sbill * dont change 605db792e4Sbill */ 615db792e4Sbill 6246cc71adSbill #ifndef NSIG 6346cc71adSbill #include <signal.h> 6446cc71adSbill #endif 65c6983186Sbill 66c6983186Sbill /* 67c6983186Sbill * Return values from tsleep(). 68c6983186Sbill */ 69c6983186Sbill #define TS_OK 0 /* normal wakeup */ 70c6983186Sbill #define TS_TIME 1 /* timed-out wakeup */ 71c6983186Sbill #define TS_SIG 2 /* asynchronous signal wakeup */ 725db792e4Sbill 735db792e4Sbill /* 745db792e4Sbill * fundamental constants of the implementation-- 755db792e4Sbill * cannot be changed easily. 765db792e4Sbill * note: UPAGES is well known in locore.s 775db792e4Sbill */ 785db792e4Sbill 79*e163c03cSwnj #define NBBY 8 /* number of bits in a byte */ 805db792e4Sbill #define NBPW sizeof(int) /* number of bytes in an integer */ 81*e163c03cSwnj #define NBPG 512 82*e163c03cSwnj #define PGOFSET (NBPG-1) /* byte offset into page */ 83*e163c03cSwnj #define PGSHIFT 9 /* LOG2(NBPG) */ 845db792e4Sbill 85*e163c03cSwnj #define UPAGES 8 /* pages of u-area */ 865db792e4Sbill #define NULL 0 875db792e4Sbill #define CMASK 0 /* default mask for file creation */ 885db792e4Sbill #define NODEV (dev_t)(-1) 895db792e4Sbill #define ROOTINO ((ino_t)2) /* i number of all roots */ 905db792e4Sbill #define SUPERB ((daddr_t)1) /* block number of the super block */ 915db792e4Sbill #define DIRSIZ 14 /* max characters per directory */ 925db792e4Sbill 935db792e4Sbill /* 945db792e4Sbill * Clustering of hardware pages on machines with ridiculously small 955db792e4Sbill * page sizes is done here. The paging subsystem deals with units of 965db792e4Sbill * CLSIZE pte's describing NBPG (from vm.h) pages each... BSIZE must 975db792e4Sbill * be CLSIZE*NBPG in the current implementation, that is the paging subsystem 985db792e4Sbill * deals with the same size blocks that the file system uses. 995db792e4Sbill * 1005db792e4Sbill * NOTE: SSIZE, SINCR and UPAGES must be multiples of CLSIZE 1015db792e4Sbill * 1025db792e4Sbill * NB: CLSIZE is well known in locore.s. 1035db792e4Sbill */ 1045db792e4Sbill #define CLSIZE 2 105*e163c03cSwnj #define CLOFSET (CLSIZE*NBPG-1) /* for clusters, like PGOFSET */ 1065db792e4Sbill 1075db792e4Sbill /* give the base virtual address (first of CLSIZE) */ 1085db792e4Sbill #define clbase(i) ((i) &~ (CLSIZE-1)) 1095db792e4Sbill 1105db792e4Sbill /* round a number of clicks up to a whole cluster */ 1115db792e4Sbill #define clrnd(i) (((i) + (CLSIZE-1)) &~ (CLSIZE-1)) 1125db792e4Sbill 1135db792e4Sbill #if CLSIZE==1 1145db792e4Sbill #define BSIZE 512 /* size of secondary block (bytes) */ 1155db792e4Sbill #define INOPB 8 /* 8 inodes per block */ 1165db792e4Sbill #define BMASK 0777 /* BSIZE-1 */ 1175db792e4Sbill #define BSHIFT 9 /* LOG2(BSIZE) */ 1185db792e4Sbill #define NMASK 0177 /* NINDIR-1 */ 1195db792e4Sbill #define NSHIFT 7 /* LOG2(NINDIR) */ 1205db792e4Sbill #define NICINOD 100 /* number of superblock inodes */ 1215db792e4Sbill #define NICFREE 50 /* number of superblock free blocks */ 1225db792e4Sbill 1235db792e4Sbill #endif 1245db792e4Sbill 1255db792e4Sbill #if CLSIZE==2 1265db792e4Sbill #define BSIZE 1024 1275db792e4Sbill #define INOPB 16 1285db792e4Sbill #define BMASK 01777 1295db792e4Sbill #define BSHIFT 10 1305db792e4Sbill #define NMASK 0377 1315db792e4Sbill #define NSHIFT 8 1325db792e4Sbill #define NICINOD 100 1335db792e4Sbill #define NICFREE 178 1345db792e4Sbill #endif 1355db792e4Sbill 1365db792e4Sbill #if CLSIZE==4 1375db792e4Sbill #define BSIZE 2048 1385db792e4Sbill #define INOPB 32 1395db792e4Sbill #define BMASK 03777 1405db792e4Sbill #define BSHIFT 11 1415db792e4Sbill #define NMASK 0777 1425db792e4Sbill #define NSHIFT 9 1435db792e4Sbill #define NICINOD 100 1445db792e4Sbill #define NICFREE 434 1455db792e4Sbill #endif 1465db792e4Sbill 1475db792e4Sbill #ifndef INTRLVE 1485db792e4Sbill /* macros replacing interleaving functions */ 1495db792e4Sbill #define dkblock(bp) ((bp)->b_blkno) 1505db792e4Sbill #define dkunit(bp) (minor((bp)->b_dev) >> 3) 1515db792e4Sbill #endif 1525db792e4Sbill 1535db792e4Sbill /* inumber to disk address and inumber to disk offset */ 1545db792e4Sbill #define itod(x) ((daddr_t)((((unsigned)(x)+2*INOPB-1)/INOPB))) 1555db792e4Sbill #define itoo(x) ((int)(((x)+2*INOPB-1)%INOPB)) 1565db792e4Sbill 1575db792e4Sbill /* file system blocks to disk blocks and back */ 1585db792e4Sbill #define fsbtodb(b) ((b)*CLSIZE) 1595db792e4Sbill #define dbtofsb(b) ((b)/CLSIZE) 1605db792e4Sbill 1615db792e4Sbill #define NINDIR (BSIZE/sizeof(daddr_t)) 1625db792e4Sbill 1635db792e4Sbill #define CBSIZE 28 /* number of chars in a clist block */ 1645db792e4Sbill #define CROUND 0x1F /* clist rounding; sizeof(int *) + CBSIZE -1*/ 1655db792e4Sbill #define CLKTICK (1000000/(HZ)) /* microseconds in a clock tick */ 1665db792e4Sbill 1675db792e4Sbill /* 1685db792e4Sbill * Macros for fast min/max 1695db792e4Sbill */ 1705db792e4Sbill #define MIN(a,b) (((a)<(b))?(a):(b)) 1715db792e4Sbill #define MAX(a,b) (((a)>(b))?(a):(b)) 1725db792e4Sbill 1735db792e4Sbill /* 1745db792e4Sbill * Some macros for units conversion 1755db792e4Sbill */ 1765db792e4Sbill /* Core clicks (512 bytes) to segments and vice versa */ 1775db792e4Sbill #define ctos(x) (x) 1785db792e4Sbill #define stoc(x) (x) 1795db792e4Sbill 1805db792e4Sbill /* Core clicks (512 bytes) to disk blocks */ 1815db792e4Sbill #define ctod(x) (x) 1825db792e4Sbill 1835db792e4Sbill /* clicks to bytes */ 1845db792e4Sbill #define ctob(x) ((x)<<9) 1855db792e4Sbill 1865db792e4Sbill /* bytes to clicks */ 1875db792e4Sbill #define btoc(x) ((((unsigned)(x)+511)>>9)) 1885db792e4Sbill 1895db792e4Sbill /* major part of a device */ 1905db792e4Sbill #define major(x) ((int)(((unsigned)(x)>>8)&0377)) 1915db792e4Sbill 1925db792e4Sbill /* minor part of a device */ 1935db792e4Sbill #define minor(x) ((int)((x)&0377)) 1945db792e4Sbill 1955db792e4Sbill /* make a device number */ 1965db792e4Sbill #define makedev(x,y) ((dev_t)(((x)<<8) | (y))) 1975db792e4Sbill 1985db792e4Sbill typedef struct { int r[1]; } * physadr; 1995db792e4Sbill typedef int daddr_t; 2005db792e4Sbill typedef char * caddr_t; 2015db792e4Sbill typedef unsigned short ino_t; 2025db792e4Sbill typedef int swblk_t; 2035db792e4Sbill typedef int size_t; 2045db792e4Sbill typedef int time_t; 2055db792e4Sbill typedef int label_t[14]; 2065db792e4Sbill typedef short dev_t; 2075db792e4Sbill typedef int off_t; 2085db792e4Sbill 20976379a38Sbill typedef unsigned char u_char; 21076379a38Sbill typedef unsigned short u_short; 21176379a38Sbill typedef unsigned int u_int; 21276379a38Sbill typedef unsigned long u_long; 21376379a38Sbill 2145db792e4Sbill /* 2155db792e4Sbill * Machine-dependent bits and macros 2165db792e4Sbill */ 2175db792e4Sbill #define UMODE PSL_CURMOD /* usermode bits */ 2185db792e4Sbill #define USERMODE(ps) (((ps) & UMODE) == UMODE) 2195db792e4Sbill 2205db792e4Sbill #define BASEPRI(ps) (((ps) & PSL_IPL) != 0) 221