fuchsia.driver.framework

新增:13

PROTOCOLS

CompositeNodeManager

fuchsia.driver.framework/composite_node_spec.fidl 中定義

主機驅動程式可建立複合節點規格時使用的通訊協定。

系統會在執行階段建立複合節點規格, 具有動態繫結屬性的複合驅動程式庫的靜態繫結規則 因此能夠讓驅動程式庫繫結規則更通用且可重複使用。

AddSpec

將指定的複合節點規格新增至驅動程式庫架構。

要求

名稱類型
payload CompositeNodeSpec

回應

名稱類型
payload CompositeNodeManager_AddSpec_Result

駕駛座

定義於 fuchsia.driver.framework/driver.fidl

驅動程式架構的驅動程式主機會使用這個通訊協定,用來傳達各種訊息, 驅動程式庫生命週期掛鉤這個通訊協定的連線是透過 |DriverRegistration|driver_symbols 程式庫中定義的值。

驅動程式庫關閉伺服器後,驅動程式架構會啟動關閉程序 同一驅動程式庫的所有調度器

新增:15

開始

使用指定的 |start_args| 啟動驅動程式庫。

駕駛人應先完成初始設定和列舉作業,再從 |Start| 返回。 具體來說,這些組織應利用 fuchsia.driver.framework/Node.AddChild,並等待所有通話完成。

此呼叫傳回之前,架構不會考慮要啟動的驅動程式庫 因此,驅動程式庫沒有 |Stop|。呼叫函式,直到呼叫 回覆了 |開始|

如果驅動程式庫傳回錯誤,則不會有 |Stop|。呼叫這個方法 驅動程式架構會關閉驅動程式庫的調度器。因此,應有 已執行所有必要清理作業,然後才傳回錯誤。

要求

名稱類型
start_args DriverStartArgs

回應

名稱類型
payload Driver_Start_Result

停止

停止驅動程式庫。如要停止,驅動程式庫應拆解其內部或之後設定的任何資源。 |開始|:這是單向的 FIDL 方法,驅動程式庫完成載客後,它應該 關閉伺服器端。非同步作業必須在關閉前完整完成 伺服器端點

要求

<空白>

節點

定義於 fuchsia.driver.framework/topology.fidl

驅動程式庫管理其繫結節點的通訊協定。 驅動程式應維持與節點的用戶端連線。捨棄中 與驅動程式庫連線,會導致 驅動程式庫架構,以便從拓撲中移除驅動程式庫和節點。 如果驅動程式庫將 host_restart_on_crash 設為「true」的 如果捨棄連線,系統會重新啟動 驅動程式代管程序和驅動程式庫

AddChild

將子節點新增至這個節點。

如果存在 node,此驅動程式庫會負責 新建的子項否則,驅動程式庫架構會找出 適當的驅動程式庫。

要求

名稱類型
args NodeAddArgs
controller server_end<NodeController>
node server_end<Node>?

回應

名稱類型
payload Node_AddChild_Result

NodeController

定義於 fuchsia.driver.framework/topology.fidl

父項節點控管其其中一個子項的通訊協定。

OnBind

在相關聯的 Node 繫結至驅動程式庫時觸發的事件。

回應

<空白>

移除

移除節點及其所有子節點。

要求

<空白>

RequestBind

要求架構嘗試將驅動程式庫繫結至此節點。 這是「額外」的繫結要求,因為架構嘗試繫結一次節點一次 建立節點後

  • 如果節點已繫結,force_rebind 為 false,則傳回錯誤 ZX_ERR_ALREADY_BOUND
  • 如果節點有未解決的 |RequestBind|,則傳回 ZX_ERR_ALREADY_EXISTS 錯誤呼叫 作業沒有完成。

要求

名稱類型
payload NodeControllerRequestBindRequest

回應

名稱類型
payload NodeController_RequestBind_Result

結構

BindRule

fuchsia.driver.framework/composite_node_spec.fidl 中定義

代表父項規格中的繫結規則。

欄位類型說明預設
key NodePropertyKey

屬性鍵。

無預設
condition Condition

用來評估屬性值的條件 比對程序值須為 接受 而遭到拒絕。

無預設
values vector<NodePropertyValue>[64]

屬性值清單。不得留空。屬性 值必須是相同類型。

無預設

CompositeNodeManager_AddSpec_Response

fuchsia.driver.framework/composite_node_spec.fidl 中定義

<空白>

Driver_Start_Response

定義於 fuchsia.driver.framework/driver.fidl

<空白>

NodeController_RequestBind_Response

定義於 fuchsia.driver.framework/topology.fidl

<空白>

NodeProperty

定義於 fuchsia.driver.framework/topology.fidl

