📄 statfs.h
字号:
/* * statfs.h - definitions for statistic gathering file server */#define DEBUGFILE "iostats.out"#define DONESTR "done"#define DEBUG if(!dbg){}else fprint#define MAXPROC 16#define FHASHSIZE 64#define fidhash(s) fhash[s%FHASHSIZE]enum{ Maxfdata = 8192, /* max size of data in 9P message */ Maxrpc = 20000,/* number of RPCs we'll log */};typedef struct Fsrpc Fsrpc;typedef struct Fid Fid;typedef struct File File;typedef struct Proc Proc;typedef struct Stats Stats;typedef struct Rpc Rpc;typedef struct Frec Frec;struct Frec{ Frec *next; char *op; ulong nread; ulong nwrite; ulong bread; ulong bwrite; ulong opens;};struct Rpc{ char *name; ulong count; vlong time; vlong lo; vlong hi; ulong bin; ulong bout;};struct Stats{ ulong totread; ulong totwrite; ulong nrpc; ulong nproto; Rpc rpc[Maxrpc];};struct Fsrpc{ int busy; /* Work buffer has pending rpc to service */ uintptr pid; /* Pid of slave process executing the rpc */ int canint; /* Interrupt gate */ int flushtag; /* Tag on which to reply to flush */ Fcall work; /* Plan 9 incoming Fcall */ uchar buf[IOHDRSZ+Maxfdata]; /* Data buffer */};struct Fid{ int fid; /* system fd for i/o */ File *f; /* File attached to this fid */ int mode; int nr; /* fid number */ Fid *next; /* hash link */ ulong nread; ulong nwrite; ulong bread; ulong bwrite; vlong offset; /* for directories */};struct File{ char *name; Qid qid; int inval; File *parent; File *child; File *childlist;};struct Proc{ uintptr pid; int busy; Proc *next;};enum{ Nr_workbufs = 40, Dsegpad = 8192, Fidchunk = 1000,};Extern Fsrpc *Workq;Extern int dbg;Extern File *root;Extern Fid **fhash;Extern Fid *fidfree;Extern int qid;Extern Proc *Proclist;Extern int done;Extern Stats *stats;Extern Frec *frhead;Extern Frec *frtail;Extern int myiounit;/* File system protocol service procedures */void Xcreate(Fsrpc*), Xclunk(Fsrpc*); void Xversion(Fsrpc*), Xauth(Fsrpc*), Xflush(Fsrpc*); void Xattach(Fsrpc*), Xwalk(Fsrpc*), Xauth(Fsrpc*);void Xremove(Fsrpc*), Xstat(Fsrpc*), Xwstat(Fsrpc*);void slave(Fsrpc*);void reply(Fcall*, Fcall*, char*);Fid *getfid(int);int freefid(int);Fid *newfid(int);Fsrpc *getsbuf(void);void initroot(void);void fatal(char*);void makepath(char*, File*, char*);File *file(File*, char*);void slaveopen(Fsrpc*);void slaveread(Fsrpc*);void slavewrite(Fsrpc*);void blockingslave(void);void reopen(Fid *f);void noteproc(int, char*);void flushaction(void*, char*);void catcher(void*, char*);ulong msec(void);void fidreport(Fid*);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -