URI:
       tdat.h - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tdat.h (2131B)
       ---
            1 typedef        struct Ioclust        Ioclust;
            2 typedef        struct Iobuf        Iobuf;
            3 typedef        struct Isofile        Isofile;
            4 typedef struct Xdata        Xdata;
            5 typedef struct Xfile        Xfile;
            6 typedef struct Xfs        Xfs;
            7 typedef struct Xfsub        Xfsub;
            8 
            9 #pragma incomplete Isofile
           10 
           11 enum
           12 {
           13         Sectorsize = 2048,
           14         Maxname = 256,
           15 };
           16 
           17 struct Iobuf
           18 {
           19         Ioclust* clust;
           20         long        addr;
           21         uchar*        iobuf;
           22 };
           23 
           24 struct Ioclust
           25 {
           26         long        addr;                        /* in sectors; good to 8TB */
           27         Xdata*        dev;
           28         Ioclust* next;
           29         Ioclust* prev;
           30         int        busy;
           31         int        nbuf;
           32         Iobuf*        buf;
           33         uchar*        iobuf;
           34 };
           35 
           36 struct Xdata
           37 {
           38         Xdata*        next;
           39         char*        name;                /* of underlying file */
           40         Qid        qid;
           41         short        type;
           42         short        fdev;
           43         int        ref;                /* attach count */
           44         int        dev;                /* for read/write */
           45 };
           46 
           47 struct Xfsub
           48 {
           49         void        (*reset)(void);
           50         int        (*attach)(Xfile*);
           51         void        (*clone)(Xfile*, Xfile*);
           52         void        (*walkup)(Xfile*);
           53         void        (*walk)(Xfile*, char*);
           54         void        (*open)(Xfile*, int);
           55         void        (*create)(Xfile*, char*, long, int);
           56         long        (*readdir)(Xfile*, uchar*, long, long);
           57         long        (*read)(Xfile*, char*, vlong, long);
           58         long        (*write)(Xfile*, char*, vlong, long);
           59         void        (*clunk)(Xfile*);
           60         void        (*remove)(Xfile*);
           61         void        (*stat)(Xfile*, Dir*);
           62         void        (*wstat)(Xfile*, Dir*);
           63 };
           64 
           65 struct Xfs
           66 {
           67         Xdata*        d;                /* how to get the bits */
           68         Xfsub*        s;                /* how to use them */
           69         int        ref;
           70         int        issusp;        /* follows system use sharing protocol */
           71         long        suspoff;        /* if so, offset at which SUSP area begins */
           72         int        isrock;        /* Rock Ridge format */
           73         int        isplan9;        /* has Plan 9-specific directory info */
           74         Qid        rootqid;
           75         Isofile*        ptr;                /* private data */
           76 };
           77 
           78 struct Xfile
           79 {
           80         Xfile*        next;                /* in fid hash bucket */
           81         Xfs*        xf;
           82         long        fid;
           83         ulong        flags;
           84         Qid        qid;
           85         int        len;                /* of private data */
           86         Isofile*        ptr;
           87 };
           88 
           89 enum
           90 {
           91         Asis,
           92         Clean,
           93         Clunk
           94 };
           95 
           96 enum
           97 {
           98         Oread = 1,
           99         Owrite = 2,
          100         Orclose = 4,
          101         Omodes = 3,
          102 };
          103 
          104 extern char        Enonexist[];        /* file does not exist */
          105 extern char        Eperm[];        /* permission denied */
          106 extern char        Enofile[];        /* no file system specified */
          107 extern char        Eauth[];        /* authentication failed */
          108 
          109 extern char        *srvname;
          110 extern char        *deffile;
          111 extern int        chatty;
          112 extern jmp_buf        err_lab[];
          113 extern int        nerr_lab;
          114 extern char        err_msg[];
          115 
          116 extern int nojoliet;
          117 extern int noplan9;
          118 extern int norock;