summaryrefslogtreecommitdiff
blob: 691600d27a71fa57ee7dfdc9c5f9d3b9bdd6134d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
/* from asm/termbits.h */

#define TARGET_NCCS 19

struct target_termios {
    unsigned int c_iflag;               /* input mode flags */
    unsigned int c_oflag;               /* output mode flags */
    unsigned int c_cflag;               /* control mode flags */
    unsigned int c_lflag;               /* local mode flags */
    unsigned char c_line;                    /* line discipline */
    unsigned char c_cc[TARGET_NCCS];                /* control characters */
};

/* c_cc characters */
#define TARGET_VINTR    0
#define TARGET_VQUIT    1
#define TARGET_VERASE   2
#define TARGET_VKILL    3
#define TARGET_VEOF     4
#define TARGET_VEOL     5
#define TARGET_VEOL2    6
#define TARGET_VSWTC    7
#define TARGET_VSTART   8
#define TARGET_VSTOP    9

#define TARGET_VSUSP    10
#define TARGET_VDSUSP   11  /* SunOS POSIX nicety I do believe... */
#define TARGET_VREPRINT 12
#define TARGET_VDISCARD 13
#define TARGET_VWERASE  14
#define TARGET_VLNEXT   15

/* Kernel keeps vmin/vtime separated, user apps assume vmin/vtime is
 * shared with eof/eol
 */
#define TARGET_VMIN     TARGET_VEOF
#define TARGET_VTIME    TARGET_VEOL

/* c_iflag bits */
#define TARGET_IGNBRK	0x00000001
#define TARGET_BRKINT	0x00000002
#define TARGET_IGNPAR	0x00000004
#define TARGET_PARMRK	0x00000008
#define TARGET_INPCK	0x00000010
#define TARGET_ISTRIP	0x00000020
#define TARGET_INLCR	0x00000040
#define TARGET_IGNCR	0x00000080
#define TARGET_ICRNL	0x00000100
#define TARGET_IUCLC	0x00000200
#define TARGET_IXON	0x00000400
#define TARGET_IXANY	0x00000800
#define TARGET_IXOFF	0x00001000
#define TARGET_IMAXBEL	0x00002000
#define TARGET_IUTF8	0x00004000

/* c_oflag bits */
#define TARGET_OPOST	0x00000001
#define TARGET_OLCUC	0x00000002
#define TARGET_ONLCR	0x00000004
#define TARGET_OCRNL	0x00000008
#define TARGET_ONOCR	0x00000010
#define TARGET_ONLRET	0x00000020
#define TARGET_OFILL	0x00000040
#define TARGET_OFDEL	0x00000080
#define TARGET_NLDLY	0x00000100
#define   TARGET_NL0	0x00000000
#define   TARGET_NL1	0x00000100
#define TARGET_CRDLY	0x00000600
#define   TARGET_CR0	0x00000000
#define   TARGET_CR1	0x00000200
#define   TARGET_CR2	0x00000400
#define   TARGET_CR3	0x00000600
#define TARGET_TABDLY	0x00001800
#define   TARGET_TAB0	0x00000000
#define   TARGET_TAB1	0x00000800
#define   TARGET_TAB2	0x00001000
#define   TARGET_TAB3	0x00001800
#define   TARGET_XTABS	0x00001800
#define TARGET_BSDLY	0x00002000
#define   TARGET_BS0	0x00000000
#define   TARGET_BS1	0x00002000
#define TARGET_VTDLY	0x00004000
#define   TARGET_VT0	0x00000000
#define   TARGET_VT1	0x00004000
#define TARGET_FFDLY	0x00008000
#define   TARGET_FF0	0x00000000
#define   TARGET_FF1	0x00008000
#define TARGET_PAGEOUT 0x00010000  /* SUNOS specific */
#define TARGET_WRAP    0x00020000  /* SUNOS specific */

