diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
commit | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch) | |
tree | d8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/cmd/unix/drawterm/exportfs/exportfs.h |
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/cmd/unix/drawterm/exportfs/exportfs.h')
-rwxr-xr-x | sys/src/cmd/unix/drawterm/exportfs/exportfs.h | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/sys/src/cmd/unix/drawterm/exportfs/exportfs.h b/sys/src/cmd/unix/drawterm/exportfs/exportfs.h new file mode 100755 index 000000000..3231573a9 --- /dev/null +++ b/sys/src/cmd/unix/drawterm/exportfs/exportfs.h @@ -0,0 +1,148 @@ +/* + * exportfs.h - definitions for exporting file server + */ + +#define DEBUG if(!dbg){}else fprint +#define DFD 2 +#define fidhash(s) fhash[s%FHASHSIZE] + +#define Proc Exproc + + +typedef struct Fsrpc Fsrpc; +typedef struct Fid Fid; +typedef struct File File; +typedef struct Proc Proc; +typedef struct Qidtab Qidtab; + +struct Fsrpc +{ + int busy; /* Work buffer has pending rpc to service */ + int 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; /* Data buffer */ +}; + +struct Fid +{ + int fid; /* system fd for i/o */ + File *f; /* File attached to this fid */ + int mode; + int nr; /* fid number */ + int mid; /* Mount id */ + Fid *next; /* hash link */ +}; + +struct File +{ + char *name; + int ref; + Qid qid; + Qidtab *qidt; + int inval; + File *parent; + File *child; + File *childlist; +}; + +struct Proc +{ + int pid; + int busy; + Proc *next; +}; + +struct Qidtab +{ + int ref; + int type; + int dev; + vlong path; + vlong uniqpath; + Qidtab *next; +}; + +enum +{ + MAXPROC = 50, + FHASHSIZE = 64, + Nr_workbufs = 50, + Fidchunk = 1000, + Npsmpt = 32, + Nqidbits = 5, + Nqidtab = (1<<Nqidbits), +}; + +#define Enomem Exenomem +#define Ebadfix Exebadfid +#define Enotdir Exenotdir +#define Edupfid Exedupfid +#define Eopen Exeopen +#define Exmnt Exexmnt +#define Emip Exemip +#define Enopsmt Exenopsmt + +extern char Ebadfid[]; +extern char Enotdir[]; +extern char Edupfid[]; +extern char Eopen[]; +extern char Exmnt[]; +extern char Enomem[]; +extern char Emip[]; +extern char Enopsmt[]; + +Extern Fsrpc *Workq; +Extern int dbg; +Extern File *root; +Extern File *psmpt; +Extern Fid **fhash; +Extern Fid *fidfree; +Extern Proc *Proclist; +Extern char psmap[Npsmpt]; +Extern Qidtab *qidtab[Nqidtab]; +Extern ulong messagesize; +Extern int srvfd; + +/* File system protocol service procedures */ +void Xattach(Fsrpc*); +void Xauth(Fsrpc*); +void Xclunk(Fsrpc*); +void Xcreate(Fsrpc*); +void Xflush(Fsrpc*); +void Xnop(Fsrpc*); +void Xremove(Fsrpc*); +void Xstat(Fsrpc*); +void Xversion(Fsrpc*); +void Xwalk(Fsrpc*); +void 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*, ...); +char* makepath(File*, char*); +File *file(File*, char*); +void freefile(File*); +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 pushfcall(char*); +Qidtab* uniqueqid(Dir*); +void freeqid(Qidtab*); +char* estrdup(char*); +void* emallocz(uint); +int readmessage(int, char*, int); + +#define notify(x) +#define noted(x) +#define exits(x) |