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;