BSD 4_3_Net_2 release
[unix-history] / usr / src / sys / sys / termios.h
index cf27842..649b9cd 100644 (file)
@@ -2,26 +2,42 @@
  * Copyright (c) 1988, 1989 The Regents of the University of California.
  * All rights reserved.
  *
  * Copyright (c) 1988, 1989 The Regents of the University of California.
  * All rights reserved.
  *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley.  The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ * 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. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. 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.
  *
  *
- *     @(#)termios.h   7.7 (Berkeley) %G%
+ * 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   7.22 (Berkeley) 5/7/91
  */
 
 /*
  *  termios structure
  */
  */
 
 /*
  *  termios structure
  */
-#ifndef _TERMIOS_
-#define _TERMIOS_
+#ifndef _TERMIOS_H_
+#define _TERMIOS_H_
 
 /* 
  * Special Control Characters 
 
 /* 
  * Special Control Characters 
 #define        VEOL            1       /* ICANON */
 #ifndef _POSIX_SOURCE
 #define        VEOL2           2       /* ICANON */
 #define        VEOL            1       /* ICANON */
 #ifndef _POSIX_SOURCE
 #define        VEOL2           2       /* ICANON */
-#endif  /*_POSIX_SOURCE */
+#endif
 #define        VERASE          3       /* ICANON */
 #ifndef _POSIX_SOURCE
 #define VWERASE        4       /* ICANON */
 #define        VERASE          3       /* ICANON */
 #ifndef _POSIX_SOURCE
 #define VWERASE        4       /* ICANON */
-#endif  /*_POSIX_SOURCE */
+#endif 
 #define VKILL          5       /* ICANON */
 #ifndef _POSIX_SOURCE
 #define        VREPRINT        6       /* ICANON */
 #define VKILL          5       /* ICANON */
 #ifndef _POSIX_SOURCE
 #define        VREPRINT        6       /* ICANON */
-#endif  /*_POSIX_SOURCE */
+#endif
 /*                     7          spare 1 */
 #define VINTR          8       /* ISIG */
 #define VQUIT          9       /* ISIG */
 #define VSUSP          10      /* ISIG */
 #ifndef _POSIX_SOURCE
 #define VDSUSP         11      /* ISIG */
 /*                     7          spare 1 */
 #define VINTR          8       /* ISIG */
 #define VQUIT          9       /* ISIG */
 #define VSUSP          10      /* ISIG */
 #ifndef _POSIX_SOURCE
 #define VDSUSP         11      /* ISIG */
-#endif  /*_POSIX_SOURCE */
+#endif
 #define VSTART         12      /* IXON, IXOFF */
 #define VSTOP          13      /* IXON, IXOFF */
 #ifndef _POSIX_SOURCE
 #define        VLNEXT          14      /* IEXTEN */
 #define VSTART         12      /* IXON, IXOFF */
 #define VSTOP          13      /* IXON, IXOFF */
 #ifndef _POSIX_SOURCE
 #define        VLNEXT          14      /* IEXTEN */
-#define        VFLUSHO         15      /* IEXTEN */
-#define        VFLUSH          VFLUSHO /* for sun */
-#endif  /*_POSIX_SOURCE */
+#define        VDISCARD        15      /* IEXTEN */
+#endif
 #define VMIN           16      /* !ICANON */
 #define VTIME          17      /* !ICANON */
 #ifndef _POSIX_SOURCE
 #define VMIN           16      /* !ICANON */
 #define VTIME          17      /* !ICANON */
 #ifndef _POSIX_SOURCE
-#define VINFO          18      /* ISIG */
+#define VSTATUS                18      /* ICANON */
 /*                     19         spare 2 */
 /*                     19         spare 2 */
-#define        NCC             20
-#endif  /*_POSIX_SOURCE */
+#define        NCCS            20
+#endif
 
 #define _POSIX_VDISABLE        ((unsigned char)'\377')
 
 
 #define _POSIX_VDISABLE        ((unsigned char)'\377')
 
 #define        IXON            0x00000200      /* enable output flow control */
 #define        IXOFF           0x00000400      /* enable input flow control */
 #ifndef _POSIX_SOURCE
 #define        IXON            0x00000200      /* enable output flow control */
 #define        IXOFF           0x00000400      /* enable input flow control */
 #ifndef _POSIX_SOURCE
-#define        IFLOW           IXON            /* enable output flow control */
-#define        ITANDEM         IXOFF           /* enable input flow control */
 #define        IXANY           0x00000800      /* any char will restart after stop */
 #define IMAXBEL                0x00002000      /* ring bell on input queue full */
 #endif  /*_POSIX_SOURCE */
 #define        IXANY           0x00000800      /* any char will restart after stop */
 #define IMAXBEL                0x00002000      /* ring bell on input queue full */
 #endif  /*_POSIX_SOURCE */
 #define        OPOST           0x00000001      /* enable following output processing */
 #ifndef _POSIX_SOURCE
 #define ONLCR          0x00000002      /* map NL to CR-NL (ala CRMOD) */
 #define        OPOST           0x00000001      /* enable following output processing */
 #ifndef _POSIX_SOURCE
 #define ONLCR          0x00000002      /* map NL to CR-NL (ala CRMOD) */
-#define ONLCRNL                ONLCR
 #define OXTABS         0x00000004      /* expand tabs to spaces */
 #define ONOEOT         0x00000008      /* discard EOT's (^D) on output) */
 #endif  /*_POSIX_SOURCE */
 #define OXTABS         0x00000004      /* expand tabs to spaces */
 #define ONOEOT         0x00000008      /* discard EOT's (^D) on output) */
 #endif  /*_POSIX_SOURCE */
  */
 #ifndef _POSIX_SOURCE
 #define        CIGNORE         0x00000001      /* ignore control flags */
  */
 #ifndef _POSIX_SOURCE
 #define        CIGNORE         0x00000001      /* ignore control flags */
-#endif  /*_POSIX_SOURCE */
+#endif
 #define CSIZE          0x00000300      /* character size mask */
 #define     CS5                    0x00000000      /* 5 bits (pseudo) */
 #define     CS6                    0x00000100      /* 6 bits */
 #define CSIZE          0x00000300      /* character size mask */
 #define     CS5                    0x00000000      /* 5 bits (pseudo) */
 #define     CS6                    0x00000100      /* 6 bits */
 #define CREAD          0x00000800      /* enable receiver */
 #define PARENB         0x00001000      /* parity enable */
 #define PARODD         0x00002000      /* odd parity, else even */
 #define CREAD          0x00000800      /* enable receiver */
 #define PARENB         0x00001000      /* parity enable */
 #define PARODD         0x00002000      /* odd parity, else even */
-#ifndef _POSIX_SOURCE
 #define HUPCL          0x00004000      /* hang up on last close */
 #define HUPCL          0x00004000      /* hang up on last close */
-#endif  /*_POSIX_SOURCE */
 #define CLOCAL         0x00008000      /* ignore modem status lines */
 #ifndef _POSIX_SOURCE
 #define CCTS_OFLOW     0x00010000      /* CTS flow control of output */
 #define CRTSCTS                CCTS_OFLOW      /* ??? */
 #define CRTS_IFLOW     0x00020000      /* RTS flow control of input */
 #define        MDMBUF          0x00100000      /* flow control output via Carrier */
 #define CLOCAL         0x00008000      /* ignore modem status lines */
 #ifndef _POSIX_SOURCE
 #define CCTS_OFLOW     0x00010000      /* CTS flow control of output */
 #define CRTSCTS                CCTS_OFLOW      /* ??? */
 #define CRTS_IFLOW     0x00020000      /* RTS flow control of input */
 #define        MDMBUF          0x00100000      /* flow control output via Carrier */
-#endif  /*_POSIX_SOURCE */
+#endif
 
 
 /* 
 
 
 /* 
 #ifndef _POSIX_SOURCE
 #define ALTWERASE      0x00000200      /* use alternate WERASE algorithm */
 #endif  /*_POSIX_SOURCE */
 #ifndef _POSIX_SOURCE
 #define ALTWERASE      0x00000200      /* use alternate WERASE algorithm */
 #endif  /*_POSIX_SOURCE */
-#define        IEXTEN          0x00000400      /* enable FLUSHO and LNEXT */
+#define        IEXTEN          0x00000400      /* enable DISCARD and LNEXT */
+#define EXTPROC         0x00000800      /* external processing */
 #define TOSTOP         0x00400000      /* stop background jobs from output */
 #ifndef _POSIX_SOURCE
 #define FLUSHO         0x00800000      /* output being flushed (state) */
 #define TOSTOP         0x00400000      /* stop background jobs from output */
 #ifndef _POSIX_SOURCE
 #define FLUSHO         0x00800000      /* output being flushed (state) */
-#define        NOHANG          0x01000000      /* XXX this should go away */
-#define        NOKERNINFO      0x02000000      /* no kernel output from VINFO */
+#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 */
 
 typedef unsigned long  tcflag_t;
 typedef unsigned char  cc_t;
 #define PENDIN         0x20000000      /* XXX retype pending input (state) */
 #endif  /*_POSIX_SOURCE */
 #define        NOFLSH          0x80000000      /* don't flush after interrupt */
 
 typedef unsigned long  tcflag_t;
 typedef unsigned char  cc_t;
+typedef long           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 */
 
 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[NCC];      /* control chars */
+       cc_t            c_cc[NCCS];     /* control chars */
        long            c_ispeed;       /* input speed */
        long            c_ospeed;       /* output speed */
 };
        long            c_ispeed;       /* input speed */
        long            c_ospeed;       /* output speed */
 };
