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>
|
2002-05-24 Jeff Johnston <jjohnstn@redhat.com>
|
||||||
|
|
||||||
* libc/include/string.h: Add strnlen and strerror_r prototypes.
|
* 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)
|
$(LINUX_MACH_LIB)
|
||||||
|
|
||||||
LIB_SOURCES = \
|
LIB_SOURCES = \
|
||||||
brk.c flockfile.c funlockfile.c gethostname.c getoptlong.c getreent.c ids.c \
|
brk.c cfspeed.c flockfile.c funlockfile.c gethostname.c getoptlong.c \
|
||||||
inode.c io.c io64.c linux.c mmap.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 \
|
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 \
|
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 \
|
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 \
|
sysconf.c sysctl.c systat.c system.c tcdrain.c tcsendbrk.c termios.c \
|
||||||
usleep.c wait.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)
|
# 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
|
# and also /usr/src/linux/include/asm/signal.h in older versions of Red Hat Linux
|
||||||
|
|
|
@ -101,13 +101,13 @@ SUBLIBS = \
|
||||||
|
|
||||||
|
|
||||||
LIB_SOURCES = \
|
LIB_SOURCES = \
|
||||||
brk.c flockfile.c funlockfile.c gethostname.c getoptlong.c getreent.c ids.c \
|
brk.c cfspeed.c flockfile.c funlockfile.c gethostname.c getoptlong.c \
|
||||||
inode.c io.c io64.c linux.c mmap.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 \
|
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 \
|
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 \
|
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 \
|
sysconf.c sysctl.c systat.c system.c tcdrain.c tcsendbrk.c termios.c \
|
||||||
usleep.c wait.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)
|
# 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)
|
DEFS = @DEFS@ -I. -I$(srcdir)
|
||||||
CPPFLAGS = @CPPFLAGS@
|
CPPFLAGS = @CPPFLAGS@
|
||||||
LIBS = @LIBS@
|
LIBS = @LIBS@
|
||||||
@USE_LIBTOOL_FALSE@lib_a_OBJECTS = brk.o flockfile.o funlockfile.o \
|
@USE_LIBTOOL_FALSE@lib_a_OBJECTS = brk.o cfspeed.o flockfile.o \
|
||||||
@USE_LIBTOOL_FALSE@gethostname.o getoptlong.o getreent.o ids.o inode.o \
|
@USE_LIBTOOL_FALSE@funlockfile.o gethostname.o getoptlong.o getreent.o \
|
||||||
@USE_LIBTOOL_FALSE@io.o io64.o linux.o mmap.o pread.o pread64.o \
|
@USE_LIBTOOL_FALSE@ids.o inode.o io.o io64.o linux.o mmap.o pread.o \
|
||||||
@USE_LIBTOOL_FALSE@process.o pwrite.o pwrite64.o raise.o realpath.o \
|
@USE_LIBTOOL_FALSE@pread64.o process.o pwrite.o pwrite64.o raise.o \
|
||||||
@USE_LIBTOOL_FALSE@rename.o resource.o sched.o select.o seteuid.o \
|
@USE_LIBTOOL_FALSE@realpath.o rename.o resource.o sched.o select.o \
|
||||||
@USE_LIBTOOL_FALSE@shm_open.o shm_unlink.o signal.o siglongjmp.o \
|
@USE_LIBTOOL_FALSE@seteuid.o shm_open.o shm_unlink.o signal.o \
|
||||||
@USE_LIBTOOL_FALSE@socket.o sleep.o stack.o sysconf.o sysctl.o systat.o \
|
@USE_LIBTOOL_FALSE@siglongjmp.o socket.o sleep.o stack.o sysconf.o \
|
||||||
@USE_LIBTOOL_FALSE@system.o tcdrain.o termios.o time.o usleep.o wait.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)
|
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||||
|
|
||||||
@USE_LIBTOOL_TRUE@liblinux_la_DEPENDENCIES =
|
@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@funlockfile.lo gethostname.lo getoptlong.lo \
|
||||||
@USE_LIBTOOL_TRUE@getreent.lo ids.lo inode.lo io.lo io64.lo linux.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 \
|
@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@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@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@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@system.lo tcdrain.lo tcsendbrk.lo termios.lo time.lo \
|
||||||
@USE_LIBTOOL_TRUE@wait.lo
|
@USE_LIBTOOL_TRUE@usleep.lo wait.lo
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_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)
|
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
|
#define _SYS_TERMIOS_H
|
||||||
|
|
||||||
#include <linux/termios.h>
|
#include <linux/termios.h>
|
||||||
|
#include <machine/termios.h>
|
||||||
|
|
||||||
/* grr, this shouldn't have to be here */
|
/* 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,13 +9,15 @@
|
||||||
#include <sys/ioctl.h>
|
#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;
|
||||||
|
|
||||||
|
@ -35,3 +37,35 @@ int tcsetattr(int fd,int optional_actions,const struct termios *termios_p)
|
||||||
}
|
}
|
||||||
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