fuchsia.hardware.mailbox

新增:HEAD

通訊協定

版本

定義於 fuchsia.hardware.mailbox/mailbox.fidl

Channel 代表單一信箱管道,可用於將訊息傳送至目的地核心。

RegisterListener

為這個管道上收到的訊息註冊監聽器。請勿一次註冊多個事件監聽器。如果事件監聽器已註冊,這項呼叫會失敗,並傳回 ZX_ERR_ALREADY_BOUND。

如要取消註冊事件監聽器,伺服器會關閉其管道端。取消註冊先前的事件監聽器後,可以註冊另一個事件監聽器。

要求

名稱類型
listener client_end:Listener

回應

名稱類型
payload Channel_RegisterListener_Result

SendMessage

將訊息寫入信箱、中斷目的地核心,以及 (如適用) 等待目的地核心確認訊息。

如果 message 大於硬體可支援的大小,則傳回 ZX_ERR_OUT_OF_RANGE。

要求

名稱類型
message vector<uint8>

回應

名稱類型
payload Channel_SendMessage_Result

SendRequest

將要求寫入信箱、中斷目的地核心,並等待目的地核心傳送回應。

如果 request 大於硬體可支援的大小,則傳回 ZX_ERR_OUT_OF_RANGE。如果目的地核心不支援將要求與回應建立關聯,則傳回 ZX_ERR_NOT_SUPPORTED。

要求

名稱類型
request vector<uint8>

回應

名稱類型
payload Channel_SendRequest_Result

Listener

定義於 fuchsia.hardware.mailbox/mailbox.fidl

Listener 用於接收來自郵件匣管道的訊息。

伺服器端由信箱用戶端管理。

OnMessage

在信箱管道收到訊息時呼叫。

信箱驅動程式庫不會同時呼叫 OnMessage。它會等待前一個呼叫完成,再傳送另一則訊息。

如果用戶端未及時回應 OnMessage,信箱驅動程式庫可能會記憶體不足,並捨棄後續訊息。

lease 是選用的喚醒租約接力棒,由信箱驅動程式庫在訊息導致或在喚醒事件期間到達時傳遞,讓系統保持喚醒狀態,直到監聽器處理訊息 (或取得自己的喚醒租約) 為止。

要求

名稱類型
message vector<uint8>
lease handle<eventpair>?

回應

名稱類型
payload Listener_OnMessage_Result

OnRequest

在信箱管道收到要求時呼叫。

用戶端應處理要求,並根據要求內容傳回回應酬載。回應會由信箱驅動程式庫傳回遠端核心。

如果事件監聽器傳回錯誤,信箱驅動程式庫會記錄錯誤,且不會向遠端核心傳回任何回應。

並適用與 OnMessage 相同的並行規則。

lease 是選用的喚醒租約接力棒,語意與 OnMessage 相同。

要求

名稱類型
message vector<uint8>
lease handle<eventpair>?

回應

名稱類型
payload Listener_OnRequest_Result

STRUCTS

Channel_RegisterListener_Response

定義於 fuchsia.hardware.mailbox/mailbox.fidl

<EMPTY>

Channel_SendMessage_Response

定義於 fuchsia.hardware.mailbox/mailbox.fidl

<EMPTY>

Channel_SendRequest_Response

定義於 fuchsia.hardware.mailbox/mailbox.fidl

欄位類型說明預設
response vector<uint8> 無預設值

Listener_OnMessage_Response

定義於 fuchsia.hardware.mailbox/mailbox.fidl

<EMPTY>

Listener_OnRequest_Response

定義於 fuchsia.hardware.mailbox/mailbox.fidl

欄位類型說明預設
response vector<uint8> 無預設值

TABLES

ChannelInfo

定義於 fuchsia.hardware.mailbox/metadata.fidl

序數欄位類型說明
channel uint32

頻道編號,這個控制器專屬。必填。

client uint32

用戶端服務 ID,這個管道專屬。(選用)

id uint32

所有信箱管道的全域專屬 ID。(選用)

ControllerInfo

定義於 fuchsia.hardware.mailbox/metadata.fidl

ControllerInfo 會透過中繼資料傳遞至信箱控制器驅動程式。

序數欄位類型說明
id uint32

主機板專屬控制器 ID。(選用)

channels vector<ChannelInfo>

信箱管道。(選用)

UNIONS

Channel_RegisterListener_Result strict

定義於 fuchsia.hardware.mailbox/mailbox.fidl

序數Variant類型說明
response Channel_RegisterListener_Response
err zx/Status
framework_err internal

Channel_SendMessage_Result strict

定義於 fuchsia.hardware.mailbox/mailbox.fidl

序數Variant類型說明
response Channel_SendMessage_Response
err zx/Status

Channel_SendRequest_Result strict

定義於 fuchsia.hardware.mailbox/mailbox.fidl

序數Variant類型說明
response Channel_SendRequest_Response
err zx/Status
framework_err internal

Listener_OnMessage_Result strict

定義於 fuchsia.hardware.mailbox/mailbox.fidl

序數Variant類型說明
response Listener_OnMessage_Response
err zx/Status
framework_err internal

Listener_OnRequest_Result strict

定義於 fuchsia.hardware.mailbox/mailbox.fidl

序數Variant類型說明
response Listener_OnRequest_Response
err zx/Status
framework_err internal

服務

服務

定義於 fuchsia.hardware.mailbox/mailbox.fidl

名稱類型傳輸
channel fuchsia.hardware.mailbox/Channel 版本