@@ -182,7 +193,10 @@ struct termios {
  */
 #define        TCSANOW         0               /* make change immediate */
 #define        TCSADRAIN       1               /* drain output, then change */
  */
 #define        TCSANOW         0               /* make change immediate */
 #define        TCSADRAIN       1               /* drain output, then change */
-#define        TCSADFLUSH      2               /* drain output, flush input */
+#define        TCSAFLUSH       2               /* drain output, flush input */
+#ifndef _POSIX_SOURCE
+#define TCSASOFT       0x10            /* flag - don't alter h.w. state */
+#endif
 
 /*
  * Standard speeds
 
 /*
  * Standard speeds
@@ -207,10 +221,43 @@ struct termios {
 #define EXTA   19200
 #define EXTB   38400
 #endif  /*_POSIX_SOURCE */
 #define EXTA   19200
 #define EXTB   38400
 #endif  /*_POSIX_SOURCE */
+
+#ifndef KERNEL
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+speed_t        cfgetispeed __P((const struct termios *));
+speed_t        cfgetospeed __P((const struct termios *));
+int    cfsetispeed __P((struct termios *, speed_t));
+int    cfsetospeed __P((struct termios *, speed_t));
+int    tcdrain __P((int));
+int    tcflow __P((int, int));
+int    tcflush __P((int, int));
+int    tcgetattr __P((int, struct termios *));
+int    tcsendbreak __P((int, int));
+int    tcsetattr __P((int, int, const struct termios *));
+
+#define        TCIFLUSH        1
+#define        TCOFLUSH        2
+#define TCIOFLUSH      3
+#define        TCOOFF          1
+#define        TCOON           2
+#define TCIOFF         3
+#define TCION          4
+
+#ifndef _POSIX_SOURCE
+void   cfmakeraw __P((struct termios *));
+void   cfsetspeed __P((struct termios *, speed_t));
+#endif /* !POSIX */
+__END_DECLS
+
+#endif /* !KERNEL */
+
 /*
  * END OF PROTECTED INCLUDE.
  */
 /*
  * END OF PROTECTED INCLUDE.
  */
-#endif /* _TERMIOS_ */
+#endif /* !_TERMIOS_H_ */
 
 #ifndef _POSIX_SOURCE
 #ifdef KERNEL
 
 #ifndef _POSIX_SOURCE
 #ifdef KERNEL