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