diff options
author | Eric Andersen <andersen@codepoet.org> | 2002-01-09 14:13:19 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2002-01-09 14:13:19 +0000 |
commit | 90374108bb8e84f45ef3186f8d569cf1eb4e446d (patch) | |
tree | cdb2169ecf3be304c8ad01b4da85a28dde83c513 /libc/termios/kernel_termios.h | |
parent | 1ad690545c7079115f76918f483c33c120e48204 (diff) |
Rework termios wrapping code to try and do the right thing.
-Erik
Diffstat (limited to 'libc/termios/kernel_termios.h')
-rw-r--r-- | libc/termios/kernel_termios.h | 79 |
1 files changed, 26 insertions, 53 deletions
diff --git a/libc/termios/kernel_termios.h b/libc/termios/kernel_termios.h index e8969eb76..af6fb2aca 100644 --- a/libc/termios/kernel_termios.h +++ b/libc/termios/kernel_termios.h @@ -1,57 +1,30 @@ -/* 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 Library General Public License as - published by the Free Software Foundation; either version 2 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. 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 -#ifndef __powerpc__ -/* The following corresponds to the values from the Linux 2.1.20 kernel. */ - -#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 */ - }; - -#else /* powerpc */ - -#define _HAVE_C_ISPEED -#define _HAVE_C_OSPEED - -#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 */ - }; - -#endif +#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 +#include <termios.h> +#undef termios + +#endif /* _KERNEL_TERMIOS_H */ -#endif /* kernel_termios.h */ |