diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux')
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/select.S | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/speed.c | 27 |
2 files changed, 29 insertions, 4 deletions
diff --git a/sysdeps/unix/sysv/linux/alpha/select.S b/sysdeps/unix/sysv/linux/alpha/select.S index 704e71d753..1876e2f947 100644 --- a/sysdeps/unix/sysv/linux/alpha/select.S +++ b/sysdeps/unix/sysv/linux/alpha/select.S @@ -50,6 +50,11 @@ LEAF(SELECT, 64) .prologue 1 ldl t0, __libc_missing_axp_tv64 + + /* Save timeout early, since we'll need to recover this after + the system call. */ + stq a4, 48(sp) + bne t0, $do32 /* Save arguments in case we do need to fall back. */ @@ -57,7 +62,6 @@ LEAF(SELECT, 64) stq a1, 16(sp) stq a2, 24(sp) stq a3, 32(sp) - stq a4, 48(sp) ldi v0, SYS_ify(select) callsys diff --git a/sysdeps/unix/sysv/linux/speed.c b/sysdeps/unix/sysv/linux/speed.c index 6a1b243da5..a0aefd805a 100644 --- a/sysdeps/unix/sysv/linux/speed.c +++ b/sysdeps/unix/sysv/linux/speed.c @@ -1,5 +1,5 @@ /* `struct termios' speed frobnication functions. Linux version. - Copyright (C) 1991, 92, 93, 95, 96, 97 Free Software Foundation, Inc. + Copyright (C) 1991, 92, 93, 95, 96, 97, 98 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 @@ -54,5 +54,26 @@ cfsetospeed (termios_p, speed) } /* Set the input baud rate stored in *TERMIOS_P to SPEED. - For Linux there is no difference between input and output speed. */ -strong_alias (cfsetospeed, cfsetispeed); + 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. */ +int +cfsetispeed (termios_p, speed) + struct termios *termios_p; + speed_t speed; +{ + if ((speed & ~CBAUD) != 0 + && (speed < B57600 || speed > B460800)) + { + __set_errno (EINVAL); + return -1; + } + + if (speed != 0) + { + termios_p->c_cflag &= ~(CBAUD | CBAUDEX); + termios_p->c_cflag |= speed; + } + + return 0; +} |