xref: /plan9/sys/src/cmd/9660srv/dat.h (revision 59cc4ca53493a3c6d2349fe2b7f7c40f7dce7294)
13e12c5d1SDavid du Colombier typedef	struct Iobuf	Iobuf;
23e12c5d1SDavid du Colombier typedef struct Xdata	Xdata;
33e12c5d1SDavid du Colombier typedef struct Xfile	Xfile;
43e12c5d1SDavid du Colombier typedef struct Xfs	Xfs;
53e12c5d1SDavid du Colombier typedef struct Xfsub	Xfsub;
63e12c5d1SDavid du Colombier 
7bd389b36SDavid du Colombier enum
8bd389b36SDavid du Colombier {
93e12c5d1SDavid du Colombier 	Sectorsize = 2048
103e12c5d1SDavid du Colombier };
113e12c5d1SDavid du Colombier 
123e12c5d1SDavid du Colombier struct Iobuf
133e12c5d1SDavid du Colombier {
143e12c5d1SDavid du Colombier 	Xdata*	dev;
153e12c5d1SDavid du Colombier 	long	addr;
163e12c5d1SDavid du Colombier 	Iobuf*	next;
173e12c5d1SDavid du Colombier 	Iobuf*	prev;
183e12c5d1SDavid du Colombier 	Iobuf*	hash;
193e12c5d1SDavid du Colombier 	int	busy;
203e12c5d1SDavid du Colombier 	uchar*	iobuf;
213e12c5d1SDavid du Colombier };
223e12c5d1SDavid du Colombier 
233e12c5d1SDavid du Colombier struct Xdata
243e12c5d1SDavid du Colombier {
253e12c5d1SDavid du Colombier 	Xdata*	next;
263e12c5d1SDavid du Colombier 	char*	name;		/* of underlying file */
273e12c5d1SDavid du Colombier 	Qid	qid;
283e12c5d1SDavid du Colombier 	short	type;
293e12c5d1SDavid du Colombier 	short	fdev;
303e12c5d1SDavid du Colombier 	int	ref;		/* attach count */
313e12c5d1SDavid du Colombier 	int	dev;		/* for read/write */
323e12c5d1SDavid du Colombier };
333e12c5d1SDavid du Colombier 
34bd389b36SDavid du Colombier struct Xfsub
35bd389b36SDavid du Colombier {
363e12c5d1SDavid du Colombier 	void	(*reset)(void);
373e12c5d1SDavid du Colombier 	int	(*attach)(Xfile*);
383e12c5d1SDavid du Colombier 	void	(*clone)(Xfile*, Xfile*);
393e12c5d1SDavid du Colombier 	void	(*walkup)(Xfile*);
403e12c5d1SDavid du Colombier 	void	(*walk)(Xfile*, char*);
413e12c5d1SDavid du Colombier 	void	(*open)(Xfile*, int);
423e12c5d1SDavid du Colombier 	void	(*create)(Xfile*, char*, long, int);
437dd7cddfSDavid du Colombier 	long	(*readdir)(Xfile*, char*, long, long);
447dd7cddfSDavid du Colombier 	long	(*read)(Xfile*, char*, long, long);
457dd7cddfSDavid du Colombier 	long	(*write)(Xfile*, char*, long, long);
463e12c5d1SDavid du Colombier 	void	(*clunk)(Xfile*);
473e12c5d1SDavid du Colombier 	void	(*remove)(Xfile*);
483e12c5d1SDavid du Colombier 	void	(*stat)(Xfile*, Dir*);
493e12c5d1SDavid du Colombier 	void	(*wstat)(Xfile*, Dir*);
503e12c5d1SDavid du Colombier };
513e12c5d1SDavid du Colombier 
52bd389b36SDavid du Colombier struct Xfs
53bd389b36SDavid du Colombier {
543e12c5d1SDavid du Colombier 	Xdata*	d;		/* how to get the bits */
553e12c5d1SDavid du Colombier 	Xfsub*	s;		/* how to use them */
563e12c5d1SDavid du Colombier 	int	ref;
57*59cc4ca5SDavid du Colombier 	int	issusp;	/* follows system use sharing protocol */
58*59cc4ca5SDavid du Colombier 	long	suspoff;	/* if so, offset at which SUSP area begins */
59*59cc4ca5SDavid du Colombier 	int	isrock;	/* Rock Ridge format */
603e12c5d1SDavid du Colombier 	int	isplan9;	/* has Plan 9-specific directory info */
613e12c5d1SDavid du Colombier 	Qid	rootqid;
623e12c5d1SDavid du Colombier 	void*	ptr;		/* private data */
633e12c5d1SDavid du Colombier };
643e12c5d1SDavid du Colombier 
65bd389b36SDavid du Colombier struct Xfile
66bd389b36SDavid du Colombier {
673e12c5d1SDavid du Colombier 	Xfile*	next;		/* in fid hash bucket */
683e12c5d1SDavid du Colombier 	Xfs*	xf;
693e12c5d1SDavid du Colombier 	long	fid;
703e12c5d1SDavid du Colombier 	ulong	flags;
713e12c5d1SDavid du Colombier 	Qid	qid;
723e12c5d1SDavid du Colombier 	int	len;		/* of private data */
733e12c5d1SDavid du Colombier 	void*	ptr;
743e12c5d1SDavid du Colombier };
753e12c5d1SDavid du Colombier 
76bd389b36SDavid du Colombier enum
77bd389b36SDavid du Colombier {
783e12c5d1SDavid du Colombier 	Asis,
793e12c5d1SDavid du Colombier 	Clean,
803e12c5d1SDavid du Colombier 	Clunk
813e12c5d1SDavid du Colombier };
823e12c5d1SDavid du Colombier 
83bd389b36SDavid du Colombier enum
84bd389b36SDavid du Colombier {
853e12c5d1SDavid du Colombier 	Oread = 1,
863e12c5d1SDavid du Colombier 	Owrite = 2,
873e12c5d1SDavid du Colombier 	Orclose = 4,
883e12c5d1SDavid du Colombier 	Omodes = 3,
893e12c5d1SDavid du Colombier };
903e12c5d1SDavid du Colombier 
913e12c5d1SDavid du Colombier extern char	Enonexist[];	/* file does not exist */
923e12c5d1SDavid du Colombier extern char	Eperm[];	/* permission denied */
933e12c5d1SDavid du Colombier extern char	Enofile[];	/* no file system specified */
943e12c5d1SDavid du Colombier extern char	Eauth[];	/* authentication failed */
953e12c5d1SDavid du Colombier 
963e12c5d1SDavid du Colombier extern char	*srvname;
973e12c5d1SDavid du Colombier extern char	*deffile;
983e12c5d1SDavid du Colombier extern int	chatty;
993e12c5d1SDavid du Colombier extern jmp_buf	err_lab[];
1003e12c5d1SDavid du Colombier extern int	nerr_lab;
1013e12c5d1SDavid du Colombier extern char	err_msg[];
1027dd7cddfSDavid du Colombier 
1037dd7cddfSDavid du Colombier extern int nojoliet;
1047dd7cddfSDavid du Colombier extern int noplan9;
105*59cc4ca5SDavid du Colombier extern int norock;
106