source: rtems/cpukit/libcsupport/include/sys/_termios.h @ 94a4865

5
Last change on this file since 94a4865 was 1c6926c1, checked in by Kevin Kirspel <kevin-kirspel@…>, on 03/21/17 at 19:39:48

termios: Synchronize with latest FreeBSD headers

Adding modified FreeBSD headers to synchronize RTEMS termios with
FreeBSD. Modify termios to support dedicated input and output baud for
termios structure. Updated BSPs to use dedicated input and output baud
in termios structure. Updated tools to use dedicated input and output
baud in termios structure. Updated termios testsuites to use dedicated
input and output baud in termios structure.

Close #2897.

  • Property mode set to 100644
File size: 9.6 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#ifdef __rtems__
99#define IUCLC           0x00004000      /* map upper case to lower case on input */
100#endif /* __rtems__ */
101/*
102 * Output flags - software output processing
103 */
104#define OPOST           0x00000001      /* enable following output processing */
105#if !_POSIX_SOURCE || __rtems__
106#define ONLCR           0x00000002      /* map NL to CR-NL (ala CRMOD) */
107#ifndef __rtems__
108#define TABDLY          0x00000004      /* tab delay mask */
109#define     TAB0            0x00000000      /* no tab delay and expansion */
110#define     TAB3            0x00000004      /* expand tabs to spaces */
111#define ONOEOT          0x00000008      /* discard EOT's (^D) on output) */
112#define OCRNL           0x00000010      /* map CR to NL on output */
113#define ONOCR           0x00000020      /* no CR output at column 0 */
114#define ONLRET          0x00000040      /* NL performs CR function */
115#else /* __rtems__ */
116#define TABDLY          0x0000000C      /* tab delay mask */
117#define     TAB0            0x00000000      /* no tab delay and expansion */
118#define     TAB1            0x00000004
119#define     TAB2            0x00000008
120#define     TAB3            0x0000000C      /* expand tabs to spaces */
121#define     XTABS           0x0000000C
122#define ONOEOT          0x00000010      /* discard EOT's (^D) on output) */
123#define OCRNL           0x00000020      /* map CR to NL on output */
124#define ONOCR           0x00000040      /* no CR output at column 0 */
125#define ONLRET          0x00000080      /* NL performs CR function */
126#define OLCUC           0x00000100      /* map lower case to upper case on output */
127#define OFILL           0x00000200      /* send fill characters for a delay, rather than using a timed delay */
128#define OFDEL           0x00000400      /* fill character is ASCII DEL (0177). if unset, fill character is ASCII NUL ('\0') */
129#define NLDLY           0x00000800      /* newline delay mask */
130#define     NL0     0x00000000
131#define     NL1     0x00000800
132#define CRDLY           0x00003000      /* carriage return delay mask */
133#define     CR0     0x00000000
134#define     CR1     0x00001000
135#define     CR2     0x00002000
136#define     CR3     0x00003000
137#define BSDLY           0x00004000      /* Backspace delay mask */
138#define     BS0     0x00000000
139#define     BS1     0x00004000
140#define VTDLY           0x00008000      /* Vertical tab delay mask */
141#define     VT0     0x00000000
142#define     VT1     0x00008000
143#define FFDLY           0x00010000      /* Form feed delay mask */
144#define     FF0     0x00000000
145#define     FF1     0x00010000
146#endif /* __rtems__ */
147#endif  /*_POSIX_SOURCE */
148
149/*
150 * Control flags - hardware control of terminal
151 */
152#if !_POSIX_SOURCE || __rtems__
153#define CIGNORE         0x00000001      /* ignore control flags */
154#endif
155#define CSIZE           0x00000300      /* character size mask */
156#define     CS5             0x00000000      /* 5 bits (pseudo) */
157#define     CS6             0x00000100      /* 6 bits */
158#define     CS7             0x00000200      /* 7 bits */
159#define     CS8             0x00000300      /* 8 bits */
160#define CSTOPB          0x00000400      /* send 2 stop bits */
161#define CREAD           0x00000800      /* enable receiver */
162#define PARENB          0x00001000      /* parity enable */
163#define PARODD          0x00002000      /* odd parity, else even */
164#define HUPCL           0x00004000      /* hang up on last close */
165#define CLOCAL          0x00008000      /* ignore modem status lines */
166#if !_POSIX_SOURCE || __rtems__
167#define CCTS_OFLOW      0x00010000      /* CTS flow control of output */
168#define CRTSCTS         (CCTS_OFLOW | CRTS_IFLOW)
169#define CRTS_IFLOW      0x00020000      /* RTS flow control of input */
170#define CDTR_IFLOW      0x00040000      /* DTR flow control of input */
171#define CDSR_OFLOW      0x00080000      /* DSR flow control of output */
172#define CCAR_OFLOW      0x00100000      /* DCD flow control of output */
173#endif
174
175
176/*
177 * "Local" flags - dumping ground for other state
178 *
179 * Warning: some flags in this structure begin with
180 * the letter "I" and look like they belong in the
181 * input flag.
182 */
183
184#if !_POSIX_SOURCE || __rtems__
185#define ECHOKE          0x00000001      /* visual erase for line kill */
186#endif  /*_POSIX_SOURCE */
187#define ECHOE           0x00000002      /* visually erase chars */
188#define ECHOK           0x00000004      /* echo NL after line kill */
189#define ECHO            0x00000008      /* enable echoing */
190#define ECHONL          0x00000010      /* echo NL even if ECHO is off */
191#if !_POSIX_SOURCE || __rtems__
192#define ECHOPRT         0x00000020      /* visual erase mode for hardcopy */
193#define ECHOCTL         0x00000040      /* echo control chars as ^(Char) */
194#endif  /*_POSIX_SOURCE */
195#define ISIG            0x00000080      /* enable signals INTR, QUIT, [D]SUSP */
196#define ICANON          0x00000100      /* canonicalize input lines */
197#if !_POSIX_SOURCE || __rtems__
198#define ALTWERASE       0x00000200      /* use alternate WERASE algorithm */
199#endif  /*_POSIX_SOURCE */
200#define IEXTEN          0x00000400      /* enable DISCARD and LNEXT */
201#define EXTPROC         0x00000800      /* external processing */
202#ifdef __rtems__
203#define XCASE           0x00001000      /* visually erase chars */
204#endif /* __rtems__ */
205#define TOSTOP          0x00400000      /* stop background jobs from output */
206#if !_POSIX_SOURCE || __rtems__
207#define FLUSHO          0x00800000      /* output being flushed (state) */
208#define NOKERNINFO      0x02000000      /* no kernel output from VSTATUS */
209#define PENDIN          0x20000000      /* XXX retype pending input (state) */
210#endif  /*_POSIX_SOURCE */
211#define NOFLSH          0x80000000      /* don't flush after interrupt */
212
213/*
214 * Standard speeds
215 */
216#define B0      0
217#define B50     50
218#define B75     75
219#define B110    110
220#define B134    134
221#define B150    150
222#define B200    200
223#define B300    300
224#define B600    600
225#define B1200   1200
226#define B1800   1800
227#define B2400   2400
228#define B4800   4800
229#define B9600   9600
230#define B19200  19200
231#define B38400  38400
232#if !_POSIX_SOURCE || __rtems__
233#define B7200   7200
234#define B14400  14400
235#define B28800  28800
236#define B57600  57600
237#define B76800  76800
238#define B115200 115200
239#define B230400 230400
240#define B460800 460800
241#define B921600 921600
242#define EXTA    19200
243#define EXTB    38400
244#endif  /* !_POSIX_SOURCE */
245
246#ifdef __rtems__
247#define RTEMS_TERMIOS_NUMBER_BAUD_RATES 25
248#endif /* __rtems__ */
249
250typedef unsigned int  tcflag_t;
251typedef unsigned char   cc_t;
252typedef unsigned int    speed_t;
253
254struct termios {
255        tcflag_t        c_iflag;        /* input flags */
256        tcflag_t        c_oflag;        /* output flags */
257        tcflag_t        c_cflag;        /* control flags */
258        tcflag_t        c_lflag;        /* local flags */
259        cc_t            c_cc[NCCS];     /* control chars */
260        speed_t         c_ispeed;       /* input speed */
261        speed_t         c_ospeed;       /* output speed */
262};
263
264#endif /* !_SYS__TERMIOS_H_ */
Note: See TracBrowser for help on using the repository browser.