---
 cpukit/libcsupport/include/sys/_termios.h    | 264 +++++++++++++++++++++++++++
 cpukit/libcsupport/include/sys/ttydefaults.h | 111 +++++++++++
 cpukit/libcsupport/src/cfmakesane.c          |  66 +++++++
 3 files changed, 441 insertions(+)
 create mode 100644 cpukit/libcsupport/include/sys/_termios.h
 create mode 100644 cpukit/libcsupport/include/sys/ttydefaults.h
 create mode 100644 cpukit/libcsupport/src/cfmakesane.c

diff --git a/cpukit/libcsupport/include/sys/_termios.h 
b/cpukit/libcsupport/include/sys/_termios.h
new file mode 100644
index 0000000..92f2c54
--- /dev/null
+++ b/cpukit/libcsupport/include/sys/_termios.h
@@ -0,0 +1,264 @@
+/*-
+ * Copyright (c) 1988, 1989, 1993, 1994
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *     @(#)termios.h   8.3 (Berkeley) 3/28/94
+ * $FreeBSD: head/sys/sys/_termios.h 314436 2017-02-28 23:42:47Z imp $
+ */
+
+#ifndef _SYS__TERMIOS_H_
+#define        _SYS__TERMIOS_H_
+
+/*
+ * Special Control Characters
+ *
+ * Index into c_cc[] character array.
+ *
+ *     Name         Subscript  Enabled by
+ */
+#define        VEOF            0       /* ICANON */
+#define        VEOL            1       /* ICANON */
+#if !_POSIX_SOURCE || __rtems__
+#define        VEOL2           2       /* ICANON together with IEXTEN */
+#endif
+#define        VERASE          3       /* ICANON */
+#if !_POSIX_SOURCE || __rtems__
+#define        VWERASE         4       /* ICANON together with IEXTEN */
+#endif
+#define        VKILL           5       /* ICANON */
+#if !_POSIX_SOURCE || __rtems__
+#define        VREPRINT        6       /* ICANON together with IEXTEN */
+#define        VERASE2         7       /* ICANON */
+#endif
+/*                     7          ex-spare 1 */
+#define        VINTR           8       /* ISIG */
+#define        VQUIT           9       /* ISIG */
+#define        VSUSP           10      /* ISIG */
+#if !_POSIX_SOURCE || __rtems__
+#define        VDSUSP          11      /* ISIG together with IEXTEN */
+#endif
+#define        VSTART          12      /* IXON, IXOFF */
+#define        VSTOP           13      /* IXON, IXOFF */
+#if !_POSIX_SOURCE || __rtems__
+#define        VLNEXT          14      /* IEXTEN */
+#define        VDISCARD        15      /* IEXTEN */
+#endif
+#define        VMIN            16      /* !ICANON */
+#define        VTIME           17      /* !ICANON */
+#if !_POSIX_SOURCE || __rtems__
+#define        VSTATUS         18      /* ICANON together with IEXTEN */
+/*                     19         spare 2 */
+#endif
+#define        NCCS            20
+
+#define        _POSIX_VDISABLE 0xff
+
+/*
+ * Input flags - software input processing
+ */
+#define        IGNBRK          0x00000001      /* ignore BREAK condition */
+#define        BRKINT          0x00000002      /* map BREAK to SIGINTR */
+#define        IGNPAR          0x00000004      /* ignore (discard) parity 
errors */
+#define        PARMRK          0x00000008      /* mark parity and framing 
errors */
+#define        INPCK           0x00000010      /* enable checking of parity 
errors */
+#define        ISTRIP          0x00000020      /* strip 8th bit off chars */
+#define        INLCR           0x00000040      /* map NL into CR */
+#define        IGNCR           0x00000080      /* ignore CR */
+#define        ICRNL           0x00000100      /* map CR to NL (ala CRMOD) */
+#define        IXON            0x00000200      /* enable output flow control */
+#define        IXOFF           0x00000400      /* enable input flow control */
+#if !_POSIX_SOURCE || __rtems__
+#define        IXANY           0x00000800      /* any char will restart after 
stop */
+#define        IMAXBEL         0x00002000      /* ring bell on input queue 
full */
+#endif  /*_POSIX_SOURCE */
+#ifdef __rtems__
+#define        IUCLC           0x00004000      /* map upper case to lower case 
on input */
+#endif /* __rtems__ */
+/*
+ * Output flags - software output processing
+ */
+#define        OPOST           0x00000001      /* enable following output 
processing */
+#if !_POSIX_SOURCE || __rtems__
+#define        ONLCR           0x00000002      /* map NL to CR-NL (ala CRMOD) 
*/
+#ifndef __rtems__
+#define        TABDLY          0x00000004      /* tab delay mask */
+#define            TAB0            0x00000000      /* no tab delay and 
expansion */
+#define            TAB3            0x00000004      /* expand tabs to spaces */
+#define        ONOEOT          0x00000008      /* discard EOT's (^D) on 
output) */
+#define        OCRNL           0x00000010      /* map CR to NL on output */
+#define        ONOCR           0x00000020      /* no CR output at column 0 */
+#define        ONLRET          0x00000040      /* NL performs CR function */
+#else /* __rtems__ */
+#define        TABDLY          0x0000000C      /* tab delay mask */
+#define            TAB0            0x00000000      /* no tab delay and 
expansion */
+#define            TAB1            0x00000004
+#define            TAB2            0x00000008
+#define            TAB3            0x0000000C      /* expand tabs to spaces */
+#define            XTABS           0x0000000C
+#define        ONOEOT          0x00000010      /* discard EOT's (^D) on 
output) */
+#define        OCRNL           0x00000020      /* map CR to NL on output */
+#define        ONOCR           0x00000040      /* no CR output at column 0 */
+#define        ONLRET          0x00000080      /* NL performs CR function */
+#define        OLCUC           0x00000100      /* map lower case to upper case 
on output */
+#define        OFILL           0x00000200      /* send fill characters for a 
delay, rather than using a timed delay */
+#define        OFDEL           0x00000400      /* fill character is ASCII DEL 
(0177). if unset, fill character is ASCII NUL ('\0') */
+#define        NLDLY           0x00000800      /* newline delay mask */
+#define            NL0     0x00000000
+#define            NL1     0x00000800
+#define        CRDLY           0x00003000      /* carriage return delay mask */
+#define            CR0     0x00000000
+#define            CR1     0x00001000
+#define            CR2     0x00002000
+#define            CR3     0x00003000
+#define        BSDLY           0x00004000      /* Backspace delay mask */
+#define            BS0     0x00000000
+#define            BS1     0x00004000
+#define        VTDLY           0x00008000      /* Vertical tab delay mask */
+#define            VT0     0x00000000
+#define            VT1     0x00008000
+#define        FFDLY           0x00010000      /* Form feed delay mask */
+#define            FF0     0x00000000
+#define            FF1     0x00010000
+#endif /* __rtems__ */
+#endif  /*_POSIX_SOURCE */
+
+/*
+ * Control flags - hardware control of terminal
+ */
+#if !_POSIX_SOURCE || __rtems__
+#define        CIGNORE         0x00000001      /* ignore control flags */
+#endif
+#define        CSIZE           0x00000300      /* character size mask */
+#define            CS5             0x00000000      /* 5 bits (pseudo) */
+#define            CS6             0x00000100      /* 6 bits */
+#define            CS7             0x00000200      /* 7 bits */
+#define            CS8             0x00000300      /* 8 bits */
+#define        CSTOPB          0x00000400      /* send 2 stop bits */
+#define        CREAD           0x00000800      /* enable receiver */
+#define        PARENB          0x00001000      /* parity enable */
+#define        PARODD          0x00002000      /* odd parity, else even */
+#define        HUPCL           0x00004000      /* hang up on last close */
+#define        CLOCAL          0x00008000      /* ignore modem status lines */
+#if !_POSIX_SOURCE || __rtems__
+#define        CCTS_OFLOW      0x00010000      /* CTS flow control of output */
+#define        CRTSCTS         (CCTS_OFLOW | CRTS_IFLOW)
+#define        CRTS_IFLOW      0x00020000      /* RTS flow control of input */
+#define        CDTR_IFLOW      0x00040000      /* DTR flow control of input */
+#define        CDSR_OFLOW      0x00080000      /* DSR flow control of output */
+#define        CCAR_OFLOW      0x00100000      /* DCD flow control of output */
+#endif
+
+
+/*
+ * "Local" flags - dumping ground for other state
+ *
+ * Warning: some flags in this structure begin with
+ * the letter "I" and look like they belong in the
+ * input flag.
+ */
+
+#if !_POSIX_SOURCE || __rtems__
+#define        ECHOKE          0x00000001      /* visual erase for line kill */
+#endif  /*_POSIX_SOURCE */
+#define        ECHOE           0x00000002      /* visually erase chars */
+#define        ECHOK           0x00000004      /* echo NL after line kill */
+#define        ECHO            0x00000008      /* enable echoing */
+#define        ECHONL          0x00000010      /* echo NL even if ECHO is off 
*/
+#if !_POSIX_SOURCE || __rtems__
+#define        ECHOPRT         0x00000020      /* visual erase mode for 
hardcopy */
+#define        ECHOCTL         0x00000040      /* echo control chars as 
^(Char) */
+#endif  /*_POSIX_SOURCE */
+#define        ISIG            0x00000080      /* enable signals INTR, QUIT, 
[D]SUSP */
+#define        ICANON          0x00000100      /* canonicalize input lines */
+#if !_POSIX_SOURCE || __rtems__
+#define        ALTWERASE       0x00000200      /* use alternate WERASE 
algorithm */
+#endif  /*_POSIX_SOURCE */
+#define        IEXTEN          0x00000400      /* enable DISCARD and LNEXT */
+#define        EXTPROC         0x00000800      /* external processing */
+#ifdef __rtems__
+#define        XCASE           0x00001000      /* visually erase chars */
+#endif /* __rtems__ */
+#define        TOSTOP          0x00400000      /* stop background jobs from 
output */
+#if !_POSIX_SOURCE || __rtems__
+#define        FLUSHO          0x00800000      /* output being flushed (state) 
*/
+#define        NOKERNINFO      0x02000000      /* no kernel output from 
VSTATUS */
+#define        PENDIN          0x20000000      /* XXX retype pending input 
(state) */
+#endif  /*_POSIX_SOURCE */
+#define        NOFLSH          0x80000000      /* don't flush after interrupt 
*/
+
+/*
+ * Standard speeds
+ */
+#define        B0      0
+#define        B50     50
+#define        B75     75
+#define        B110    110
+#define        B134    134
+#define        B150    150
+#define        B200    200
+#define        B300    300
+#define        B600    600
+#define        B1200   1200
+#define        B1800   1800
+#define        B2400   2400
+#define        B4800   4800
+#define        B9600   9600
+#define        B19200  19200
+#define        B38400  38400
+#if !_POSIX_SOURCE || __rtems__
+#define        B7200   7200
+#define        B14400  14400
+#define        B28800  28800
+#define        B57600  57600
+#define        B76800  76800
+#define        B115200 115200
+#define        B230400 230400
+#define        B460800 460800
+#define        B921600 921600
+#define        EXTA    19200
+#define        EXTB    38400
+#endif  /* !_POSIX_SOURCE */
+
+#ifdef __rtems__
+#define RTEMS_TERMIOS_NUMBER_BAUD_RATES 25
+#endif /* __rtems__ */
+
+typedef unsigned int  tcflag_t;
+typedef unsigned char  cc_t;
+typedef unsigned int   speed_t;
+
+struct termios {
+       tcflag_t        c_iflag;        /* input flags */
+       tcflag_t        c_oflag;        /* output flags */
+       tcflag_t        c_cflag;        /* control flags */
+       tcflag_t        c_lflag;        /* local flags */
+       cc_t            c_cc[NCCS];     /* control chars */
+       speed_t         c_ispeed;       /* input speed */
+       speed_t         c_ospeed;       /* output speed */
+};
+
+#endif /* !_SYS__TERMIOS_H_ */
diff --git a/cpukit/libcsupport/include/sys/ttydefaults.h 
b/cpukit/libcsupport/include/sys/ttydefaults.h
new file mode 100644
index 0000000..29464d0
--- /dev/null
+++ b/cpukit/libcsupport/include/sys/ttydefaults.h
@@ -0,0 +1,111 @@
+/*-
+ * Copyright (c) 1982, 1986, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *     @(#)ttydefaults.h       8.4 (Berkeley) 1/21/94
+ * $FreeBSD: head/sys/sys/ttydefaults.h 314436 2017-02-28 23:42:47Z imp $
+ */
+
+/*
+ * System wide defaults for terminal state.
+ */
+#ifndef _SYS_TTYDEFAULTS_H_
+#define        _SYS_TTYDEFAULTS_H_
+
+/*
+ * Defaults on "first" open.
+ */
+#define        TTYDEF_IFLAG    (BRKINT | ICRNL | IMAXBEL | IXON | IXANY)
+#define        TTYDEF_OFLAG    (OPOST | ONLCR)
+#define        TTYDEF_LFLAG_NOECHO (ICANON | ISIG | IEXTEN)
+#define        TTYDEF_LFLAG_ECHO (TTYDEF_LFLAG_NOECHO \
+       | ECHO | ECHOE | ECHOKE | ECHOCTL)
+#define        TTYDEF_LFLAG TTYDEF_LFLAG_ECHO
+#define        TTYDEF_CFLAG    (CREAD | CS8 | HUPCL)
+#define        TTYDEF_SPEED    (B9600)
+
+/*
+ * Control Character Defaults
+ */
+/*
+ * XXX: A lot of code uses lowercase characters, but control-character
+ * conversion is actually only valid when applied to uppercase
+ * characters. We just treat lowercase characters as if they were
+ * inserted as uppercase.
+ */
+#define        CTRL(x) ((x) >= 'a' && (x) <= 'z' ? \
+       ((x) - 'a' + 1) : (((x) - 'A' + 1) & 0x7f))
+#define        CEOF            CTRL('D')
+#define        CEOL            0xff            /* XXX avoid _POSIX_VDISABLE */
+#define        CERASE          CTRL('?')
+#define        CERASE2         CTRL('H')
+#define        CINTR           CTRL('C')
+#define        CSTATUS         CTRL('T')
+#define        CKILL           CTRL('U')
+#define        CMIN            1
+#define        CQUIT           CTRL('\\')
+#define        CSUSP           CTRL('Z')
+#define        CTIME           0
+#define        CDSUSP          CTRL('Y')
+#define        CSTART          CTRL('Q')
+#define        CSTOP           CTRL('S')
+#define        CLNEXT          CTRL('V')
+#define        CDISCARD        CTRL('O')
+#define        CWERASE         CTRL('W')
+#define        CREPRINT        CTRL('R')
+#define        CEOT            CEOF
+/* compat */
+#define        CBRK            CEOL
+#define        CRPRNT          CREPRINT
+#define        CFLUSH          CDISCARD
+
+/* PROTECTED INCLUSION ENDS HERE */
+#endif /* !_SYS_TTYDEFAULTS_H_ */
+
+/*
+ * #define TTYDEFCHARS to include an array of default control characters.
+ */
+#ifdef TTYDEFCHARS
+
+#include <sys/cdefs.h>
+#include <sys/_termios.h>
+
+static const cc_t ttydefchars[] = {
+       CEOF, CEOL, CEOL, CERASE, CWERASE, CKILL, CREPRINT, CERASE2, CINTR,
+       CQUIT, CSUSP, CDSUSP, CSTART, CSTOP, CLNEXT, CDISCARD, CMIN, CTIME,
+       CSTATUS, _POSIX_VDISABLE
+};
+_Static_assert(sizeof(ttydefchars) / sizeof(cc_t) == NCCS,
+    "Size of ttydefchars does not match NCCS");
+
+#undef TTYDEFCHARS
+#endif /* TTYDEFCHARS */
diff --git a/cpukit/libcsupport/src/cfmakesane.c 
b/cpukit/libcsupport/src/cfmakesane.c
new file mode 100644
index 0000000..e44fd6a
--- /dev/null
+++ b/cpukit/libcsupport/src/cfmakesane.c
@@ -0,0 +1,66 @@
+/*  @file
+ *
+ *  @brief Baud Rate Functions
+ *  @ingroup Termios
+ */
+
+/*
+ * Copyright (c) 1989, 1993
+ *  The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <rtems.h>
+#if defined(RTEMS_NEWLIB)
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
+#define TTYDEFCHARS
+#include <termios.h>
+
+/*
+ * Obtain a termios structure which is similar to the one provided by
+ * the kernel.
+ */
+void
+cfmakesane(
+  struct termios *tp
+)
+{
+  tp->c_cflag = TTYDEF_CFLAG;
+  tp->c_iflag = TTYDEF_IFLAG;
+  tp->c_lflag = TTYDEF_LFLAG;
+  tp->c_oflag = TTYDEF_OFLAG;
+  tp->c_ispeed = TTYDEF_SPEED;
+  tp->c_ospeed = TTYDEF_SPEED;
+  memcpy(&tp->c_cc, ttydefchars, sizeof ttydefchars);
+}
+#endif
-- 
1.9.1

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to