diff options
author | Eric Andersen <andersen@codepoet.org> | 2002-01-09 19:40:21 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2002-01-09 19:40:21 +0000 |
commit | 2f2e72cbed35ff28d89ef16dbbea4497de834617 (patch) | |
tree | 2c924b7f5ea48cff124c3db9cd21dd574b68f82e /libc/termios/kernel_termios.h | |
parent | dc5dac9013cf2b2ee70e126c9399367055717f94 (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.h | 157 |
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 */ |