xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/posix/sys/ttycom.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
1 /**
2  * D header file for POSIX.
3  *
4  * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
5  */
6 
7 module core.sys.posix.sys.ttycom;
8 
9 import core.sys.posix.sys.ioccom;
10 import core.sys.posix.termios;
11 import core.sys.posix.sys.time;
12 
13 version (OSX)
14     version = Darwin;
15 else version (iOS)
16     version = Darwin;
17 else version (TVOS)
18     version = Darwin;
19 else version (WatchOS)
20     version = Darwin;
21 
version(Posix)22 version (Posix):
23 
24 nothrow @nogc:
25 @system:
26 
27 version (Darwin)
28 {
29     struct winsize {
30         ushort  ws_row;     // rows, in characters
31         ushort  ws_col;     // columns, in characters
32         ushort  ws_xpixel;  // horizontal size, pixels
33         ushort  ws_ypixel;  // vertical size, pixels
34     }
35 
36     // Serial/TTY ioctl's
37     enum uint TIOCMODG =  _IOR!(int)('t', 3);  // get modem control state
38     enum uint TIOCMODS =  _IOW!(int)('t', 4);  // set modem control state
39     enum uint       TIOCM_LE  = 0x001;          // line enable
40     enum uint       TIOCM_DTR = 0x002;          // data terminal ready
41     enum uint       TIOCM_RTS = 0x004;          // request to send
42     enum uint       TIOCM_ST  = 0x008;          // secondary transmit
43     enum uint       TIOCM_SR  = 0x010;          // secondary receive
44     enum uint       TIOCM_CTS = 0x020;          // clear to send
45     enum uint       TIOCM_CAR = 0x040;          // carrier detect
46     enum uint       TIOCM_CD  = TIOCM_CAR;
47     enum uint       TIOCM_RNG = 0x080;          // ring
48     enum uint       TIOCM_RI  = TIOCM_RNG;
49     enum uint       TIOCM_DSR = 0x100;          // data set ready
50                             // 8-10 compat
51     enum uint TIOCEXCL  = _IO('t', 13);        // set exclusive use of tty
52     enum uint TIOCNXCL  = _IO('t', 14);        // reset exclusive use of tty
53                             // 15 unused
54     enum uint TIOCFLUSH = _IOW!(int)('t', 16); // flush buffers
55                             // 17-18 compat
56     enum uint TIOCGETA  = _IOR!(termios)('t', 19); // get termios struct
57     enum uint TIOCSETA  = _IOW!(termios)('t', 20); // set termios struct
58     enum uint TIOCSETAW = _IOW!(termios)('t', 21); // drain output, set
59     enum uint TIOCSETAF = _IOW!(termios)('t', 22); // drn out, fls in, set
60     enum uint TIOCGETD  = _IOR!(int)('t', 26); // get line discipline
61     enum uint TIOCSETD  = _IOW!(int)('t', 27); // set line discipline
62     enum uint TIOCIXON  = _IO('t', 129);       // internal input VSTART
63     enum uint TIOCIXOFF = _IO('t', 128);       // internal input VSTOP
64                             // 127-124 compat
65     enum uint TIOCSBRK  = _IO('t', 123);       // set break bit
66     enum uint TIOCCBRK  = _IO('t', 122);       // clear break bit
67     enum uint TIOCSDTR  = _IO('t', 121);       // set data terminal ready
68     enum uint TIOCCDTR  = _IO('t', 120);       // clear data terminal ready
69     enum uint TIOCGPGRP = _IOR!(int)('t', 119); // get pgrp of tty
70     enum uint TIOCSPGRP = _IOW!(int)('t', 118); // set pgrp of tty
71                             // 117-116 compat
72     enum uint TIOCOUTQ  = _IOR!(int)('t', 115); // output queue size
73     enum uint TIOCSTI   = _IOW!(char)('t', 114);// simulate terminal input
74     enum uint TIOCNOTTY = _IO('t', 113);        // void tty association
75     enum uint TIOCPKT   = _IOW!(int)('t', 112); // pty: set/clear packet mode
76     enum uint   TIOCPKT_DATA       = 0x00;     // data packet
77     enum uint   TIOCPKT_FLUSHREAD  = 0x01;     // flush packet
78     enum uint   TIOCPKT_FLUSHWRITE = 0x02;     // flush packet
79     enum uint   TIOCPKT_STOP       = 0x04;     // stop output
80     enum uint   TIOCPKT_START      = 0x08;     // start output
81     enum uint   TIOCPKT_NOSTOP     = 0x10;     // no more ^S, ^Q
82     enum uint   TIOCPKT_DOSTOP     = 0x20;     // now do ^S ^Q
83     enum uint   TIOCPKT_IOCTL      = 0x40;     // state change of pty driver
84     enum uint TIOCSTOP   = _IO('t', 111);      // stop output, like ^S
85     enum uint TIOCSTART  = _IO('t', 110);      // start output, like ^Q
86     enum uint TIOCMSET   = _IOW!(int)('t', 109); // set all modem bits
87     enum uint TIOCMBIS   = _IOW!(int)('t', 108); // bis modem bits
88     enum uint TIOCMBIC   = _IOW!(int)('t', 107); // bic modem bits
89     enum uint TIOCMGET   = _IOR!(int)('t', 106); // get all modem bits
90     enum uint TIOCREMOTE = _IOW!(int)('t', 105); // remote input editing
91     enum uint TIOCGWINSZ = _IOR!(winsize)('t', 104);  // get window size
92     enum uint TIOCSWINSZ = _IOW!(winsize)('t', 103);  // set window size
93     enum uint TIOCUCNTL  = _IOW!(int)('t', 102); // pty: set/clr usr cntl mode
94     enum uint TIOCSTAT   = _IO('t', 101);      // simulate ^T status message
95     enum uint   UIOCCMD(n) = _IO('u', n);      // usr cntl op "n"
96     enum uint TIOCSCONS = _IO('t', 99);        // 4.2 compatibility
97     enum uint TIOCCONS  = _IOW!(int)('t', 98); // become virtual console
98     enum uint TIOCSCTTY = _IO('t', 97);        // become controlling tty
99     enum uint TIOCEXT   = _IOW!(int)('t', 96); // pty: external processing
100     enum uint TIOCSIG   =   _IO('t', 95);      // pty: generate signal
101     enum uint TIOCDRAIN =   _IO('t', 94);      // wait till output drained
102     enum uint TIOCMSDTRWAIT =  _IOW!(int)('t', 91);  // modem: set wait on close
103     enum uint TIOCMGDTRWAIT =  _IOR!(int)('t', 90);  // modem: get wait on close
104     enum uint TIOCTIMESTAMP =  _IOR!(timeval)('t', 89);   // enable/get timestamp
105                                                           // of last input event
106     enum uint TIOCDCDTIMESTAMP = _IOR!(timeval)('t', 88); // enable/get timestamp
107                                                           // of last DCd rise
108     enum uint TIOCSDRAINWAIT   = _IOW!(int)('t', 87); // set ttywait timeout
109     enum uint TIOCGDRAINWAIT   = _IOR!(int)('t', 86); // get ttywait timeout
110     enum uint TIOCDSIMICROCODE = _IO('t', 85);        // download microcode to
111                                                       // DSI Softmodem
112     enum uint TIOCPTYGRANT  =  _IO('t', 84);   // grantpt(3)
113     enum uint TIOCPTYGNAME  =  _IOC(IOC_OUT, 't', 83, 128); // ptsname(3)
114     enum uint TIOCPTYUNLK   =  _IO('t', 82);   // unlockpt(3)
115 
116     enum uint TTYDISC  = 0;       // termios tty line discipline
117     enum uint TABLDISC = 3;       // tablet discipline
118     enum uint SLIPDISC = 4;       // serial IP discipline
119     enum uint PPPDISC  = 5;       // PPP discipline
120 }
version(FreeBSD)121 else version (FreeBSD)
122 {
123     struct winsize {
124         ushort  ws_row;     // rows, in characters
125         ushort  ws_col;     // columns, in characters
126         ushort  ws_xpixel;  // horizontal size, pixels
127         ushort  ws_ypixel;  // vertical size, pixels
128     }
129 
130     // Serial/TTY ioctl's
131                                                // 0-2 compat
132                                                // 3-7 unused
133                                                // 8-10 compat
134                                                // 11-12 unused
135     enum uint TIOCEXCL  = _IO('t', 13);        // set exclusive use of tty
136     enum uint TIOCNXCL  = _IO('t', 14);        // reset exclusive use of tty
137     enum uint TIOCGPTN  = _IOR!(int)('t', 15); // get pts number
138     enum uint TIOCFLUSH = _IOW!(int)('t', 16); // flush buffers
139                             // 17-18 compat
140     enum uint TIOCGETA  = _IOR!(termios)('t', 19); // get termios struct
141     enum uint TIOCSETA  = _IOW!(termios)('t', 20); // set termios struct
142     enum uint TIOCSETAW = _IOW!(termios)('t', 21); // drain output, set
143     enum uint TIOCSETAF = _IOW!(termios)('t', 22); // drn out, fls in, set
144                             // 23-25 unused
145     enum uint TIOCGETD  = _IOR!(int)('t', 26); // get line discipline
146     enum uint TIOCSETD  = _IOW!(int)('t', 27); // set line discipline
147     enum uint TIOCPTMASTER = _IO('t', 28);     // pts master validation
148                             // 29-85 unused
149     enum uint TIOCGDRAINWAIT = _IOR!(int)('t', 86); // get ttywait timeout
150     enum uint TIOCSDRAINWAIT = _IOW!(int)('t', 87); // set ttywait timeout
151                             // 88 unused
152                             // 89-91 conflicts: tun and tap
153     enum uint TIOCTIMESTAMP = _IOR!(timeval)('t', 89); // enable/get timestamp of last input event
154     enum uint TIOCMGDTRWAIT = _IOR!(int)('t', 90); // modem: get wait on close
155     enum uint TIOCMSDTRWAIT = _IOW!(int)('t', 91); // modem: set wait on close
156                             // 92-93 tun and tap
157                             // 94-97 conflicts: tun and tap
158     enum uint TIOCDRAIN = _IO('t', 94); // wait till output drained
159     enum uint TIOCSIG   = _IOWINT('t', 95); // pty: generate signal
160     enum uint TIOCEXT   = _IOW!(int)('t', 96); // pty: external processing
161     enum uint TIOCSCTTY = _IO('t', 97);        // become controlling tty
162     enum uint TIOCCONS  = _IOW!(int)('t', 98); // become virtual console
163     enum uint TIOCGSID  = _IOR!(int)('t', 99); // get session id
164                             // 100 unused
165     enum uint TIOCSTAT  = _IO('t', 101);       // simulate ^T status message
166     enum uint TIOCUCNTL = _IOW!(int)('t', 102); // pty: set/clr usr cntl mode
167     enum uint   UIOCCMD(n) = _IO('u', n);       // usr cntl op "n"
168     enum uint TIOCSWINSZ = _IOW!(winsize)('t', 103); // set window size
169     enum uint TIOCGWINSZ = _IOR!(winsize)('t', 104); // get window size
170                             // 105 unused
171     enum uint TIOCMGET  = _IOR!(int)('t', 106); // get all modem bits
172     enum uint   TIOCM_LE  = 0x01;               // line enable
173     enum uint   TIOCM_DTR = 0x02;               // data terminal ready
174     enum uint   TIOCM_RTS = 0x04;               // request to send
175     enum uint   TIOCM_ST  = 0x08;               // secondary transmit
176     enum uint   TIOCM_SR  = 0x10;               // secondary receive
177     enum uint   TIOCM_CTS = 0x20;               // clear to send
178     enum uint   TIOCM_DCD = 0x40;               // data carrier detect
179     enum uint   TIOCM_RI  = 0x80;               // ring indicate
180     enum uint   TIOCM_DSR = 0x100;              // data set ready
181     enum uint   TIOCM_CD  = TIOCM_DCD;
182     enum uint   TIOCM_CAR = TIOCM_DCD;
183     enum uint   TIOCM_RNG = TIOCM_RI;
184     enum uint TIOCMBIC  = _IOW!(int)('t', 107); // bic modem bits
185     enum uint TIOCMBIS  = _IOW!(int)('t', 108); // bis modem bits
186     enum uint TIOCMSET  = _IOW!(int)('t', 109); // set all modem bits
187     enum uint TIOCSTART = _IO('t', 110);        // start output like ^Q
188     enum uint TIOCSTOP  = _IO('t', 111);        // stop output like ^S
189     enum uint TIOCPKT   = _IOW!(int)('t', 112); // pty: set/clr packet mode
190     enum uint TIOCPKT_DATA       = 0x00;        // data packet
191     enum uint TIOCPKT_FLUSHREAD  = 0x01;        // flush packet
192     enum uint TIOCPKT_FLUSHWRITE = 0x02;        // flush packet
193     enum uint TIOCPKT_STOP       = 0x04;        // stop output
194     enum uint TIOCPKT_START      = 0x08;        // start output
195     enum uint TIOCPKT_NOSTOP     = 0x10;        // no more ^S, ^Q
196     enum uint TIOCPKT_DOSTOP     = 0x20;        // now do ^S, ^Q
197     enum uint TIOCPKT_IOCTL      = 0x40;        // state change of pty driver
198     enum uint TIOCNOTTY = _IO('t', 113);        // void tty association
199     enum uint TIOCSTI   = _IOW!(char)('t', 114); // simulate terminal input
200     enum uint TIOCOUTQ  = _IOR!(int)('t', 115); // output queue size
201                              // 116-117 compat
202     enum uint TIOCSPGRP = _IOW!(int)('t', 118); // set pgrp of tty
203     enum uint TIOCGPGRP = _IOR!(int)('t', 119); // get pgrp of tty
204 
205     enum uint TIOCCDTR  = _IO('t', 120);       // clear data terminal ready
206     enum uint TIOCSDTR  = _IO('t', 121);       // set data terminal ready
207     enum uint TIOCCBRK  = _IO('t', 122);       // clear break bit
208     enum uint TIOCSBRK  = _IO('t', 123);       // set break bit
209                             // 124-127 compat
210 
211     enum uint TTYDISC  = 0;       // termios tty line discipline
212     enum uint SLIPDISC = 4;       // serial IP discipline
213     enum uint PPPDISC  = 5;       // PPP discipline
214     enum uint NETGRAPHDISC = 6;   // Netgraph tty node discipline
215     enum uint H4DISC   = 7;       // Netgraph Blutooth H4 discipline
216 }
version(OpenBSD)217 else version (OpenBSD)
218 {
219     struct winsize {
220         ushort  ws_row;     // rows, in characters
221         ushort  ws_col;     // columns, in characters
222         ushort  ws_xpixel;  // horizontal size, pixels
223         ushort  ws_ypixel;  // vertical size, pixels
224     }
225 
226     struct tstamps {
227         int ts_set;         // TIOCM_CAR and/or TIOCM_CTS
228         int ts_clr;
229     }
230 
231     // Serial/TTY ioctl's
232                                                // 0-2 compat
233                                                // 3-7 unused
234                                                // 8-10 compat
235                                                // 11-12 unused
236     enum uint TIOCEXCL  = _IO('t', 13);        // set exclusive use of tty
237     enum uint TIOCNXCL  = _IO('t', 14);        // reset exclusive use of tty
238     enum uint TIOCFLUSH = _IOW!(int)('t', 16); // flush buffers
239                             // 17-18 compat
240     enum uint TIOCGETA  = _IOR!(termios)('t', 19); // get termios struct
241     enum uint TIOCSETA  = _IOW!(termios)('t', 20); // set termios struct
242     enum uint TIOCSETAW = _IOW!(termios)('t', 21); // drain output, set
243     enum uint TIOCSETAF = _IOW!(termios)('t', 22); // drn out, fls in, set
244                             // 23-25 unused
245     enum uint TIOCGETD  = _IOR!(int)('t', 26); // get line discipline
246     enum uint TIOCSETD  = _IOW!(int)('t', 27); // set line discipline
247     enum uint TIOCSETVERAUTH = _IOW!(int)('t', 28);     // set verified auth
248     enum uint TIOCCLRVERAUTH = _IO('t', 29);     // clear verified auth
249     enum uint TIOCCHKVERAUTH = _IO('t', 30);     // check verified auth
250                             // 31-89 unused
251     enum uint TIOCSTSTAMP = _IOW!(tstamps)('t', 90); // timestamp reasons
252     enum uint TIOCGTSTAMP = _IOR!(timeval)('t', 91); // get timestamp
253                             // 92-93 device flags
254     enum uint TIOCSFLAGS = _IOW!(int)('t', 92); // set device flags
255     enum uint TIOCGFLAGS = _IOR!(int)('t', 93); // get device flags
256                             // 94-97 conflicts: tun and tap
257     enum uint TIOCDRAIN = _IO('t', 94); // wait till output drained
258     enum uint TIOCSIG   = _IOW!(int)('t', 95); // pty: generate signal
259     enum uint TIOCEXT   = _IOW!(int)('t', 96); // pty: external processing
260     enum uint TIOCSCTTY = _IO('t', 97);        // become controlling tty
261     enum uint TIOCCONS  = _IOW!(int)('t', 98); // become virtual console
262     enum uint TIOCGSID  = _IOR!(int)('t', 99); // get session id
263                             // 100 unused
264     enum uint TIOCSTAT  = _IO('t', 101);       // simulate ^T status message
265     enum uint TIOCUCNTL = _IOW!(int)('t', 102); // pty: set/clr usr cntl mode
266     enum uint   UIOCCMD(n) = _IO('u', n);       // usr cntl op "n"
267     enum uint TIOCSWINSZ = _IOW!(winsize)('t', 103); // set window size
268     enum uint TIOCGWINSZ = _IOR!(winsize)('t', 104); // get window size
269     enum uint TIOCREMOTE = _IOW!(int)('t', 105); // remote input editing
270     enum uint TIOCMGET  = _IOR!(int)('t', 106); // get all modem bits
271     enum uint   TIOCM_LE  = 0x01;               // line enable
272     enum uint   TIOCM_DTR = 0x02;               // data terminal ready
273     enum uint   TIOCM_RTS = 0x04;               // request to send
274     enum uint   TIOCM_ST  = 0x08;               // secondary transmit
275     enum uint   TIOCM_SR  = 0x10;               // secondary receive
276     enum uint   TIOCM_CTS = 0x20;               // clear to send
277     enum uint   TIOCM_CAR = 0x40;               // carrier detect
278     enum uint   TIOCM_RNG = 0x80;               // ring
279     enum uint   TIOCM_DSR = 0x100;              // data set ready
280     enum uint   TIOCM_CD  = TIOCM_CAR;
281     enum uint   TIOCM_RI = TIOCM_RNG;
282     enum uint TIOCMBIC  = _IOW!(int)('t', 107); // bic modem bits
283     enum uint TIOCMBIS  = _IOW!(int)('t', 108); // bis modem bits
284     enum uint TIOCMSET  = _IOW!(int)('t', 109); // set all modem bits
285     enum uint TIOCSTART = _IO('t', 110);        // start output like ^Q
286     enum uint TIOCSTOP  = _IO('t', 111);        // stop output like ^S
287     enum uint TIOCPKT   = _IOW!(int)('t', 112); // pty: set/clr packet mode
288     enum uint TIOCPKT_DATA       = 0x00;        // data packet
289     enum uint TIOCPKT_FLUSHREAD  = 0x01;        // flush packet
290     enum uint TIOCPKT_FLUSHWRITE = 0x02;        // flush packet
291     enum uint TIOCPKT_STOP       = 0x04;        // stop output
292     enum uint TIOCPKT_START      = 0x08;        // start output
293     enum uint TIOCPKT_NOSTOP     = 0x10;        // no more ^S, ^Q
294     enum uint TIOCPKT_DOSTOP     = 0x20;        // now do ^S, ^Q
295     enum uint TIOCPKT_IOCTL      = 0x40;        // state change of pty driver
296     enum uint TIOCNOTTY = _IO('t', 113);        // void tty association
297                              // 114 unused
298     enum uint TIOCOUTQ  = _IOR!(int)('t', 115); // output queue size
299                              // 116-117 compat
300     enum uint TIOCSPGRP = _IOW!(int)('t', 118); // set pgrp of tty
301     enum uint TIOCGPGRP = _IOR!(int)('t', 119); // get pgrp of tty
302 
303     enum uint TIOCCDTR  = _IO('t', 120);       // clear data terminal ready
304     enum uint TIOCSDTR  = _IO('t', 121);       // set data terminal ready
305     enum uint TIOCCBRK  = _IO('t', 122);       // clear break bit
306     enum uint TIOCSBRK  = _IO('t', 123);       // set break bit
307                             // 124-127 compat
308 
309     enum uint TTYDISC  = 0;       // termios tty line discipline
310     enum uint TABLDISC = 3;       // tablet description
311     enum uint SLIPDISC = 4;       // serial IP discipline
312     enum uint PPPDISC  = 5;       // PPP discipline
313     enum uint STRIPDISC = 6;      // metricom wireless IP discipline
314     enum uint NMEADISC = 7;       // NMEA0183 discipline
315     enum uint MSTSDISC = 8;       // Meinberg time string discipline
316     enum uint ENDRUNDISC = 9;     // Endrun time format discipline
317 }
318