diff options
author | Russ Cox <rsc@swtch.com> | 2008-07-20 03:23:19 -0400 |
---|---|---|
committer | Russ Cox <rsc@swtch.com> | 2008-07-20 03:23:19 -0400 |
commit | 78a779a3834cf39d7c0bcd93a15824b29df947a3 (patch) | |
tree | 7ebe47a874a3864f8e990567554b0df956590650 /src/cmd/9660srv/dat.h | |
parent | 29e9b5683ec8d610140da9118e8f004f74bc6c77 (diff) | |
download | plan9port-78a779a3834cf39d7c0bcd93a15824b29df947a3.tar.gz plan9port-78a779a3834cf39d7c0bcd93a15824b29df947a3.tar.bz2 plan9port-78a779a3834cf39d7c0bcd93a15824b29df947a3.zip |
9660srv: import from Plan 9
Diffstat (limited to 'src/cmd/9660srv/dat.h')
-rw-r--r-- | src/cmd/9660srv/dat.h | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/src/cmd/9660srv/dat.h b/src/cmd/9660srv/dat.h new file mode 100644 index 00000000..bee14db6 --- /dev/null +++ b/src/cmd/9660srv/dat.h @@ -0,0 +1,118 @@ +typedef struct Ioclust Ioclust; +typedef struct Iobuf Iobuf; +typedef struct Isofile Isofile; +typedef struct Xdata Xdata; +typedef struct Xfile Xfile; +typedef struct Xfs Xfs; +typedef struct Xfsub Xfsub; + +#pragma incomplete Isofile + +enum +{ + Sectorsize = 2048, + Maxname = 256, +}; + +struct Iobuf +{ + Ioclust* clust; + long addr; + uchar* iobuf; +}; + +struct Ioclust +{ + long addr; /* in sectors; good to 8TB */ + Xdata* dev; + Ioclust* next; + Ioclust* prev; + int busy; + int nbuf; + Iobuf* buf; + uchar* iobuf; +}; + +struct Xdata +{ + Xdata* next; + char* name; /* of underlying file */ + Qid qid; + short type; + short fdev; + int ref; /* attach count */ + int dev; /* for read/write */ +}; + +struct Xfsub +{ + void (*reset)(void); + int (*attach)(Xfile*); + void (*clone)(Xfile*, Xfile*); + void (*walkup)(Xfile*); + void (*walk)(Xfile*, char*); + void (*open)(Xfile*, int); + void (*create)(Xfile*, char*, long, int); + long (*readdir)(Xfile*, uchar*, long, long); + long (*read)(Xfile*, char*, vlong, long); + long (*write)(Xfile*, char*, vlong, long); + void (*clunk)(Xfile*); + void (*remove)(Xfile*); + void (*stat)(Xfile*, Dir*); + void (*wstat)(Xfile*, Dir*); +}; + +struct Xfs +{ + Xdata* d; /* how to get the bits */ + Xfsub* s; /* how to use them */ + int ref; + int issusp; /* follows system use sharing protocol */ + long suspoff; /* if so, offset at which SUSP area begins */ + int isrock; /* Rock Ridge format */ + int isplan9; /* has Plan 9-specific directory info */ + Qid rootqid; + Isofile* ptr; /* private data */ +}; + +struct Xfile +{ + Xfile* next; /* in fid hash bucket */ + Xfs* xf; + long fid; + ulong flags; + Qid qid; + int len; /* of private data */ + Isofile* ptr; +}; + +enum +{ + Asis, + Clean, + Clunk +}; + +enum +{ + Oread = 1, + Owrite = 2, + Orclose = 4, + Omodes = 3, +}; + +extern char Enonexist[]; /* file does not exist */ +extern char Eperm[]; /* permission denied */ +extern char Enofile[]; /* no file system specified */ +extern char Eauth[]; /* authentication failed */ + +extern char *srvname; +extern char *deffile; +extern int chatty; +extern jmp_buf err_lab[]; +extern int nerr_lab; +extern char err_msg[]; + +extern int nojoliet; +extern int noplan9; +extern int norock; |