通訊協定
CompositeNodeManager
定義於 fuchsia.driver.framework/composite_node_spec.fidl
板卡驅動程式可透過此通訊協定建立複合節點規格。
複合節點規格會在執行階段建立,以動態方式連結複合驅動程式的靜態繫結規則與系統中節點的動態繫結屬性,讓驅動程式庫繫結規則更通用且可重複使用。
AddSpec
將指定的複合節點規格新增至驅動程式庫架構。
要求
| 名稱 | 類型 |
|---|---|
payload |
CompositeNodeSpec
|
回應
| 名稱 | 類型 |
|---|---|
payload |
CompositeNodeManager_AddSpec_Result
|
駕駛
定義於 fuchsia.driver.framework/driver.fidl
驅動程式架構的驅動程式代管程序會使用這個通訊協定,將各種訊息和生命週期掛鉤傳送至驅動程式庫。這個通訊協定的連線是透過 driver_symbols 程式庫中定義的 |DriverRegistration| 建立。
驅動程式庫關閉伺服器端後,驅動程式架構會啟動關閉程序,關閉屬於該驅動程式庫的所有調度工具。
繼續
在驅動程式庫恢復硬體時傳回。當電源架構要求電源元素進入開啟電源狀態時,系統會呼叫這個方法。驅動程式應重新開啟硬體,以回應這項呼叫。
如果喚醒來自喚醒向量,|power_element_lease| 是與目前喚醒相關聯的租約。否則為 None。
電源元素要求恢復後,執行順序的注意事項:
- 呼叫這個方法 (調度工具此時不接受任何其他工作)
- 這個方法完成後,調度工具就會開始接受工作佇列中的新工作
要求
| 名稱 | 類型 |
|---|---|
power_element_lease |
fuchsia.power.broker/LeaseToken
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Driver_Resume_Result
|
開始
使用指定的 |start_args| 啟動驅動程式庫。
驅動程式應先完成初始設定和列舉,再從 |Start| 傳回。具體來說,驅動程式應利用 fuchsia.driver.framework/Node.AddChild 列舉所有目前可用的節點,並等待所有呼叫完成。
在呼叫成功傳回前,架構不會將驅動程式庫視為已啟動。因此,驅動程式庫必須成功回覆 |Start|,系統才會呼叫 |Stop|。
如果驅動程式庫傳回錯誤,在驅動程式架構啟動驅動程式庫調度工具的關閉程序之前,系統不會對該驅動程式呼叫 |Stop|。因此,在傳回錯誤之前,應已執行所有必要的清理作業。
要求
| 名稱 | 類型 |
|---|---|
start_args |
DriverStartArgs
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Driver_Start_Result
|
停止
停止驅動程式庫。如要停止,驅動程式庫應拆除在 |Start| 中或之後設定的所有資源。這是一種單向 FIDL 方法。驅動程式庫停止後,應關閉伺服器端。非同步作業應在關閉伺服器端前完全完成。
要求
<EMPTY>
暫停使用
在驅動程式庫暫停硬體時傳回。當電源元素要求關閉電源狀態時,系統會呼叫這個方法。驅動程式應關閉硬體,以回應這項呼叫。
電源元素要求暫停後,執行順序的注意事項:
- 調度工具停止接受工作佇列中的新工作
- 調度工具會清空先前排入佇列的工作
- 所有工作都完成後,系統會呼叫這個方法
驅動程式在暫停後不會立即 |停止|。系統會先執行 |Resume|,再執行 |Stop|。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Driver_Suspend_Result
|
健康度
定義於 fuchsia.driver.framework/health.fidl
通訊協定已整合至 Driver,用於執行主動健康狀態檢查,以及接收主動健康狀態警示。
HealthCheck
要求驅動程式庫執行自我診斷檢查。
驅動程式代管程序絕不會在 Driver.Suspend 和 Driver.Resume 完成之間發出 HealthCheck,而是在驅動程式庫暫停或轉換電源狀態時,自行回答 HealthCheckError.INVALID_STATE。
要求
| 名稱 | 類型 |
|---|---|
request |
HealthCheckRequest
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Health_HealthCheck_Result
|
OnHealthAlert
當驅動程式庫偵測到非同步自我錯誤,或懷疑上游/下游鄰近節點時,會主動發出。
回應
| 名稱 | 類型 |
|---|---|
alert |
HealthAlert
|
節點
定義於 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
|
ProvideResource
提供其他節點可依附的資源。所提供資源的生命週期會與 controller 用戶端連線連結。如果中斷用戶端連線,系統就會移除資源。
要求
| 名稱 | 類型 |
|---|---|
resource |
ResourceArgs
|
controller |
server_end:ResourceController
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Node_ProvideResource_Result
|
NodeController
定義於 fuchsia.driver.framework/topology.fidl
父節點用來控制子節點的通訊協定。
OnBind
當相關聯的 Node 繫結至驅動程式庫時,系統會觸發這個事件。已替換為 WaitForDriver。
回應
| 名稱 | 類型 |
|---|---|
payload |
NodeControllerOnBindRequest
|
移除
移除節點及其所有子項。
要求
<EMPTY>
RequestBind
要求架構嘗試將驅動程式庫繫結至這個節點。這是額外的繫結要求,因為架構會在節點建立時嘗試繫結節點一次。
- 如果節點已繫結且
force_rebind為 false,則會發生錯誤ZX_ERR_ALREADY_BOUND。 - 如果節點有未完成的 |RequestBind| 呼叫,則會傳回錯誤
ZX_ERR_ALREADY_EXISTS。
要求
| 名稱 | 類型 |
|---|---|
payload |
NodeControllerRequestBindRequest
|
回應
| 名稱 | 類型 |
|---|---|
payload |
NodeController_RequestBind_Result
|
WaitForDriver
Hanging get 樣式呼叫,會傳回相關聯 Node 的終端狀態,或以此節點為父項的複合節點。如果驅動程式庫成功啟動,這個函式會立即傳回驅動程式庫啟動時所在節點的權杖。如果發生錯誤,系統會等到啟動完成 (即所有可繫結及啟動的驅動程式都已完成) 後,再傳回錯誤。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
NodeController_WaitForDriver_Result
|
NodeManager
定義於 fuchsia.driver.framework/topology.fidl
用戶端可透過這個通訊協定,將 Node2 新增至驅動程式庫拓撲。
AddNode
在驅動程式庫程式架構中新增 Node2。
要求
| 名稱 | 類型 |
|---|---|
node |
Node2
|
controller |
server_end:NodeController
|
node_ref |
server_end:Node?
|
回應
| 名稱 | 類型 |
|---|---|
payload |
NodeManager_AddNode_Result
|
ResourceController
定義於 fuchsia.driver.framework/topology.fidl
資源提供者可用來控制資源的通訊協定。
移除
移除資源。
要求
<EMPTY>
STRUCTS
BindRule2
定義於 fuchsia.driver.framework/composite_node_spec.fidl
代表父項規格中的繫結規則。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
key |
NodePropertyKeyString
|
屬性鍵。 |
無預設值 |
condition |
Condition
|
在比對程序中評估屬性值的條件。值必須是 ACCEPT 或 REJECT。 |
無預設值 |
values |
vector<NodePropertyValue>:64
|
屬性值清單。不得留空。屬性值必須屬於相同類型。 |
無預設值 |
CompositeNodeManager_AddSpec_Response
定義於 fuchsia.driver.framework/composite_node_spec.fidl
<EMPTY>
Driver_Resume_Response
定義於 fuchsia.driver.framework/driver.fidl
<EMPTY>
Driver_Start_Response
定義於 fuchsia.driver.framework/driver.fidl
<EMPTY>
Driver_Suspend_Response
定義於 fuchsia.driver.framework/driver.fidl
<EMPTY>
HealthDiagnosticItem
定義於 fuchsia.driver.framework/health.fidl
在驅動程式庫健康狀態檢查期間擷取的鍵/值診斷屬性。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
key |
string:64
|
無預設值 | |
value |
HealthDiagnosticValue
|
無預設值 |
NodeController_RequestBind_Response
定義於 fuchsia.driver.framework/topology.fidl
<EMPTY>
NodeManager_AddNode_Response
定義於 fuchsia.driver.framework/topology.fidl
<EMPTY>
NodeProperty2
定義於 fuchsia.driver.framework/topology.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
key |
NodePropertyKeyString
|
屬性鍵。 |
無預設值 |
value |
NodePropertyValue
|
屬性值。 |
無預設值 |
NodePropertyEntry2
定義於 fuchsia.driver.framework/driver_start_args.fidl
包含屬於節點的節點屬性。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
name |
NodeName
|
具有 |node_properties| 的節點名稱。 |
無預設值 |
properties |
NodeProperties
|
屬於名稱為 |node_name| 的節點的節點屬性。如果節點是複合節點,則 |properties| 為空白,且不包含其父項的屬性。 |
無預設值 |
Node_AddChild_Response
定義於 fuchsia.driver.framework/topology.fidl
<EMPTY>
Node_ProvideResource_Response
定義於 fuchsia.driver.framework/topology.fidl
<EMPTY>
ParentSpec2
定義於 fuchsia.driver.framework/composite_node_spec.fidl
節點規格,用於指定從複合節點規格建立的複合節點的父項。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
bind_rules |
vector<BindRule2>:64
|
父項的繫結規則。屬性鍵不得重複。不得留空。 |
無預設值 |
properties |
vector<NodeProperty2>:64
|
用於比對複合驅動程式庫繫結規則的屬性。鍵不得重複,且必須是字串。 |
無預設值 |
ResourceProperty
定義於 fuchsia.driver.framework/topology.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
key |
string
|
屬性的鍵。 |
無預設值 |
value |
ResourcePropertyValue
|
屬性的值。 |
無預設值 |
列舉
BusType flexible
類型:uint32
定義於 fuchsia.driver.framework/topology.fidl
| 名稱 | 值 | 說明 |
|---|---|---|
平台 |
1 |
|
ACPI |
2 |
|
DEVICE_TREE |
3 |
|
PCI |
4 |
|
USB |
5 |
|
GPIO |
6 |
|
I2C |
7 |
|
SPI |
8 |
|
SDIO |
9 |
|
UART |
10 |
|
SPMI |
11 |
|
USB_PERIPHERAL |
12 |
|
VIRTIO |
13 |
CompositeNodeSpecError 彈性
類型:uint32
定義於 fuchsia.driver.framework/composite_node_spec.fidl
CompositeNodeManager 通訊協定的錯誤代碼。
| 名稱 | 值 | 說明 |
|---|---|---|
MISSING_ARGS |
1 |
未提供複合節點規格的引數。 |
EMPTY_NODES |
2 |
指定複合節點規格的 |
ALREADY_EXISTS |
3 |
指定複合節點規格中的 |
DRIVER_INDEX_FAILURE |
4 |
無法將規格新增至驅動程式庫索引。 |
DUPLICATE_PARENTS |
5 |
同時指定了 |
條件 strict
類型:uint32
定義於 fuchsia.driver.framework/composite_node_spec.fidl
代表繫結規則條件。
| 名稱 | 值 | 說明 |
|---|---|---|
不明 |
0 |
|
接受 |
1 |
|
拒絕 |
2 |
DeviceAddressStability 彈性
類型:uint32
定義於 fuchsia.driver.framework/topology.fidl
| 名稱 | 值 | 說明 |
|---|---|---|
UNSTABLE_BETWEEN_DRIVER_RESTART |
0 |
驅動程式庫重新啟動時,裝置位址可能會變更。 |
UNSTABLE_BETWEEN_BOOT |
1 |
系統重新啟動時,裝置位址可能會變更。 |
UNSTABLE_BETWEEN_SOFTWARE_UPDATE |
2 |
系統更新後,裝置位址可能會變更。 |
穩定 |
3 |
匯流排上的裝置位址在系統生命週期內保證穩定。 |
DriverPackageType flexible
類型:uint8
定義於 fuchsia.driver.framework/driver_info.fidl
驅動程式庫元件所在的 Fuchsia 套件類型。如要進一步瞭解各種套件類別,請前往: https://fuchsia.dev/fuchsia-src/concepts/packages/package#types_of_packages
| 名稱 | 值 | 說明 |
|---|---|---|
BOOT |
0 |
BOOT 套件位於 Zircon 開機映像檔中。 |
BASE |
1 |
BASE 套件會以靜態本機套件的形式,包含在 Fuchsia 版本中。 |
CACHED |
2 |
CACHED 套件是 BASE 套件,如果可以使用完整套件解析器,則可在解析期間更新。 |
UNIVERSE |
3 |
UNIVERSE 套件只有在由完整套件解析器解析時,才會安裝到裝置上。 |
彈性健康狀態檢查錯誤
類型:uint32
定義於 fuchsia.driver.framework/health.fidl
無法完成健康狀態檢查時傳回的錯誤代碼。
| 名稱 | 值 | 說明 |
|---|---|---|
TIMEOUT |
1 |
驅動程式未在層級期限內回應 (調度工具卡住)。 |
INTERNAL_ERROR |
2 |
轉送檢查時,發生內部架構或傳輸錯誤。 |
NOT_SUPPORTED |
3 |
不支援驅動程式或要求的 |
INVALID_STATE |
4 |
驅動程式未處於「執行中」狀態 (例如「啟動中」、「停止中」、「已暫停」)。 |
無法使用 |
5 |
目前無法評估要求的層級:硬體已關機、暫停、尚未初始化或暫時忙碌。消費者必須將此視為沒有資訊,而非不健康。 |
COMMUNICATION_ERROR |
6 |
執行檢查時發生匯流排、MMIO 或傳輸錯誤。 |
NOT_FOUND |
7 |
沒有繫結節點與要求的路徑名稱相符 (由 |
HealthCheckRequest 彈性
類型:uint32
定義於 fuchsia.driver.framework/health.fidl
指定驅動程式庫健康狀態檢查的深度和延遲時間預算。
| 名稱 | 值 | 說明 |
|---|---|---|
PING |
1 |
僅限軟體活躍度:調度工具回應、可取得鎖定、記憶體內狀態一致。沒有匯流排 I/O (I2C/SPI/DSI);只有在區塊已知有供電和時脈時,才會讀取 MMIO。不得傳回 |
快速 |
2 |
有界限、非破壞性的硬體讀取或進度視窗 (等待 TE/VSync 邊緣的一個影格週期,透過 I2C/DSI 讀取狀態暫存器)。不得清除讀取時清除暫存器,或干擾進行中的 DMA 或掃描。建議:< 25 毫秒。期限:2 秒。 |
熟睡 |
3 |
擴充自我測試 / BIST。在檢查期間,可能會中斷進行中的 I/O,但必須還原先前的狀態。僅在操作員明確要求 (ffx / 實驗室測試) 時發出,絕不會在架構啟動的掃描期間發出。建議:< 10 秒。Deadline: 2min. |
HealthStatus 彈性
類型:uint32
定義於 fuchsia.driver.framework/health.fidl
回報驅動程式庫或條件的運作健康狀態。
| 名稱 | 值 | 說明 |
|---|---|---|
確定 |
1 |
驅動程式和硬體在正常參數範圍內運作。 |
DEGRADED |
2 |
驅動程式可正常運作,但錯誤率偏高、資源外洩或品質下降。 |
UNHEALTHY |
3 |
驅動程式或基礎硬體卡住、沒有回應或無法初始化。 |
NodeError 彈性
類型:uint32
定義於 fuchsia.driver.framework/topology.fidl
Node 通訊協定的錯誤代碼。
| 名稱 | 值 | 說明 |
|---|---|---|
內部 |
1 |
|
NODE_REMOVED |
2 |
|
NAME_MISSING |
3 |
|
NAME_INVALID |
4 |
節點名稱無效。具體來說,名稱不得包含句號。 |
NAME_ALREADY_EXISTS |
5 |
已有同名的同層節點。 |
OFFER_SOURCE_NAME_MISSING |
6 |
這個節點的優惠缺少來源名稱。 |
OFFER_REF_EXISTS |
7 |
這個節點的優惠不應有來源或目標。 |
SYMBOL_NAME_MISSING |
8 |
這個節點的符號缺少名稱。 |
SYMBOL_ADDRESS_MISSING |
9 |
這個節點的符號缺少位址。 |
SYMBOL_ALREADY_EXISTS |
10 |
這個節點已有另一個名稱相同的符號。 |
UNBIND_CHILDREN_IN_PROGRESS |
11 |
節點正在解除繫結所有子項。 |
UNSUPPORTED_ARGS |
12 |
節點包含不支援的引數,例如已淘汰的屬性鍵或優惠。 |
DUPLICATE_PROPERTY_KEYS |
13 |
節點包含多個鍵相同的屬性。 |
OFFER_SOURCE_INSTANCE_FILTER_MISSING |
14 |
節點缺少來源執行個體篩選器, |
OFFER_RENAMED_INSTANCES_MISSING |
15 |
節點缺少重新命名的執行個體, |
TABLES
BusInfo
定義於 fuchsia.driver.framework/topology.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
bus |
BusType
|
這個節點所在的匯流排類型。 |
2 |
address |
DeviceAddress
|
專屬 ID,用於描述此裝置在指定匯流排上的身分。 |
3 |
address_stability |
DeviceAddressStability
|
位址的穩定性。 |
CompositeDriverInfo
定義於 fuchsia.driver.framework/driver_info.fidl
複合驅動程式庫的資訊。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
composite_name |
string
|
驅動程式庫複合繫結規則中指定的複合名稱。 |
2 |
driver_info |
DriverInfo
|
驅動程式庫的一般資訊。 |
CompositeDriverMatch
定義於 fuchsia.driver.framework/driver_info.fidl
與複合資料相符的複合資料驅動程式庫資訊。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
composite_driver |
CompositeDriverInfo
|
相符複合驅動程式庫的資訊。 |
2 |
parent_names |
vector<string>
|
所有父項名稱的清單,依索引排序。這些名稱來自驅動程式庫複合繫結規則中的節點定義。 |
3 |
primary_parent_index |
uint32
|
主要節點索引。由驅動程式庫複合繫結規則中的主要節點識別。 |
CompositeInfo
定義於 fuchsia.driver.framework/driver_info.fidl
由複合節點規格定義的複合資訊。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
spec |
CompositeNodeSpec
|
建立這個複合節點規格時使用的規格資訊。 |
2 |
matched_driver |
CompositeDriverMatch
|
節點規格的資訊,只有在驅動程式庫與這個規格父項中的屬性相符時,才能使用。 |
CompositeNodeSpec
定義於 fuchsia.driver.framework/composite_node_spec.fidl
代表複合節點規格的結構。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
name |
string
|
複合節點規格的名稱。 |
3 |
parents2 |
vector<ParentSpec2>
|
複合節點規格中的節點,不得留空。第一個節點是主要節點。 |
4 |
driver_host |
string:128
|
驅動程式代管程序的 ID,繫結至這個節點規格的驅動程式庫應位於其中。指定相同 ID 的所有驅動程式,都會集中在同一個驅動程式庫代管程序中。如果驅動程式代管程序尚未啟動,則會在節點繫結時啟動。 |
CompositeParent
定義於 fuchsia.driver.framework/driver_info.fidl
複合節點規格定義的複合節點父項。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
composite |
CompositeInfo
|
此複合資料的子項複合資料相關資訊。 |
2 |
index |
uint32
|
這個父項在規格父項中的索引。 |
依附元件
定義於 fuchsia.driver.framework/topology.fidl
代表節點對資源的依附元件。系統會比對資源與 selector 的限制,解決依附元件問題。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
selector |
Selector
|
資源必須符合選取器的限制,才能做為依附元件。 |
2 |
tags |
vector<ResourceProperty>:64
|
標記至資源的其他屬性,用於驅動程式庫繫結 |
DevfsAddArgs 資源
定義於 fuchsia.driver.framework/topology.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
connector |
client_end:fuchsia.device.fs/Connector
|
這是要安裝在 devfs 中的連接器。當用戶端連線至檔案系統中的這個節點時,系統會呼叫 |
2 |
class_name |
string:255
|
這是用於在 devfs 中安裝這個節點的類別名稱。節點會放在 /dev/class/{class_name} 中。如果 /dev/class/ 下沒有 |
3 |
inspect |
handle<vmo>
|
這是檢查資料的 VMO,將安裝在 devfs 中。選用:如未提供,devfs 的檢查資料會留空。 |
4 |
connector_supports |
fuchsia.device.fs/ConnectionType
|
指定 |connector| 支援的連線類型。驅動程式庫架構應處理連接器不支援的連線類型。如未提供,則系統只會假設連接器支援裝置類型。 |
5 |
controller_connector |
client_end:fuchsia.device.fs/Connector
|
這是要安裝在 devfs 中的控制器連接器。當用戶端連線至檔案系統中這個節點的 device_controller 連線時,系統會呼叫 新增:HEAD
|
DeviceCategory
定義於 fuchsia.driver.framework/driver_info.fidl
驅動程式庫元件資訊清單中提供的裝置類別。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
category |
string
|
|
2 |
subcategory |
string
|
DriverInfo
定義於 fuchsia.driver.framework/driver_info.fidl
驅動程式庫的一般資訊,適用於複合和一般驅動程式。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
url |
string:4096
|
驅動程式庫元件的網址。 |
2 |
name |
string
|
驅動程式庫名稱,取自驅動程式庫中 |
3 |
colocate |
bool
|
如果這個值為 true,驅動程式庫應與父項的 DriverHost 位於同一位置。 |
4 |
package_type |
DriverPackageType
|
這個驅動程式庫所在的套件類型。 |
5 |
is_fallback |
bool
|
如果這個值為 true,則驅動程式庫為備用驅動程式庫。備用驅動程式的繫結優先順序較低,因此只有在沒有相符的非備用驅動程式庫時,才會選擇繫結。 |
6 |
device_categories |
vector<DeviceCategory>
|
裝置類別 |
7 |
bind_rules_bytecode |
vector<uint8>
|
繫結規則會宣告一組要評估的限制,以判斷驅動程式庫索引器是否應將此驅動程式庫繫結至裝置。 |
8 |
driver_framework_version |
uint8
|
這個驅動程式庫使用的驅動程式庫架構版本。支援的值為 1 (DFv1) 和 2 (DFv2)。如未提供,系統會假設版本為 1。 |
9 |
is_disabled |
bool
|
驅動程式庫是否已停用。如果為 true,系統就不會選擇這個驅動程式庫繫結至節點。 |
DriverStartArgs 資源
定義於 fuchsia.driver.framework/driver_start_args.fidl
啟動驅動程式庫的引數。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
node |
client_end:Node
|
驅動程式庫繫結的節點。 |
2 |
symbols |
vector<NodeSymbol>:64
|
提供給驅動程式庫符號,用於 |node|。這些符號來自新增 |node| 的驅動程式庫,並經過篩選,只保留繫結程式中要求的符號。 |
3 |
url |
fuchsia.url/Url
|
包含驅動程式庫的套件網址。這純粹是資訊,僅用於提供檢查資料。 |
4 |
program |
fuchsia.data/Dictionary
|
首先,請提供驅動程式庫資訊。目前支援的項目如下:
|
5 |
incoming |
vector<fuchsia.component.runner/ComponentNamespaceEntry>:32
|
提供給驅動程式庫傳入命名空間。 |
6 |
outgoing_dir |
server_end:fuchsia.io/Directory
|
由驅動程式庫提供的傳出目錄。 |
7 |
config |
handle<vmo>
|
傳遞至驅動程式庫設定。 |
8 |
node_name |
string
|
驅動程式庫繫結的節點名稱。 |
10 |
node_offers |
NodeOffersVector
|
驅動程式庫繫結節點的節點供應項目。 |
11 |
node_token |
handle<event>
|
提供代表這個節點的權杖,可與驅動程式庫程式架構交換,以辨別這個節點的其他資訊。 |
12 |
node_properties_2 |
NodePropertyDictionary2
|
|
13 |
vmar |
handle<vmar>
|
驅動程式庫對應至的根 VMAR。如要套用相同的排程器設定檔,所有子項對應都應放在這個 VMAR 中。 |
14 |
power_element_args |
PowerElementArgs
|
在透過 新增:HEAD
|
15 |
log_sink |
client_end:fuchsia.logger/LogSink
|
記錄檔接收器管道。 |
HealthCheckResponse
定義於 fuchsia.driver.framework/health.fidl
驅動程式庫健康狀態檢查傳回的回應。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
diagnostics |
vector<HealthDiagnosticItem>:32
|
驅動程式庫整體診斷鍵/值遙測資料 (電源模式、活動計數器、上次事件時間戳記),而非單一條件。 |
2 |
conditions |
vector<HealthCondition>:16
|
目前有故障或警告。如果驅動程式庫健康狀態良好 ( |
HealthCondition
定義於 fuchsia.driver.framework/health.fidl
驅動程式庫健康狀態檢查偵測到一項狀況。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
status |
HealthStatus
|
此病症的嚴重程度。消費者會將省略或無法辨識的值視為 |
2 |
reason_code |
string:128
|
機器可讀的簡短權杖 (例如「DSI_CRI_FIFO_WEDGED」、「TE_INTERRUPT_STALLED」)。在回應中不得重複。 |
3 |
message |
string:1024
|
人類可讀的條件詳細資料。 |
4 |
diagnostics |
vector<HealthDiagnosticItem>:32
|
此條件專屬的診斷值。 |
5 |
first_observed |
zx/InstantBoot
|
首次觀察到此情況的開機時間軸。 |
6 |
last_observed |
zx/InstantBoot
|
最近一次觀察到這個條件的開機時間軸。 |
7 |
occurrence_count |
uint64
|
自 |
Node2
定義於 fuchsia.driver.framework/topology.fidl
代表新增至驅動程式庫拓撲的節點。所有依附元件都與資源相符後,系統就會建立節點。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
name |
string
|
|
2 |
dependencies |
vector<Dependency>
|
NodeAddArgs 資源
定義於 fuchsia.driver.framework/topology.fidl
新增節點的引數。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
name |
NodeName
|
節點名稱。 |
3 |
symbols |
vector<NodeSymbol>:64
|
要提供給繫結至這個節點的驅動程式庫的函式。 |
5 |
devfs_args |
DevfsAddArgs
|
這個節點應如何新增至 devfs 的引數。 |
6 |
offers2 |
NodeOffersVector
|
要提供給繫結至這個節點的驅動程式庫的功能。驅動程式庫必須確保這些功能已新增至傳出目錄或 |offers_dictionary| (如果其中有任何功能屬於 |dictionary_offer| 類型),才能新增子節點。 |
7 |
bus_info |
BusInfo
|
提供給裝置結構化匯流排拓撲的資訊。只有匯流排驅動程式可以指定,最好是預設包含的驅動程式。 |
8 |
properties2 |
NodeProperties
|
節點的屬性。 |
9 |
offers_dictionary |
fuchsia.component.sandbox/DictionaryRef
|
這可用於透過字典,向繫結至這個節點的驅動程式庫提供額外優惠。使用者必須使用 |offers2| 欄位,為這個字典中存在的優惠指定 |dictionary_offer| 類型優惠。 新增:HEAD
|
10 |
driver_host |
string:128
|
驅動程式代管程序的 ID,繫結至這個節點的驅動程式庫應位於其中。指定相同 ID 的所有驅動程式,都會集中在同一個驅動程式代管程序。如果驅動程式代管程序尚未啟動,則會在節點繫結時啟動。只有在驅動程式庫直接繫結至這個節點時,系統才會遵循這項設定。如果複合節點繫結至這個節點,系統會忽略這個欄位,因為這個欄位應改為在複合節點規格中表示。 |
資源
定義於 fuchsia.driver.framework/topology.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
node_token |
handle<event>
|
提供代表這個節點的權杖,可與驅動程式庫程式架構交換,以辨別這個節點的其他資訊。 |
NodeControllerRequestBindRequest
定義於 fuchsia.driver.framework/topology.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
force_rebind |
bool
|
如果為 true,節點會先與相符的驅動程式庫解除繫結,再嘗試透過一般繫結程序繫結。 |
2 |
driver_url_suffix |
string
|
如果設定這個欄位,系統只會考慮與這個網址後置字串相符的驅動程式,並進行繫結。例如:「gpt.cm」、「meta/gpt.cm」、「fuchsia-boot:///#meta/gpt.cm」。 |
NodeSymbol
定義於 fuchsia.driver.framework/topology.fidl
驅動程式庫為節點提供的符號定義。符號是驅動程式代管程序的本機符號。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
name |
string:128
|
符號名稱。 |
2 |
address |
uint64
|
驅動程式代管程序中符號的虛擬位址。 |
3 |
module_name |
string:128
|
提供符號的模組名稱。如果符號源自主要父項,則不會提供。 |
PowerElementArgs 資源
定義於 fuchsia.driver.framework/driver_start_args.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
control_client |
client_end:fuchsia.power.broker/ElementControl
|
|
2 |
runner_server |
server_end:fuchsia.power.broker/ElementRunner
|
|
3 |
lessor_client |
client_end:fuchsia.power.broker/Lessor
|
|
4 |
token |
fuchsia.power.broker/DependencyToken
|
ResourceArgs 資源
定義於 fuchsia.driver.framework/topology.fidl
提供資源的引數。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
name |
ResourceName
|
資源名稱。必填。 |
2 |
properties |
ResourceProperties
|
資源的屬性。必填。 |
3 |
offers |
NodeOffersVector
|
資源提供給依附節點的功能。必填。 |
4 |
bus_info |
BusInfo
|
提供給裝置結構化匯流排拓撲的資訊。只有匯流排驅動程式才能指定這個值,最好是預設包含的驅動程式。(選用) |
選取器
定義於 fuchsia.driver.framework/topology.fidl
用於比對資源做為節點依附元件的選取器。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
offers |
vector<Offer>:128
|
資源必須包含這些優惠。 |
2 |
include_properties |
vector<ResourceProperty>:64
|
資源必須包含這些屬性。屬性鍵不得重複,選取器才有效。 |
3 |
exclude_properties |
vector<ResourceProperty>:64
|
資源不得包含這些屬性。 |
UNIONS
CompositeNodeManager_AddSpec_Result strict
定義於 fuchsia.driver.framework/composite_node_spec.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
CompositeNodeManager_AddSpec_Response
|
|
2 |
err |
CompositeNodeSpecError
|
|
3 |
framework_err |
internal
|
DeviceAddress 彈性
定義於 fuchsia.driver.framework/topology.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
int_value |
uint8
|
固定的整數 ID,例如 SPI 匯流排位址 |
2 |
array_int_value |
vector<uint8>:10
|
整數陣列,例如 PCI BDF。 |
3 |
char_int_value |
string:4
|
uint32 值,可解讀為 4 個字元的序列。 |
4 |
array_char_int_value |
vector<string:4>:10
|
字元序列陣列,例如 ACPI 節點路徑。 |
5 |
string_value |
string:32
|
一般字串,例如裝置樹狀結構節點路徑。 |
DriverResult 彈性 資源
定義於 fuchsia.driver.framework/topology.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
driver_started_node_token |
handle<event>
|
驅動程式庫已成功啟動的節點所屬權杖。 |
2 |
match_error |
zx/Result
|
節點找不到相符的驅動程式庫或複合規格。 |
3 |
start_error |
zx/Result
|
繫結至節點的驅動程式無法順利啟動。 |
Driver_Resume_Result strict
定義於 fuchsia.driver.framework/driver.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Driver_Resume_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Driver_Start_Result strict
定義於 fuchsia.driver.framework/driver.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Driver_Start_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Driver_Suspend_Result strict
定義於 fuchsia.driver.framework/driver.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Driver_Suspend_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
HealthAlert 彈性
定義於 fuchsia.driver.framework/health.fidl
驅動程式庫透過 OnHealthAlert 發出的主動健康警示酬載。「上游」是驅動程式庫依附的項目 (父項:匯流排、時鐘、電源網域、複合父項)。「下游」是指依賴驅動程式庫項目 (子項 / 消費者)。
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
self_fault |
HealthCheckResponse
|
驅動程式偵測到內部硬體或軟體故障,或從先前回報的故障中復原 ( |
2 |
upstream_neighbor_fault |
HealthCheckResponse
|
上游依附元件 (父項/匯流排/時鐘/電源/註冊供應商) 沒有回應或無效,因此驅動程式無法繼續執行。 |
3 |
downstream_neighbor_fault |
HealthCheckResponse
|
下游消費者 (子項/用戶端) 停滯或無法清空佇列/緩衝區,因此驅動程式無法繼續執行。 |
HealthDiagnosticValue 彈性
定義於 fuchsia.driver.framework/health.fidl
HealthCheckResponse 傳回的診斷值。
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
string_value |
string:256
|
|
2 |
int_value |
int64
|
|
3 |
uint_value |
uint64
|
|
4 |
bool_value |
bool
|
|
5 |
timestamp |
zx/InstantBoot
|
開機時間軸,例如上次中斷或輸入報告的時間。 |
Health_HealthCheck_Result strict
定義於 fuchsia.driver.framework/health.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
HealthCheckResponse
|
|
2 |
err |
HealthCheckError
|
|
3 |
framework_err |
internal
|
NodeController_RequestBind_Result strict
定義於 fuchsia.driver.framework/topology.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
NodeController_RequestBind_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
NodeController_WaitForDriver_Result strict resource
定義於 fuchsia.driver.framework/topology.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
DriverResult
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
NodeManager_AddNode_Result strict
定義於 fuchsia.driver.framework/topology.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
NodeManager_AddNode_Response
|
|
2 |
err |
NodeError
|
|
3 |
framework_err |
internal
|
NodePropertyValue 彈性
定義於 fuchsia.driver.framework/topology.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
int_value |
NodePropertyValueUint
|
|
2 |
string_value |
NodePropertyValueString
|
|
3 |
bool_value |
NodePropertyValueBool
|
|
4 |
enum_value |
NodePropertyValueEnum
|
Node_AddChild_Result strict
定義於 fuchsia.driver.framework/topology.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Node_AddChild_Response
|
|
2 |
err |
NodeError
|
|
3 |
framework_err |
internal
|
Node_ProvideResource_Result strict
定義於 fuchsia.driver.framework/topology.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Node_ProvideResource_Response
|
|
2 |
err |
NodeError
|
|
3 |
framework_err |
internal
|
提供彈性
定義於 fuchsia.driver.framework/topology.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
zircon_transport |
fuchsia.component.decl/Offer
|
|
2 |
driver_transport |
fuchsia.component.decl/Offer
|
|
3 |
dictionary_offer |
fuchsia.component.decl/Offer
|
位於 |offers_dictionary| 中的供應項目。這相當於 |zircon_transport| 供應項目,適用於所有其他用途 (例如繫結屬性產生)。 |
常數
| 名稱 | 值 | 類型 | 說明 |
|---|---|---|---|
| MAX_DEVICE_ADDRESS_ARRAY_LEN |
10
|
uint32 |
|
| MAX_DEVICE_ADDRESS_STR_LEN |
32
|
uint32 |
|
| MAX_DRIVER_HOST_LENGTH |
128
|
uint8 |
|
| MAX_MODULE_NAME_LENGTH |
128
|
uint8 |
|
| 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 |
|
| MAX_SYMBOL_COUNT |
64
|
uint8 |
|
| MAX_SYMBOL_NAME_LENGTH |
128
|
uint8 |
別名
| 名稱 | 值 | 說明 |
|---|---|---|
| NodeName |
string[MAX_NODE_NAME_LENGTH] |
|
| NodeOffersVector |
vector[MAX_OFFER_COUNT] |
|
| NodeProperties |
vector[MAX_PROPERTY_COUNT] |
|
| NodePropertyDictionary2 |
vector[fidl/MAX] |
|
| NodePropertyKeyString |
string[256] |
|
| NodePropertyKeyUint |
uint32 |
|
| NodePropertyValueBool |
bool |
|
| NodePropertyValueEnum |
string[256] |
|
| NodePropertyValueString |
string[256] |
|
| NodePropertyValueUint |
uint32 |
|
| ResourceName |
string |
新增:HEAD
|
| ResourceProperties |
vector[MAX_PROPERTY_COUNT] |
新增:HEAD
|
| ResourcePropertyValue |
fuchsia.driver.framework/NodePropertyValue |
新增:HEAD
|
| ResourcePropertyValueBool |
bool |
新增:HEAD
|
| ResourcePropertyValueString |
string |
新增:HEAD
|
| ResourcePropertyValueUint |
uint32 |
新增:HEAD
|