xref: /plan9/sys/src/cmd/disk/kfs/dat.h (revision 5d459b5a09e427ae1acd4e6afcf028853c73946e)
13e12c5d1SDavid du Colombier typedef	struct	Chan	Chan;
23e12c5d1SDavid du Colombier typedef struct	Command	Command;
33e12c5d1SDavid du Colombier typedef	struct	Conf	Conf;
43e12c5d1SDavid du Colombier typedef	struct	Cons	Cons;
53e12c5d1SDavid du Colombier typedef struct	Devcall	Devcall;
63e12c5d1SDavid du Colombier 
79a747e4fSDavid du Colombier #define MAXBUFSIZE	(16*1024)	/* max. buffer size */
89a747e4fSDavid du Colombier 
93e12c5d1SDavid du Colombier #include "portdat.h"
103e12c5d1SDavid du Colombier 
113e12c5d1SDavid du Colombier struct	Chan
123e12c5d1SDavid du Colombier {
133e12c5d1SDavid du Colombier 	int	chan;			/* fd request came in on */
149a747e4fSDavid du Colombier 	QLock rlock, wlock;		/* lock for reading/writing messages on chan */
159a747e4fSDavid du Colombier 	int	type;
163e12c5d1SDavid du Colombier 	int	flags;
173e12c5d1SDavid du Colombier 	long	whotime;
183e12c5d1SDavid du Colombier 	File*	flist;			/* base of file structures */
193e12c5d1SDavid du Colombier 	Lock	flock;			/* manipulate flist */
207dd7cddfSDavid du Colombier 	RWLock	reflock;		/* lock for Tflush */
219a747e4fSDavid du Colombier 	int	msize;			/* version */
229a747e4fSDavid du Colombier 	int	authed;		/* someone other than ``none'' has authed */
2359cc4ca5SDavid du Colombier 
249a747e4fSDavid du Colombier /* 9p1 auth */
259a747e4fSDavid du Colombier 	uchar	chal[8];
269a747e4fSDavid du Colombier 	uchar	rchal[8];
279a747e4fSDavid du Colombier 	int	idoffset;
289a747e4fSDavid du Colombier 	int	idvec;
2959cc4ca5SDavid du Colombier 	Lock	idlock;
303e12c5d1SDavid du Colombier };
313e12c5d1SDavid du Colombier 
323e12c5d1SDavid du Colombier /*
333e12c5d1SDavid du Colombier  * console cons.flag flags
343e12c5d1SDavid du Colombier  */
353e12c5d1SDavid du Colombier enum
363e12c5d1SDavid du Colombier {
377dd7cddfSDavid du Colombier 	Fchat	= (1<<0),	/* print out filesys rpc traffic */
383e12c5d1SDavid du Colombier 	Fuid	= (1<<2),	/* print out uids */
393e12c5d1SDavid du Colombier 				/* debugging flags for drivers */
403e12c5d1SDavid du Colombier };
413e12c5d1SDavid du Colombier 
423e12c5d1SDavid du Colombier struct	Cons
433e12c5d1SDavid du Colombier {
443e12c5d1SDavid du Colombier 	int	flags;		/* overall flags for all channels */
453e12c5d1SDavid du Colombier 	int	uid;		/* botch -- used to get uid on cons_create */
463e12c5d1SDavid du Colombier 	int	gid;		/* botch -- used to get gid on cons_create */
473e12c5d1SDavid du Colombier 	int	allow;		/* no-protection flag */
483e12c5d1SDavid du Colombier 	long	offset;		/* used to read files, c.f. fchar */
493e12c5d1SDavid du Colombier 	char*	arg;		/* pointer to remaining line */
503e12c5d1SDavid du Colombier 
5159cc4ca5SDavid du Colombier 	Chan	*chan;	/* console channel */
5259cc4ca5SDavid du Colombier 	Chan	*srvchan;	/* local server channel */
533e12c5d1SDavid du Colombier 
543e12c5d1SDavid du Colombier 	Filter	work;		/* thruput in messages */
553e12c5d1SDavid du Colombier 	Filter	rate;		/* thruput in bytes */
563e12c5d1SDavid du Colombier 	Filter	bhit;		/* getbufs that hit */
573e12c5d1SDavid du Colombier 	Filter	bread;		/* getbufs that miss and read */
583e12c5d1SDavid du Colombier 	Filter	binit;		/* getbufs that miss and dont read */
593e12c5d1SDavid du Colombier 	Filter	tags[MAXTAG];	/* reads of each type of block */
603e12c5d1SDavid du Colombier };
613e12c5d1SDavid du Colombier 
623e12c5d1SDavid du Colombier struct	Conf
633e12c5d1SDavid du Colombier {
643e12c5d1SDavid du Colombier 	ulong	niobuf;		/* number of iobufs to allocate */
653e12c5d1SDavid du Colombier 	ulong	nuid;		/* distinct uids */
663e12c5d1SDavid du Colombier 	ulong	uidspace;	/* space for uid names -- derrived from nuid */
673e12c5d1SDavid du Colombier 	ulong	gidspace;	/* space for gid names -- derrived from nuid */
683e12c5d1SDavid du Colombier 	ulong	nserve;		/* server processes */
693e12c5d1SDavid du Colombier 	ulong	nfile;		/* number of fid -- system wide */
703e12c5d1SDavid du Colombier 	ulong	nwpath;		/* number of active paths, derrived from nfile */
713e12c5d1SDavid du Colombier 	ulong	bootsize;	/* number of bytes reserved for booting */
723e12c5d1SDavid du Colombier };
733e12c5d1SDavid du Colombier 
743e12c5d1SDavid du Colombier struct	Command
753e12c5d1SDavid du Colombier {
763e12c5d1SDavid du Colombier 	char	*string;
773e12c5d1SDavid du Colombier 	void	(*func)(void);
783e12c5d1SDavid du Colombier 	char	*args;
793e12c5d1SDavid du Colombier };
803e12c5d1SDavid du Colombier 
813e12c5d1SDavid du Colombier struct Devcall
823e12c5d1SDavid du Colombier {
833e12c5d1SDavid du Colombier 	void	(*init)(Device);
843e12c5d1SDavid du Colombier 	void	(*ream)(Device);
853e12c5d1SDavid du Colombier 	int	(*check)(Device);
863e12c5d1SDavid du Colombier 	long	(*super)(Device);
873e12c5d1SDavid du Colombier 	long	(*root)(Device);
883e12c5d1SDavid du Colombier 	long	(*size)(Device);
893e12c5d1SDavid du Colombier 	int	(*read)(Device, long, void*);
903e12c5d1SDavid du Colombier 	int	(*write)(Device, long, void*);
913e12c5d1SDavid du Colombier };
923e12c5d1SDavid du Colombier 
933e12c5d1SDavid du Colombier /*
943e12c5d1SDavid du Colombier  * device types
953e12c5d1SDavid du Colombier  */
963e12c5d1SDavid du Colombier enum
973e12c5d1SDavid du Colombier {
983e12c5d1SDavid du Colombier 	Devnone 	= 0,
993e12c5d1SDavid du Colombier 	Devwren,
1003e12c5d1SDavid du Colombier 	MAXDEV
1013e12c5d1SDavid du Colombier };
1023e12c5d1SDavid du Colombier 
1033e12c5d1SDavid du Colombier /*
1043e12c5d1SDavid du Colombier  * file systems
1053e12c5d1SDavid du Colombier  */
1063e12c5d1SDavid du Colombier enum
1073e12c5d1SDavid du Colombier {
1083e12c5d1SDavid du Colombier 	MAXFILSYS = 4
1093e12c5d1SDavid du Colombier };
1103e12c5d1SDavid du Colombier 
1113e12c5d1SDavid du Colombier /*
1123e12c5d1SDavid du Colombier  * should be in portdat.h
1133e12c5d1SDavid du Colombier  */
1143e12c5d1SDavid du Colombier #define	QPDIR	0x80000000L
1153e12c5d1SDavid du Colombier #define	QPNONE	0
1163e12c5d1SDavid du Colombier #define	QPROOT	1
1173e12c5d1SDavid du Colombier #define	QPSUPER	2
1183e12c5d1SDavid du Colombier 
1193e12c5d1SDavid du Colombier /*
1203e12c5d1SDavid du Colombier  * perm argument in p9 create
1213e12c5d1SDavid du Colombier  */
1223e12c5d1SDavid du Colombier #define	PDIR	(1L<<31)	/* is a directory */
1233e12c5d1SDavid du Colombier #define	PAPND	(1L<<30)	/* is append only */
1243e12c5d1SDavid du Colombier #define	PLOCK	(1L<<29)	/* is locked on open */
1253e12c5d1SDavid du Colombier 
1263e12c5d1SDavid du Colombier #define	NOF	(-1)
1273e12c5d1SDavid du Colombier 
1283e12c5d1SDavid du Colombier #define	FID1		1
1293e12c5d1SDavid du Colombier #define	FID2		2
1309a747e4fSDavid du Colombier #define	FID3		3
1313e12c5d1SDavid du Colombier 
1323e12c5d1SDavid du Colombier #define SECOND(n) 	(n)
1333e12c5d1SDavid du Colombier #define MINUTE(n)	(n*SECOND(60))
1343e12c5d1SDavid du Colombier #define HOUR(n)		(n*MINUTE(60))
1353e12c5d1SDavid du Colombier #define DAY(n)		(n*HOUR(24))
1363e12c5d1SDavid du Colombier #define	TLOCK		MINUTE(5)
1373e12c5d1SDavid du Colombier 
1383e12c5d1SDavid du Colombier #define	CHAT(cp)	(chat)
1399a747e4fSDavid du Colombier #define	QID9P1(a,b)	(Qid9p1){a,b}
1403e12c5d1SDavid du Colombier 
1413e12c5d1SDavid du Colombier extern	Uid*	uid;
1423e12c5d1SDavid du Colombier extern	char*	uidspace;
1433e12c5d1SDavid du Colombier extern	short*	gidspace;
1447dd7cddfSDavid du Colombier extern	char*	errstring[MAXERR];
1453e12c5d1SDavid du Colombier extern	Chan*	chans;
1467dd7cddfSDavid du Colombier extern	RWLock	mainlock;
1473e12c5d1SDavid du Colombier extern	long	boottime;
1483e12c5d1SDavid du Colombier extern	Tlock	*tlocks;
1493e12c5d1SDavid du Colombier extern	Device	devnone;
1507dd7cddfSDavid du Colombier extern	Filsys	filesys[];
1513e12c5d1SDavid du Colombier extern	char	service[];
1523e12c5d1SDavid du Colombier extern	char*	tagnames[];
1533e12c5d1SDavid du Colombier extern	Conf	conf;
1543e12c5d1SDavid du Colombier extern	Cons	cons;
1553e12c5d1SDavid du Colombier extern	Command	command[];
1563e12c5d1SDavid du Colombier extern	Chan	*chan;
1573e12c5d1SDavid du Colombier extern	Devcall	devcall[];
1583e12c5d1SDavid du Colombier extern	char	*progname;
1593e12c5d1SDavid du Colombier extern	char	*procname;
1603e12c5d1SDavid du Colombier extern	long	niob;
1613e12c5d1SDavid du Colombier extern	long	nhiob;
1623e12c5d1SDavid du Colombier extern	Hiob	*hiob;
1633e12c5d1SDavid du Colombier extern	int	chat;
164bd389b36SDavid du Colombier extern	int	writeallow;
165bd389b36SDavid du Colombier extern	int	wstatallow;
16659cc4ca5SDavid du Colombier extern	int	allownone;
1679a747e4fSDavid du Colombier extern	int	noatime;
168*5d459b5aSDavid du Colombier extern	int	writegroup;
1699a747e4fSDavid du Colombier 
1709a747e4fSDavid du Colombier extern Lock wpathlock;
171