fuchsia.hardware.pty

PTY(伪终端)通过“服务器”模拟终端设备侧面 (代表终端的键盘和显示器端,可从 打开 /dev/misc/ptmx)和许多“client”获得的边长 调用 OpenClient

客户端 PTY 由 OpenClient 调用中使用的 id 标识。通过 第一个客户端 PTY 必须为 0,并且是唯一允许的客户端 PTY 创建其他客户端 PTY、接收事件等。 正在控制 PTY。

添加时间:11

PROTOCOLS

设备

fuchsia.hardware.pty/pty.fidl 中定义

Clone2

请求

名称类型
request server_end<fuchsia.unknown/Cloneable>

关闭

终止连接。

调用 Close 后,客户端不得发送任何其他请求。

服务器在发送状态响应后,应关闭连接 无论状态如何,都不会发送摘要。

关闭通道的客户端应该在语义上等效 调用 Close,但不知道关闭何时完成或其 状态。

请求

<空>

响应

名称类型
payload fuchsia.unknown/Closeable_Close_Result

ClrSetFeature

允许在客户端 PTY 上使用

清除和/或设置 PTY 功能

请求

名称类型
clr uint32
set uint32

响应

名称类型
status zx/Status
features uint32

描述

请求

<空>

响应

名称类型
payload DeviceDescribeResponse

GetWindowSize

获取窗口大小(以字符单元格为单位)

请求

<空>

响应

名称类型
status zx/Status
size WindowSize

MakeActive

允许在控制 PTY 上

选择接收输入的客户端 PTY。 读取操作只是在非活跃 PTY 上阻塞。

请求

名称类型
client_pty_id uint32

响应

名称类型
status zx/Status

OpenClient

打开具有唯一 id 的客户端 PTY 设备。client 应为句柄 (成功时)将变为开放通道的通道的一个端点。 连接到新创建的设备如果失败,频道将 已关闭。关闭通道将关闭连接并释放 设备。如果提供的 id 为 0,则新客户端是控制 并能够打开其他客户端。如果 当前设备不是控制客户端,ZX_ERR_ACCESS_DENIED 将是 返回。如果 id 不具有唯一性,则返回 ZX_ERR_INVALID_ARGS。 否则,系统会传递来自 device_add 的状态代码。

请求

名称类型
id uint32
client server_end<Device>

响应

名称类型
s zx/Status

查询

请求

<空>

响应

名称类型
protocol vector<uint8>

已读

读取到“count”寻道偏移量处的字节。 寻道偏移量向前移动读取的字节数。

不变量

  • 返回的 data.length 绝不会大于 count
  • 如果 data.length 小于 count,则表示跳转偏移量 到达文件末尾。
  • 如果 data.length 为零,count 不为零,则表示 跳转偏移量已到达或超出文件末尾,且任何数据都不能 以供读取。
  • 如果 count 为零,服务器应执行所有检查,以确保 读取权限,而不实际读取任何内容,并将 data 矢量。

此方法需要 Rights.READ_BYTES 权限。

如果 count 大于 MAX_TRANSFER_SIZE,则返回 ZX_ERR_OUT_OF_RANGE

请求

名称类型
count uint64

响应

名称类型
payload fuchsia.io/Readable_Read_Result

ReadEvents

返回待处理的 OOB 事件,同时清除这些事件

请求

<空>

响应

名称类型
status zx/Status
events uint32

SetWindowSize

允许在服务器 PTY 上运行

设置窗口大小

请求

名称类型
size WindowSize

响应

名称类型
status zx/Status

写入

在跳转偏移量处写入数据。 寻道偏移量向前移动写入的字节数。 如果文件处于附加模式,则首先将跳转偏移量设置为末尾 然后写入文件

如果定位偏移量加上 data.length 超出,则文件大小可能会增加 当前文件末尾。

  • 请求 data 字节缓冲区以写入文件。
  • 响应 actual_count 表示写入的字节数。

不变量

  • 返回的 actual_count 绝不会大于 data.length
  • 如果服务器因某些原因而无法写入所有数据,不够 空格,actual_count 可以小于 data.length。如果没有字节 则会返回错误。
  • 如果 data.length 为零,则服务器应执行所有检查 确保在不更改文件的情况下拥有写入权限,并返回 零字节的成功写入。如果存在以下情况,定位偏移量仍会更新: 。

此方法需要 Rights.WRITE_BYTES 权限。

请求

名称类型
data fuchsia.io/Transfer

响应

名称类型
payload fuchsia.io/Writable_Write_Result

结构体

WindowSize

fuchsia.hardware.pty/pty.fidl 中定义

字段类型说明默认
width uint32 无默认设置
height uint32 无默认设置

DeviceDedocumentResponse 资源

fuchsia.hardware.pty/pty.fidl 中定义

Ordinal字段类型说明
event handle<eventpair>

可选事件,可传输有关设备状态的信息。

可以在此事件中观察到 DeviceSignal 值。

常量

名称类型说明
DEVICE_PROTOCOL_NAME fuchsia.hardware.pty/Device String
EVENT_HANGUP 1 uint32

终端没有活跃的客户端。

EVENT_INTERRUPT 2 uint32

终端收到了 ^C 控制字符。

EVENT_MASK 15 uint32

所有活动

EVENT_SUSPEND 4 uint32

终端收到了一个 ^Z 控制字符。

EVENT_WINDOW_SIZE 8 uint32

终端窗口的大小已调整。

FEATURE_RAW 1 uint32

启用 Feature Raw 时,不会生成 ^c、^z 等 OOB 事件。 而是从 read() 输入路径读取该字符。