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

📄 vac.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
typedef struct DirEntry DirEntry;typedef struct MetaBlock MetaBlock;typedef struct MetaEntry MetaEntry;enum {	MetaMagic = 0x5656fc7a,	MetaHeaderSize = 12,	MetaIndexSize = 4,	IndexEntrySize = 8,	DirMagic = 0x1c4d9072,};/* * Mode bits */enum {	ModeOtherExec = (1<<0),	ModeOtherWrite = (1<<1),	ModeOtherRead = (1<<2),	ModeGroupExec = (1<<3),	ModeGroupWrite = (1<<4),	ModeGroupRead = (1<<5),	ModeOwnerExec = (1<<6),	ModeOwnerWrite = (1<<7),	ModeOwnerRead = (1<<8),	ModeSticky = (1<<9),	ModeSetUid = (1<<10),	ModeSetGid = (1<<11),	ModeAppend = (1<<12),		/* append only file */	ModeExclusive = (1<<13),	/* lock file - plan 9 */	ModeLink = (1<<14),		/* sym link */	ModeDir	= (1<<15),		/* duplicate of DirEntry */	ModeHidden = (1<<16),		/* MS-DOS */	ModeSystem = (1<<17),		/* MS-DOS */	ModeArchive = (1<<18),		/* MS-DOS */	ModeTemporary = (1<<19),	/* MS-DOS */	ModeSnapshot = (1<<20),		/* read only snapshot */};/* optional directory entry fields */enum {	DePlan9 = 1,	/* not valid in version >= 9 */	DeNT,		/* not valid in version >= 9 */	DeQidSpace,	DeGen,		/* not valid in version >= 9 */};struct DirEntry {	char *elem;		/* path element */	ulong entry;		/* entry in directory for data */	ulong gen;		/* generation of data entry */	ulong mentry;		/* entry in directory for meta */	ulong mgen;		/* generation of meta entry */	uvlong size;		/* size of file */	uvlong qid;		/* unique file id */	char *uid;		/* owner id */	char *gid;		/* group id */	char *mid;		/* last modified by */	ulong mtime;		/* last modified time */	ulong mcount;		/* number of modifications: can wrap! */	ulong ctime;		/* directory entry last changed */	ulong atime;		/* last time accessed */	ulong mode;		/* various mode bits */	/* plan 9 */	int plan9;	uvlong p9path;	ulong p9version;	/* sub space of qid */	int qidSpace;	uvlong qidOffset;	/* qid offset */	uvlong qidMax;		/* qid maximum */};struct MetaEntry {	uchar *p;	ushort size;};struct MetaBlock {	int maxsize;		/* size of block */	int size;		/* size used */	int free;		/* free space within used size */	int maxindex;		/* entries allocated for table */	int nindex;		/* amount of table used */	int botch;		/* compensate for my stupidity */	uchar *buf;};void	deCleanup(DirEntry*);void	deCopy(DirEntry*, DirEntry*);int	deSize(DirEntry*);void	dePack(DirEntry*, MetaEntry*);int	deUnpack(DirEntry*, MetaEntry*);void	mbInit(MetaBlock*, uchar*, int, int);int	mbUnpack(MetaBlock*, uchar*, int);void	mbInsert(MetaBlock*, int, MetaEntry*);void	mbDelete(MetaBlock*, int);void	mbPack(MetaBlock*);uchar	*mbAlloc(MetaBlock*, int);int	mbResize(MetaBlock*, MetaEntry*, int);int	mbSearch(MetaBlock*, char*, int*, MetaEntry*);void	meUnpack(MetaEntry*, MetaBlock*, int);

⌨️ 快捷键说明

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