節點的屬性定義。屬性通常會用來比對 連結到驅動程式庫程式繫結驅動程式庫。

欄位類型說明預設
key NodePropertyKey

屬性的鍵。

無預設
value NodePropertyValue

屬性的值。

無預設

NodePropertyEntry

定義於 fuchsia.driver.framework/driver_start_args.fidl

包含屬於節點的節點屬性。

新增日期:19

欄位類型說明預設
name NodeName

含有 |node_properties| 的節點名稱。

無預設
properties NodePropertyVector

屬於 |node_name| 節點的節點屬性。如果 節點是複合的 |屬性|為空白,且不含 母親資源。

無預設

Node_AddChild_Response

定義於 fuchsia.driver.framework/topology.fidl

<空白>

ParentSpec

fuchsia.driver.framework/composite_node_spec.fidl 中定義

自訂節點,父項節點是從 複合節點規格

欄位類型說明預設
bind_rules vector<BindRule>[64]

父項的繫結規則。屬性鍵不得重複。不得留空。

無預設
properties vector<NodeProperty>[64]

用於比對複合驅動程式庫繫結規則的屬性。 鍵不得重複。

無預設

ENUMS

CompositeNodeSpecError 彈性

類型:uint32

fuchsia.driver.framework/composite_node_spec.fidl 中定義

CompositeNodeManager 通訊協定的錯誤代碼。

名稱說明
1

未提供複合節點規格的引數。

2

指定的複合節點規格 nodes 為空白。

3

指定複合節點規格中的 name 與已經 會建立複合節點規格

4

規格無法新增至驅動程式庫索引。

新增:20

條件嚴格

類型:uint32

fuchsia.driver.framework/composite_node_spec.fidl 中定義

代表繫結規則條件。

名稱說明
0
1
2

DriverPackageType 彈性

類型:uint8

fuchsia.driver.framework/driver_info.fidl 中定義

驅動程式庫元件所在的 Fuchsia 套件類型。 如要進一步瞭解各種套件方案,請前往: https://fuchsia.dev/fuchsia-src/concepts/packages/package#types_of_packages

新增日期:16

名稱說明
0

BOOT 套件位於 Zircon 開機映像檔中。

1

Fuchsia 版本以靜態本機套件形式納入 BASE 套件。

2

CACHED 套件是 BASE 套件,如果完整套件,可在解析期間更新 可以使用解析器

3

只有當完整套件解析器解決問題後,UNIVERSE 套件才會傳送到裝置上。

NodeError 彈性

類型:uint32

定義於 fuchsia.driver.framework/topology.fidl

Node 通訊協定的錯誤代碼。

名稱說明
1
2
3
4

節點名稱無效。具體來說,不得包含半形句號 名稱。

5

已有同名的同層節點。

6

這個節點的優惠缺少來源名稱。

7

這個節點的優惠不得有來源或目標。

8

這個節點的符號缺少名稱。

9

這個節點的符號缺少位址。

10

這個節點有另一個名稱相同的符號。

11

節點正在取消繫結其所有子項。

新增:20

資料表

CompositeDriverInfo

fuchsia.driver.framework/driver_info.fidl 中定義

複合驅動程式庫的資訊。

新增日期:16

Ordinal欄位類型說明
composite_name string

根據驅動程式庫的複合式繫結規則指定的複合名稱。

driver_info DriverInfo

驅動程式庫的一般資訊。

CompositeDriverMatch

fuchsia.driver.framework/driver_info.fidl 中定義

與複合相符的複合驅動程式庫資訊。

新增日期:16

Ordinal欄位類型說明
composite_driver CompositeDriverInfo

相符複合驅動程式庫的資訊。

parent_names vector<string>

所有父項名稱清單,依索引排序。 這些名稱來自驅動程式庫複合繫結規則中的節點定義。

primary_parent_index uint32

主要節點索引。由驅動程式庫的主要節點所識別 以及複合繫結規則

CompositeInfo

fuchsia.driver.framework/driver_info.fidl 中定義

複合節點規格定義的複合資料。

新增日期:16

Ordinal欄位類型說明
spec CompositeNodeSpec

用來建立這個複合節點規格的規格資訊。

matched_driver CompositeDriverMatch

只有驅動程式庫才能使用的節點規格相關資訊 符合此規格父項中的屬性

CompositeNodeSpec

fuchsia.driver.framework/composite_node_spec.fidl 中定義

代表複合節點規格的結構。

Ordinal欄位類型說明
name string

複合節點規格名稱。

parents vector<ParentSpec>

複合節點規格中的節點。不得留空。第一個節點 主要節點

CompositeParent

fuchsia.driver.framework/driver_info.fidl 中定義

由複合節點規格定義之複合的父項。

新增日期:16

