xref: /plan9/sys/include/fcall.h (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
13e12c5d1SDavid du Colombier #pragma	lib	"libc.a"
23e12c5d1SDavid du Colombier 
3*219b2ee8SDavid du Colombier typedef
43e12c5d1SDavid du Colombier struct	Fcall
53e12c5d1SDavid du Colombier {
63e12c5d1SDavid du Colombier 	char	type;
73e12c5d1SDavid du Colombier 	short	fid;
83e12c5d1SDavid du Colombier 	ushort	tag;
93e12c5d1SDavid du Colombier 	union {
103e12c5d1SDavid du Colombier 		struct {
113e12c5d1SDavid du Colombier 			ushort	oldtag;		/* Tflush */
123e12c5d1SDavid du Colombier 			Qid	qid;		/* Rattach, Rwalk, Ropen, Rcreate */
13*219b2ee8SDavid du Colombier 			char	rauth[AUTHENTLEN];	/* Rattach */
143e12c5d1SDavid du Colombier 		};
153e12c5d1SDavid du Colombier 		struct {
16*219b2ee8SDavid du Colombier 			char	uname[NAMELEN];		/* Tattach */
173e12c5d1SDavid du Colombier 			char	aname[NAMELEN];		/* Tattach */
18*219b2ee8SDavid du Colombier 			char	ticket[TICKETLEN];	/* Tattach */
19*219b2ee8SDavid du Colombier 			char	auth[AUTHENTLEN];	/* Tattach */
203e12c5d1SDavid du Colombier 		};
213e12c5d1SDavid du Colombier 		struct {
223e12c5d1SDavid du Colombier 			char	ename[ERRLEN];		/* Rerror */
23*219b2ee8SDavid du Colombier 			char	authid[NAMELEN];	/* Rsession */
24*219b2ee8SDavid du Colombier 			char	authdom[DOMLEN];	/* Rsession */
25*219b2ee8SDavid du Colombier 			char	chal[CHALLEN];		/* Tsession/Rsession */
263e12c5d1SDavid du Colombier 		};
273e12c5d1SDavid du Colombier 		struct {
283e12c5d1SDavid du Colombier 			long	perm;		/* Tcreate */
293e12c5d1SDavid du Colombier 			short	newfid;		/* Tclone, Tclwalk */
303e12c5d1SDavid du Colombier 			char	name[NAMELEN];	/* Twalk, Tclwalk, Tcreate */
313e12c5d1SDavid du Colombier 			char	mode;		/* Tcreate, Topen */
323e12c5d1SDavid du Colombier 		};
333e12c5d1SDavid du Colombier 		struct {
343e12c5d1SDavid du Colombier 			long	offset;		/* Tread, Twrite */
353e12c5d1SDavid du Colombier 			long	count;		/* Tread, Twrite, Rread */
363e12c5d1SDavid du Colombier 			char	*data;		/* Twrite, Rread */
373e12c5d1SDavid du Colombier 		};
383e12c5d1SDavid du Colombier 		struct {
393e12c5d1SDavid du Colombier 			char	stat[DIRLEN];	/* Twstat, Rstat */
403e12c5d1SDavid du Colombier 		};
413e12c5d1SDavid du Colombier 	};
42*219b2ee8SDavid du Colombier } Fcall;
433e12c5d1SDavid du Colombier 
443e12c5d1SDavid du Colombier #define	MAXFDATA	8192
45*219b2ee8SDavid du Colombier #define	MAXMSG		160	/* max header sans data */
463e12c5d1SDavid du Colombier #define NOTAG		0xFFFF	/* Dummy tag */
473e12c5d1SDavid du Colombier 
483e12c5d1SDavid du Colombier enum
493e12c5d1SDavid du Colombier {
503e12c5d1SDavid du Colombier 	Tnop =		50,
513e12c5d1SDavid du Colombier 	Rnop,
52*219b2ee8SDavid du Colombier 	Tosession =	52,	/* illegal */
53*219b2ee8SDavid du Colombier 	Rosession,		/* illegal */
543e12c5d1SDavid du Colombier 	Terror =	54,	/* illegal */
553e12c5d1SDavid du Colombier 	Rerror,
563e12c5d1SDavid du Colombier 	Tflush =	56,
573e12c5d1SDavid du Colombier 	Rflush,
58*219b2ee8SDavid du Colombier 	Toattach =	58,	/* illegal */
59*219b2ee8SDavid du Colombier 	Roattach,		/* illegal */
603e12c5d1SDavid du Colombier 	Tclone =	60,
613e12c5d1SDavid du Colombier 	Rclone,
623e12c5d1SDavid du Colombier 	Twalk =		62,
633e12c5d1SDavid du Colombier 	Rwalk,
643e12c5d1SDavid du Colombier 	Topen =		64,
653e12c5d1SDavid du Colombier 	Ropen,
663e12c5d1SDavid du Colombier 	Tcreate =	66,
673e12c5d1SDavid du Colombier 	Rcreate,
683e12c5d1SDavid du Colombier 	Tread =		68,
693e12c5d1SDavid du Colombier 	Rread,
703e12c5d1SDavid du Colombier 	Twrite =	70,
713e12c5d1SDavid du Colombier 	Rwrite,
723e12c5d1SDavid du Colombier 	Tclunk =	72,
733e12c5d1SDavid du Colombier 	Rclunk,
743e12c5d1SDavid du Colombier 	Tremove =	74,
753e12c5d1SDavid du Colombier 	Rremove,
763e12c5d1SDavid du Colombier 	Tstat =		76,
773e12c5d1SDavid du Colombier 	Rstat,
783e12c5d1SDavid du Colombier 	Twstat =	78,
793e12c5d1SDavid du Colombier 	Rwstat,
803e12c5d1SDavid du Colombier 	Tclwalk =	80,
813e12c5d1SDavid du Colombier 	Rclwalk,
82*219b2ee8SDavid du Colombier 	Tauth =		82,	/* illegal */
83*219b2ee8SDavid du Colombier 	Rauth,			/* illegal */
84*219b2ee8SDavid du Colombier 	Tsession =	84,
85*219b2ee8SDavid du Colombier 	Rsession,
86*219b2ee8SDavid du Colombier 	Tattach =	86,
87*219b2ee8SDavid du Colombier 	Rattach,
883e12c5d1SDavid du Colombier };
893e12c5d1SDavid du Colombier 
903e12c5d1SDavid du Colombier int	convM2S(char*, Fcall*, int);
913e12c5d1SDavid du Colombier int	convS2M(Fcall*, char*);
923e12c5d1SDavid du Colombier 
933e12c5d1SDavid du Colombier int	convM2D(char*, Dir*);
943e12c5d1SDavid du Colombier int	convD2M(Dir*, char*);
953e12c5d1SDavid du Colombier 
96bd389b36SDavid du Colombier int	fcallconv(void *, Fconv*);
97bd389b36SDavid du Colombier int	dirconv(void *, Fconv*);
98bd389b36SDavid du Colombier int	dirmodeconv(void *, Fconv*);
993e12c5d1SDavid du Colombier 
1003e12c5d1SDavid du Colombier char*	getS(int, char*, Fcall*, long*);
101*219b2ee8SDavid du Colombier 
102