/* c_cflag bit meaning */
#define TARGET_CBAUD	  0x0000100f
#define  TARGET_B0	  0x00000000   /* hang up */
#define  TARGET_B50	  0x00000001
#define  TARGET_B75	  0x00000002
#define  TARGET_B110	  0x00000003
#define  TARGET_B134	  0x00000004
#define  TARGET_B150	  0x00000005
#define  TARGET_B200	  0x00000006
#define  TARGET_B300	  0x00000007
#define  TARGET_B600	  0x00000008
#define  TARGET_B1200	  0x00000009
#define  TARGET_B1800	  0x0000000a
#define  TARGET_B2400	  0x0000000b
#define  TARGET_B4800	  0x0000000c
#define  TARGET_B9600	  0x0000000d
#define  TARGET_B19200	  0x0000000e
#define  TARGET_B38400	  0x0000000f
#define TARGET_EXTA      B19200
#define TARGET_EXTB      B38400
#define  TARGET_CSIZE    0x00000030
#define   TARGET_CS5	  0x00000000
#define   TARGET_CS6	  0x00000010
#define   TARGET_CS7	  0x00000020
#define   TARGET_CS8	  0x00000030
#define TARGET_CSTOPB	  0x00000040
#define TARGET_CREAD	  0x00000080
#define TARGET_PARENB	  0x00000100
#define TARGET_PARODD	  0x00000200
#define TARGET_HUPCL	  0x00000400
#define TARGET_CLOCAL	  0x00000800
#define TARGET_CBAUDEX   0x00001000
/* We'll never see these speeds with the Zilogs, but for completeness... */
#define  TARGET_B57600   0x00001001
#define  TARGET_B115200  0x00001002
#define  TARGET_B230400  0x00001003
#define  TARGET_B460800  0x00001004
/* This is what we can do with the Zilogs. */
#define  TARGET_B76800   0x00001005
/* This is what we can do with the SAB82532. */
#define  TARGET_B153600  0x00001006
#define  TARGET_B307200  0x00001007
#define  TARGET_B614400  0x00001008
#define  TARGET_B921600  0x00001009
/* And these are the rest... */
#define  TARGET_B500000  0x0000100a
#define  TARGET_B576000  0x0000100b
#define TARGET_B1000000  0x0000100c
#define TARGET_B1152000  0x0000100d
#define TARGET_B1500000  0x0000100e
#define TARGET_B2000000  0x0000100f
/* These have totally bogus values and nobody uses them
   so far. Later on we'd have to use say 0x10000x and
   adjust CBAUD constant and drivers accordingly.
#define B2500000  0x00001010
#define B3000000  0x00001011
#define B3500000  0x00001012
#define B4000000  0x00001013  */
#define TARGET_CIBAUD	  0x100f0000  /* input baud rate (not used) */
#define TARGET_CMSPAR	  0x40000000  /* mark or space (stick) parity */
#define TARGET_CRTSCTS	  0x80000000  /* flow control */

/* c_lflag bits */
#define TARGET_ISIG	0x00000001
#define TARGET_ICANON	0x00000002
#define TARGET_XCASE	0x00000004
#define TARGET_ECHO	0x00000008
#define TARGET_ECHOE	0x00000010
#define TARGET_ECHOK	0x00000020
#define TARGET_ECHONL	0x00000040
#define TARGET_NOFLSH	0x00000080
#define TARGET_TOSTOP	0x00000100
#define TARGET_ECHOCTL	0x00000200
#define TARGET_ECHOPRT	0x00000400
#define TARGET_ECHOKE	0x00000800
#define TARGET_DEFECHO  0x00001000  /* SUNOS thing, what is it? */
#define TARGET_FLUSHO	0x00002000
#define TARGET_PENDIN	0x00004000
#define TARGET_IEXTEN	0x00008000

/* ioctls */

