diff options
author | marcel <marcel@FreeBSD.org> | 1999-07-17 08:24:57 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 1999-07-17 08:24:57 +0000 |
commit | 53c130ee843d954d6f690233a9c285c00393017f (patch) | |
tree | cb7cc4b694f9aa96aa91203cf82bb3cf02d27cdf /sys/i386/linux | |
parent | 3e4c2ad4a22086967d58cae4d866a37ab55b495a (diff) | |
download | FreeBSD-src-53c130ee843d954d6f690233a9c285c00393017f.zip FreeBSD-src-53c130ee843d954d6f690233a9c285c00393017f.tar.gz |
Implementation of TCXONC.
Reviewed by: bde
Diffstat (limited to 'sys/i386/linux')
-rw-r--r-- | sys/i386/linux/linux.h | 8 | ||||
-rw-r--r-- | sys/i386/linux/linux_ioctl.c | 33 |
2 files changed, 38 insertions, 3 deletions
diff --git a/sys/i386/linux/linux.h b/sys/i386/linux/linux.h index 21f07d8..235e541 100644 --- a/sys/i386/linux/linux.h +++ b/sys/i386/linux/linux.h @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: linux.h,v 1.28 1999/07/06 06:54:00 cracauer Exp $ + * $Id: linux.h,v 1.29 1999/07/08 16:15:18 marcel Exp $ */ #ifndef _I386_LINUX_LINUX_H_ @@ -243,7 +243,11 @@ struct trapframe; #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 diff --git a/sys/i386/linux/linux_ioctl.c b/sys/i386/linux/linux_ioctl.c index 18b1247..1c79c6c 100644 --- a/sys/i386/linux/linux_ioctl.c +++ b/sys/i386/linux/linux_ioctl.c @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: linux_ioctl.c,v 1.34 1999/07/06 11:41:48 marcel Exp $ + * $Id: linux_ioctl.c,v 1.35 1999/07/08 16:15:19 marcel Exp $ */ #include <sys/param.h> @@ -986,6 +986,37 @@ linux_ioctl(struct proc *p, struct linux_ioctl_args *args) 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) { |