Ordinal欄位類型說明
composite CompositeInfo

父項的複合相關資訊。

index uint32

這個父項在規格父項中的索引。

DevfsAddArgs 資源

定義於 fuchsia.driver.framework/topology.fidl

Ordinal欄位類型說明
connector fuchsia.device.fs/Connector

這是要安裝在 devfs 中的連接器。 用戶端連線至檔案系統中的這個節點時,系統就會呼叫 Connect()。 選用:如未提供,devf 中會顯示空白節點。

class_name string[255]

這是在 devfs 中安裝這個節點的類別名稱。 節點會放在 /dev/class/{class_name} 中 如果 /dev/class 之下沒有 class_name,系統將建立該類別。 選用:如果未提供此引數,系統只會透過拓撲路徑新增節點。

inspect handle<vmo>

這是將在 devf 安裝的檢查資料 VMO。 選用:如果未提供這個值,devfs 的檢查資料會是空白。

connector_supports fuchsia.device.fs/ConnectionType

|連接器|支援的連線類型狀態。 驅動程式庫程式架構應處理 。 如果未提供,系統只會假設連接器支援的裝置類型。

新增日期:16
controller_connector fuchsia.device.fs/Connector

這是要安裝在 devfs 中的控制器連接器。 在用戶端連線至 device_controller 連線時,系統會呼叫 Connect() 針對這個節點建立檔案系統 選用:如果未提供此引數,Node 會原生處理連線。 這個選項僅供 Compat 輔助程式或測試中使用

新增時間:HEAD

DeviceCategory

fuchsia.driver.framework/driver_info.fidl 中定義

驅動程式庫元件資訊清單中提供的裝置類別。

新增日期:16

Ordinal欄位類型說明
category string
subcategory string

DriverInfo

fuchsia.driver.framework/driver_info.fidl 中定義

驅動程式庫的一般資訊,同時搭配複合與一般驅動程式使用。

新增日期:16

Ordinal欄位類型說明
url string[4096]

驅動程式庫元件的網址。

name string

驅動程式庫名稱,取自 ZIRCON_DRIVER 的第一個欄位 巨集。

colocate bool

如果這個值為 true,則驅動程式庫應位於其父項的 DriverHost 中。

package_type DriverPackageType

這個驅動程式庫所屬的套件類型。

is_fallback bool

如果這個值為 true,表示驅動程式庫為備用驅動程式庫。備用驅動程式具有 繫結優先順序較低,因此只有在如果有繫結時才會選擇繫結 是沒有符合的其他非備用驅動程式庫。

device_categories vector<DeviceCategory>

裝置類別

bind_rules_bytecode vector<uint8>

繫結規則可宣告一組要評估的限制, 判斷驅動程式庫索引是否應將此驅動程式庫繫結至 裝置。

driver_framework_version uint8

這個驅動程式庫目前使用的驅動程式庫程式架構版本。 支援的值為 1 (DFv1) 和 2 (DFv2)。 如未提供,1 即為假設版本。

is_disabled bool

是否停用驅動程式庫。如為 true,則此驅動程式庫未選擇繫結至節點。

新增:17

DriverStartArgs 資源

定義於 fuchsia.driver.framework/driver_start_args.fidl

用於啟動驅動程式庫的引數。

Ordinal欄位類型說明
node Node

驅動程式庫繫結的節點。

symbols vector<NodeSymbol>[64]

提供給驅動程式庫符號,用於 |node|。這些資訊來自驅動程式庫 並套用到繫結中要求的符號 計畫。

url fuchsia.url/Url

含有驅動程式庫的套件網址。這些資訊僅供參考 只會用於提供檢查用資料

program fuchsia.data/Dictionary

要啟動的驅動程式庫相關資訊。目前我們支援 下列項目:

  1. "binary":字串,內含套件 驅動程式庫二進位檔。
  2. 「並找到」(選用):包含「true」的字串或「false」 指定驅動程式庫是否應放在相同位置 驅動程式代管程序為新增 |node| 的驅動程式庫。如果沒有指定, 新的驅動程式代管程序會啟動。
  3. &quot;default_dispatcher_opts&quot;(選用):指定字串陣列, 建立預設調度工具的選項。字串可以是第一 下列項目:
    • allow_sync_calls:允許在 預設調度工具的執行緒。
  4. &quot;default_dispatcher_scheduler_role&quot;(選用):將排程器角色指派給 為驅動程式庫建立的預設調度工具。
incoming vector<fuchsia.component.runner/ComponentNamespaceEntry>[32]

提供給驅動程式庫傳入命名空間。

outgoing_dir server_end<fuchsia.io/Directory>

由驅動程式庫提供的傳出目錄。

config handle<vmo>

傳遞至驅動程式庫設定。

