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

📄 vac.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
typedef struct VacFS VacFS;#pragma incomplete VacFStypedef struct VacDir VacDir;typedef struct VacFile VacFile;#pragma incomplete VacFiletypedef struct VacDirEnum VacDirEnum;#pragma incomplete VacDirEnum/* * 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 */};enum {	MetaMagic = 0x5656fc79,	MetaHeaderSize = 12,	MetaIndexSize = 4,	IndexEntrySize = 8,	DirMagic = 0x1c4d9072,};enum {	DirPlan9Entry = 1,	/* not valid in version >= 9 */	DirNTEntry,		/* not valid in version >= 9 */	DirQidSpaceEntry,	DirGenEntry,		/* not valid in version >= 9 */};struct VacDir {	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 */};VacFS *vfsOpen(VtSession *z, char *file, int readOnly, long ncache);VacFS *vfsCreate(VtSession *z, int bsize, long ncache);int vfsGetBlockSize(VacFS*);int vfsIsReadOnly(VacFS*);VacFile *vfsGetRoot(VacFS*);long vfsGetCacheSize(VacFS*);int vfsSetCacheSize(VacFS*, long);int vfsSnapshot(VacFS*, char *src, char *dst);int vfsSync(VacFS*);int vfsClose(VacFS*);int vfsGetScore(VacFS*, uchar score[VtScoreSize]);/*  * other ideas * * VacFS *vfsSnapshot(VacFS*, char *src); * int vfsGraft(VacFS*, char *name, VacFS*); */VacFile *vfOpen(VacFS*, char *path);VacFile *vfCreate(VacFile*, char *elem, ulong perm, char *user);VacFile *vfWalk(VacFile*, char *elem);int vfRemove(VacFile*, char*);int vfRead(VacFile*, void *, int n, vlong offset);int vfWrite(VacFile*, void *, int n, vlong offset, char *user);int vfReadPacket(VacFile*, Packet**, vlong offset);int vfWritePacket(VacFile*, Packet*, vlong offset, char *user);uvlong vfGetId(VacFile*);ulong vfGetMcount(VacFile*);int vfIsDir(VacFile*);int vfGetBlockScore(VacFile*, ulong bn, uchar score[VtScoreSize]);int vfGetSize(VacFile*, uvlong *size);int vfGetDir(VacFile*, VacDir*);int vfSetDir(VacFile*, VacDir*);int vfGetVtEntry(VacFile*, VtEntry*);VacFile *vfGetParent(VacFile*);int vfSync(VacFile*);VacFile *vfIncRef(VacFile*);void vfDecRef(VacFile*);VacDirEnum *vfDirEnum(VacFile*);int vfIsRoot(VacFile *vf);void	vdCleanup(VacDir *dir);void	vdCopy(VacDir *dst, VacDir *src);VacDirEnum *vdeOpen(VacFS*, char *path);int vdeRead(VacDirEnum*, VacDir *, int n);void vdeFree(VacDirEnum*);

⌨️ 快捷键说明

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