summaryrefslogtreecommitdiff
path: root/libc/termios/kernel_termios.h
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2002-01-09 19:40:21 +0000
committerEric Andersen <andersen@codepoet.org>2002-01-09 19:40:21 +0000
commit2f2e72cbed35ff28d89ef16dbbea4497de834617 (patch)
tree2c924b7f5ea48cff124c3db9cd21dd574b68f82e /libc/termios/kernel_termios.h
parentdc5dac9013cf2b2ee70e126c9399367055717f94 (diff)
Fixup broken termios stuff. No, really this time.
-Erik
Diffstat (limited to 'libc/termios/kernel_termios.h')
-rw-r--r--libc/termios/kernel_termios.h157
1 files changed, 133 insertions, 24 deletions
diff --git a/libc/termios/kernel_termios.h b/libc/termios/kernel_termios.h
index af6fb2aca..87d5c07e4 100644
--- a/libc/termios/kernel_termios.h
+++ b/libc/termios/kernel_termios.h
@@ -1,30 +1,139 @@
+/* Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
#ifndef _KERNEL_TERMIOS_H
#define _KERNEL_TERMIOS_H 1
-#include <sys/types.h>
-
-/* Pull in whatever this particular arch's kernel thinks the kernel version of
- * struct termios should look like. It turns out that each arch has a different
- * opinion on the subject, and different kernel revs use different names... */
-#define termio __kernel_termios
-#define winsize __kernel_winsize
-#define cc_t __kernel_cc_t
-#define speed_t __kernel_speed_t
-#define tcflag_t __kernel_tcflag_t
-#undef NCCS
-#include <asm/termios.h>
-#define __KERNEL_NCCS NCCS
-#undef NCCS
-#undef termio
-#undef winsize
-#undef cc_t
-#undef speed_t
-#undef tcflag_t
-
-/* Now pull in libc's version of termios */
-#define termios libc_termios
+/* We need the definition of tcflag_t, cc_t, and speed_t. */
#include <termios.h>
-#undef termios
-#endif /* _KERNEL_TERMIOS_H */
+/* The following corresponds to the values from the Linux 2.1.20 kernel. */
+
+
+
+
+#if defined( __sparc__ )
+
+
+#define __KERNEL_NCCS 17
+struct __kernel_termios
+{
+ tcflag_t c_iflag; /* input mode flags */
+ tcflag_t c_oflag; /* output mode flags */
+ tcflag_t c_cflag; /* control mode flags */
+ tcflag_t c_lflag; /* local mode flags */
+ cc_t c_line; /* line discipline */
+ cc_t c_cc[__KERNEL_NCCS]; /* control characters */
+};
+
+
+
+#elif defined(__powerpc__)
+
+
+
+#define __KERNEL_NCCS 19
+struct __kernel_termios
+ {
+ tcflag_t c_iflag; /* input mode flags */
+ tcflag_t c_oflag; /* output mode flags */
+ tcflag_t c_cflag; /* control mode flags */
+ tcflag_t c_lflag; /* local mode flags */
+ cc_t c_cc[__KERNEL_NCCS]; /* control characters */
+ cc_t c_line; /* line discipline */
+ speed_t c_ispeed; /* input speed */
+ speed_t c_ospeed; /* output speed */
+ };
+
+#define _HAVE_C_ISPEED 1
+#define _HAVE_C_OSPEED 1
+
+/* We have the kernel termios structure, so we can presume this code knows
+ what it's doing... */
+#undef TCGETS
+#undef TCSETS
+#undef TCSETSW
+#undef TCSETSF
+#define TCGETS _IOR ('t', 19, struct __kernel_termios)
+#define TCSETS _IOW ('t', 20, struct __kernel_termios)
+#define TCSETSW _IOW ('t', 21, struct __kernel_termios)
+#define TCSETSF _IOW ('t', 22, struct __kernel_termios)
+
+
+
+#elif defined(__mips__)
+
+
+
+#define __KERNEL_NCCS 23
+struct __kernel_termios
+{
+ tcflag_t c_iflag; /* input mode flags */
+ tcflag_t c_oflag; /* output mode flags */
+ tcflag_t c_cflag; /* control mode flags */
+ tcflag_t c_lflag; /* local mode flags */
+ cc_t c_line; /* line discipline */
+ cc_t c_cc[__KERNEL_NCCS]; /* control characters */
+};
+
+
+
+#elif defined(__alpha__)
+
+
+
+#define __KERNEL_NCCS 19
+struct __kernel_termios
+{
+ tcflag_t c_iflag; /* input mode flags */
+ tcflag_t c_oflag; /* output mode flags */
+ tcflag_t c_cflag; /* control mode flags */
+ tcflag_t c_lflag; /* local mode flags */
+ cc_t c_cc[__KERNEL_NCCS]; /* control characters */
+ cc_t c_line; /* line discipline */
+ speed_t c_ispeed; /* input speed */
+ speed_t c_ospeed; /* output speed */
+};
+
+#define _HAVE_C_ISPEED 1
+#define _HAVE_C_OSPEED 1
+
+
+
+#else /* None of the above */
+
+
+
+#define __KERNEL_NCCS 19
+struct __kernel_termios
+{
+ tcflag_t c_iflag; /* input mode flags */
+ tcflag_t c_oflag; /* output mode flags */
+ tcflag_t c_cflag; /* control mode flags */
+ tcflag_t c_lflag; /* local mode flags */
+ cc_t c_line; /* line discipline */
+ cc_t c_cc[__KERNEL_NCCS]; /* control characters */
+};
+
+#endif
+
+
+
+
+#endif /* kernel_termios.h */