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