⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 portdat.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
/* * fundamental constants */#define	NAMELEN		28		/* size of names */#define	NDBLOCK		6		/* number of direct blocks in Dentry */#define	MAXDAT		8192		/* max allowable data message */#define NTLOCK		200		/* number of active file Tlocks */typedef	struct	Fbuf	Fbuf;typedef	struct	Super1	Super1;typedef	struct	Superb	Superb;// typedef struct	Qid	Qid;typedef	struct	Dentry	Dentry;typedef	struct	Tag	Tag;typedef struct	Device	Device;typedef struct	Qid9p1	Qid9p1;typedef	struct	File	File;typedef	struct	Filsys	Filsys;typedef	struct	Filta	Filta;typedef	struct	Filter	Filter;typedef		ulong	Float;typedef	struct	Hiob	Hiob;typedef	struct	Iobuf	Iobuf;typedef	struct	P9call	P9call;typedef	struct	Tlock	Tlock;// typedef	struct	Tm	Tm;typedef	struct	Uid	Uid;typedef	struct	Wpath	Wpath;typedef struct	AuthRpc	AuthRpc;/* * DONT TOUCH -- data structures stored on disk *//* DONT TOUCH, this is the disk structure */struct	Qid9p1{	long	path;	long	version;};/* DONT TOUCH, this is the disk structure */struct	Dentry{	char	name[NAMELEN];	short	uid;	short	gid;	ushort	mode;		#define	DALLOC	0x8000		#define	DDIR	0x4000		#define	DAPND	0x2000		#define	DLOCK	0x1000		#define	DREAD	0x4		#define	DWRITE	0x2		#define	DEXEC	0x1	Qid9p1	qid;	long	size;	long	dblock[NDBLOCK];	long	iblock;	long	diblock;	long	atime;	long	mtime;};/* DONT TOUCH, this is the disk structure */struct	Tag{	short	pad;	short	tag;	long	path;};/* DONT TOUCH, this is the disk structure */struct	Super1{	long	fstart;	long	fsize;	long	tfree;	long	qidgen;		/* generator for unique ids */	long	fsok;		/* file system ok */	/*	 * garbage for WWC device	 */	long	roraddr;	/* dump root addr */	long	last;		/* last super block addr */	long	next;		/* next super block addr */};/* DONT TOUCH, this is the disk structure */struct	Fbuf{	long	nfree;	long	free[1];		/* changes based on BUFSIZE */};/* DONT TOUCH, this is the disk structure */struct	Superb{	Super1;	Fbuf	fbuf;};struct	Device{	char	type;	char	ctrl;	char	unit;	char	part;};/* * for load stats */struct	Filter{	ulong	count;			/* count and old count kept separate */	ulong	oldcount;		/* so interrput can read them */	Float	filter[3];		/* filters for 1m 10m 100m */ };struct	Filta{	Filter*	f;	int	scale;};/* * array of qids that are locked */struct	Tlock{	Device	dev;	long	time;	long	qpath;	File*	file;};struct	File{	QLock;	Qid	qid;	Wpath*	wpath;	Chan*	cp;		/* null means a free slot */	Tlock*	tlock;		/* if file is locked */	File*	next;		/* in cp->flist */	File*	list;		/* in list of free files */	Filsys*	fs;	long	addr;	long	slot;	long	lastra;		/* read ahead address */	short	fid;	short	uid;	char	open;		#define	FREAD	1		#define	FWRITE	2		#define	FREMOV	4		#define	FWSTAT	8	long	doffset;	/* directory reading */	ulong	dvers;	long	dslot;	/* for network authentication */	AuthRpc	*rpc;	short	cuid;};struct	Filsys{	char*	name;		/* name of filesys */	Device	dev;		/* device that filesys is on */	int	flags;		#define	FREAM		(1<<1)	/* mkfs */		#define	FRECOVER	(1<<2)	/* install last dump */};struct	Hiob{	Iobuf*	link;	Lock;};struct	Iobuf{	QLock;	Device	dev;	Iobuf	*next;		/* for hash */	Iobuf	*fore;		/* for lru */	Iobuf	*back;		/* for lru */	char	*iobuf;		/* only active while locked */	char	*xiobuf;	/* "real" buffer pointer */	long	addr;	int	flags;};struct	P9call{	uchar	calln;	uchar	rxflag;	short	msize;	void	(*func)(Chan*, int);};// struct	Tm// {// 	/* see ctime(3) */// 	int	sec;// 	int	min;// 	int	hour;// 	int	mday;// 	int	mon;// 	int	year;// 	int	wday;// 	int	yday;// 	int	isdst;// };struct	Uid{	short	uid;		/* user id */	short	lead;		/* leader of group */	short	offset;		/* byte offset in uidspace */};struct	Wpath{	Wpath	*up;		/* pointer upwards in path */	Wpath	*list;		/* link in free chain */	long	addr;		/* directory entry addr of parent */	long	slot;		/* directory entry slot of parent */	short	refs;		/* number of files using this structure */};#define	MAXFDATA	8192/* * error codes generated from the file server */enum{	Ebadspc = 1,	Efid,	Efidinuse,	Echar,	Eopen,	Ecount,	Ealloc,	Eqid,	Eauth,	Eauthmsg,	Eaccess,	Eentry,	Emode,	Edir1,	Edir2,	Ephase,	Eexist,	Edot,	Eempty,	Ebadu,	Enotu,	Enotg,	Ename,	Ewalk,	Eronly,	Efull,	Eoffset,	Elocked,	Ebroken,	Etoolong,	Ersc,	Eqidmode,	Econvert,	Enotm,	Enotd,	Enotl,	Enotw,	Esystem,	MAXERR};/* * devnone block numbers */enum{	Cwio1 	= 1,	Cwio2,	Cwxx1,	Cwxx2,	Cwxx3,	Cwxx4,	Cwdump1,	Cwdump2,	Cuidbuf,};/* * tags on block */enum{	Tnone		= 0,	Tsuper,			/* the super block */	Tdir,			/* directory contents */	Tind1,			/* points to blocks */	Tind2,			/* points to Tind1 */	Tfile,			/* file contents */	Tfree,			/* in free list */	Tbuck,			/* cache fs bucket */	Tvirgo,			/* fake worm virgin bits */	Tcache,			/* cw cache things */	MAXTAG};/* * flags to getbuf */enum{	Bread	= (1<<0),	/* read the block if miss */	Bprobe	= (1<<1),	/* return null if miss */	Bmod	= (1<<2),	/* set modified bit in buffer */	Bimm	= (1<<3),	/* set immediate bit in buffer */	Bres	= (1<<4),	/* reserved, never renammed */};/* * open modes passed into P9 open/create */enum{	MREAD	= 0,	MWRITE,	MBOTH,	MEXEC,	MTRUNC	= (1<<4),	/* truncate on open */	MCEXEC	= (1<<5),	/* close on exec (host) */	MRCLOSE	= (1<<6),	/* remove on close */};/* * check flags */enum{	Crdall	= (1<<0),	/* read all files */	Ctag	= (1<<1),	/* rebuild tags */	Cpfile	= (1<<2),	/* print files */	Cpdir	= (1<<3),	/* print directories */	Cfree	= (1<<4),	/* rebuild free list */	Cream	= (1<<6),	/* clear all bad tags */	Cbad	= (1<<7),	/* clear all bad blocks */	Ctouch	= (1<<8),	/* touch old dir and indir */	Cquiet	= (1<<9),	/* report just nasty things */};/* * buffer size variables */extern int	RBUFSIZE;extern int	BUFSIZE;extern int	DIRPERBUF;extern int	INDPERBUF;extern int	INDPERBUF2;extern int	FEPERBUF;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -