fuchsia.hardware.pty

PTY (虛擬終端) 會模擬終端機裝置,並顯示「伺服器」側 (代表終端機的鍵盤與螢幕側面, 開啟 /dev/misc/ptmx) 和數字這些階段 呼叫 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 功能

要求

名稱類型
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>

已讀

最多讀數傳回位元組。 跳轉位移會隨著讀取的位元組數向前移動。

不變

  • 傳回的 data.length 一律不會大於 count
  • 如果 data.length 小於 count,表示搜尋偏移 已達到此作業的檔案結尾。
  • 如果 data.length 為零,但 count 不是,表示 跳轉偏移值已等於或超過檔案結尾,且無資料 文字。
  • 如果 count 為 0,伺服器應執行所有檢查,確保 讀取權限而不實際讀取任何內容,然後傳回空白 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 無預設

資料表

DevicedescribeResponse 資源

定義於 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

啟用功能原始功能時,系統不會產生 ^c、^z 等 OOB 事件。 而會從 read() 輸入路徑讀取字元。