Date: Fri, 16 Jul 1999 15:46:58 +0200 From: Marcel Moolenaar <marcel@scc.nl> To: emulation@FreeBSD.ORG Subject: RQ for review: Implementation of TCXONC ioctl Message-ID: <378F37D2.9F82D37A@scc.nl>
next in thread | raw e-mail | index | archive | help
Hi,
The following implementation is about to be committed. Please review the
code. This code is inspired by the tcflow(3).
Index: linux.h
===================================================================
RCS file: /home/ncvs/src/sys/i386/linux/linux.h,v
retrieving revision 1.29
diff -u -r1.29 linux.h
--- linux.h 1999/07/08 16:15:18 1.29
+++ linux.h 1999/07/16 13:10:23
@@ -243,7 +243,11 @@
#define LINUX_VT_ACTIVATE 0x5606
#define LINUX_VT_WAITACTIVE 0x5607
-
+/* arguments for tcflow() and LINUX_TCXONC */
+#define LINUX_TCOOFF 0
+#define LINUX_TCOON 1
+#define LINUX_TCIOFF 2
+#define LINUX_TCION 3
/* arguments for tcflush() and LINUX_TCFLSH */
#define LINUX_TCIFLUSH 0
Index: linux_ioctl.c
===================================================================
RCS file: /home/ncvs/src/sys/i386/linux/linux_ioctl.c,v
retrieving revision 1.35
diff -u -r1.35 linux_ioctl.c
--- linux_ioctl.c 1999/07/08 16:15:19 1.35
+++ linux_ioctl.c 1999/07/16 13:43:00
@@ -986,6 +986,37 @@
linux_tiocsserial(fp, (struct linux_serial_struct *)args->arg);
return 0;
+ case LINUX_TCXONC:
+ switch (args->arg) {
+ case LINUX_TCOOFF:
+ args->cmd = TIOCSTOP;
+ break;
+ case LINUX_TCOON:
+ args->cmd = TIOCSTART;
+ break;
+ case LINUX_TCIOFF:
+ case LINUX_TCION: {
+ u_char c;
+ struct write_args wr;
+ error = (*func)(fp, TIOCGETA, (caddr_t)&bsd_termios, p);
+ if (error != 0)
+ return error;
+ c = bsd_termios.c_cc[args->arg == LINUX_TCIOFF ? VSTOP :
VSTART];
+ if (c != _POSIX_VDISABLE) {
+ wr.fd = args->fd;
+ wr.buf = &c;
+ wr.nbyte = sizeof(c);
+ return write(p, &wr);
+ }
+ else
+ return (0);
+ }
+ default:
+ return EINVAL;
+ }
+ args->arg = 0;
+ return ioctl(p, (struct ioctl_args *)args);
+
case LINUX_TCFLSH:
args->cmd = TIOCFLUSH;
switch (args->arg) {
--
Marcel Moolenaar mailto:marcel@scc.nl
SCC Internetworking & Databases http://www.scc.nl/
Amsterdam, The Netherlands tel: +31 20 4200655
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-emulation" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?378F37D2.9F82D37A>
