diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2002-05-29 02:26:36 +0400 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2002-05-29 02:26:36 +0400 |
commit | b1f07180b5e7897f07e390e020b307e6496c9cb1 (patch) | |
tree | a2214ac6ac09c310f7fbd8c42a48f5cc58b2e4f1 /newlib/libc/sys/linux/cfspeed.c | |
parent | ab72c934da3502f2dcb0f52199675a0d939c039c (diff) |
2002-05-28 Jeff Johnston <jjohnstn@redhat.com>
* libc/sys/linux/Makefile.am: Add support for cfspeed.c and
tcsendbrk.c.
* libc/sys/linux/Makefile.in: Regenerated.
* libc/sys/linux/termios.c: Add tcflow(), tcflush(),
tcgetpgrp(), and tcsetpgrp() functions.
* libc/sys/linux/sys/termios.h: Add include of machine/termios.h
to get __MAX_BAUD rate.
* libc/sys/linux/machine/i386/include/termios.h: New file.
* libc/include/machine/termios.h: Ditto.
* libc/sys/linux/cfspeed.c: Ditto.
* libc/sys/linux/tcsendbrk.c: Ditto.
Diffstat (limited to 'newlib/libc/sys/linux/cfspeed.c')
-rw-r--r-- | newlib/libc/sys/linux/cfspeed.c | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/newlib/libc/sys/linux/cfspeed.c b/newlib/libc/sys/linux/cfspeed.c new file mode 100644 index 000000000..e935bf178 --- /dev/null +++ b/newlib/libc/sys/linux/cfspeed.c @@ -0,0 +1,88 @@ +/* `struct termios' speed frobnication functions. Linux version. + Copyright (C) 1991, 92, 93, 95, 96, 97, 98, 2000 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. */ + +/* Modified by Jeff Johnston, May 27, 2002 to remove kernel hack + as we simply ignore a cfisetspeed of 0 instead of treating it specially */ + +#include <stddef.h> +#include <errno.h> +#include <termios.h> + +/* Return the output baud rate stored in *TERMIOS_P. */ +speed_t +cfgetospeed (termios_p) + const struct termios *termios_p; +{ + return termios_p->c_cflag & (CBAUD | CBAUDEX); +} + +/* Return the input baud rate stored in *TERMIOS_P. + For Linux there is no difference between input and output + speed. */ +speed_t +cfgetispeed (termios_p) + const struct termios *termios_p; +{ + return termios_p->c_cflag & (CBAUD | CBAUDEX); +} + +/* Set the output baud rate stored in *TERMIOS_P to SPEED. */ +int +cfsetospeed (termios_p, speed) + struct termios *termios_p; + speed_t speed; +{ + if ((speed & ~CBAUD) != 0 + && (speed < B57600 || speed > __MAX_BAUD)) + { + errno = (EINVAL); + return -1; + } + + termios_p->c_cflag &= ~(CBAUD | CBAUDEX); + termios_p->c_cflag |= speed; + + return 0; +} + +/* Set the input baud rate stored in *TERMIOS_P to SPEED. + Although for Linux there is no difference between input and output + speed, the numerical 0 is a special case for the input baud rate. It + should set the input baud rate to the output baud rate so we do + nothing. */ +int +cfsetispeed (termios_p, speed) + struct termios *termios_p; + speed_t speed; +{ + if ((speed & ~CBAUD) != 0 + && (speed < B57600 || speed > __MAX_BAUD)) + { + errno = (EINVAL); + return -1; + } + + if (speed != 0) + { + termios_p->c_cflag &= ~(CBAUD | CBAUDEX); + termios_p->c_cflag |= speed; + } + + return 0; +} |