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

📄 dat.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
enum{	FHSIZE	= 32};typedef struct Accept	Accept;typedef struct Auth	Auth;typedef struct Authunix	Authunix;typedef struct Chalstuff Chalstuff;typedef uchar		Fhandle[FHSIZE];typedef struct Fid	Fid;typedef struct Procmap	Procmap;typedef struct Progmap	Progmap;typedef struct Reject	Reject;typedef struct Rpccall	Rpccall;typedef struct Rpccache	Rpccache;typedef struct Sattr	Sattr;typedef struct Session	Session;typedef struct String	String;typedef struct Strnode	Strnode;typedef struct Unixid	Unixid;typedef struct Unixidmap Unixidmap;typedef struct Unixmap	Unixmap;typedef struct Unixscmap Unixscmap;typedef struct Xfid	Xfid;typedef struct Xfile	Xfile;struct String{	ulong	n;	char *	s;};struct Progmap{	int	progno;	int	vers;	void	(*init)(int, char**);	Procmap *pmap;};struct Procmap{	int	procno;	int	(*procp)(int, Rpccall*, Rpccall*);};struct Auth{	ulong	flavor;	ulong	count;	void *	data;};struct Authunix{	ulong	stamp;	String	mach;	ulong	uid;	ulong	gid;	int	gidlen;	ulong	gids[10];};struct Accept{	Auth	averf;	ulong	astat;	union{		void *	results;	/* SUCCESS */		struct{			/* PROG_MISMATCH */			ulong	plow;	/* acceptable version numbers */			ulong	phigh;		};	};};struct Reject{	ulong	rstat;	union{		struct{			/* RPC_MISMATCH */			ulong	rlow;	/* acceptable  rpc version numbers */			ulong	rhigh;		};		ulong	authstat;	/* AUTH_ERROR */	};};struct Rpccall{	uchar	prefix0[12];	ulong	host;		/* prefixed to RPC message */	uchar	prefix1[12];	ulong	lhost;		/* prefixed to RPC message */	ulong	port;		/* prefixed to RPC message */	ulong	lport;		/* prefixed to RPC message */	ulong	xid;		/* transaction id */	ulong	mtype;		/* CALL or REPLY */	union{		struct{		/* CALL */			ulong	rpcvers;	/* must be equal to two (2) */			ulong	prog;		/* program number */			ulong	vers;		/* program version */			ulong	proc;		/* procedure number */			Auth	cred;		/* authentication credentials */			Auth	verf;		/* authentication verifier */			Unixidmap *up;			char *	user;			void *	args;		/* procedure-specific */		};		struct{		/* REPLY */			ulong	stat;		/* MSG_ACCEPTED or MSG_DENIED */			union{				Accept;				Reject;			};		};	};};struct Rpccache{	Rpccache *prev;	Rpccache *next;	ulong	host;	ulong	port;	ulong	xid;	int	n;	uchar	data[4];};struct Sattr{	ulong	mode;	ulong	uid;	ulong	gid;	ulong	size;	ulong	atime;		/* sec's */	ulong	ausec;		/* microsec's */	ulong	mtime;	ulong	musec;};struct Strnode{	Strnode *next;	/* in hash bucket */	char	str[4];};struct Unixid{	Unixid *next;	char *	name;	int	id;};struct Unixmap{	char *	file;	int	style;	long	timestamp;	Unixid *ids;};struct Unixidmap{	Unixidmap *next;	int	flag;	char *	server;	char *	client;	Reprog *sexp;	Reprog *cexp;	Unixmap	u;	Unixmap	g;};struct Unixscmap{	Unixscmap *next;	char *	server;	ulong	clientip;	Unixidmap *map;};struct Xfile{	Xfile *	next;		/* hash chain */	Session	*s;	Qid		qid;	/* from stat */	Xfile *	parent;	Xfile *	child;		/* if directory */	Xfile *	sib;		/* siblings */	char *	name;		/* path element */	Xfid *	users;};enum{	Oread	= 1,	Owrite	= 2,	Open	= 3,	Trunc	= 4};struct Xfid{	Xfid *	next;		/* Xfile's user list */	Xfile *	xp;	char *	uid;	Fid *	urfid;	Fid *	opfid;	ulong	mode;		/* open mode, if opfid is non-zero */	ulong	offset;};struct Fid{	Fid **	owner;		/* null for root fids */	Fid *	prev;	Fid *	next;	long	tstale;		/* auto-clunk */};enum{	Maxfdata = 8192,	Maxstatdata = 2048,};struct Session{	Session *next;	char *	service;		/* for dial */	int	fd;#define CHALLEN 1	char	cchal[CHALLEN];		/* client challenge */	char	schal[CHALLEN];		/* server challenge */	char	authid[ANAMELEN];	/* server encryption uid */	char	authdom[DOMLEN];	/* server encryption domain */	char *	spec;			/* for attach */	Xfile *	root;			/* to answer mount rpc */	ushort	tag;	Fcall	f;	uchar	data[IOHDRSZ+Maxfdata];	uchar	statbuf[Maxstatdata];	Fid *	free;			/* available */	Fid	list;			/* active, most-recently-used order */	Fid	fids[1000];	int	noauth;};struct Chalstuff{	Chalstuff *next;	Xfid *	xf;	long	tstale;	Chalstate;};extern int	rpcdebug;extern int	p9debug;extern int	chatty;extern void	(*rpcalarm)(void);extern long	starttime;extern long	nfstime;extern char *	config;extern int	staletime;extern int	messagesize;extern char *	commonopts;

⌨️ 快捷键说明

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