协议
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>
暂停
在驱动程序暂停硬件时返回。 当电源元件请求关闭电源状态时,系统会调用此方法。 驱动程序应关闭硬件以响应此调用。
电源元件请求暂停后的执行顺序说明:
- 调度器停止接受工作队列中的新工作
- dispatcher 排空之前已加入队列的工作
- 所有工作都耗尽后,系统会调用此方法
驱动程序在暂停后不会立即 |Stop|。 它会先经历 |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
挂起获取样式调用,该调用会返回关联 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 |
同时指定了 |
条件严格执行
类型:uint32
在 fuchsia.driver.framework/composite_node_spec.fidl 中定义
表示绑定规则条件。
| 名称 | 值 | 说明 |
|---|---|---|
未知 |
0 |
|
接受 |
1 |
|
拒绝 |
2 |
DeviceAddressStability flexible
类型: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 build 中。 |
CACHED |
2 |
CACHED 软件包是 BASE 软件包,如果完整的软件包解析器可用,则可以在解析期间进行更新。 |
UNIVERSE |
3 |
只有在由完整软件包解析器解析后,UNIVERSE 软件包才会安装到设备上。 |
HealthCheckError(灵活)
类型: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 flexible
类型: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 秒。截止日期:2 分钟。 |
HealthStatus 柔性
类型:uint32
在 fuchsia.driver.framework/health.fidl 中定义
针对驱动程序或条件报告的运行状况。
| 名称 | 值 | 说明 |
|---|---|---|
确定 |
1 |
驱动程序和硬件在正常参数范围内运行。 |
DEGRADED |
2 |
驱动程序正常运行,但错误率升高、资源泄露或质量下降。 |
运行状况不佳 |
3 |
驱动程序或底层硬件卡住、无响应或初始化失败。 |
NodeError flexible
类型:uint32
在 fuchsia.driver.framework/topology.fidl 中定义
Node 协议的错误代码。
| 名称 | 值 | 说明 |
|---|---|---|
INTERNAL |
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
|
一个唯一标识符,用于描述此设备在给定总线上的身份。 |
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
|
驱动程序主机的标识符,绑定到此节点规范的驱动程序应位于其中。指定相同标识符的所有驱动程序都将并置到同一驱动程序主机中。如果驱动程序主机尚未启动,则会在节点绑定时启动。 |
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>
|
这是将安装在 devfs 中的检查数据的 vmo。 可选:如果未提供此参数,则 devfs 的检查数据将为空。 |
4 |
connector_supports |
fuchsia.device.fs/ConnectionType
|
给定 |connector| 支持的连接类型。 驱动程序框架应处理连接器不支持的连接类型。 如果未提供,则系统会假定连接器仅支持设备类型。 |
5 |
controller_connector |
client_end:fuchsia.device.fs/Connector
|
这是要安装在 devfs 中的控制器连接器。
当客户端连接到文件系统中此节点的 device_controller 连接时,系统会调用 Added: 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
|
与驱动程序的电源元素相关的句柄,这些元素位于通过 Added: 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
|
这可用于通过字典向绑定到此节点的驱动程序提供其他 offer。用户必须使用 |offers2| 字段为此字典中存在的优惠指定 |dictionary_offer| 类型的优惠。 Added: HEAD
|
10 |
driver_host |
string:128
|
驱动程序主机的标识符,绑定到此节点的驱动程序应位于其中。 指定相同标识符的所有驱动程序都将并置到同一驱动程序主机中。 如果驱动程序主机尚未启动,则会在节点绑定时启动。仅当驱动程序直接绑定到此节点时,系统才会遵循此属性。如果复合节点绑定到此节点,则系统会忽略此字段,因为应改为在复合节点规范中表示。 |
NodeControllerOnBindRequest 资源
在 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 resource
在 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 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
CompositeNodeManager_AddSpec_Response
|
|
2 |
err |
CompositeNodeSpecError
|
|
3 |
framework_err |
internal
|
DeviceAddress flexible
在 fuchsia.driver.framework/topology.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
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 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
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 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Driver_Resume_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Driver_Start_Result strict
在 fuchsia.driver.framework/driver.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Driver_Start_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
Driver_Suspend_Result strict
在 fuchsia.driver.framework/driver.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Driver_Suspend_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
HealthAlert 灵活
在 fuchsia.driver.framework/health.fidl 中定义
驱动程序通过 OnHealthAlert 发出的主动健康状况提醒的载荷。“上游”是驱动程序所依赖的内容(父级:总线、时钟、电源域、复合父级)。“下游”是指依赖于驱动程序的内容(子级 / 使用者)。
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
self_fault |
HealthCheckResponse
|
驱动程序检测到内部硬件或软件故障,或从之前报告的故障中恢复(当 |
2 |
upstream_neighbor_fault |
HealthCheckResponse
|
由于上游依赖项(父级/总线/时钟/电源/寄存器提供方)无响应或无效,驱动程序无法继续运行。 |
3 |
downstream_neighbor_fault |
HealthCheckResponse
|
由于下游使用方(子级/客户端)被卡住或无法排空队列/缓冲区,驱动程序无法继续运行。 |
HealthDiagnosticValue flexible
在 fuchsia.driver.framework/health.fidl 中定义
HealthCheckResponse 中返回的诊断值。
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
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 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
HealthCheckResponse
|
|
2 |
err |
HealthCheckError
|
|
3 |
framework_err |
internal
|
NodeController_RequestBind_Result strict
在 fuchsia.driver.framework/topology.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
NodeController_RequestBind_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
NodeController_WaitForDriver_Result strict resource
在 fuchsia.driver.framework/topology.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
DriverResult
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
NodeManager_AddNode_Result strict
在 fuchsia.driver.framework/topology.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
NodeManager_AddNode_Response
|
|
2 |
err |
NodeError
|
|
3 |
framework_err |
internal
|
NodePropertyValue flexible
在 fuchsia.driver.framework/topology.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
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 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Node_AddChild_Response
|
|
2 |
err |
NodeError
|
|
3 |
framework_err |
internal
|
Node_ProvideResource_Result strict
在 fuchsia.driver.framework/topology.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Node_ProvideResource_Response
|
|
2 |
err |
NodeError
|
|
3 |
framework_err |
internal
|
提供灵活
在 fuchsia.driver.framework/topology.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
zircon_transport |
fuchsia.component.decl/Offer
|
|
2 |
driver_transport |
fuchsia.component.decl/Offer
|
|
3 |
dictionary_offer |
fuchsia.component.decl/Offer
|
位于 |offers_dictionary| 中的 offer。对于所有其他用途(例如绑定属性生成),这等同于 |zircon_transport| offer。 |
常量
| 名称 | 值 | 类型 | 说明 |
|---|---|---|---|
| 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 |
Added: HEAD
|
| ResourceProperties |
vector[MAX_PROPERTY_COUNT] |
Added: HEAD
|
| ResourcePropertyValue |
fuchsia.driver.framework/NodePropertyValue |
Added: HEAD
|
| ResourcePropertyValueBool |
bool |
Added: HEAD
|
| ResourcePropertyValueString |
string |
Added: HEAD
|
| ResourcePropertyValueUint |
uint32 |
Added: HEAD
|