From 90374108bb8e84f45ef3186f8d569cf1eb4e446d Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Wed, 9 Jan 2002 14:13:19 +0000 Subject: Rework termios wrapping code to try and do the right thing. -Erik --- libc/termios/kernel_termios.h | 79 ++++++++++++++----------------------------- 1 file changed, 26 insertions(+), 53 deletions(-) (limited to 'libc/termios/kernel_termios.h') 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 + +/* 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 +#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 +#undef termios + +#endif /* _KERNEL_TERMIOS_H */ -#endif /* kernel_termios.h */ -- cgit v1.2.3