/* Big T */
#define TARGET_TCGETA		TARGET_IOR('T', 1, struct target_termio)
#define TARGET_TCSETA		TARGET_IOW('T', 2, struct target_termio)
#define TARGET_TCSETAW		TARGET_IOW('T', 3, struct target_termio)
#define TARGET_TCSETAF		TARGET_IOW('T', 4, struct target_termio)
#define TARGET_TCSBRK		TARGET_IO('T', 5)
#define TARGET_TCXONC		TARGET_IO('T', 6)
#define TARGET_TCFLSH		TARGET_IO('T', 7)
#define TARGET_TCGETS		TARGET_IOR('T', 8, struct target_termios)
#define TARGET_TCSETS		TARGET_IOW('T', 9, struct target_termios)
#define TARGET_TCSETSW		TARGET_IOW('T', 10, struct target_termios)
#define TARGET_TCSETSF		TARGET_IOW('T', 11, struct target_termios)

/* Note that all the ioctls that are not available in Linux have a
 * double underscore on the front to: a) avoid some programs to
 * thing we support some ioctls under Linux (autoconfiguration stuff)
 */
/* Little t */
#define TARGET_TIOCGETD	TARGET_IOR('t', 0, int)
#define TARGET_TIOCSETD	TARGET_IOW('t', 1, int)
//#define __TIOCHPCL        _IO('t', 2) /* SunOS Specific */
//#define __TIOCMODG        _IOR('t', 3, int) /* SunOS Specific */
//#define __TIOCMODS        _IOW('t', 4, int) /* SunOS Specific */
//#define __TIOCGETP        _IOR('t', 8, struct sgttyb) /* SunOS Specific */
//#define __TIOCSETP        _IOW('t', 9, struct sgttyb) /* SunOS Specific */
//#define __TIOCSETN        _IOW('t', 10, struct sgttyb) /* SunOS Specific */
#define TARGET_TIOCEXCL	TARGET_IO('t', 13)
#define TARGET_TIOCNXCL	TARGET_IO('t', 14)
//#define __TIOCFLUSH       _IOW('t', 16, int) /* SunOS Specific */
//#define __TIOCSETC        _IOW('t', 17, struct tchars) /* SunOS Specific */
//#define __TIOCGETC        _IOR('t', 18, struct tchars) /* SunOS Specific */
//#define __TIOCTCNTL       _IOW('t', 32, int) /* SunOS Specific */
//#define __TIOCSIGNAL      _IOW('t', 33, int) /* SunOS Specific */
//#define __TIOCSETX        _IOW('t', 34, int) /* SunOS Specific */
//#define __TIOCGETX        _IOR('t', 35, int) /* SunOS Specific */
#define TARGET_TIOCCONS	TARGET_IO('t', 36)
//#define __TIOCSSIZE     _IOW('t', 37, struct sunos_ttysize) /* SunOS Specific */
//#define __TIOCGSIZE     _IOR('t', 38, struct sunos_ttysize) /* SunOS Specific */
#define TARGET_TIOCGSOFTCAR	TARGET_IOR('t', 100, int)
#define TARGET_TIOCSSOFTCAR	TARGET_IOW('t', 101, int)
//#define __TIOCUCNTL       _IOW('t', 102, int) /* SunOS Specific */
#define TARGET_TIOCSWINSZ	TARGET_IOW('t', 103, struct winsize)
#define TARGET_TIOCGWINSZ	TARGET_IOR('t', 104, struct winsize)
//#define __TIOCREMOTE      _IOW('t', 105, int) /* SunOS Specific */
#define TARGET_TIOCMGET	TARGET_IOR('t', 106, int)
#define TARGET_TIOCMBIC	TARGET_IOW('t', 107, int)
#define TARGET_TIOCMBIS	TARGET_IOW('t', 108, int)
#define TARGET_TIOCMSET	TARGET_IOW('t', 109, int)
#define TARGET_TIOCSTART       TARGET_IO('t', 110)
#define TARGET_TIOCSTOP        TARGET_IO('t', 111)
#define TARGET_TIOCPKT		TARGET_IOW('t', 112, int)
#define TARGET_TIOCNOTTY	TARGET_IO('t', 113)
#define TARGET_TIOCSTI		TARGET_IOW('t', 114, char)
#define TARGET_TIOCOUTQ	TARGET_IOR('t', 115, int)
//#define __TIOCGLTC        _IOR('t', 116, struct ltchars) /* SunOS Specific */
//#define __TIOCSLTC        _IOW('t', 117, struct ltchars) /* SunOS Specific */
/* 118 is the non-posix setpgrp tty ioctl */
/* 119 is the non-posix getpgrp tty ioctl */
//#define __TIOCCDTR        TARGET_IO('t', 120) /* SunOS Specific */
//#define __TIOCSDTR        TARGET_IO('t', 121) /* SunOS Specific */
#define TARGET_TIOCCBRK        TARGET_IO('t', 122)
#define TARGET_TIOCSBRK        TARGET_IO('t', 123)
//#define __TIOCLGET        TARGET_IOW('t', 124, int) /* SunOS Specific */
//#define __TIOCLSET        TARGET_IOW('t', 125, int) /* SunOS Specific */
//#define __TIOCLBIC        TARGET_IOW('t', 126, int) /* SunOS Specific */
//#define __TIOCLBIS        TARGET_IOW('t', 127, int) /* SunOS Specific */
//#define __TIOCISPACE      TARGET_IOR('t', 128, int) /* SunOS Specific */
//#define __TIOCISIZE       TARGET_IOR('t', 129, int) /* SunOS Specific */
#define TARGET_TIOCSPGRP	TARGET_IOW('t', 130, int)
#define TARGET_TIOCGPGRP	TARGET_IOR('t', 131, int)
#define TARGET_TIOCSCTTY	TARGET_IO('t', 132)
#define TARGET_TIOCGSID	TARGET_IOR('t', 133, int)
/* Get minor device of a pty master's FD -- Solaris equiv is ISPTM */
#define TARGET_TIOCGPTN	TARGET_IOR('t', 134, unsigned int) /* Get Pty Number */
#define TARGET_TIOCSPTLCK	TARGET_IOW('t', 135, int) /* Lock/unlock PTY */

