+'\" t
.\" Copyright 2002 Walter Harms <walter.harms@informatik.uni-oldenburg.de>
.\" and Andries Brouwer <aeb@cwi.nl>.
.\"
.\" SPDX-License-Identifier: GPL-1.0-or-later
.\"
-.TH IOCTL_TTY 2 2021-08-27 "Linux" "Linux Programmer's Manual"
+.TH ioctl_tty 2 (date) "Linux man-pages (unreleased)"
.SH NAME
ioctl_tty \- ioctls for terminals and serial lines
.SH LIBRARY
.TP
.B TIOCSBRK
Argument:
-.BI "void"
+.B void
.IP
Turn break on, that is, start sending zero bits.
.TP
.B TIOCCBRK
Argument:
-.BI "void"
+.B void
.IP
Turn break off, that is, stop sending zero bits.
.SS Software flow control
.BR TCION .
.SS Buffer count and flushing
.TP
-.BI FIONREAD
+.B FIONREAD
Argument:
.BI "int\~*" argp
.IP
.BR TCIFLUSH ,
.BR TCOFLUSH ,
.BR TCIOFLUSH .
+.TP
+.B TIOCSERGETLSR
+Argument:
+.BI "int\~*" argp
+.IP
+Get line status register.
+Status register has
+.B TIOCSER_TEMT
+bit set when
+output buffer is empty and also hardware transmitter is physically empty.
+.IP
+Does not have to be supported by all serial tty drivers.
+.IP
+.BR tcdrain (3)
+does not wait and returns immediately when
+.B TIOCSER_TEMT
+bit is set.
.SS Faking input
.TP
.B TIOCSTI
.TP
.B TIOCCONS
Argument:
-.BI "void"
+.B void
.IP
Redirect output that would have gone to
.I /dev/console
.I /dev/tty0
to the given terminal.
If that was a pseudoterminal master, send it to the slave.
-In Linux before version 2.6.10,
+Before Linux 2.6.10,
anybody can do this as long as the output was not redirected yet;
-since version 2.6.10, only a process with the
-.BR CAP_SYS_ADMIN
+since Linux 2.6.10, only a process with the
+.B CAP_SYS_ADMIN
capability may do this.
If output was redirected already, then
.B EBUSY
of a different session group, then the ioctl fails with
.BR EPERM ,
unless the caller has the
-.BR CAP_SYS_ADMIN
+.B CAP_SYS_ADMIN
capability and
.I arg
equals 1, in which case the terminal is stolen, and all processes that had
.TP
.B TIOCNOTTY
Argument:
-.BI "void"
+.B void
.IP
If the given terminal was the controlling terminal of the calling process,
give up this controlling terminal.
.TP
.B TIOCEXCL
Argument:
-.BI "void"
+.B void
.IP
Put the terminal into exclusive mode.
No further
(They fail with
.BR EBUSY ,
except for a process with the
-.BR CAP_SYS_ADMIN
+.B CAP_SYS_ADMIN
capability.)
.TP
.B TIOCGEXCL
.TP
.B TIOCNXCL
Argument:
-.BI "void"
+.B void
.IP
Disable exclusive mode.
.SS Line discipline
In packet mode, each subsequent
.BR read (2)
will return a packet that either contains a single nonzero control byte,
-or has a single byte containing zero (\(aq\e0\(aq) followed by data
+or has a single byte containing zero (\[aq]\e0\[aq]) followed by data
written on the slave side of the pseudoterminal.
If the first byte is not
.B TIOCPKT_DATA
.BI "int\~*" argp
.IP
Set (if
-.IR *argp
+.I *argp
is nonzero) or remove (if
-.IR *argp
+.I *argp
is zero) the lock on the pseudoterminal slave device.
(See also
.BR unlockpt (3).)
.SH EXAMPLES
Check the condition of DTR on the serial port.
.PP
+.\" SRC BEGIN (tiocmget.c)
.EX
-#include <stdio.h>
-#include <unistd.h>
#include <fcntl.h>
+#include <stdio.h>
#include <sys/ioctl.h>
+#include <unistd.h>
int
main(void)
close(fd);
}
.EE
+.\" SRC END
.PP
Get or set arbitrary baudrate on the serial port.
.PP
+.\" SRC BEGIN (tcgets.c)
.EX
/* SPDX-License-Identifier: GPL-2.0-or-later */
#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
-#include <sys/types.h>
#include <unistd.h>
int
/* Change baud rate when more arguments were provided */
if (argc == 3 || argc == 4) {
/* Clear the current output baud rate and fill a new value */
- tio.c_cflag &= ~CBAUD;
+ tio.c_cflag &= \[ti]CBAUD;
tio.c_cflag |= BOTHER;
tio.c_ospeed = atoi(argv[2]);
/* Clear the current input baud rate and fill a new value */
- tio.c_cflag &= ~(CBAUD << IBSHIFT);
+ tio.c_cflag &= \[ti](CBAUD << IBSHIFT);
tio.c_cflag |= BOTHER << IBSHIFT;
/* When 4th argument is not provided reuse output baud rate */
tio.c_ispeed = (argc == 4) ? atoi(argv[3]) : atoi(argv[2]);
#endif
}
.EE
+.\" SRC END
.SH SEE ALSO
.BR ldattach (8),
.BR ioctl (2),
.\" TIOCSERGWILD int *
.\" TIOCSERSWILD const int *
.\" TIOCSERGSTRUCT struct async_struct *
-.\" TIOCSERGETLSR int *
.\" TIOCSERGETMULTI struct serial_multiport_struct *
.\" TIOCSERSETMULTI const struct serial_multiport_struct *
.\" TIOCGSERIAL, TIOCSSERIAL (see above)