#sccs "@(#)uts/kern/sys:param.h 1.2" /* Convergent Technologies - System V - May 1983 */ #ifndef param_h #define param_h /* * fundamental variables * don't change too often */ #define NOFILE 80 /* max open files per process (tunable) */ /* -- stored in 'nofile' */ #define NOFILMAX 80 /* max 'NOFILE' kernel can SURVIVE */ /* -- stored in 'nofilmax' */ #define NOFILMIN 20 /* min 'NOFILE' kernel can STOMACH */ #define MAXPID 30000 /* max process id */ #define MAXUID 60000 /* max user id */ #define MAXLINK 1000 /* max links */ #include /* Memory mapping hardware */ /* see sys/pte.h */ #define VUSER_START 0x80000 /* start address of user process */ #define VUSER_END 0x300000 /* end address of user process */ #define SHLIB_START VUSER_END /* start address of shared lib */ #define SHLIB_END 0x380000 /* end address of shared lib */ #define KVMEM_VBASE SHLIB_END /* start addr of kernel vm */ #define KVMEM_VLIMIT 0x400000 /* end addr of kernel vm */ #define MAXMEM (btoct(0x400000)) /* max core in 4096-byte clicks */ #define MAXUMEM (btoct(VUSER_END)) /* max user program size in 4096 byte clicks */ #define MAXBLK 64 /* max blocks possible for phys IO */ /* limited by the number of Kernel map slots dedicated to dma */ #define SSIZE 2048 /* initial stack size (in bytes) */ #define SINCR 4 /* increment of stack (*4096 bytes) */ #define UPAGES 1 #define USIZE (UPAGES + 1) /* size of user block (*4096) */ #define USRSTACK (VUSER_END) /* Start of user stack */ #define KVMEM_PAGES btoct(KVMEM_VLIMIT-KVMEM_VBASE) #define KVMEM_VPAGE0 btoct(KVMEM_VBASE) #define SHLIB_PAGES btoct(SHLIB_END-SHLIB_START) #define SHLIB_VPAGE0 btoct(SHLIB_START) #define CANBSIZ 256 /* max size of typewriter line */ #define HZ 60 /* Ticks/second of the clock */ #define NCARGS 5120 /* # characters in exec arglist */ #define NBPSCTR 512 /* # bytes per physical disk sector */ #define SCTRSHFT 9 /* log2(NBPSCTR) */ /* * priorities * should not be altered too much */ #define PMASK 0177 #define PCATCH 0400 #define PSWP 0 /* swapper needs a swap candidate */ #define PINOD 10 /* process accessing locked inode */ #define PRIBIO 20 /* process sleeping on block I/O system buffer */ #define PZERO 25 /* sleep <= PZERO not broken by signals */ #define NZERO 20 /* default process nice */ #define PPIPE 26 /* sleeping on empty pipe read, full pipe write */ #define TTIPRI 27 /* waiting for tty input (was 28) */ #define PEXWT 28 /* user wait on exchange: exWait() or exCall() */ #define TTOPRI 29 /* waiting for space in tty output clist */ #define PWIND 30 /* waiting for window exposure, etc. */ #define PWAIT 40 /* waiting death of child: wait() sys call */ #define PSLEP 49 /* waiting signal: pause() sys call */ #define PUSER 60 /* base priority for user process with dflt nice */ #define PIDLE 127 /* no runnable processes in system */ /* * fundamental constants of the implementation-- * cannot be changed easily */ #define NBPW sizeof(int) /* number of bytes in an integer */ #ifdef KERNEL #define FsTYPE 2 #else /* some commands are more compatible if use dual file system */ #ifndef FsTYPE #define FsTYPE 3 #endif #endif KERNEL #if FsTYPE==1 /* Original 512 byte file system */ #define BSIZE 512 /* size of file system block (bytes) */ #define SBUFSIZE BSIZE /* system buffer size */ #define BSHIFT 9 /* LOG2(BSIZE) */ #define NINDIR (BSIZE/sizeof(daddr_t)) #define BMASK 0777 /* BSIZE-1 */ #define INOPB 8 /* inodes per block */ #define INOSHIFT 3 /* LOG2(INOPB) if exact */ #define NMASK 0177 /* NINDIR-1 */ #define NSHIFT 7 /* LOG2(NINDIR) */ #define FsBSIZE(dev) BSIZE #define FsBSHIFT(dev) BSHIFT #define FsNINDIR(dev) NINDIR #define FsBMASK(dev) BMASK #define FsINOPB(dev) INOPB #define FsLTOP(dev, b) b #define FsPTOL(dev, b) b #define FsNMASK(dev) NMASK #define FsNSHIFT(dev) NSHIFT #define FsITOD(dev, x) itod(x) #define FsITOO(dev, x) itoo(x) #endif #if FsTYPE==2 /* New 1024 byte file system */ #define BSIZE 1024 /* size of file system block (bytes) */ #define SBUFSIZE BSIZE /* system buffer size */ #define BSHIFT 10 /* LOG2(BSIZE) */ #define NINDIR (BSIZE/sizeof(daddr_t)) #define BMASK 01777 /* BSIZE-1 */ #define INOPB 16 /* inodes per block */ #define INOSHIFT 4 /* LOG2(INOPB) if exact */ #define NMASK 0377 /* NINDIR-1 */ #define NSHIFT 8 /* LOG2(NINDIR) */ #define Fs2BLK 0x2000 #define FsBSIZE(dev) BSIZE #define FsBSHIFT(dev) BSHIFT #define FsNINDIR(dev) NINDIR #define FsBMASK(dev) BMASK #define FsINOPB(dev) INOPB #define FsLTOP(dev, b) (b<<1) #define FsPTOL(dev, b) (b>>1) #define FsNMASK(dev) NMASK #define FsNSHIFT(dev) NSHIFT #define FsITOD(dev, x) itod(x) #define FsITOO(dev, x) itoo(x) #define FsINOS(dev, x) ((x&~017)+1) #define FsBOFF(dev, x) ((x)&01777) #define FsBNO(dev, x) ((x)>>10) #endif #if FsTYPE==3 /* Dual system */ #define BSIZE 512 /* size of file system block (bytes) */ #define SBUFSIZE (BSIZE*2) /* system buffer size */ #define BSHIFT 9 /* LOG2(BSIZE) */ #define NINDIR (BSIZE/sizeof(daddr_t)) #define BMASK 0777 /* BSIZE-1 */ #define INOPB 8 /* inodes per block */ #define INOSHIFT 3 /* LOG2(INOPB) if exact */ #define NMASK 0177 /* NINDIR-1 */ #define NSHIFT 7 /* LOG2(NINDIR) */ #define Fs2BLK 0x2000 #define FsLRG(dev) (dev&Fs2BLK) #define FsBSIZE(dev) (FsLRG(dev) ? (BSIZE*2) : BSIZE) #define FsBSHIFT(dev) (FsLRG(dev) ? 10 : 9) #define FsNINDIR(dev) (FsLRG(dev) ? 256 : 128) #define FsBMASK(dev) (FsLRG(dev) ? 01777 : 0777) #define FsBOFF(dev, x) (FsLRG(dev) ? ((x)&01777) : ((x)&0777)) #define FsBNO(dev, x) (FsLRG(dev) ? ((x)>>10) : ((x)>>9)) #define FsINOPB(dev) (FsLRG(dev) ? 16 : 8) #define FsLTOP(dev, b) (FsLRG(dev) ? b<<1 : b) #define FsPTOL(dev, b) (FsLRG(dev) ? b>>1 : b) #define FsNMASK(dev) (FsLRG(dev) ? 0377 : 0177) #define FsNSHIFT(dev) (FsLRG(dev) ? 8 : 7) #define FsITOD(dev, x) (daddr_t)(FsLRG(dev) ? \ ((unsigned)x+(2*16-1))>>4 : ((unsigned)x+(2*8-1))>>3) #define FsITOO(dev, x) (daddr_t)(FsLRG(dev) ? \ ((unsigned)x+(2*16-1))&017 : ((unsigned)x+(2*8-1))&07) #define FsINOS(dev, x) (FsLRG(dev) ? \ ((x&~017)+1) : ((x&~07)+1)) #endif #define NICFREE 50 /* number of superblock free blocks */ #define NCPS 16 /* Number of clicks per segment */ #define CPSSHIFT 4 /* LOG2(NCPS) if exact */ #define NBPC 4096 /* Number of bytes per click */ #define BPCSHIFT 12 /* LOG2(NBPC) if exact */ #define NULL 0 #define CMASK 0 /* default mask for file creation */ #define CDLIMIT 0x7fffffff /* default max write address (=INFINITY) */ #define NODEV (dev_t)(-1) #define ROOTINO ((ino_t)2) /* i number of all roots */ #define SUPERB ((daddr_t)1) /* physical block number of the super block */ #define SUPERBOFF 512 /* byte offset of the super block */ #define DIRSIZ 14 /* max characters per directory */ #define NICINOD 100 /* number of superblock inodes */ #define DS 1 /* used by expand to expand ds size */ #define SS 2 /* used by expand to expand ss size */ #define PTE_BANK0 128 /* size of mpte's in the first page of u */ #define MAXKERNEL 128 /* maximum size of kernel (4k click) */ #define SYSPAGE 128 /* page table entries reserved for kernel */ #define SYSSEG 8 /* segment table entries reserved for kernel */ #define VPG_BASE 0x70000 /* starting virtual address of user pages */ #define U_OFFSET 0x0900 /* offset of u struct into user pages */ #define PTE_OFFSET 0xE00 /* offset of pte in usr tbl */ #define VPTE_BASE 0x70E00 /* starting virtual address of pte in u */ /* * variables for BSD 4.1 */ #define MSWAPX 15 /* pseudo mount table index for swapdev */ #define NBBY 8 /* number of bits in a byte */ #define NBPG NBPC #define PGOFSET (NBPG-1) /* byte offset into page */ #define PGSHIFT BPCSHIFT /* LOG2(NBPG) */ #define KLSIZE 1 #define CLOFSET (KLSIZE*NBPG-1) /* for clusters, like PGOFSET */ /* give the base virtual address (first of KLSIZE) */ #define clbase(i) (i) /* round a number of clicks up to a whole cluster */ #define clrnd(i) (i) /* end of BSD 4.1 stuff */ /* * Some macros for units conversion */ #include /* Machine-dependent bits and macros */ #define SUPVMODE 0x2000 /* usermode bits */ #define USERMODE(ps) ((ps & SUPVMODE) == 0) #define BASEPRI(ps) ((ps & 0x700) != 0) #define lobyte(X) (((unsigned char *)&X)[1]) #define hibyte(X) (((unsigned char *)&X)[0]) #define loword(X) (((ushort *)&X)[1]) #define hiword(X) (((ushort *)&X)[0]) #endif param_h