/* Little f */
#define TARGET_FIOCLEX		TARGET_IO('f', 1)
#define TARGET_FIONCLEX	TARGET_IO('f', 2)
#define TARGET_FIOASYNC	TARGET_IOW('f', 125, int)
#define TARGET_FIONBIO		TARGET_IOW('f', 126, int)
#define TARGET_FIONREAD	TARGET_IOR('f', 127, int)
#define TARGET_TIOCINQ		TARGET_FIONREAD

/* SCARY Rutgers local SunOS kernel hackery, perhaps I will support it
 * someday.  This is completely bogus, I know...
 */
//#define __TCGETSTAT       TARGET_IO('T', 200) /* Rutgers specific */
//#define __TCSETSTAT       TARGET_IO('T', 201) /* Rutgers specific */

/* Linux specific, no SunOS equivalent. */
#define TARGET_TIOCLINUX	0x541C
#define TARGET_TIOCGSERIAL	0x541E
#define TARGET_TIOCSSERIAL	0x541F
#define TARGET_TCSBRKP		0x5425
#define TARGET_TIOCTTYGSTRUCT	0x5426
#define TARGET_TIOCSERCONFIG	0x5453
#define TARGET_TIOCSERGWILD	0x5454
#define TARGET_TIOCSERSWILD	0x5455
#define TARGET_TIOCGLCKTRMIOS	0x5456
#define TARGET_TIOCSLCKTRMIOS	0x5457
#define TARGET_TIOCSERGSTRUCT	0x5458 /* For debugging only */
#define TARGET_TIOCSERGETLSR   0x5459 /* Get line status register */
#define TARGET_TIOCSERGETMULTI 0x545A /* Get multiport config  */
#define TARGET_TIOCSERSETMULTI 0x545B /* Set multiport config */
#define TARGET_TIOCMIWAIT	0x545C /* Wait input */
#define TARGET_TIOCGICOUNT	0x545D /* Read serial port inline interrupt counts */