|
|
1.1 root 1: /* tty.h 2.1 1/5/80 */
2: /*
3: * A clist structure is the head
4: * of a linked list queue of characters.
5: * The characters are stored in 4-word
6: * blocks containing a link and several characters.
7: * The routines getc and putc
8: * manipulate these structures.
9: */
10: struct clist
11: {
12: int c_cc; /* character count */
13: char *c_cf; /* pointer to first char */
14: char *c_cl; /* pointer to last char */
15: };
16:
17: /*
18: * A tty structure is needed for
19: * each UNIX character device that
20: * is used for normal terminal IO.
21: * The routines in tty.c handle the
22: * common code associated with
23: * these structures.
24: * The definition and device dependent
25: * code is in each driver. (kl.c dz.c)
26: */
27:
28: struct tc {
29: char t_intrc; /* interrupt */
30: char t_quitc; /* quit */
31: char t_startc; /* start output */
32: char t_stopc; /* stop output */
33: char t_eofc; /* end-of-file */
34: char t_brkc; /* input delimiter (like nl) */
35: };
36:
37: struct tty
38: {
39: struct clist t_rawq; /* input chars right off device */
40: struct clist t_canq; /* input chars after erase and kill */
41: struct clist t_outq; /* output list to device */
42: int (* t_oproc)(); /* routine to start output */
43: int (* t_iproc)(); /* routine to start input */
44: struct chan *t_chan; /* destination channel */
45: caddr_t t_linep; /* aux line discipline pointer */
46: caddr_t t_addr; /* device address */
47: dev_t t_dev; /* device number */
48: short t_flags; /* mode, settable by ioctl call */
49: short t_state; /* internal state, not visible externally */
50: short t_pgrp; /* process group name */
51: char t_delct; /* number of delimiters in raw q */
52: char t_line; /* line discipline */
53: char t_col; /* printing column of device */
54: char t_erase; /* erase character */
55: char t_kill; /* kill character */
56: char t_char; /* character temporary */
57: char t_ispeed; /* input speed */
58: char t_ospeed; /* output speed */
59: union {
60: struct tc t_chr;
61: struct clist t_ctlq;
62: } t_un;
63: };
64:
65: #define tun tp->t_un.t_chr
66:
67: /*
68: * structure of arg for ioctl
69: */
70: struct ttiocb {
71: char ioc_ispeed;
72: char ioc_ospeed;
73: char ioc_erase;
74: char ioc_kill;
75: short ioc_flags;
76: };
77:
78: #define TTIPRI 28
79: #define TTOPRI 29
80:
81: #define CERASE '#' /* default special characters */
82: #define CEOT 004
83: #define CKILL '@'
84: #define CQUIT 034 /* FS, cntl shift L */
85: #define CINTR 0177 /* DEL */
86: #define CSTOP 023 /* Stop output: ctl-s */
87: #define CSTART 021 /* Start output: ctl-q */
88: #define CBRK 0377
89:
90: /* limits */
91: #define TTHIWAT 650
92: #define TTLOWAT 125
93: #define TTYHOG 256
94:
95: /* modes */
96: #define TANDEM 01
97: #define CBREAK 02
98: #define LCASE 04
99: #define ECHO 010
100: #define CRMOD 020
101: #define RAW 040
102: #define ODDP 0100
103: #define EVENP 0200
104: #define NLDELAY 001400
105: #define TBDELAY 006000
106: #define XTABS 006000
107: #define CRDELAY 030000
108: #define VTDELAY 040000
109:
110: /* Hardware bits */
111: #define DONE 0200
112: #define IENABLE 0100
113:
114: /* Internal state bits */
115: #define TIMEOUT 01 /* Delay timeout in progress */
116: #define WOPEN 02 /* Waiting for open to complete */
117: #define ISOPEN 04 /* Device is open */
118: #define FLUSH 010 /* outq has been flushed during DMA */
119: #define CARR_ON 020 /* Software copy of carrier-present */
120: #define BUSY 040 /* Output in progress */
121: #define ASLEEP 0100 /* Wakeup when output done */
122: #define XCLUDE 0200 /* exclusive-use flag against open */
123: #define TTSTOP 0400 /* Output stopped by ctl-s */
124: #define HUPCLS 01000 /* Hang up upon last close */
125: #define TBLOCK 02000 /* tandem queue blocked */
126: #define SPEEDS 04000 /* t_ispeed and t_ospeed used by driver */
127: #define PROTO1 010000 /* reserved for line discipline */
128: #define EXTPROC 020000 /* external processor (kmc) */
129: #define FSLEEP 040000 /* Wakeup on input framing */
130: #define CNTLQ 0100000 /* interpret t_un as clist */
131:
132: /*
133: * tty ioctl commands
134: */
135: #define TIOCGETD (('t'<<8)|0)
136: #define TIOCSETD (('t'<<8)|1)
137: #define TIOCHPCL (('t'<<8)|2)
138: #define TIOCMODG (('t'<<8)|3)
139: #define TIOCMODS (('t'<<8)|4)
140: #define TIOCGETP (('t'<<8)|8)
141: #define TIOCSETP (('t'<<8)|9)
142: #define TIOCSETN (('t'<<8)|10)
143: #define TIOCEXCL (('t'<<8)|13)
144: #define TIOCNXCL (('t'<<8)|14)
145: #define TIOCFLUSH (('t'<<8)|16)
146: #define TIOCSETC (('t'<<8)|17)
147: #define TIOCGETC (('t'<<8)|18)
148: #define TIOCSBRK (('t'<<8)|19)
149: #define DIOCLSTN (('d'<<8)|1)
150: #define DIOCNTRL (('d'<<8)|2)
151: #define DIOCMPX (('d'<<8)|3)
152: #define DIOCNMPX (('d'<<8)|4)
153: #define DIOCSCALL (('d'<<8)|5)
154: #define DIOCRCALL (('d'<<8)|6)
155: #define DIOCPGRP (('d'<<8)|7)
156: #define DIOCGETP (('d'<<8)|8)
157: #define DIOCSETP (('d'<<8)|9)
158: #define DIOCLOSE (('d'<<8)|10)
159: #define DIOCTIME (('d'<<8)|11)
160: #define DIOCRESET (('d'<<8)|12)
161: #define DIOCSMETA (('d'<<8)|13)
162: #define DIOCMERGE (('d'<<8)|14)
163: #define DIOCICHAN (('d'<<8)|15)
164: #define DIOCPAD (('d'<<8)|16)
165: #define DIOCRMETA (('d'<<8)|17)
166: #define DIOCXOUT (('d'<<8)|18)
167: #define DIOCBMETA (('d'<<8)|19)
168: #define DIOCAMETA (('d'<<8)|20)
169: #define DIOCSBMETA (('d'<<8)|21)
170: #define FIOCLEX (('f'<<8)|1)
171: #define FIONCLEX (('f'<<8)|2)
172: #define MXLSTN (('x'<<8)|1)
173: #define MXNBLK (('x'<<8)|2)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.