📄 portdat.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 + -