xref: /plan9/sys/src/cmd/usb/lib/usbfs.h (revision 3a827ddc0d2b12553857670f716c3312daad326e)
1906943f9SDavid du Colombier typedef struct Usbfs Usbfs;
2906943f9SDavid du Colombier typedef struct Fid Fid;
3906943f9SDavid du Colombier 
4906943f9SDavid du Colombier enum
5906943f9SDavid du Colombier {
6906943f9SDavid du Colombier 	Hdrsize	= 128,		/* plenty of room for headers */
7*3a827ddcSDavid du Colombier 	Msgsize	= 8216,		/* our preferred iounit (also devmnt's) */
8906943f9SDavid du Colombier 	Bufsize	= Hdrsize + Msgsize,
9906943f9SDavid du Colombier 	Namesz = 40,
10906943f9SDavid du Colombier 	Errmax = 128,
11906943f9SDavid du Colombier 	ONONE = ~0,		/* omode in Fid when not open */
12906943f9SDavid du Colombier };
13906943f9SDavid du Colombier 
14906943f9SDavid du Colombier struct Fid
15906943f9SDavid du Colombier {
16906943f9SDavid du Colombier 	int	fid;
17906943f9SDavid du Colombier 	Qid	qid;
18906943f9SDavid du Colombier 	int	omode;
19906943f9SDavid du Colombier 	Fid*	next;
20906943f9SDavid du Colombier 	void*	aux;
21906943f9SDavid du Colombier };
22906943f9SDavid du Colombier 
23906943f9SDavid du Colombier struct Usbfs
24906943f9SDavid du Colombier {
25906943f9SDavid du Colombier 	char	name[Namesz];
26906943f9SDavid du Colombier 	uvlong	qid;
27906943f9SDavid du Colombier 	Dev*	dev;
28906943f9SDavid du Colombier 	void*	aux;
29906943f9SDavid du Colombier 
30906943f9SDavid du Colombier 	int	(*walk)(Usbfs *fs, Fid *f, char *name);
31906943f9SDavid du Colombier 	void	(*clone)(Usbfs *fs, Fid *of, Fid *nf);
32906943f9SDavid du Colombier 	void	(*clunk)(Usbfs *fs, Fid *f);
33906943f9SDavid du Colombier 	int	(*open)(Usbfs *fs, Fid *f, int mode);
34906943f9SDavid du Colombier 	long	(*read)(Usbfs *fs, Fid *f, void *data, long count, vlong offset);
35906943f9SDavid du Colombier 	long	(*write)(Usbfs *fs, Fid*f, void *data, long count, vlong offset);
36906943f9SDavid du Colombier 	int	(*stat)(Usbfs *fs, Qid q, Dir *d);
37906943f9SDavid du Colombier 	void	(*end)(Usbfs *fs);
38906943f9SDavid du Colombier };
39906943f9SDavid du Colombier 
40906943f9SDavid du Colombier typedef int (*Dirgen)(Usbfs*, Qid, int, Dir*, void*);
41906943f9SDavid du Colombier 
42906943f9SDavid du Colombier long	usbreadbuf(void *data, long count, vlong offset, void *buf, long n);
43906943f9SDavid du Colombier void	usbfsadd(Usbfs *dfs);
44906943f9SDavid du Colombier void	usbfsdel(Usbfs *dfs);
45906943f9SDavid du Colombier int	usbdirread(Usbfs*f, Qid q, char *data, long cnt, vlong off, Dirgen gen, void *arg);
46906943f9SDavid du Colombier void	usbfsinit(char* srv, char *mnt, Usbfs *f, int flag);
47906943f9SDavid du Colombier 
48906943f9SDavid du Colombier void	usbfsdirdump(void);
49906943f9SDavid du Colombier 
50906943f9SDavid du Colombier extern char Enotfound[];
51906943f9SDavid du Colombier extern char Etoosmall[];
52906943f9SDavid du Colombier extern char Eio[];
53906943f9SDavid du Colombier extern char Eperm[];
54906943f9SDavid du Colombier extern char Ebadcall[];
55906943f9SDavid du Colombier extern char Ebadfid[];
56906943f9SDavid du Colombier extern char Einuse[];
57906943f9SDavid du Colombier extern char Eisopen[];
58906943f9SDavid du Colombier extern char Ebadctl[];
59906943f9SDavid du Colombier 
60906943f9SDavid du Colombier extern Usbfs usbdirfs;
61906943f9SDavid du Colombier extern int usbfsdebug;
62