node_name string

驅動程式庫繫結的節點名稱。

node_properties NodePropertyDictionary

驅動程式庫繫結節點的節點屬性。 如果節點非複合,則「default」項目會包含 節點本身的屬性 如果節點是複合節點,則每個父項都會有一個項目 和「default」項目會參照主要複合父項 節點的屬性複合父項節點的屬性 提供的是複合節點規格,而非原始節點 父項屬性。

新增日期:19

NodeAddArgs 資源

定義於 fuchsia.driver.framework/topology.fidl

用於新增節點的引數。

Ordinal欄位類型說明
name NodeName

節點名稱。

offers vector<fuchsia.component.decl/Offer>[128]

提供給繫結至此節點之驅動程式庫的功能。 驅動程式必須確保這些功能已新增至傳出目錄 再新增子節點

已移除:19 已淘汰:18
symbols vector<NodeSymbol>[64]

提供給繫結至此節點的驅動程式庫的功能。

properties NodePropertyVector

節點屬性。

devfs_args DevfsAddArgs

此節點應如何新增至 devfs 的引數。

offers2 vector<Offer>[128]

提供給繫結至此節點之驅動程式庫的功能。 驅動程式必須確保這些功能已新增至傳出目錄 再新增子節點

新增日期:18

NodeControllerRequestBindRequest

定義於 fuchsia.driver.framework/topology.fidl

Ordinal欄位類型說明
force_rebind bool

若為 true,則節點會先解除與相符驅動程式庫之間的繫結,再嘗試 透過一般的繫結程序進行繫結

driver_url_suffix string

如果設定這個欄位,系統只會考量與此網址後置字串相符的驅動程式 繫結。 例如:「gpt.cm」、「meta/gpt.cm」、「fuchsia-boot:///#meta/gpt.cm」。

NodeSymbol

定義於 fuchsia.driver.framework/topology.fidl

節點驅動程式庫提供的符號定義。符號是位於 驅動程式代管程序

Ordinal欄位類型說明
name string[128]

符號的名稱。

address uint64

符號的虛擬地址,位於驅動程式代管程序處理程序中。

聯合國

CompositeNodeManager_AddSpec_Result 嚴格

fuchsia.driver.framework/composite_node_spec.fidl 中定義

OrdinalVariant類型說明
response CompositeNodeManager_AddSpec_Response
err CompositeNodeSpecError
framework_err internal

Driver_Start_Result 嚴格

定義於 fuchsia.driver.framework/driver.fidl

OrdinalVariant類型說明
response Driver_Start_Response
err zx/Status
framework_err internal

NodeController_RequestBind_Result 嚴格

定義於 fuchsia.driver.framework/topology.fidl

OrdinalVariant類型說明
response NodeController_RequestBind_Response
err zx/Status
framework_err internal

NodePropertyKey 嚴格

定義於 fuchsia.driver.framework/topology.fidl

OrdinalVariant類型說明
int_value NodePropertyKeyUint
string_value NodePropertyKeyString

NodePropertyValue 彈性

定義於 fuchsia.driver.framework/topology.fidl

OrdinalVariant類型說明
int_value NodePropertyValueUint
string_value NodePropertyValueString
bool_value NodePropertyValueBool
enum_value NodePropertyValueEnum

Node_AddChild_Result 嚴格

定義於 fuchsia.driver.framework/topology.fidl

OrdinalVariant類型說明
response Node_AddChild_Response
err NodeError
framework_err internal

提供彈性

定義於 fuchsia.driver.framework/topology.fidl

新增日期:18
OrdinalVariant類型說明
zircon_transport fuchsia.component.decl/Offer
driver_transport fuchsia.component.decl/Offer

觀測站

名稱類型說明
MAX_NAMESPACE_COUNT fuchsia.component.runner/MAX_NAMESPACE_COUNT uint32
MAX_NODE_NAME_LENGTH 128 uint8
MAX_OFFER_COUNT fuchsia.component/MAX_DYNAMIC_OFFER_COUNT uint32
MAX_PROPERTY_COUNT 64 uint8
MAX_RESOURCE_NAME_LENGTH 128 uint8
新增日期:18
MAX_SYMBOL_COUNT 64 uint8
MAX_SYMBOL_NAME_LENGTH 128 uint8

別名

名稱說明
NodeName string[MAX_NODE_NAME_LENGTH]
NodePropertyDictionary vector[fidl/MAX]
新增日期:19
NodePropertyKeyString string[256]
NodePropertyKeyUint uint32
NodePropertyValueBool bool
NodePropertyValueEnum string[256]
NodePropertyValueString string[256]
NodePropertyValueUint uint32
NodePropertyVector vector[MAX_PROPERTY_COUNT]