BSD 4_3_Net_2 release
[unix-history] / usr / src / sys / sys / termios.h
index 5bdf171..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.13 (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 VMIN           16      /* !ICANON */
 #define VTIME          17      /* !ICANON */
 #ifndef _POSIX_SOURCE
 #define VMIN           16      /* !ICANON */
 #define VTIME          17      /* !ICANON */
 #ifndef _POSIX_SOURCE
-#define VINFO          18      /* ICANON */
-/*                     19         spare */
+#define VSTATUS                18      /* ICANON */
+/*                     19         spare */
 #define        NCCS            20
 #define        NCCS            20
-#define        NCC             NCCS
 #endif
 
 #define _POSIX_VDISABLE        ((unsigned char)'\377')
 #endif
 
 #define _POSIX_VDISABLE        ((unsigned char)'\377')
 #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
 #define CLOCAL         0x00008000      /* ignore modem status lines */
 #ifndef _POSIX_SOURCE
 #define CCTS_OFLOW     0x00010000      /* CTS flow control of output */
 #define CLOCAL         0x00008000      /* ignore modem status lines */
 #ifndef _POSIX_SOURCE
 #define CCTS_OFLOW     0x00010000      /* CTS flow control of output */
 #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        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 */
 };
@@ -180,6 +194,9 @@ struct termios {
 #define        TCSANOW         0               /* make change immediate */
 #define        TCSADRAIN       1               /* drain output, then change */
 #define        TCSAFLUSH       2               /* drain output, flush input */
 #define        TCSANOW         0               /* make change immediate */
 #define        TCSADRAIN       1               /* drain output, then change */
 #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
@@ -204,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