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.
This commit is contained in:
parent
ab72c934da
commit
b1f07180b5
|
@ -1,3 +1,17 @@
|
|||
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.
|
||||
|
||||
2002-05-24 Jeff Johnston <jjohnstn@redhat.com>
|
||||
|
||||
* libc/include/string.h: Add strnlen and strerror_r prototypes.
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
#define __MAX_BAUD B4000000
|
|
@ -10,13 +10,13 @@ SUBLIBS = \
|
|||
$(LINUX_MACH_LIB)
|
||||
|
||||
LIB_SOURCES = \
|
||||
brk.c flockfile.c funlockfile.c gethostname.c getoptlong.c getreent.c ids.c \
|
||||
inode.c io.c io64.c linux.c mmap.c \
|
||||
brk.c cfspeed.c flockfile.c funlockfile.c gethostname.c getoptlong.c \
|
||||
getreent.c ids.c inode.c io.c io64.c linux.c mmap.c \
|
||||
pread.c pread64.c process.c pwrite.c pwrite64.c raise.c realpath.c \
|
||||
rename.c resource.c sched.c select.c seteuid.c shm_open.c \
|
||||
shm_unlink.c signal.c siglongjmp.c socket.c sleep.c stack.c \
|
||||
sysconf.c sysctl.c systat.c system.c tcdrain.c termios.c time.c \
|
||||
usleep.c wait.c
|
||||
sysconf.c sysctl.c systat.c system.c tcdrain.c tcsendbrk.c termios.c \
|
||||
time.c usleep.c wait.c
|
||||
|
||||
# This will handle both /usr/src/linux-2.4/include/asm/signal.h (in Red Hat Linux 7.1)
|
||||
# and also /usr/src/linux/include/asm/signal.h in older versions of Red Hat Linux
|
||||
|
|
|
@ -101,13 +101,13 @@ SUBLIBS = \
|
|||
|
||||
|
||||
LIB_SOURCES = \
|
||||
brk.c flockfile.c funlockfile.c gethostname.c getoptlong.c getreent.c ids.c \
|
||||
inode.c io.c io64.c linux.c mmap.c \
|
||||
brk.c cfspeed.c flockfile.c funlockfile.c gethostname.c getoptlong.c \
|
||||
getreent.c ids.c inode.c io.c io64.c linux.c mmap.c \
|
||||
pread.c pread64.c process.c pwrite.c pwrite64.c raise.c realpath.c \
|
||||
rename.c resource.c sched.c select.c seteuid.c shm_open.c \
|
||||
shm_unlink.c signal.c siglongjmp.c socket.c sleep.c stack.c \
|
||||
sysconf.c sysctl.c systat.c system.c tcdrain.c termios.c time.c \
|
||||
usleep.c wait.c
|
||||
sysconf.c sysctl.c systat.c system.c tcdrain.c tcsendbrk.c termios.c \
|
||||
time.c usleep.c wait.c
|
||||
|
||||
|
||||
# This will handle both /usr/src/linux-2.4/include/asm/signal.h (in Red Hat Linux 7.1)
|
||||
|
@ -137,18 +137,19 @@ LIBRARIES = $(noinst_LIBRARIES)
|
|||
DEFS = @DEFS@ -I. -I$(srcdir)
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
LIBS = @LIBS@
|
||||
@USE_LIBTOOL_FALSE@lib_a_OBJECTS = brk.o flockfile.o funlockfile.o \
|
||||
@USE_LIBTOOL_FALSE@gethostname.o getoptlong.o getreent.o ids.o inode.o \
|
||||
@USE_LIBTOOL_FALSE@io.o io64.o linux.o mmap.o pread.o pread64.o \
|
||||
@USE_LIBTOOL_FALSE@process.o pwrite.o pwrite64.o raise.o realpath.o \
|
||||
@USE_LIBTOOL_FALSE@rename.o resource.o sched.o select.o seteuid.o \
|
||||
@USE_LIBTOOL_FALSE@shm_open.o shm_unlink.o signal.o siglongjmp.o \
|
||||
@USE_LIBTOOL_FALSE@socket.o sleep.o stack.o sysconf.o sysctl.o systat.o \
|
||||
@USE_LIBTOOL_FALSE@system.o tcdrain.o termios.o time.o usleep.o wait.o
|
||||
@USE_LIBTOOL_FALSE@lib_a_OBJECTS = brk.o cfspeed.o flockfile.o \
|
||||
@USE_LIBTOOL_FALSE@funlockfile.o gethostname.o getoptlong.o getreent.o \
|
||||
@USE_LIBTOOL_FALSE@ids.o inode.o io.o io64.o linux.o mmap.o pread.o \
|
||||
@USE_LIBTOOL_FALSE@pread64.o process.o pwrite.o pwrite64.o raise.o \
|
||||
@USE_LIBTOOL_FALSE@realpath.o rename.o resource.o sched.o select.o \
|
||||
@USE_LIBTOOL_FALSE@seteuid.o shm_open.o shm_unlink.o signal.o \
|
||||
@USE_LIBTOOL_FALSE@siglongjmp.o socket.o sleep.o stack.o sysconf.o \
|
||||
@USE_LIBTOOL_FALSE@sysctl.o systat.o system.o tcdrain.o tcsendbrk.o \
|
||||
@USE_LIBTOOL_FALSE@termios.o time.o usleep.o wait.o
|
||||
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||
|
||||
@USE_LIBTOOL_TRUE@liblinux_la_DEPENDENCIES =
|
||||
@USE_LIBTOOL_TRUE@liblinux_la_OBJECTS = brk.lo flockfile.lo \
|
||||
@USE_LIBTOOL_TRUE@liblinux_la_OBJECTS = brk.lo cfspeed.lo flockfile.lo \
|
||||
@USE_LIBTOOL_TRUE@funlockfile.lo gethostname.lo getoptlong.lo \
|
||||
@USE_LIBTOOL_TRUE@getreent.lo ids.lo inode.lo io.lo io64.lo linux.lo \
|
||||
@USE_LIBTOOL_TRUE@mmap.lo pread.lo pread64.lo process.lo pwrite.lo \
|
||||
|
@ -156,8 +157,8 @@ LTLIBRARIES = $(noinst_LTLIBRARIES)
|
|||
@USE_LIBTOOL_TRUE@resource.lo sched.lo select.lo seteuid.lo shm_open.lo \
|
||||
@USE_LIBTOOL_TRUE@shm_unlink.lo signal.lo siglongjmp.lo socket.lo \
|
||||
@USE_LIBTOOL_TRUE@sleep.lo stack.lo sysconf.lo sysctl.lo systat.lo \
|
||||
@USE_LIBTOOL_TRUE@system.lo tcdrain.lo termios.lo time.lo usleep.lo \
|
||||
@USE_LIBTOOL_TRUE@wait.lo
|
||||
@USE_LIBTOOL_TRUE@system.lo tcdrain.lo tcsendbrk.lo termios.lo time.lo \
|
||||
@USE_LIBTOOL_TRUE@usleep.lo wait.lo
|
||||
CFLAGS = @CFLAGS@
|
||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
#define __MAX_BAUD B4000000
|
|
@ -7,6 +7,7 @@
|
|||
#define _SYS_TERMIOS_H
|
||||
|
||||
#include <linux/termios.h>
|
||||
#include <machine/termios.h>
|
||||
|
||||
/* grr, this shouldn't have to be here */
|
||||
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
/* Copyright (C) 1992, 1996, 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. */
|
||||
|
||||
/* Modified for newlib, May 27, 2002, by Jeff Johnston */
|
||||
|
||||
#include <errno.h>
|
||||
#include <stddef.h>
|
||||
#include <signal.h>
|
||||
#include <termios.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
/* Send zero bits on FD. */
|
||||
int
|
||||
tcsendbreak (fd, duration)
|
||||
int fd;
|
||||
int duration;
|
||||
{
|
||||
/* The break lasts 0.25 to 0.5 seconds if DURATION is zero,
|
||||
and an implementation-defined period if DURATION is nonzero.
|
||||
We define a positive DURATION to be number of milliseconds to break. */
|
||||
if (duration <= 0)
|
||||
return ioctl (fd, TCSBRK, 0);
|
||||
|
||||
/* ioctl can't send a break of any other duration for us.
|
||||
This could be changed to use trickery (e.g. lower speed and
|
||||
send a '\0') to send the break, but for now just return an error. */
|
||||
errno = (EINVAL);
|
||||
return -1;
|
||||
}
|
|
@ -9,29 +9,63 @@
|
|||
#include <sys/ioctl.h>
|
||||
|
||||
|
||||
int tcgetattr(int fd,struct termios *termios_p)
|
||||
int
|
||||
tcgetattr(int fd,struct termios *termios_p)
|
||||
{
|
||||
return ioctl(fd,TCGETS,termios_p);
|
||||
return ioctl(fd,TCGETS,termios_p);
|
||||
}
|
||||
|
||||
|
||||
int tcsetattr(int fd,int optional_actions,const struct termios *termios_p)
|
||||
int
|
||||
tcsetattr(int fd,int optional_actions,const struct termios *termios_p)
|
||||
{
|
||||
int cmd;
|
||||
int cmd;
|
||||
|
||||
switch (optional_actions) {
|
||||
case TCSANOW:
|
||||
cmd = TCSETS;
|
||||
break;
|
||||
case TCSADRAIN:
|
||||
cmd = TCSETSW;
|
||||
break;
|
||||
case TCSAFLUSH:
|
||||
cmd = TCSETSF;
|
||||
break;
|
||||
default:
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
switch (optional_actions) {
|
||||
case TCSANOW:
|
||||
cmd = TCSETS;
|
||||
break;
|
||||
case TCSADRAIN:
|
||||
cmd = TCSETSW;
|
||||
break;
|
||||
case TCSAFLUSH:
|
||||
cmd = TCSETSF;
|
||||
break;
|
||||
default:
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
return ioctl(fd,cmd,termios_p);
|
||||
return ioctl(fd,cmd,termios_p);
|
||||
}
|
||||
|
||||
|
||||
pid_t
|
||||
tcgetpgrp(int fd)
|
||||
{
|
||||
int p;
|
||||
|
||||
if (ioctl(fd,TIOCGPGRP,&p) < 0)
|
||||
return (pid_t)-1;
|
||||
return (pid_t)p;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
tcsetpgrp(int fd, pid_t pid)
|
||||
{
|
||||
int p = (int)pid;
|
||||
return ioctl(fd,TIOCSPGRP,&p);
|
||||
}
|
||||
|
||||
int
|
||||
tcflow (int fd, int action)
|
||||
{
|
||||
return ioctl (fd, TCXONC, action);
|
||||
}
|
||||
|
||||
int
|
||||
tcflush (int fd, int queue_selector)
|
||||
{
|
||||
return ioctl (fd, TCFLSH, queue_selector);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue