summaryrefslogtreecommitdiffstats
path: root/man2/ioctl_tty.2
diff options
context:
space:
mode:
Diffstat (limited to 'man2/ioctl_tty.2')
-rw-r--r--man2/ioctl_tty.2922
1 files changed, 0 insertions, 922 deletions
diff --git a/man2/ioctl_tty.2 b/man2/ioctl_tty.2
deleted file mode 100644
index 9d247ed..0000000
--- a/man2/ioctl_tty.2
+++ /dev/null
@@ -1,922 +0,0 @@
-'\" 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 2024-03-03 "Linux man-pages 6.7"
-.SH NAME
-ioctl_tty \- ioctls for terminals and serial lines
-.SH LIBRARY
-Standard C library
-.RI ( libc ", " \-lc )
-.SH SYNOPSIS
-.nf
-.B #include <sys/ioctl.h>
-.BR "#include <asm/termbits.h>" " /* Definition of " "struct termios" ,
-.BR " struct termios2" ", and"
-.BR " Bnnn" ", " BOTHER ", " CBAUD ", " CLOCAL ,
-.BR " TC*" { FLUSH , ON , OFF "} and other constants */"
-.P
-.BI "int ioctl(int " fd ", int " op ", ...);"
-.fi
-.SH DESCRIPTION
-The
-.BR ioctl (2)
-call for terminals and serial ports accepts many possible operation arguments.
-Most require a third argument, of varying type, here called
-.I argp
-or
-.IR arg .
-.P
-Use of
-.BR ioctl ()
-makes for nonportable programs.
-Use the POSIX interface described in
-.BR termios (3)
-whenever possible.
-.P
-Please note that
-.B struct termios
-from
-.I <asm/termbits.h>
-is different and incompatible with
-.B struct termios
-from
-.IR <termios.h> .
-These ioctl calls require
-.B struct termios
-from
-.IR <asm/termbits.h> .
-.SS Get and set terminal attributes
-.TP
-.B TCGETS
-Argument:
-.BI "struct termios\~*" argp
-.IP
-Equivalent to
-.IR "tcgetattr(fd, argp)" .
-.IP
-Get the current serial port settings.
-.TP
-.B TCSETS
-Argument:
-.BI "const struct termios\~*" argp
-.IP
-Equivalent to
-.IR "tcsetattr(fd, TCSANOW, argp)" .
-.IP
-Set the current serial port settings.
-.TP
-.B TCSETSW
-Argument:
-.BI "const struct termios\~*" argp
-.IP
-Equivalent to
-.IR "tcsetattr(fd, TCSADRAIN, argp)" .
-.IP
-Allow the output buffer to drain, and
-set the current serial port settings.
-.TP
-.B TCSETSF
-Argument:
-.BI "const struct termios\~*" argp
-.IP
-Equivalent to
-.IR "tcsetattr(fd, TCSAFLUSH, argp)" .
-.IP
-Allow the output buffer to drain, discard pending input, and
-set the current serial port settings.
-.P
-The following four ioctls, added in Linux 2.6.20,
-.\" commit 64bb6c5e1ddcd47c951740485026ef08975ee2e6
-.\" commit 592ee3a5e5e2a981ef2829a0380093006d045661
-are just like
-.BR TCGETS ,
-.BR TCSETS ,
-.BR TCSETSW ,
-.BR TCSETSF ,
-except that they take a
-.I "struct termios2\~*"
-instead of a
-.IR "struct termios\~*" .
-If the structure member
-.B c_cflag
-contains the flag
-.BR BOTHER ,
-then the baud rate is stored in the structure members
-.B c_ispeed
-and
-.B c_ospeed
-as integer values.
-These ioctls are not supported on all architectures.
-.RS
-.TS
-lb l.
-TCGETS2 \fBstruct termios2 *\fPargp
-TCSETS2 \fBconst struct termios2 *\fPargp
-TCSETSW2 \fBconst struct termios2 *\fPargp
-TCSETSF2 \fBconst struct termios2 *\fPargp
-.TE
-.RE
-.P
-The following four ioctls are just like
-.BR TCGETS ,
-.BR TCSETS ,
-.BR TCSETSW ,
-.BR TCSETSF ,
-except that they take a
-.I "struct termio\~*"
-instead of a
-.IR "struct termios\~*" .
-.RS
-.TS
-lb l.
-TCGETA \fBstruct termio *\fPargp
-TCSETA \fBconst struct termio *\fPargp
-TCSETAW \fBconst struct termio *\fPargp
-TCSETAF \fBconst struct termio *\fPargp
-.TE
-.RE
-.SS Locking the termios structure
-The
-.I termios
-structure of a terminal can be locked.
-The lock is itself a
-.I termios
-structure, with nonzero bits or fields indicating a
-locked value.
-.TP
-.B TIOCGLCKTRMIOS
-Argument:
-.BI "struct termios\~*" argp
-.IP
-Gets the locking status of the
-.I termios
-structure of the terminal.
-.TP
-.B TIOCSLCKTRMIOS
-Argument:
-.BI "const struct termios\~*" argp
-.IP
-Sets the locking status of the
-.I termios
-structure of the terminal.
-Only a process with the
-.B CAP_SYS_ADMIN
-capability can do this.
-.SS Get and set window size
-Window sizes are kept in the kernel, but not used by the kernel
-(except in the case of virtual consoles, where the kernel will
-update the window size when the size of the virtual console changes,
-for example, by loading a new font).
-.TP
-.B TIOCGWINSZ
-Argument:
-.BI "struct winsize\~*" argp
-.IP
-Get window size.
-.TP
-.B TIOCSWINSZ
-Argument:
-.BI "const struct winsize\~*" argp
-.IP
-Set window size.
-.P
-The struct used by these ioctls is defined as
-.P
-.in +4n
-.EX
-struct winsize {
- unsigned short ws_row;
- unsigned short ws_col;
- unsigned short ws_xpixel; /* unused */
- unsigned short ws_ypixel; /* unused */
-};
-.EE
-.in
-.P
-When the window size changes, a
-.B SIGWINCH
-signal is sent to the
-foreground process group.
-.SS Sending a break
-.TP
-.B TCSBRK
-Argument:
-.BI "int " arg
-.IP
-Equivalent to
-.IR "tcsendbreak(fd, arg)" .
-.IP
-If the terminal is using asynchronous serial data transmission, and
-.I arg
-is zero, then send a break (a stream of zero bits) for between
-0.25 and 0.5 seconds.
-If the terminal is not using asynchronous
-serial data transmission, then either a break is sent, or the function
-returns without doing anything.
-When
-.I arg
-is nonzero, nobody knows what will happen.
-.IP
-(SVr4, UnixWare, Solaris, and Linux treat
-.I "tcsendbreak(fd,arg)"
-with nonzero
-.I arg
-like
-.IR "tcdrain(fd)" .
-SunOS treats
-.I arg
-as a multiplier, and sends a stream of bits
-.I arg
-times as long as done for zero
-.IR arg .
-DG/UX and AIX treat
-.I arg
-(when nonzero) as a time interval measured in milliseconds.
-HP-UX ignores
-.IR arg .)
-.TP
-.B TCSBRKP
-Argument:
-.BI "int " arg
-.IP
-So-called "POSIX version" of
-.BR TCSBRK .
-It treats nonzero
-.I arg
-as a time interval measured in deciseconds, and does nothing
-when the driver does not support breaks.
-.TP
-.B TIOCSBRK
-Argument:
-.B void
-.IP
-Turn break on, that is, start sending zero bits.
-.TP
-.B TIOCCBRK
-Argument:
-.B void
-.IP
-Turn break off, that is, stop sending zero bits.
-.SS Software flow control
-.TP
-.B TCXONC
-Argument:
-.BI "int " arg
-.IP
-Equivalent to
-.IR "tcflow(fd, arg)" .
-.IP
-See
-.BR tcflow (3)
-for the argument values
-.BR TCOOFF ,
-.BR TCOON ,
-.BR TCIOFF ,
-.BR TCION .
-.SS Buffer count and flushing
-.TP
-.B FIONREAD
-Argument:
-.BI "int\~*" argp
-.IP
-Get the number of bytes in the input buffer.
-.TP
-.B TIOCINQ
-Argument:
-.BI "int\~*" argp
-.IP
-Same as
-.BR FIONREAD .
-.TP
-.B TIOCOUTQ
-Argument:
-.BI "int\~*" argp
-.IP
-Get the number of bytes in the output buffer.
-.TP
-.B TCFLSH
-Argument:
-.BI "int " arg
-.IP
-Equivalent to
-.IR "tcflush(fd, arg)" .
-.IP
-See
-.BR tcflush (3)
-for the argument values
-.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
-Argument:
-.BI "const char\~*" argp
-.IP
-Insert the given byte in the input queue.
-.IP
-Since Linux 6.2,
-.\" commit 690c8b804ad2eafbd35da5d3c95ad325ca7d5061
-.\" commit 83efeeeb3d04b22aaed1df99bc70a48fe9d22c4d
-this operation may require the
-.B CAP_SYS_ADMIN
-capability (if the
-.I dev.tty.legacy_tiocsti
-sysctl variable is set to false).
-.SS Redirecting console output
-.TP
-.B TIOCCONS
-Argument:
-.B void
-.IP
-Redirect output that would have gone to
-.I /dev/console
-or
-.I /dev/tty0
-to the given terminal.
-If that was a pseudoterminal master, send it to the slave.
-Before Linux 2.6.10,
-anybody can do this as long as the output was not redirected yet;
-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
-is returned,
-but redirection can be stopped by using this ioctl with
-.I fd
-pointing at
-.I /dev/console
-or
-.IR /dev/tty0 .
-.SS Controlling terminal
-.TP
-.B TIOCSCTTY
-Argument:
-.BI "int " arg
-.IP
-Make the given terminal the controlling terminal of the calling process.
-The calling process must be a session leader and not have a
-controlling terminal already.
-For this case,
-.I arg
-should be specified as zero.
-.IP
-If this terminal is already the controlling terminal
-of a different session group, then the ioctl fails with
-.BR EPERM ,
-unless the caller has the
-.B CAP_SYS_ADMIN
-capability and
-.I arg
-equals 1, in which case the terminal is stolen, and all processes that had
-it as controlling terminal lose it.
-.TP
-.B TIOCNOTTY
-Argument:
-.B void
-.IP
-If the given terminal was the controlling terminal of the calling process,
-give up this controlling terminal.
-If the process was session leader,
-then send
-.B SIGHUP
-and
-.B SIGCONT
-to the foreground process group
-and all processes in the current session lose their controlling terminal.
-.SS Process group and session ID
-.TP
-.B TIOCGPGRP
-Argument:
-.BI "pid_t\~*" argp
-.IP
-When successful, equivalent to
-.IR "*argp = tcgetpgrp(fd)" .
-.IP
-Get the process group ID of the foreground process group on this terminal.
-.TP
-.B TIOCSPGRP
-Argument:
-.BI "const pid_t\~*" argp
-.IP
-Equivalent to
-.IR "tcsetpgrp(fd, *argp)" .
-.IP
-Set the foreground process group ID of this terminal.
-.TP
-.B TIOCGSID
-Argument:
-.BI "pid_t\~*" argp
-.IP
-When successful, equivalent to
-.IR "*argp = tcgetsid(fd)" .
-.IP
-Get the session ID of the given terminal.
-This fails with the error
-.B ENOTTY
-if the terminal is not a master pseudoterminal
-and not our controlling terminal.
-Strange.
-.SS Exclusive mode
-.TP
-.B TIOCEXCL
-Argument:
-.B void
-.IP
-Put the terminal into exclusive mode.
-No further
-.BR open (2)
-operations on the terminal are permitted.
-(They fail with
-.BR EBUSY ,
-except for a process with the
-.B CAP_SYS_ADMIN
-capability.)
-.TP
-.B TIOCGEXCL
-Argument:
-.BI "int\~*" argp
-.IP
-(since Linux 3.8)
-If the terminal is currently in exclusive mode,
-place a nonzero value in the location pointed to by
-.IR argp ;
-otherwise, place zero in
-.IR *argp .
-.TP
-.B TIOCNXCL
-Argument:
-.B void
-.IP
-Disable exclusive mode.
-.SS Line discipline
-.TP
-.B TIOCGETD
-Argument:
-.BI "int\~*" argp
-.IP
-Get the line discipline of the terminal.
-.TP
-.B TIOCSETD
-Argument:
-.BI "const int\~*" argp
-.IP
-Set the line discipline of the terminal.
-.SS Pseudoterminal ioctls
-.TP
-.B TIOCPKT
-Argument:
-.BI "const int\~*" argp
-.IP
-Enable (when
-.RI * argp
-is nonzero) or disable packet mode.
-Can be applied to the master side of a pseudoterminal only (and will return
-.B ENOTTY
-otherwise).
-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
-written on the slave side of the pseudoterminal.
-If the first byte is not
-.B TIOCPKT_DATA
-(0), it is an OR of one
-or more of the following bits:
-.IP
-.ad l
-.TS
-lb l.
-TIOCPKT_FLUSHREAD T{
-The read queue for the terminal is flushed.
-T}
-TIOCPKT_FLUSHWRITE T{
-The write queue for the terminal is flushed.
-T}
-TIOCPKT_STOP T{
-Output to the terminal is stopped.
-T}
-TIOCPKT_START T{
-Output to the terminal is restarted.
-T}
-TIOCPKT_DOSTOP T{
-The start and stop characters are \fB\[ha]S\fP/\fB\[ha]Q\fP.
-T}
-TIOCPKT_NOSTOP T{
-The start and stop characters are not \fB\[ha]S\fP/\fB\[ha]Q\fP.
-T}
-.TE
-.ad
-.IP
-While packet mode is in use, the presence
-of control status information to be read
-from the master side may be detected by a
-.BR select (2)
-for exceptional conditions or a
-.BR poll (2)
-for the
-.B POLLPRI
-event.
-.IP
-This mode is used by
-.BR rlogin (1)
-and
-.BR rlogind (8)
-to implement a remote-echoed,
-locally \fB\[ha]S\fP/\fB\[ha]Q\fP flow-controlled remote login.
-.TP
-.B TIOCGPKT
-Argument:
-.BI "const int\~*" argp
-.IP
-(since Linux 3.8)
-Return the current packet mode setting in the integer pointed to by
-.IR argp .
-.TP
-.B TIOCSPTLCK
-Argument:
-.BI "int\~*" argp
-.IP
-Set (if
-.I *argp
-is nonzero) or remove (if
-.I *argp
-is zero) the lock on the pseudoterminal slave device.
-(See also
-.BR unlockpt (3).)
-.TP
-.B TIOCGPTLCK
-Argument:
-.BI "int\~*" argp
-.IP
-(since Linux 3.8)
-Place the current lock state of the pseudoterminal slave device
-in the location pointed to by
-.IR argp .
-.TP
-.B TIOCGPTPEER
-Argument:
-.BI "int " flags
-.IP
-.\" commit 54ebbfb1603415d9953c150535850d30609ef077
-(since Linux 4.13)
-Given a file descriptor in
-.I fd
-that refers to a pseudoterminal master,
-open (with the given
-.BR open (2)-style
-.IR flags )
-and return a new file descriptor that refers to the peer
-pseudoterminal slave device.
-This operation can be performed
-regardless of whether the pathname of the slave device
-is accessible through the calling process's mount namespace.
-.IP
-Security-conscious programs interacting with namespaces may wish to use this
-operation rather than
-.BR open (2)
-with the pathname returned by
-.BR ptsname (3),
-and similar library functions that have insecure APIs.
-(For example, confusion can occur in some cases using
-.BR ptsname (3)
-with a pathname where a devpts filesystem
-has been mounted in a different mount namespace.)
-.P
-The BSD ioctls
-.BR TIOCSTOP ,
-.BR TIOCSTART ,
-.BR TIOCUCNTL ,
-and
-.B TIOCREMOTE
-have not been implemented under Linux.
-.SS Modem control
-.TP
-.B TIOCMGET
-Argument:
-.BI "int\~*" argp
-.IP
-Get the status of modem bits.
-.TP
-.B TIOCMSET
-Argument:
-.BI "const int\~*" argp
-.IP
-Set the status of modem bits.
-.TP
-.B TIOCMBIC
-Argument:
-.BI "const int\~*" argp
-.IP
-Clear the indicated modem bits.
-.TP
-.B TIOCMBIS
-Argument:
-.BI "const int\~*" argp
-.IP
-Set the indicated modem bits.
-.P
-The following bits are used by the above ioctls:
-.P
-.TS
-lb l.
-TIOCM_LE DSR (data set ready/line enable)
-TIOCM_DTR DTR (data terminal ready)
-TIOCM_RTS RTS (request to send)
-TIOCM_ST Secondary TXD (transmit)
-TIOCM_SR Secondary RXD (receive)
-TIOCM_CTS CTS (clear to send)
-TIOCM_CAR DCD (data carrier detect)
-TIOCM_CD see TIOCM_CAR
-TIOCM_RNG RNG (ring)
-TIOCM_RI see TIOCM_RNG
-TIOCM_DSR DSR (data set ready)
-.TE
-.TP
-.B TIOCMIWAIT
-Argument:
-.BI "int " arg
-.IP
-Wait for any of the 4 modem bits (DCD, RI, DSR, CTS) to change.
-The bits of interest are specified as a bit mask in
-.IR arg ,
-by ORing together any of the bit values,
-.BR TIOCM_RNG ,
-.BR TIOCM_DSR ,
-.BR TIOCM_CD ,
-and
-.BR TIOCM_CTS .
-The caller should use
-.B TIOCGICOUNT
-to see which bit has changed.
-.TP
-.B TIOCGICOUNT
-Argument:
-.BI "struct serial_icounter_struct\~*" argp
-.IP
-Get counts of input serial line interrupts (DCD, RI, DSR, CTS).
-The counts are written to the
-.I serial_icounter_struct
-structure pointed to by
-.IR argp .
-.IP
-Note: both 1->0 and 0->1 transitions are counted, except for
-RI, where only 0->1 transitions are counted.
-.SS Marking a line as local
-.TP
-.B TIOCGSOFTCAR
-Argument:
-.BI "int\~*" argp
-.IP
-("Get software carrier flag")
-Get the status of the CLOCAL flag in the c_cflag field of the
-.I termios
-structure.
-.TP
-.B TIOCSSOFTCAR
-Argument:
-.BI "const int\~*" argp
-.IP
-("Set software carrier flag")
-Set the CLOCAL flag in the
-.I termios
-structure when
-.RI * argp
-is nonzero, and clear it otherwise.
-.P
-If the
-.B CLOCAL
-flag for a line is off, the hardware carrier detect (DCD)
-signal is significant, and an
-.BR open (2)
-of the corresponding terminal will block until DCD is asserted,
-unless the
-.B O_NONBLOCK
-flag is given.
-If
-.B CLOCAL
-is set, the line behaves as if DCD is always asserted.
-The software carrier flag is usually turned on for local devices,
-and is off for lines with modems.
-.SS Linux-specific
-For the
-.B TIOCLINUX
-ioctl, see
-.BR ioctl_console (2).
-.SS Kernel debugging
-.B "#include <linux/tty.h>"
-.TP
-.B TIOCTTYGSTRUCT
-Argument:
-.BI "struct tty_struct\~*" argp
-.IP
-Get the
-.I tty_struct
-corresponding to
-.IR fd .
-This operation was removed in Linux 2.5.67.
-.\" commit b3506a09d15dc5aee6d4bb88d759b157016e1864
-.\" Author: Andries E. Brouwer <andries.brouwer@cwi.nl>
-.\" Date: Tue Apr 1 04:42:46 2003 -0800
-.\"
-.\" [PATCH] kill TIOCTTYGSTRUCT
-.\"
-.\" Only used for (dubious) debugging purposes, and exposes
-.\" internal kernel state.
-.\"
-.\" .SS Serial info
-.\" .BR "#include <linux/serial.h>"
-.\" .P
-.\" .TP
-.\" .BI "TIOCGSERIAL struct serial_struct *" argp
-.\" Get serial info.
-.\" .TP
-.\" .BI "TIOCSSERIAL const struct serial_struct *" argp
-.\" Set serial info.
-.SH RETURN VALUE
-The
-.BR ioctl (2)
-system call returns 0 on success.
-On error, it returns \-1 and sets
-.I errno
-to indicate the error.
-.SH ERRORS
-.TP
-.B EINVAL
-Invalid operation parameter.
-.TP
-.B ENOIOCTLCMD
-Unknown operation.
-.TP
-.B ENOTTY
-Inappropriate
-.IR fd .
-.TP
-.B EPERM
-Insufficient permission.
-.SH EXAMPLES
-Check the condition of DTR on the serial port.
-.P
-.\" SRC BEGIN (tiocmget.c)
-.EX
-#include <fcntl.h>
-#include <stdio.h>
-#include <sys/ioctl.h>
-#include <unistd.h>
-\&
-int
-main(void)
-{
- int fd, serial;
-\&
- fd = open("/dev/ttyS0", O_RDONLY);
- ioctl(fd, TIOCMGET, &serial);
- if (serial & TIOCM_DTR)
- puts("TIOCM_DTR is set");
- else
- puts("TIOCM_DTR is not set");
- close(fd);
-}
-.EE
-.\" SRC END
-.P
-Get or set arbitrary baudrate on the serial port.
-.P
-.\" SRC BEGIN (tcgets.c)
-.EX
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-\&
-#include <asm/termbits.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/ioctl.h>
-#include <unistd.h>
-\&
-int
-main(int argc, char *argv[])
-{
-#if !defined BOTHER
- fprintf(stderr, "BOTHER is unsupported\en");
- /* Program may fallback to TCGETS/TCSETS with Bnnn constants */
- exit(EXIT_FAILURE);
-#else
- /* Declare tio structure, its type depends on supported ioctl */
-# if defined TCGETS2
- struct termios2 tio;
-# else
- struct termios tio;
-# endif
- int fd, rc;
-\&
- if (argc != 2 && argc != 3 && argc != 4) {
- fprintf(stderr, "Usage: %s device [output [input] ]\en", argv[0]);
- exit(EXIT_FAILURE);
- }
-\&
- fd = open(argv[1], O_RDWR | O_NONBLOCK | O_NOCTTY);
- if (fd < 0) {
- perror("open");
- exit(EXIT_FAILURE);
- }
-\&
- /* Get the current serial port settings via supported ioctl */
-# if defined TCGETS2
- rc = ioctl(fd, TCGETS2, &tio);
-# else
- rc = ioctl(fd, TCGETS, &tio);
-# endif
- if (rc) {
- perror("TCGETS");
- close(fd);
- exit(EXIT_FAILURE);
- }
-\&
- /* 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 &= \[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 &= \[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]);
-\&
- /* Set new serial port settings via supported ioctl */
-# if defined TCSETS2
- rc = ioctl(fd, TCSETS2, &tio);
-# else
- rc = ioctl(fd, TCSETS, &tio);
-# endif
- if (rc) {
- perror("TCSETS");
- close(fd);
- exit(EXIT_FAILURE);
- }
-\&
- /* And get new values which were really configured */
-# if defined TCGETS2
- rc = ioctl(fd, TCGETS2, &tio);
-# else
- rc = ioctl(fd, TCGETS, &tio);
-# endif
- if (rc) {
- perror("TCGETS");
- close(fd);
- exit(EXIT_FAILURE);
- }
- }
-\&
- close(fd);
-\&
- printf("output baud rate: %u\en", tio.c_ospeed);
- printf("input baud rate: %u\en", tio.c_ispeed);
-\&
- exit(EXIT_SUCCESS);
-#endif
-}
-.EE
-.\" SRC END
-.SH SEE ALSO
-.BR ldattach (8),
-.BR ioctl (2),
-.BR ioctl_console (2),
-.BR termios (3),
-.BR pty (7)
-.\"
-.\" FIONBIO const int *
-.\" FIONCLEX void
-.\" FIOCLEX void
-.\" FIOASYNC const int *
-.\" from serial.c:
-.\" TIOCSERCONFIG void
-.\" TIOCSERGWILD int *
-.\" TIOCSERSWILD const int *
-.\" TIOCSERGSTRUCT struct async_struct *
-.\" TIOCSERGETMULTI struct serial_multiport_struct *
-.\" TIOCSERSETMULTI const struct serial_multiport_struct *
-.\" TIOCGSERIAL, TIOCSSERIAL (see above)