xref: /plan9/sys/src/cmd/usb/lib/usbfs.h (revision 3a827ddc0d2b12553857670f716c3312daad326e)
1 typedef struct Usbfs Usbfs;
2 typedef struct Fid Fid;
3 
4 enum
5 {
6 	Hdrsize	= 128,		/* plenty of room for headers */
7 	Msgsize	= 8216,		/* our preferred iounit (also devmnt's) */
8 	Bufsize	= Hdrsize + Msgsize,
9 	Namesz = 40,
10 	Errmax = 128,
11 	ONONE = ~0,		/* omode in Fid when not open */
12 };
13 
14 struct Fid
15 {
16 	int	fid;
17 	Qid	qid;
18 	int	omode;
19 	Fid*	next;
20 	void*	aux;
21 };
22 
23 struct Usbfs
24 {
25 	char	name[Namesz];
26 	uvlong	qid;
27 	Dev*	dev;
28 	void*	aux;
29 
30 	int	(*walk)(Usbfs *fs, Fid *f, char *name);
31 	void	(*clone)(Usbfs *fs, Fid *of, Fid *nf);
32 	void	(*clunk)(Usbfs *fs, Fid *f);
33 	int	(*open)(Usbfs *fs, Fid *f, int mode);
34 	long	(*read)(Usbfs *fs, Fid *f, void *data, long count, vlong offset);
35 	long	(*write)(Usbfs *fs, Fid*f, void *data, long count, vlong offset);
36 	int	(*stat)(Usbfs *fs, Qid q, Dir *d);
37 	void	(*end)(Usbfs *fs);
38 };
39 
40 typedef int (*Dirgen)(Usbfs*, Qid, int, Dir*, void*);
41 
42 long	usbreadbuf(void *data, long count, vlong offset, void *buf, long n);
43 void	usbfsadd(Usbfs *dfs);
44 void	usbfsdel(Usbfs *dfs);
45 int	usbdirread(Usbfs*f, Qid q, char *data, long cnt, vlong off, Dirgen gen, void *arg);
46 void	usbfsinit(char* srv, char *mnt, Usbfs *f, int flag);
47 
48 void	usbfsdirdump(void);
49 
50 extern char Enotfound[];
51 extern char Etoosmall[];
52 extern char Eio[];
53 extern char Eperm[];
54 extern char Ebadcall[];
55 extern char Ebadfid[];
56 extern char Einuse[];
57 extern char Eisopen[];
58 extern char Ebadctl[];
59 
60 extern Usbfs usbdirfs;
61 extern int usbfsdebug;
62