xref: /illumos-gate/usr/src/man/man4m/ptem.4m (revision dd72704bd9e794056c558153663c739e2012d721)
1'\" te
2.\"  Copyright 1989 AT&T
3.\" Copyright (C) 1999, Sun Microsystems, Inc. All Rights Reserved
4.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
5.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
6.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
7.\" Copyright 2022 Oxide Computer Company
8.Dd February 5, 2022
9.Dt PTEM 4M
10.Os
11.Sh NAME
12.Nm ptem
13.Nd STREAMS Pseudo-Terminal Emulation module
14.Sh SYNOPSIS
15.In unistd.h
16.In stropts.h
17.Ft int
18.Fo ioctl
19.Fa "int fildes" ,
20.Dv I_PUSH ,
21.Qq ptem
22.Fc
23.Sh DESCRIPTION
24.Nm ptem
25is a STREAMS module that emulates a terminal device when used in conjunction
26with the line discipline,
27.Xr ldterm 4M ,
28and the pseudo terminal driver,
29.Xr ptm 4D .
30.Pp
31The
32.Nm ptem
33module must be pushed
34.Po
35see
36.Dv I_PUSH
37in
38.Xr streamio 4I
39.Pc
40onto the subsidiary device of a pseudo-terminal STREAM, before the
41.Xr ldterm 4M
42module is pushed.
43.Ss Write-side Behaviour
44The
45.Dv TCSETA ,
46.Dv TCSETAF ,
47.Dv TCSETAW ,
48.Dv TCGETA ,
49.Dv TCSETS ,
50.Dv TCSETSW ,
51.Dv TCSETSF ,
52.Dv TCGETS ,
53.Dv TCSBRK ,
54.Dv JWINSIZE ,
55.Dv TIOCGWINSZ ,
56and
57.Dv TIOCSWINSZ
58.Xr termio 4I
59.Xr ioctl 2
60messages are processed and acknowledged.
61.Pp
62If
63.Em remote mode
64is not in effect,
65.Nm ptem
66handles the
67.Dv TIOCSTI
68ioctl by copying the argument bytes into an
69.Dv M_DATA
70message and passing it back up the read side.
71Regardless of the
72.Em remote mode
73setting,
74.Nm ptem
75acknowledges the ioctl and passes a copy of it downstream for possible further
76processing.
77.Pp
78A hang up
79.Po
80e.g.,
81.Ic stty 0
82.Pc
83is converted to a zero length
84.Dv M_DATA
85message and passed downstream.
86.Xr termio 4I
87.Sy cflags
88and window row and column information are stored locally, one per stream.
89.Dv M_DELAY
90messages are discarded.
91.Pp
92All other messages are passed downstream unmodified.
93.Ss Read-side Behaviour
94All messages are passed upstream unmodified with the following exceptions:
95.Bl -bullet
96.It
97All
98.Dv M_READ
99and
100.Dv M_DELAY
101messages are freed in both directions.
102.It
103A
104.Dv TCSBRK
105ioctl is converted to an
106.Dv M_BREAK
107message and passed upstream and an acknowledgement is returned downstream.
108.It
109A
110.Dv TIOCSIGNAL
111ioctl is converted into an
112.Dv M_PCSIG
113message, passed upstream, and an acknowledgement is returned downstream.
114.It
115A
116.Dv TIOCREMOTE
117ioctl is converted into an
118.Dv M_CTL
119message, acknowledged, and passed upstream; the resulting mode is retained for
120use in subsequent
121.Dv TIOCSTI
122parsing.
123.El
124.Sh SEE ALSO
125.Xr stty 1 ,
126.Xr ioctl 2 ,
127.Xr streamio 4I ,
128.Xr termio 4I ,
129.Xr ldterm 4M ,
130.Xr pckt 4M
131