COHERENT manpages
This page displays the COHERENT manpage for pty [Device driver for pseudoterminals].
List of available manpages
Index
pty -- Device Driver
Device driver for pseudoterminals
The COHERENT device driver pty lets your system support up to 128 pairs of
pseudoterminals, or ptys.
A pseudoterminal is a means of letting a process masquerade as a terminal.
For example, when you run the program xterm under X, that program passes
what you type into COHERENT through a pseudoterminal device.
Each pseudoterminal consists of a pair of devices: a master device and a
slave device. The program that is accepting input from a human at a
keyboard (e.g., xterm) is ``plugged'' into the slave device; the program
that is accepting and processing the input (e.g., a shell) is plugged into
the master device. The following diagram shows how this pair of devices
relate to each other:
app master line slave app
using pty disc. pty using
master device module device slave
\....................../
pty driver
As you can see, the slave device talks to the keyboard through a sub-module
that performs line discipline. Line-discipline handles backspace
characters, handles special interrupt characters (such as <ctrl-C>),
and converts line-feed characters into carriage-return--line-feed character
pairs: it bundles what you type into a package that can be passed to the
master application and processed.
Only one process at a time can open a master device; the device is opened
as soon as requested. Several processes can open a slave device, but
blocks until the matching master device has been open. When blocked in
this way, the slave is said to be ``waiting for pseudocarrier.''
An attempt to read a master device when no input is available, or to write
to a master device when the slave cannot accept data, will block unless
nonblocking I/O has been specifically requested; in this case, the system
calls read() or write() fail and errno is set to EAGAIN.
You can use the system call ioctl() on slave devices with all valid line-
discipline commands, including TCGETA, TCSETA, TCSETAW, TCSETAF, and
TCFLSH. There are no valid ioctl() commands for master devices.
The system call poll() is allowed with both master and slave pty devices.
However, priority polls (POLLPRI) are not supported.
Master devices are named /dev/pty[p-w][0-f]. Corresponding slaves are
/dev/tty[p-w][0-f]. Like any other device, each pty has a major and minor
number. The major number is 9 (PTY_MAJOR in system header file
<sys/devices.h>). For slave devices, minor numbers are assigned
according to the following scheme:
device Major number Minor number
/dev/ttyp0 9 0
/dev/ttyp1 9 1
...
/dev/ttyp9 9 9
/dev/ttypa 9 10
/dev/ttypb 9 11
...
/dev/ttypf 9 15
/dev/ttyq0 9 16
...
/dev/ttyw0 9 112
...
/dev/ttywf 9 127
For master devices, use pty instead of tty in the device name, and add 128
to the minor number.
The configurable parameter NUPTY_SPEC sets the number of pty pairs that may
be used. The default is eight. If you want to change this value, invoke
the script /etc/conf/pty/mkdev and enter the new value at the appropriate
prompt. Then use the command /etc/conf/bin/idmkcoh to build a new kernel
that incorporates this change; when the new kernel is built, boot it. For
details, see the Lexicon entry for the command idmkcoh.
Specifying a value of zero for NUPTY_SPEC will cause the pty device to be
omitted from the next kernel that idmkcoh generates.
See Also
device drivers