xref: /freebsd/lib/libc/gen/tcsendbreak.3 (revision b9f654b163bce26de79705e77b872427c9f2afa1)
1.\" Copyright (c) 1991, 1993
2.\"	The Regents of the University of California.  All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\" 3. Neither the name of the University nor the names of its contributors
13.\"    may be used to endorse or promote products derived from this software
14.\"    without specific prior written permission.
15.\"
16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26.\" SUCH DAMAGE.
27.\"
28.\"	@(#)tcsendbreak.3	8.1 (Berkeley) 6/4/93
29.\" $FreeBSD$
30.\"
31.Dd January 11, 2017
32.Dt TCSENDBREAK 3
33.Os
34.Sh NAME
35.Nm tcsendbreak ,
36.Nm tcdrain ,
37.Nm tcflush ,
38.Nm tcflow
39.Nd line control functions
40.Sh LIBRARY
41.Lb libc
42.Sh SYNOPSIS
43.In termios.h
44.Ft int
45.Fn tcdrain "int fd"
46.Ft int
47.Fn tcflow "int fd" "int action"
48.Ft int
49.Fn tcflush "int fd" "int action"
50.Ft int
51.Fn tcsendbreak "int fd" "int len"
52.Sh DESCRIPTION
53The
54.Fn tcdrain
55function waits until all output written to the terminal referenced by
56.Fa fd
57has been transmitted to the terminal.
58.Pp
59The
60.Fn tcflow
61function suspends transmission of data to or the reception of data from
62the terminal referenced by
63.Fa fd
64depending on the value of
65.Fa action .
66The value of
67.Fa action
68must be one of the following:
69.Bl -tag -width "TCIOFF"
70.It Fa TCOOFF
71Suspend output.
72.It Fa TCOON
73Restart suspended output.
74.It Fa TCIOFF
75Transmit a STOP character, which is intended to cause the terminal to stop
76transmitting data to the system.
77(See the description of IXOFF in the
78.Ql Input Modes
79section of
80.Xr termios 4 ) .
81.It Fa TCION
82Transmit a START character, which is intended to cause the terminal to start
83transmitting data to the system.
84(See the description of IXOFF in the
85.Ql Input Modes
86section of
87.Xr termios 4 ) .
88.El
89.Pp
90The
91.Fn tcflush
92function discards any data written to the terminal referenced by
93.Fa fd
94which has not been transmitted to the terminal, or any data received
95from the terminal but not yet read, depending on the value of
96.Fa action .
97The value of
98.Fa action
99must be one of the following:
100.Bl -tag -width "TCIOFLUSH"
101.It Fa TCIFLUSH
102Flush data received but not read.
103.It Fa TCOFLUSH
104Flush data written but not transmitted.
105.It Fa TCIOFLUSH
106Flush both data received but not read and data written but not transmitted.
107.El
108.Pp
109The
110.Fn tcsendbreak
111function transmits a continuous stream of zero-valued bits for four-tenths
112of a second to the terminal referenced by
113.Fa fd .
114The
115.Fa len
116argument is ignored in this implementation.
117.Sh RETURN VALUES
118Upon successful completion, all of these functions return a value of zero.
119.Sh ERRORS
120If any error occurs, a value of -1 is returned and the global variable
121.Va errno
122is set to indicate the error, as follows:
123.Bl -tag -width Er
124.It Bq Er EBADF
125The
126.Fa fd
127argument is not a valid file descriptor.
128.It Bq Er EINVAL
129The
130.Fa action
131argument is not a proper value.
132.It Bq Er ENOTTY
133The file associated with
134.Fa fd
135is not a terminal.
136.It Bq Er EINTR
137A signal interrupted the
138.Fn tcdrain
139function.
140.It Bq Er EWOULDBLOCK
141The configured timeout expired before the
142.Fn tcdrain
143function could write all buffered output.
144.El
145.Sh SEE ALSO
146.Xr tcsetattr 3 ,
147.Xr termios 4 ,
148.Xr tty 4 ,
149.Xr comcontrol 8
150.Sh STANDARDS
151The
152.Fn tcsendbreak ,
153.Fn tcflush
154and
155.Fn tcflow
156functions are expected to be compliant with the
157.St -p1003.1-88
158specification.
159.Pp
160The
161.Fn tcdrain
162function is expected to be compliant with
163.St -p1003.1-88
164when the drain wait value is set to zero with
165.Xr comcontrol 8 ,
166or with
167.Xr ioctl 2
168.Va TIOCSDRAINWAIT ,
169or with
170.Xr sysctl 8
171.Va kern.tty_drainwait .
172A non-zero drain wait value can result in
173.Fn tcdrain
174returning
175.Va EWOULDBLOCK
176without writing all output.
177The default value for
178.Va kern.tty_drainwait
179is 300 seconds.
180