tdiskfs.h - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       tdiskfs.h (2938B)
       ---
            1 /* Copyright (c) Russ Cox, MIT; see src/libdiskfs/COPYRIGHT */
            2 
            3 AUTOLIB(diskfs)
            4 
            5 typedef struct Block Block;
            6 typedef struct Disk Disk;
            7 typedef struct Fsys Fsys;
            8 
            9 #ifndef _NFS3H_        /* in case sunrpc.h, nfs3.h are not included */
           10 typedef struct SunAuthUnix SunAuthUnix;
           11 typedef struct Nfs3Attr Nfs3Attr;
           12 typedef struct Nfs3Entry Nfs3Entry;
           13 typedef struct Nfs3Handle Nfs3Handle;
           14 typedef int Nfs3Status;
           15 #endif
           16 struct VtCache;
           17 
           18 struct Disk
           19 {
           20         Block *(*_read)(Disk *disk, u32int count, u64int offset);
           21         int (*_sync)(Disk*);
           22         void (*_close)(Disk*);
           23         void *priv;
           24 };
           25 
           26 struct Block
           27 {
           28         Disk *disk;
           29         u32int len;
           30         uchar *data;
           31         void (*_close)(Block*);
           32         void *priv;
           33 };
           34 
           35 struct Fsys
           36 {
           37         u32int blocksize;
           38         u32int nblock;
           39         char *type;
           40 
           41         Disk *disk;
           42         Block *(*_readblock)(Fsys *fsys, u64int blockno);
           43         int (*_sync)(Fsys *fsys);
           44         void (*_close)(Fsys *fsys);
           45 
           46         Nfs3Status (*_root)(Fsys*, Nfs3Handle*);
           47         Nfs3Status (*_access)(Fsys*, SunAuthUnix*, Nfs3Handle*, u32int, u32int*, Nfs3Attr*);
           48         Nfs3Status (*_lookup)(Fsys*, SunAuthUnix*, Nfs3Handle*, char*, Nfs3Handle*);
           49         Nfs3Status (*_getattr)(Fsys*, SunAuthUnix*, Nfs3Handle*, Nfs3Attr*);
           50         Nfs3Status (*_readdir)(Fsys *fsys, SunAuthUnix*, Nfs3Handle *h, u32int count, u64int cookie, uchar**, u32int*, uchar*);
           51         Nfs3Status (*_readfile)(Fsys *fsys, SunAuthUnix*, Nfs3Handle *h, u32int count, u64int offset, uchar**, u32int*, uchar*);
           52         Nfs3Status (*_readlink)(Fsys *fsys, SunAuthUnix*, Nfs3Handle *h, char **link);
           53 
           54         void *priv;
           55         
           56         u64int (*fileblock)(Fsys *fsys, Nfs3Handle *h, u64int offset);
           57 };
           58 
           59 struct Handle
           60 {
           61         uchar h[64];
           62         int len;
           63 };
           64 
           65 void                blockdump(Block *b, char *desc);
           66 void                blockput(Block *b);
           67 
           68 Disk*        diskcache(Disk*, uint, uint);
           69 Disk*        diskopenventi(struct VtCache*, uchar*);
           70 Disk*        diskopenfile(char *file);
           71 Disk*        diskpart(Disk*, u64int offset, u64int count);
           72 void                diskpartabandon(Disk*);
           73 
           74 Disk*        diskopen(char *file);
           75 void                diskclose(Disk *disk);
           76 Block*        diskread(Disk *disk, u32int, u64int offset);
           77 int                disksync(Disk *disk);
           78 
           79 Fsys*        fsysopenffs(Disk*);
           80 Fsys*        fsysopenhfs(Disk*);
           81 Fsys*        fsysopenkfs(Disk*);
           82 Fsys*        fsysopenext2(Disk*);
           83 Fsys*        fsysopenfat(Disk*);
           84 
           85 Fsys*        fsysopen(Disk *disk);
           86 Block*        fsysreadblock(Fsys *fsys, u64int blockno);
           87 int                fsyssync(Fsys *fsys);
           88 void                fsysclose(Fsys *fsys);
           89 
           90 Nfs3Status                fsysroot(Fsys *fsys, Nfs3Handle *h);
           91 Nfs3Status                fsyslookup(Fsys *fsys, SunAuthUnix*, Nfs3Handle *h, char *name, Nfs3Handle *nh);
           92 Nfs3Status                fsysgetattr(Fsys *fsys, SunAuthUnix*, Nfs3Handle *h, Nfs3Attr *attr);
           93 Nfs3Status                fsysreaddir(Fsys *fsys, SunAuthUnix*, Nfs3Handle *h, u32int count, u64int cookie, uchar **e, u32int *ne, uchar*);
           94 Nfs3Status                fsysreadfile(Fsys *fsys, SunAuthUnix*, Nfs3Handle *h, u32int, u64int, uchar**, u32int*, uchar*);
           95 Nfs3Status                fsysreadlink(Fsys *fsys, SunAuthUnix*, Nfs3Handle *h, char **plink);
           96 Nfs3Status                fsysaccess(Fsys *fsys, SunAuthUnix*, Nfs3Handle*, u32int, u32int*, Nfs3Attr*);
           97 void*        emalloc(ulong size);        /* provided by caller */
           98 
           99 extern int allowall;