summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/tty.4 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man4/tty.4 3.html')
-rw-r--r--static/freebsd/man4/tty.4 3.html337
1 files changed, 0 insertions, 337 deletions
diff --git a/static/freebsd/man4/tty.4 3.html b/static/freebsd/man4/tty.4 3.html
deleted file mode 100644
index 0145d281..00000000
--- a/static/freebsd/man4/tty.4 3.html
+++ /dev/null
@@ -1,337 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">TTY(4)</td>
- <td class="head-vol">Device Drivers Manual</td>
- <td class="head-rtitle">TTY(4)</td>
- </tr>
-</table>
-<div class="manual-text">
-<section class="Sh">
-<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
-<p class="Pp"><code class="Nm">tty</code> &#x2014; <span class="Nd">general
- terminal interface</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
-<p class="Pp"><code class="In">#include
- &lt;<a class="In">sys/ioctl.h</a>&gt;</code></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">This section describes the interface to the terminal drivers in
- the system.</p>
-<section class="Ss">
-<h2 class="Ss" id="Terminal_Special_Files"><a class="permalink" href="#Terminal_Special_Files">Terminal
- Special Files</a></h2>
-<p class="Pp">Each hardware terminal port on the system has several terminal
- special device files associated with it in the directory ``/dev/'' (for
- example, ``/dev/tty03'' and ``/dev/cua03''). When a user logs into the
- system on one of these hardware terminal ports, the system has already
- opened the associated device and prepared the line for normal interactive
- use (see <a class="Xr">getty(8)</a>.) There is also a special case of a
- terminal file that connects not to a hardware terminal port, but to another
- program on the other side. These special terminal devices are called
- <a class="permalink" href="#ptys"><i class="Em" id="ptys">ptys</i></a> and
- provide the mechanism necessary to give users the same interface to the
- system when logging in over a network (using <a class="Xr">telnet(1)</a> for
- example). Even in these cases the details of how the terminal file was
- opened and set up is already handled by special software in the system.
- Thus, users do not normally need to worry about the details of how these
- lines are opened or used. Also, these lines are often used for dialing out
- of a system (through an out-calling modem), but again the system provides
- programs that hide the details of accessing these terminal special files
- (see <a class="Xr">tip(1)</a>).</p>
-<p class="Pp" id="line">When an interactive user logs in, the system prepares
- the line to behave in a certain way (called a
- <a class="permalink" href="#line"><i class="Em">line discipline</i></a>),
- the particular details of which is described in <a class="Xr">stty(1)</a> at
- the command level, and in <a class="Xr">termios(4)</a> at the programming
- level. A user may be concerned with changing settings associated with his
- particular login terminal and should refer to the preceding man pages for
- the common cases. The remainder of this man page is concerned with
- describing details of using and controlling terminal devices at a low level,
- such as that possibly required by a program wishing to provide features
- similar to those provided by the system.</p>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Terminal_File_Operations"><a class="permalink" href="#Terminal_File_Operations">Terminal
- File Operations</a></h2>
-<p class="Pp">All of the following operations are invoked using the
- <a class="Xr">ioctl(2)</a> system call. Refer to that man page for a
- description of the
- <a class="permalink" href="#request"><i class="Em" id="request">request</i></a>
- and <i class="Em">argp</i> parameters. In addition to the ioctl
- <i class="Em">requests</i> defined here, the specific line discipline in
- effect will define other <i class="Em">requests</i> specific to it (actually
- <a class="Xr">termios(4)</a> defines them as function calls, not ioctl
- <i class="Em">requests</i>.) The following section lists the available ioctl
- requests. The name of the request, a description of its purpose, and the
- typed <i class="Em">argp</i> parameter (if any) are listed. For example, the
- first entry says</p>
-<p class="Pp"></p>
-<div class="Bd Bd-indent"><i class="Em">TIOCSPGRP int *tpgrp</i></div>
-<p class="Pp">and would be called on the terminal associated with file
- descriptor zero by the following code fragment:</p>
-<div class="Bd Pp Li">
-<pre> int pgrp;
-
- pgrp = getpgrp();
- ioctl(0, TIOCSPGRP, &amp;pgrp);</pre>
-</div>
-</section>
-<section class="Ss">
-<h2 class="Ss" id="Terminal_File_Request_Descriptions"><a class="permalink" href="#Terminal_File_Request_Descriptions">Terminal
- File Request Descriptions</a></h2>
-<dl class="Bl-tag">
- <dt id="TIOCSETD"><a class="permalink" href="#TIOCSETD"><code class="Dv">TIOCSETD</code></a>
- <var class="Fa">int *ldisc</var></dt>
- <dd>This call is obsolete but left for compatibility. Before
- <span class="Ux">FreeBSD 8.0</span>, it would change to the new line
- discipline pointed to by <var class="Fa">ldisc</var>.</dd>
- <dt id="TIOCGETD"><a class="permalink" href="#TIOCGETD"><code class="Dv">TIOCGETD</code></a>
- <var class="Fa">int *ldisc</var></dt>
- <dd>Return the current line discipline in the integer pointed to by
- <var class="Fa">ldisc</var>.</dd>
- <dt id="TIOCSBRK"><a class="permalink" href="#TIOCSBRK"><code class="Dv">TIOCSBRK</code></a>
- <var class="Fa">void</var></dt>
- <dd>Set the terminal hardware into BREAK condition.</dd>
- <dt id="TIOCCBRK"><a class="permalink" href="#TIOCCBRK"><code class="Dv">TIOCCBRK</code></a>
- <var class="Fa">void</var></dt>
- <dd>Clear the terminal hardware BREAK condition.</dd>
- <dt id="TIOCSDTR"><a class="permalink" href="#TIOCSDTR"><code class="Dv">TIOCSDTR</code></a>
- <var class="Fa">void</var></dt>
- <dd>Assert data terminal ready (DTR).</dd>
- <dt id="TIOCCDTR"><a class="permalink" href="#TIOCCDTR"><code class="Dv">TIOCCDTR</code></a>
- <var class="Fa">void</var></dt>
- <dd>Clear data terminal ready (DTR).</dd>
- <dt id="TIOCGPGRP"><a class="permalink" href="#TIOCGPGRP"><code class="Dv">TIOCGPGRP</code></a>
- <var class="Fa">int *tpgrp</var></dt>
- <dd>Return the current process group with which the terminal is associated in
- the integer pointed to by <var class="Fa">tpgrp</var>. This is the
- underlying call that implements the <a class="Xr">termios(4)</a>
- <a class="permalink" href="#tcgetattr"><code class="Fn" id="tcgetattr">tcgetattr</code></a>()
- call.</dd>
- <dt id="TIOCSPGRP"><a class="permalink" href="#TIOCSPGRP"><code class="Dv">TIOCSPGRP</code></a>
- <var class="Fa">int *tpgrp</var></dt>
- <dd>Associate the terminal with the process group (as an integer) pointed to
- by <var class="Fa">tpgrp</var>. This is the underlying call that
- implements the <a class="Xr">termios(4)</a>
- <a class="permalink" href="#tcsetattr"><code class="Fn" id="tcsetattr">tcsetattr</code></a>()
- call.</dd>
- <dt id="TIOCGETA"><a class="permalink" href="#TIOCGETA"><code class="Dv">TIOCGETA</code></a>
- <var class="Fa">struct termios *term</var></dt>
- <dd>Place the current value of the termios state associated with the device in
- the termios structure pointed to by <var class="Fa">term</var>. This is
- the underlying call that implements the <a class="Xr">termios(4)</a>
- <code class="Fn">tcgetattr</code>() call.</dd>
- <dt id="TIOCSETA"><a class="permalink" href="#TIOCSETA"><code class="Dv">TIOCSETA</code></a>
- <var class="Fa">struct termios *term</var></dt>
- <dd>Set the termios state associated with the device immediately. This is the
- underlying call that implements the <a class="Xr">termios(4)</a>
- <code class="Fn">tcsetattr</code>() call with the
- <code class="Dv">TCSANOW</code> option.</dd>
- <dt id="TIOCSETAW"><a class="permalink" href="#TIOCSETAW"><code class="Dv">TIOCSETAW</code></a>
- <var class="Fa">struct termios *term</var></dt>
- <dd>First wait for any output to complete, then set the termios state
- associated with the device. This is the underlying call that implements
- the <a class="Xr">termios(4)</a> <code class="Fn">tcsetattr</code>() call
- with the <code class="Dv">TCSADRAIN</code> option.</dd>
- <dt id="TIOCSETAF"><a class="permalink" href="#TIOCSETAF"><code class="Dv">TIOCSETAF</code></a>
- <var class="Fa">struct termios *term</var></dt>
- <dd>First wait for any output to complete, clear any pending input, then set
- the termios state associated with the device. This is the underlying call
- that implements the <a class="Xr">termios(4)</a>
- <code class="Fn">tcsetattr</code>() call with the
- <code class="Dv">TCSAFLUSH</code> option.</dd>
- <dt id="TIOCOUTQ"><a class="permalink" href="#TIOCOUTQ"><code class="Dv">TIOCOUTQ</code></a>
- <var class="Fa">int *num</var></dt>
- <dd>Place the current number of characters in the output queue in the integer
- pointed to by <var class="Fa">num</var>.</dd>
- <dt id="TIOCSTI"><a class="permalink" href="#TIOCSTI"><code class="Dv">TIOCSTI</code></a>
- <var class="Fa">char *cp</var></dt>
- <dd>Simulate typed input. Pretend as if the terminal received the character
- pointed to by <var class="Fa">cp</var>.</dd>
- <dt id="TIOCNOTTY"><a class="permalink" href="#TIOCNOTTY"><code class="Dv">TIOCNOTTY</code></a>
- <var class="Fa">void</var></dt>
- <dd>In the past, when a process that did not have a controlling terminal (see
- <a class="permalink" href="#The"><i class="Em" id="The">The Controlling
- Terminal</i></a> in <a class="Xr">termios(4)</a>) first opened a terminal
- device, it acquired that terminal as its controlling terminal. For some
- programs this was a hazard as they did not want a controlling terminal in
- the first place, and this provides a mechanism to disassociate the
- controlling terminal from the calling process. It
- <a class="permalink" href="#must"><i class="Em" id="must">must</i></a> be
- called by opening the file <span class="Pa">/dev/tty</span> and calling
- <code class="Dv">TIOCNOTTY</code> on that file descriptor.
- <p class="Pp" id="open">The current system does not allocate a controlling
- terminal to a process on an
- <a class="permalink" href="#open"><code class="Fn">open</code></a>()
- call: there is a specific ioctl called <code class="Dv">TIOCSCTTY</code>
- to make a terminal the controlling terminal. In addition, a program can
- <code class="Fn">fork</code>() and call the
- <code class="Fn">setsid</code>() system call which will place the
- process into its own session - which has the effect of disassociating it
- from the controlling terminal. This is the new and preferred method for
- programs to lose their controlling terminal.</p>
- <p class="Pp" id="fork">However, environmental restrictions may prohibit the
- process from being able to
- <a class="permalink" href="#fork"><code class="Fn">fork</code></a>() and
- call the
- <a class="permalink" href="#setsid"><code class="Fn" id="setsid">setsid</code></a>()
- system call to disassociate it from the controlling terminal. In this
- case, it must use <code class="Dv">TIOCNOTTY</code>.</p>
- </dd>
- <dt id="TIOCSTOP"><a class="permalink" href="#TIOCSTOP"><code class="Dv">TIOCSTOP</code></a>
- <var class="Fa">void</var></dt>
- <dd>Stop output on the terminal (like typing ^S at the keyboard).</dd>
- <dt id="TIOCSTART"><a class="permalink" href="#TIOCSTART"><code class="Dv">TIOCSTART</code></a>
- <var class="Fa">void</var></dt>
- <dd>Start output on the terminal (like typing ^Q at the keyboard).</dd>
- <dt id="TIOCSCTTY"><a class="permalink" href="#TIOCSCTTY"><code class="Dv">TIOCSCTTY</code></a>
- <var class="Fa">void</var></dt>
- <dd>Make the terminal the controlling terminal for the process (the process
- must not currently have a controlling terminal).</dd>
- <dt id="TIOCDRAIN"><a class="permalink" href="#TIOCDRAIN"><code class="Dv">TIOCDRAIN</code></a>
- <var class="Fa">void</var></dt>
- <dd>Wait until all output is drained, or until the drain wait timeout
- expires.</dd>
- <dt id="TIOCGDRAINWAIT"><a class="permalink" href="#TIOCGDRAINWAIT"><code class="Dv">TIOCGDRAINWAIT</code></a>
- <var class="Fa">int *timeout</var></dt>
- <dd>Return the current drain wait timeout in seconds.</dd>
- <dt id="TIOCSDRAINWAIT"><a class="permalink" href="#TIOCSDRAINWAIT"><code class="Dv">TIOCSDRAINWAIT</code></a>
- <var class="Fa">int *timeout</var></dt>
- <dd>Set the drain wait timeout in seconds. A value of zero disables timeouts.
- The default drain wait timeout is controlled by the tunable
- <a class="Xr">sysctl(8)</a> OID
- <var class="Va">kern.tty_drainwait</var>.</dd>
- <dt id="TIOCEXCL"><a class="permalink" href="#TIOCEXCL"><code class="Dv">TIOCEXCL</code></a>
- <var class="Fa">void</var></dt>
- <dd>Set exclusive use on the terminal. No further opens are permitted except
- by root. Of course, this means that programs that are run by root (or
- setuid) will not obey the exclusive setting - which limits the usefulness
- of this feature.</dd>
- <dt id="TIOCNXCL"><a class="permalink" href="#TIOCNXCL"><code class="Dv">TIOCNXCL</code></a>
- <var class="Fa">void</var></dt>
- <dd>Clear exclusive use of the terminal. Further opens are permitted.</dd>
- <dt id="TIOCFLUSH"><a class="permalink" href="#TIOCFLUSH"><code class="Dv">TIOCFLUSH</code></a>
- <var class="Fa">int *what</var></dt>
- <dd>If the value of the int pointed to by <var class="Fa">what</var> contains
- the <code class="Dv">FREAD</code> bit as defined in
- <code class="In">&lt;<a class="In">sys/file.h</a>&gt;</code>, then all
- characters in the input queue are cleared. If it contains the
- <code class="Dv">FWRITE</code> bit, then all characters in the output
- queue are cleared. If the value of the integer is zero, then it behaves as
- if both the <code class="Dv">FREAD</code> and
- <code class="Dv">FWRITE</code> bits were set (i.e., clears both
- queues).</dd>
- <dt id="TIOCGWINSZ"><a class="permalink" href="#TIOCGWINSZ"><code class="Dv">TIOCGWINSZ</code></a>
- <var class="Fa">struct winsize *ws</var></dt>
- <dd>Put the window size information associated with the terminal in the
- <var class="Va">winsize</var> structure pointed to by
- <var class="Fa">ws</var>. The window size structure contains the number of
- rows and columns (and pixels if appropriate) of the devices attached to
- the terminal. It is set by user software and is the means by which most
- full-screen oriented programs determine the screen size. The
- <var class="Va">winsize</var> structure is provided by
- <code class="In">&lt;<a class="In">sys/ioctl.h</a>&gt;</code>.</dd>
- <dt id="TIOCSWINSZ"><a class="permalink" href="#TIOCSWINSZ"><code class="Dv">TIOCSWINSZ</code></a>
- <var class="Fa">struct winsize *ws</var></dt>
- <dd>Set the window size associated with the terminal to be the value in the
- <var class="Va">winsize</var> structure pointed to by
- <var class="Fa">ws</var> (see above).</dd>
- <dt id="TIOCCONS"><a class="permalink" href="#TIOCCONS"><code class="Dv">TIOCCONS</code></a>
- <var class="Fa">int *on</var></dt>
- <dd>If <var class="Fa">on</var> points to a non-zero integer, redirect kernel
- console output (kernel printf's) to this terminal. If
- <var class="Fa">on</var> points to a zero integer, redirect kernel console
- output back to the normal console. This is usually used on workstations to
- redirect kernel messages to a particular window.</dd>
- <dt id="TIOCMSET"><a class="permalink" href="#TIOCMSET"><code class="Dv">TIOCMSET</code></a>
- <var class="Fa">int *state</var></dt>
- <dd>The integer pointed to by <var class="Fa">state</var> contains bits that
- correspond to modem state. Following is a list of defined variables and
- the modem state they represent:
- <p class="Pp"></p>
- <dl class="Bl-tag Bl-compact">
- <dt>TIOCM_LE</dt>
- <dd>Line Enable.</dd>
- <dt>TIOCM_DTR</dt>
- <dd>Data Terminal Ready.</dd>
- <dt>TIOCM_RTS</dt>
- <dd>Request To Send.</dd>
- <dt>TIOCM_ST</dt>
- <dd>Secondary Transmit.</dd>
- <dt>TIOCM_SR</dt>
- <dd>Secondary Receive.</dd>
- <dt>TIOCM_CTS</dt>
- <dd>Clear To Send.</dd>
- <dt>TIOCM_CAR</dt>
- <dd>Carrier Detect.</dd>
- <dt>TIOCM_CD</dt>
- <dd>Carrier Detect (synonym).</dd>
- <dt>TIOCM_RNG</dt>
- <dd>Ring Indication.</dd>
- <dt>TIOCM_RI</dt>
- <dd>Ring Indication (synonym).</dd>
- <dt>TIOCM_DSR</dt>
- <dd>Data Set Ready.</dd>
- </dl>
- <p class="Pp">This call sets the terminal modem state to that represented by
- <var class="Fa">state</var>. Not all terminals may support this.</p>
- </dd>
- <dt id="TIOCMGET"><a class="permalink" href="#TIOCMGET"><code class="Dv">TIOCMGET</code></a>
- <var class="Fa">int *state</var></dt>
- <dd>Return the current state of the terminal modem lines as represented above
- in the integer pointed to by <var class="Fa">state</var>.</dd>
- <dt id="TIOCMBIS"><a class="permalink" href="#TIOCMBIS"><code class="Dv">TIOCMBIS</code></a>
- <var class="Fa">int *state</var></dt>
- <dd>The bits in the integer pointed to by <var class="Fa">state</var>
- represent modem state as described above, however the state is OR-ed in
- with the current state.</dd>
- <dt id="TIOCMBIC"><a class="permalink" href="#TIOCMBIC"><code class="Dv">TIOCMBIC</code></a>
- <var class="Fa">int *state</var></dt>
- <dd>The bits in the integer pointed to by <var class="Fa">state</var>
- represent modem state as described above, however each bit which is on in
- <var class="Fa">state</var> is cleared in the terminal.</dd>
-</dl>
-</section>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="IMPLEMENTATION_NOTES"><a class="permalink" href="#IMPLEMENTATION_NOTES">IMPLEMENTATION
- NOTES</a></h1>
-<p class="Pp">The total number of input and output bytes through all terminal
- devices are available via the <var class="Va">kern.tty_nin</var> and
- <var class="Va">kern.tty_nout</var> read-only <a class="Xr">sysctl(8)</a>
- variables.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
- ALSO</a></h1>
-<p class="Pp"><a class="Xr">stty(1)</a>, <a class="Xr">ioctl(2)</a>,
- <a class="Xr">ng_tty(4)</a>, <a class="Xr">pts(4)</a>,
- <a class="Xr">pty(4)</a>, <a class="Xr">termios(4)</a>,
- <a class="Xr">uart(4)</a>, <a class="Xr">getty(8)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">A console typewriter device <span class="Pa">/dev/tty</span> and
- asynchronous communication interfaces <span class="Pa">/dev/tty[0-5]</span>
- first appeared in <span class="Ux">Version&#x00A0;1 AT&amp;T
- UNIX</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
-<p class="Pp">Before the Internet, serial ports were primarily used for inbound
- connections from terminals, either directly or through modems, these days
- serial ports are primarily used for outbound connections to devices, an
- evolution which unfortunately has spread the relevant documentation over
- three different manual pages: <a class="Xr">termios(4)</a>,
- <a class="Xr">uart(4)</a> and <a class="Xr">tty(4)</a>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">April 3, 2022</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>