xref: /csrg-svn/sys/vax/datakit/dkdev.h (revision 38624)
1*38624Skarels /*
2*38624Skarels  * 	DATAKIT Common Kernel Structure interface definitions
3*38624Skarels  *		@(#)dkdev.h	1.3 Garage 84/05/14
4*38624Skarels  */
5*38624Skarels 
6*38624Skarels /*
7*38624Skarels  * datakit ioctl commands
8*38624Skarels  */
9*38624Skarels #define DKIOCMASK	(0377 << 8)	/*  if (code & mask) == val   */
10*38624Skarels #define DKIOCVAL	('k' << 8)	/*    then datakit control    */
11*38624Skarels 
12*38624Skarels 
13*38624Skarels 
14*38624Skarels /*
15*38624Skarels  *	common structure for dk.c and dkxqt.c (and a little of dktty.c)
16*38624Skarels  *	  for an open channel
17*38624Skarels  */
18*38624Skarels 
19*38624Skarels struct dkdev {
20*38624Skarels 	short	d_state ;		/* various bit values, defined below */
21*38624Skarels 	short	dc_state;		/* more bit values */
22*38624Skarels 	short	d_bufct ;		/* count of buffers in write Q */
23*38624Skarels 	short	d_rmode ;		/* receive termination modes */
24*38624Skarels 	short	d_rresid ; /* 1 of 3 */	/* residual buffer left in receive */
25*38624Skarels 	short	d_rdone ;  /* 2 of 3 */	/* completion status of last receive */
26*38624Skarels 	short	d_rctl ;   /* 3 of 3 */	/* control char received */
27*38624Skarels 	short	d_xctl ;		/* control char to send */
28*38624Skarels 	int	d_pgrp ;		/* process group number */
29*38624Skarels 	short	d_prot;			/* active protocols on this channel */
30*38624Skarels 	struct	diocxwin d_win;		/* Requested window size */
31*38624Skarels 	struct	diocctype *d_ctype;	/* Connection type */
32*38624Skarels #	  define	DpURP	0x0001	/* plain URP -- dk.c */
33*38624Skarels #	  define	DpTTY	0x0002	/* tty protocol -- dktty.c */
34*38624Skarels #	  define	DpXQT	0x0004	/* remote execution -- dkxqt.c */
35*38624Skarels #	  define	DpIP	0x0008	/* IP */
36*38624Skarels 
37*38624Skarels 	union { struct {	/* DK */
38*38624Skarels 		caddr_t	dk_addr ;	/* address of current bp or cb */
39*38624Skarels 		short	dk_param[3] ;	/* parameters from user from ioctl */
40*38624Skarels 		short	dk_Xstate ;		/* various state bits */
41*38624Skarels 		short	dk_error ;		/* call setup error code */
42*38624Skarels 			} d_dk ;
43*38624Skarels 
44*38624Skarels 
45*38624Skarels 	      struct {		/* DKXQT */
46*38624Skarels 		caddr_t	dkx_rbuf ;	/* receive buffer address */
47*38624Skarels 		caddr_t	dkx_xbuf ;	/* transmit buffer address */
48*38624Skarels 		unsigned dkx_discard ;	/* amount to discard from input */
49*38624Skarels 		short	dkx_Xstate ;		/* various state bits */
50*38624Skarels 			} d_dkx ;
51*38624Skarels 
52*38624Skarels 
53*38624Skarels 				/* others? */
54*38624Skarels 
55*38624Skarels 	   } d_var ;
56*38624Skarels } ;
57*38624Skarels 
58*38624Skarels #define	d_addr	d_var.d_dk.dk_addr
59*38624Skarels #define	d_param	d_var.d_dk.dk_param
60*38624Skarels #define	d_error	d_var.d_dk.dk_error
61*38624Skarels 
62*38624Skarels 
63*38624Skarels #define	d_rbuf	d_var.d_dkx.dkx_rbuf
64*38624Skarels #define	d_xbuf	d_var.d_dkx.dkx_xbuf
65*38624Skarels #define	d_discard  d_var.d_dkx.dkx_discard
66*38624Skarels 
67*38624Skarels #define	dx_state	d_var.d_dkx.dkx_Xstate
68*38624Skarels 
69*38624Skarels /*
70*38624Skarels  *	bits in d_state
71*38624Skarels  */
72*38624Skarels #define	DKOPEN		000001		/* this channel is open somewhere */
73*38624Skarels #define	DKXCLUDE	000002		/* open exclusive use, or DT open */
74*38624Skarels #define	DKWAIT		000004		/* process waiting for a buffer */
75*38624Skarels #define	DKSPLICED	000020		/* received splice request from controller */
76*38624Skarels 
77*38624Skarels 
78*38624Skarels /*
79*38624Skarels  *	bits in dc_state
80*38624Skarels  */
81*38624Skarels #define	DKSETUP		000004		/* setup in progress on channel */
82*38624Skarels #define	DKEXPMT		000010		/* timing experiment mode */
83*38624Skarels #define	DKXMIT		000010		/* transmit */
84*38624Skarels #define	DKDROP		000030		/* for ignoring input */
85*38624Skarels #define	DKRW		000050		/* bounce, read then write */
86*38624Skarels #define	DKWR		000070		/* bounce, write then read */
87*38624Skarels #define	DKNOABO		000100		/* do not abort receives, NK mode */
88*38624Skarels #define	DK_ASYNC	000200		/* generate sigio when complete */
89*38624Skarels #define	DK_NDELAY	000400		/* non-blocking mode */
90*38624Skarels 
91*38624Skarels /*
92*38624Skarels  *	bits in dx_state
93*38624Skarels  */
94*38624Skarels #define	DXWAIT		000040		/* process is waiting for line */
95*38624Skarels #define	DXCANCEL	020000		/* last sent cancel, ignore nxt msg */
96*38624Skarels #define	DXRQRCV		040000		/* response received to request */
97*38624Skarels #define	DXRQACT		0100000		/* request active on channel */
98