source: rtems/cpukit/libcsupport/include/sys/_termios.h @ 93531e9b

5
Last change on this file since 93531e9b was 93531e9b, checked in by Sebastian Huber <sebastian.huber@…>, on 06/06/17 at 06:03:45

Move RTEMS-specific Termios API content

Remove obsolete support for OFILL, OFDEL, NLDLY, CRDLY, BSDLY, VTDLY,
and FFDLY which is not present on FreeBSD and not implemented in Linux.

Update #2833.

  • Property mode set to 100644
File size: 8.4 KB
Line 
1/*-
2 * Copyright (c) 1988, 1989, 1993, 1994
3 *      The Regents of the University of California.  All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 *    notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 *    notice, this list of conditions and the following disclaimer in the
12 *    documentation and/or other materials provided with the distribution.
13 * 3. Neither the name of the University nor the names of its contributors
14 *    may be used to endorse or promote products derived from this software
15 *    without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 *      @(#)termios.h   8.3 (Berkeley) 3/28/94
30 * $FreeBSD: head/sys/sys/_termios.h 314436 2017-02-28 23:42:47Z imp $
31 */
32
33#ifndef _SYS__TERMIOS_H_
34#define _SYS__TERMIOS_H_
35
36/*
37 * Special Control Characters
38 *
39 * Index into c_cc[] character array.
40 *
41 *      Name         Subscript  Enabled by
42 */
43#define VEOF            0       /* ICANON */
44#define VEOL            1       /* ICANON */
45#if !_POSIX_SOURCE || __rtems__
46#define VEOL2           2       /* ICANON together with IEXTEN */
47#endif
48#define VERASE          3       /* ICANON */
49#if !_POSIX_SOURCE || __rtems__
50#define VWERASE         4       /* ICANON together with IEXTEN */
51#endif
52#define VKILL           5       /* ICANON */
53#if !_POSIX_SOURCE || __rtems__
54#define VREPRINT        6       /* ICANON together with IEXTEN */
55#define VERASE2         7       /* ICANON */
56#endif
57/*                      7          ex-spare 1 */
58#define VINTR           8       /* ISIG */
59#define VQUIT           9       /* ISIG */
60#define VSUSP           10      /* ISIG */
61#if !_POSIX_SOURCE || __rtems__
62#define VDSUSP          11      /* ISIG together with IEXTEN */
63#endif
64#define VSTART          12      /* IXON, IXOFF */
65#define VSTOP           13      /* IXON, IXOFF */
66#if !_POSIX_SOURCE || __rtems__
67#define VLNEXT          14      /* IEXTEN */
68#define VDISCARD        15      /* IEXTEN */
69#endif
70#define VMIN            16      /* !ICANON */
71#define VTIME           17      /* !ICANON */
72#if !_POSIX_SOURCE || __rtems__
73#define VSTATUS         18      /* ICANON together with IEXTEN */
74/*                      19         spare 2 */
75#endif
76#define NCCS            20
77
78#define _POSIX_VDISABLE 0xff
79
80/*
81 * Input flags - software input processing
82 */
83#define IGNBRK          0x00000001      /* ignore BREAK condition */
84#define BRKINT          0x00000002      /* map BREAK to SIGINTR */
85#define IGNPAR          0x00000004      /* ignore (discard) parity errors */
86#define PARMRK          0x00000008      /* mark parity and framing errors */
87#define INPCK           0x00000010      /* enable checking of parity errors */
88#define ISTRIP          0x00000020      /* strip 8th bit off chars */
89#define INLCR           0x00000040      /* map NL into CR */
90#define IGNCR           0x00000080      /* ignore CR */
91#define ICRNL           0x00000100      /* map CR to NL (ala CRMOD) */
92#define IXON            0x00000200      /* enable output flow control */
93#define IXOFF           0x00000400      /* enable input flow control */
94#if !_POSIX_SOURCE || __rtems__
95#define IXANY           0x00000800      /* any char will restart after stop */
96#define IMAXBEL         0x00002000      /* ring bell on input queue full */
97#endif  /*_POSIX_SOURCE */
98/*
99 * Output flags - software output processing
100 */
101#define OPOST           0x00000001      /* enable following output processing */
102#if !_POSIX_SOURCE || __rtems__
103#define ONLCR           0x00000002      /* map NL to CR-NL (ala CRMOD) */
104#ifndef __rtems__
105#define TABDLY          0x00000004      /* tab delay mask */
106#define     TAB0            0x00000000      /* no tab delay and expansion */
107#define     TAB3            0x00000004      /* expand tabs to spaces */
108#define ONOEOT          0x00000008      /* discard EOT's (^D) on output) */
109#define OCRNL           0x00000010      /* map CR to NL on output */
110#define ONOCR           0x00000020      /* no CR output at column 0 */
111#define ONLRET          0x00000040      /* NL performs CR function */
112#else /* __rtems__ */
113#define TABDLY          0x0000000C      /* tab delay mask */
114#define     TAB0            0x00000000      /* no tab delay and expansion */
115#define     TAB1            0x00000004
116#define     TAB2            0x00000008
117#define     TAB3            0x0000000C      /* expand tabs to spaces */
118#define ONOEOT          0x00000010      /* discard EOT's (^D) on output) */
119#define OCRNL           0x00000020      /* map CR to NL on output */
120#define ONOCR           0x00000040      /* no CR output at column 0 */
121#define ONLRET          0x00000080      /* NL performs CR function */
122#endif /* __rtems__ */
123#endif  /*_POSIX_SOURCE */
124
125/*
126 * Control flags - hardware control of terminal
127 */
128#if !_POSIX_SOURCE || __rtems__
129#define CIGNORE         0x00000001      /* ignore control flags */
130#endif
131#define CSIZE           0x00000300      /* character size mask */
132#define     CS5             0x00000000      /* 5 bits (pseudo) */
133#define     CS6             0x00000100      /* 6 bits */
134#define     CS7             0x00000200      /* 7 bits */
135#define     CS8             0x00000300      /* 8 bits */
136#define CSTOPB          0x00000400      /* send 2 stop bits */
137#define CREAD           0x00000800      /* enable receiver */
138#define PARENB          0x00001000      /* parity enable */
139#define PARODD          0x00002000      /* odd parity, else even */
140#define HUPCL           0x00004000      /* hang up on last close */
141#define CLOCAL          0x00008000      /* ignore modem status lines */
142#if !_POSIX_SOURCE || __rtems__
143#define CCTS_OFLOW      0x00010000      /* CTS flow control of output */
144#define CRTSCTS         (CCTS_OFLOW | CRTS_IFLOW)
145#define CRTS_IFLOW      0x00020000      /* RTS flow control of input */
146#define CDTR_IFLOW      0x00040000      /* DTR flow control of input */
147#define CDSR_OFLOW      0x00080000      /* DSR flow control of output */
148#define CCAR_OFLOW      0x00100000      /* DCD flow control of output */
149#endif
150
151
152/*
153 * "Local" flags - dumping ground for other state
154 *
155 * Warning: some flags in this structure begin with
156 * the letter "I" and look like they belong in the
157 * input flag.
158 */
159
160#if !_POSIX_SOURCE || __rtems__
161#define ECHOKE          0x00000001      /* visual erase for line kill */
162#endif  /*_POSIX_SOURCE */
163#define ECHOE           0x00000002      /* visually erase chars */
164#define ECHOK           0x00000004      /* echo NL after line kill */
165#define ECHO            0x00000008      /* enable echoing */
166#define ECHONL          0x00000010      /* echo NL even if ECHO is off */
167#if !_POSIX_SOURCE || __rtems__
168#define ECHOPRT         0x00000020      /* visual erase mode for hardcopy */
169#define ECHOCTL         0x00000040      /* echo control chars as ^(Char) */
170#endif  /*_POSIX_SOURCE */
171#define ISIG            0x00000080      /* enable signals INTR, QUIT, [D]SUSP */
172#define ICANON          0x00000100      /* canonicalize input lines */
173#if !_POSIX_SOURCE || __rtems__
174#define ALTWERASE       0x00000200      /* use alternate WERASE algorithm */
175#endif  /*_POSIX_SOURCE */
176#define IEXTEN          0x00000400      /* enable DISCARD and LNEXT */
177#define EXTPROC         0x00000800      /* external processing */
178#ifdef __rtems__
179#define XCASE           0x00001000      /* visually erase chars */
180#endif /* __rtems__ */
181#define TOSTOP          0x00400000      /* stop background jobs from output */
182#if !_POSIX_SOURCE || __rtems__
183#define FLUSHO          0x00800000      /* output being flushed (state) */
184#define NOKERNINFO      0x02000000      /* no kernel output from VSTATUS */
185#define PENDIN          0x20000000      /* XXX retype pending input (state) */
186#endif  /*_POSIX_SOURCE */
187#define NOFLSH          0x80000000      /* don't flush after interrupt */
188
189/*
190 * Standard speeds
191 */
192#define B0      0
193#define B50     50
194#define B75     75
195#define B110    110
196#define B134    134
197#define B150    150
198#define B200    200
199#define B300    300
200#define B600    600
201#define B1200   1200
202#define B1800   1800
203#define B2400   2400
204#define B4800   4800
205#define B9600   9600
206#define B19200  19200
207#define B38400  38400
208#if !_POSIX_SOURCE || __rtems__
209#define B7200   7200
210#define B14400  14400
211#define B28800  28800
212#define B57600  57600
213#define B76800  76800
214#define B115200 115200
215#define B230400 230400
216#define B460800 460800
217#define B921600 921600
218#define EXTA    19200
219#define EXTB    38400
220#endif  /* !_POSIX_SOURCE */
221
222typedef unsigned int  tcflag_t;
223typedef unsigned char   cc_t;
224typedef unsigned int    speed_t;
225
226struct termios {
227        tcflag_t        c_iflag;        /* input flags */
228        tcflag_t        c_oflag;        /* output flags */
229        tcflag_t        c_cflag;        /* control flags */
230        tcflag_t        c_lflag;        /* local flags */
231        cc_t            c_cc[NCCS];     /* control chars */
232        speed_t         c_ispeed;       /* input speed */
233        speed_t         c_ospeed;       /* output speed */
234};
235
236#endif /* !_SYS__TERMIOS_H_ */
Note: See TracBrowser for help on using the repository browser.