fuchsia.driver.framework

Added: HEAD

协议

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。

电源元素请求恢复后的执行顺序说明:

  • 调用此方法(此时调度程序不接受任何其他工作)
  • 此方法完成后,调度程序会开始接受工作队列中的新工作
Added: HEAD

请求

名称类型
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| 指令。

Added: HEAD

请求

<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 客户端连接相关联。断开客户端连接会导致资源被移除。

Added: HEAD

请求

名称类型
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 添加到驱动程序拓扑。

Added: HEAD

AddNode

向驱动程序框架添加 Node2。

请求

名称类型
node Node2
controller server_end:NodeController
node_ref server_end:Node?

响应

名称类型
payload NodeManager_AddNode_Result

ResourceController

在 fuchsia.driver.framework/topology.fidl 中定义

资源提供方可用于控制资源的协议。

Added: HEAD

移除

移除资源。

请求

<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 中定义

Added: HEAD

字段类型说明默认
key string

属性的键。

无默认应用
value ResourcePropertyValue

属性的值。

无默认应用

枚举

BusType flexible

类型:uint32

在 fuchsia.driver.framework/topology.fidl 中定义

名称值说明
1
2
3
4
5
6
7
8
9
10
11
12
13

CompositeNodeSpecError 灵活

类型:uint32

在 fuchsia.driver.framework/composite_node_spec.fidl 中定义

CompositeNodeManager 协议的错误代码。

名称值说明
1

未提供复合节点规范的参数。

2

给定复合节点规范的 nodes 为空。

3

给定复合节点规范中的 name 与已创建的复合节点规范重复。

4

未能将规范添加到驱动程序索引。

5

同时指定了 parents 和 parents2 字段。

条件严格执行

类型:uint32

在 fuchsia.driver.framework/composite_node_spec.fidl 中定义

表示绑定规则条件。

名称值说明
0
1
2

DeviceAddressStability flexible

类型:uint32

在 fuchsia.driver.framework/topology.fidl 中定义

名称值说明
0

重启驱动程序后,设备地址可能会发生变化。

1

系统重启后,设备地址可能会发生变化。

2

系统更新后,设备地址可能会发生变化。

3

在系统的生命周期内,总线上的设备地址保证稳定。

DriverPackageType flexible

类型:uint8

在 fuchsia.driver.framework/driver_info.fidl 中定义

驱动程序组件所在的 Fuchsia 软件包的类型。 如需详细了解各种软件包类别,请访问: https://fuchsia.dev/fuchsia-src/concepts/packages/package#types_of_packages

名称值说明
0

BOOT 软件包位于 Zircon 启动映像中。

1

BASE 软件包作为静态本地软件包包含在 Fuchsia build 中。

2

CACHED 软件包是 BASE 软件包,如果完整的软件包解析器可用,则可以在解析期间进行更新。

3

只有在由完整软件包解析器解析后,UNIVERSE 软件包才会安装到设备上。

HealthCheckError(灵活)

类型:uint32

在 fuchsia.driver.framework/health.fidl 中定义

无法完成健康检查时返回的错误代码。

名称值说明
1

驱动程序未在相应级别的截止时间内做出响应(调度程序卡住)。

2

路由检查时发生内部框架或传输错误。

3

不支持该驱动程序或请求的 HealthCheckRequest 级别。

4

司机未处于“运行中”状态(例如,正在启动、正在停止、已暂停)。

5

目前无法评估请求的级别:硬件已关机、已暂停、尚未初始化或暂时忙碌。使用方必须将其视为无信息,而不是不健康。PING 绝不能返回此值。

6

执行检查本身时发生总线、MMIO 或传输错误。

7

没有绑定节点与请求的绰号(由 fuchsia.driver.development/Manager.RunHealthCheck 返回)匹配。

HealthCheckRequest flexible

类型:uint32

在 fuchsia.driver.framework/health.fidl 中定义

指定驱动程序健康检查的深度和延迟时间预算。

名称值说明
1

仅软件活跃度:调度程序响应、锁可获取、内存中状态一致。无总线 I/O (I2C/SPI/DSI);仅当已知块已通电且已计时时,才进行 MMIO 读取。绝不能返回 UNAVAILABLE。建议:< 1 毫秒。截止时间(由驱动程序主机强制执行):250 毫秒。

2

有界限、非破坏性的硬件读取或进度窗口(等待一个帧周期以获取 TE/VSync 边缘,通过 I2C/DSI 读取状态寄存器)。不得清除“读取时清除”寄存器,也不得干扰活跃的 DMA 或扫描输出。建议:< 25 毫秒。截止日期:2 秒。

3

扩展自测 / BIST。在检查期间,可能会中断活跃的 I/O,但必须恢复之前的状态。仅在操作员明确请求(ffx / 实验室测试)时发出,绝不会在框架发起的扫描期间发出。建议:< 10 秒。截止日期:2 分钟。

HealthStatus 柔性

类型:uint32

在 fuchsia.driver.framework/health.fidl 中定义

针对驱动程序或条件报告的运行状况。

名称值说明
1

驱动程序和硬件在正常参数范围内运行。

2

驱动程序正常运行,但错误率升高、资源泄露或质量下降。

3

驱动程序或底层硬件卡住、无响应或初始化失败。

NodeError flexible

类型:uint32

在 fuchsia.driver.framework/topology.fidl 中定义

Node 协议的错误代码。

名称值说明
1
2
3
4

节点名称无效。具体而言,其名称中不得包含英文句点。

5

存在同名的同级节点。

6

此节点的优惠缺少来源名称。

7

此节点的优惠不应有来源或目标。

8

此节点的符号缺少名称。

9

此节点的符号缺少地址。

10

此节点还有另一个同名符号。

11

节点正在解除与其所有子节点的绑定。

12

节点包含不受支持的参数,例如已弃用的属性键或优惠。

13

节点包含多个具有相同键的属性。

14

节点缺少源实例过滤条件,

15

节点缺少重命名的实例,

TABLES

BusInfo

在 fuchsia.driver.framework/topology.fidl 中定义

序数字段类型说明
bus BusType

此节点所在的公交线路类型。

address DeviceAddress

一个唯一标识符,用于描述此设备在给定总线上的身份。

address_stability DeviceAddressStability

地址的稳定性。

CompositeDriverInfo

在 fuchsia.driver.framework/driver_info.fidl 中定义

复合驱动程序的信息。

序数字段类型说明
composite_name string

驱动程序的复合绑定规则中指定的复合名称。

driver_info DriverInfo

面向驾驶员的一般信息。

CompositeDriverMatch

在 fuchsia.driver.framework/driver_info.fidl 中定义

与复合设备匹配的复合驱动程序的信息。

序数字段类型说明
composite_driver CompositeDriverInfo

已匹配的复合驱动程序的信息。

parent_names vector<string>

所有父级名称的列表,按索引排序。 这些名称来自驱动程序的复合绑定规则中的节点定义。

primary_parent_index uint32

主节点索引。由驱动程序的复合绑定规则中的主节点标识。

CompositeInfo

在 fuchsia.driver.framework/driver_info.fidl 中定义

由复合节点规范定义的复合节点的信息。

序数字段类型说明
spec CompositeNodeSpec

创建此复合节点规范时所用的规范信息。

matched_driver CompositeDriverMatch

节点规范的信息,仅在驱动程序与此规范的父级中的属性匹配时可用。

CompositeNodeSpec

在 fuchsia.driver.framework/composite_node_spec.fidl 中定义

表示复合节点规范的结构体。

序数字段类型说明
name string

复合节点规范的名称。

parents2 vector<ParentSpec2>

复合节点规范中的节点。不得为空。第一个节点是主节点。

driver_host string:128

驱动程序主机的标识符,绑定到此节点规范的驱动程序应位于其中。指定相同标识符的所有驱动程序都将并置到同一驱动程序主机中。如果驱动程序主机尚未启动,则会在节点绑定时启动。

CompositeParent

在 fuchsia.driver.framework/driver_info.fidl 中定义

由复合节点规范定义的复合节点的父级。

序数字段类型说明
composite CompositeInfo

有关此复合元数据作为父级的信息。

index uint32

此父级在规范的父级中的索引。

依赖项

在 fuchsia.driver.framework/topology.fidl 中定义

表示节点对资源的依赖关系。 通过将资源与 selector 的限制条件进行匹配来解决依赖项问题。

Added: HEAD

序数字段类型说明
selector Selector

资源必须符合选择器的约束条件才能被依赖。

tags vector<ResourceProperty>:64

为驱动程序绑定而标记到资源的其他属性

DevfsAddArgs 资源

在 fuchsia.driver.framework/topology.fidl 中定义

序数字段类型说明
connector client_end:fuchsia.device.fs/Connector

这是要安装在 devfs 中的连接器。 当客户端连接到文件系统中的此节点时,系统会调用 Connect()。 可选:如果未提供此参数,则 devfs 中将显示一个空节点。

class_name string:255

这是用于在 devfs 中安装此节点的类名称。 该节点将放置在 /dev/class/{class_name} 中。 如果 /dev/class/ 下不存在 class_name,系统会创建它。 可选:如果未提供此参数,则系统只会通过拓扑路径添加节点。

inspect handle<vmo>

这是将安装在 devfs 中的检查数据的 vmo。 可选:如果未提供此参数,则 devfs 的检查数据将为空。

connector_supports fuchsia.device.fs/ConnectionType

给定 |connector| 支持的连接类型。 驱动程序框架应处理连接器不支持的连接类型。 如果未提供,则系统会假定连接器仅支持设备类型。

controller_connector client_end:fuchsia.device.fs/Connector

这是要安装在 devfs 中的控制器连接器。 当客户端连接到文件系统中此节点的 device_controller 连接时,系统会调用 Connect()。 可选:如果未提供此参数,则节点将以原生方式处理连接。 此选项只能由兼容性 shim 使用或在测试中使用

Added: HEAD

DeviceCategory

在 fuchsia.driver.framework/driver_info.fidl 中定义

驱动程序组件清单中提供的设备类别。

序数字段类型说明
category string
subcategory string

DriverInfo

在 fuchsia.driver.framework/driver_info.fidl 中定义

驱动程序的一般信息,可用于复合驱动程序和普通驱动程序。

序数字段类型说明
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,则不会选择此驱动程序来绑定到节点。

DriverStartArgs 资源

在 fuchsia.driver.framework/driver_start_args.fidl 中定义

用于启动驱动程序的参数。

序数字段类型说明
node client_end:Node

驱动程序绑定到的节点。

symbols vector<NodeSymbol>:64

为 |node| 提供给驱动程序的符号。这些符号来自添加了 |node| 的驱动程序,并经过滤,仅保留绑定程序中请求的符号。

url fuchsia.url/Url

包含驱动程序的软件包的网址。这纯粹是信息性的,仅用于提供数据以供检查。

program fuchsia.data/Dictionary

首先,请提供驾驶员的相关信息。目前,我们支持以下条目:

  1. “binary”:一个字符串,包含驱动程序二进制文件的软件包相对路径。
  2. “colocate”(可选):一个包含“true”或“false”的字符串,用于指定驱动程序是否应与添加 |node| 的驱动程序位于同一驱动程序主机中。如果未指定,驱动程序将在新的驱动程序主机中启动。
  3. “default_dispatcher_opts”(可选):一个字符串数组,用于指定创建默认调度程序的选项。字符串可以是以下任一项:
    • allow_sync_calls:允许在默认调度程序的线程上进行同步调用。
  4. “default_dispatcher_scheduler_role”(可选):为驱动程序创建的默认调度程序设置的调度程序角色。
incoming vector<fuchsia.component.runner/ComponentNamespaceEntry>:32

提供给驱动程序的传入命名空间。

outgoing_dir server_end:fuchsia.io/Directory

由驱动程序提供的传出目录。

config handle<vmo>

传递给驱动程序的配置。

node_name string

驱动程序绑定到的节点的名称。

node_offers NodeOffersVector

驱动程序所绑定到的节点的节点优惠。

node_token handle<event>

提供一个表示此节点的令牌,该令牌可与驱动程序框架交换,以辨别有关此节点的其他信息。

node_properties_2 NodePropertyDictionary2
vmar handle<vmar>

驱动程序映射到的根 VMAR。如果所有子映射都希望应用相同的调度器配置文件,则应将其放入此 VMAR 中。

power_element_args PowerElementArgs

与驱动程序的电源元素相关的句柄,这些元素位于通过 fuchsia.power.SuspendEnabled 配置功能启用挂起的产品上。 如果驱动程序的清单在其清单的程序部分中包含 suspend_enabled = "true",则 element_server、lessor_client 和 token 会传递给驱动程序,否则句柄会由驱动程序主机保留。control_client 始终由驱动程序主机保留,绝不会传递给驱动程序。

Added: HEAD
log_sink client_end:fuchsia.logger/LogSink

日志接收器渠道。

HealthCheckResponse

在 fuchsia.driver.framework/health.fidl 中定义

驱动程序健康检查返回的响应。

序数字段类型说明
diagnostics vector<HealthDiagnosticItem>:32

针对整个驱动程序(电源模式、活动计数器、上次事件时间戳)而非单个条件的诊断键值对遥测。

conditions vector<HealthCondition>:16

有效故障或警告条件。当驱动程序运行状况良好 (HealthStatus.OK) 时,此字段不存在或为空。总体驱动程序状态是 conditions (UNHEALTHY > DEGRADED > OK) 中的最高严重级别,如果不存在或为空,则为 OK。

HealthCondition

在 fuchsia.driver.framework/health.fidl 中定义

驱动程序健康检查检测到的一种情况。

序数字段类型说明
status HealthStatus

此条件的严重程度。使用方会将省略或无法识别的值视为 UNHEALTHY,因此请务必设置该值。

reason_code string:128

机器可读的简短令牌(例如“DSI_CRI_FIFO_WEDGED”“TE_INTERRUPT_STALLED”)。在响应中必须是唯一的。

message string:1024

此条件的人类可读详细信息。

diagnostics vector<HealthDiagnosticItem>:32

此条件特有的诊断值。

first_observed zx/InstantBoot

首次观察到此情况的启动时间轴时刻。

last_observed zx/InstantBoot

最近一次观察到此条件的启动时间轴时刻。

occurrence_count uint64

自 first_observed 以来观察到此情况的次数。

Node2

在 fuchsia.driver.framework/topology.fidl 中定义

表示添加到驱动程序拓扑中的节点。在节点的所有依赖项都与资源匹配后,系统会创建该节点。

Added: HEAD

序数字段类型说明
name string
dependencies vector<Dependency>

NodeAddArgs 资源

在 fuchsia.driver.framework/topology.fidl 中定义

用于添加节点的参数。

序数字段类型说明
name NodeName

节点的名称。

symbols vector<NodeSymbol>:64

要提供给绑定到此节点的驱动程序的函数。

devfs_args DevfsAddArgs

有关如何将此节点添加到 devfs 的参数。

offers2 NodeOffersVector

要提供给绑定到此节点的驱动程序的功能。 驱动程序必须确保在添加子节点之前,将这些功能添加到其传出目录或 |offers_dictionary|(如果其中任何一个属于 |dictionary_offer| 类型)中。

bus_info BusInfo

输入到设备结构化总线拓扑中的信息。它只能由总线驱动程序指定,最好是默认包含的总线驱动程序。

properties2 NodeProperties

节点的属性。

offers_dictionary fuchsia.component.sandbox/DictionaryRef

这可用于通过字典向绑定到此节点的驱动程序提供其他 offer。用户必须使用 |offers2| 字段为此字典中存在的优惠指定 |dictionary_offer| 类型的优惠。

Added: HEAD
driver_host string:128

驱动程序主机的标识符,绑定到此节点的驱动程序应位于其中。 指定相同标识符的所有驱动程序都将并置到同一驱动程序主机中。 如果驱动程序主机尚未启动,则会在节点绑定时启动。仅当驱动程序直接绑定到此节点时,系统才会遵循此属性。如果复合节点绑定到此节点,则系统会忽略此字段,因为应改为在复合节点规范中表示。

NodeControllerOnBindRequest 资源

在 fuchsia.driver.framework/topology.fidl 中定义

序数字段类型说明
node_token handle<event>

提供一个表示此节点的令牌,该令牌可与驱动程序框架交换,以辨别有关此节点的其他信息。

NodeControllerRequestBindRequest

在 fuchsia.driver.framework/topology.fidl 中定义

序数字段类型说明
force_rebind bool

如果此值为 true,则节点会先与其匹配的驱动程序解除绑定,然后再尝试通过正常绑定过程进行绑定。

driver_url_suffix string

如果设置了此字段,则在绑定时只会考虑与此网址后缀匹配的驱动程序。 例如:“gpt.cm”“meta/gpt.cm”“fuchsia-boot:///#meta/gpt.cm”。

NodeSymbol

在 fuchsia.driver.framework/topology.fidl 中定义

驱动程序为节点提供的符号的定义。符号是驱动程序主机的本地符号。

序数字段类型说明
name string:128

符号的名称。

address uint64

符号的虚拟地址,位于驱动程序主机的进程内。

module_name string:128

提供符号的模块名称。 如果符号来自主要父级,则不会提供此信息。

PowerElementArgs 资源

在 fuchsia.driver.framework/driver_start_args.fidl 中定义

Added: HEAD

序数字段类型说明
control_client client_end:fuchsia.power.broker/ElementControl
runner_server server_end:fuchsia.power.broker/ElementRunner
lessor_client client_end:fuchsia.power.broker/Lessor
token fuchsia.power.broker/DependencyToken

ResourceArgs resource

在 fuchsia.driver.framework/topology.fidl 中定义

用于提供资源的参数。

Added: HEAD

序数字段类型说明
name ResourceName

资源的名称。必填。

properties ResourceProperties

资源的属性。必填。

offers NodeOffersVector

资源向依赖于它的节点提供的功能。必填。

bus_info BusInfo

输入到设备结构化总线拓扑中的信息。只有总线驱动程序(最好是默认包含的总线驱动程序)才应指定此属性。可选。

选择器

在 fuchsia.driver.framework/topology.fidl 中定义

用于匹配资源作为节点依赖项的选择器。

Added: HEAD

序数字段类型说明
offers vector<Offer>:128

资源必须包含这些优惠。

include_properties vector<ResourceProperty>:64

资源必须包含这些属性。属性键必须是唯一的,选择器才会被视为有效。

exclude_properties vector<ResourceProperty>:64

资源不得包含这些属性。

UNIONS

CompositeNodeManager_AddSpec_Result strict

在 fuchsia.driver.framework/composite_node_spec.fidl 中定义

序数变体类型说明
response CompositeNodeManager_AddSpec_Response
err CompositeNodeSpecError
framework_err internal

DeviceAddress flexible

在 fuchsia.driver.framework/topology.fidl 中定义

序数变体类型说明
int_value uint8

固定的整数 ID,例如 SPI 总线地址

array_int_value vector<uint8>:10

整数数组,例如 PCI BDF。

char_int_value string:4

一个 uint32 值,可解读为 4 字符序列。

array_char_int_value vector<string:4>:10

字符序列数组,例如 ACPI 节点路径。

string_value string:32

通用字符串,例如设备树节点路径。

DriverResult 灵活 资源

在 fuchsia.driver.framework/topology.fidl 中定义

序数变体类型说明
driver_started_node_token handle<event>

属于驱动程序已成功启动的节点的令牌。

match_error zx/Result

节点未能找到匹配的驱动程序或复合规范。

start_error zx/Result

绑定到节点的驱动程序未能成功启动。

Driver_Resume_Result strict

在 fuchsia.driver.framework/driver.fidl 中定义

序数变体类型说明
response Driver_Resume_Response
err zx/Status
framework_err internal

Driver_Start_Result strict

在 fuchsia.driver.framework/driver.fidl 中定义

序数变体类型说明
response Driver_Start_Response
err zx/Status
framework_err internal

Driver_Suspend_Result strict

在 fuchsia.driver.framework/driver.fidl 中定义

序数变体类型说明
response Driver_Suspend_Response
err zx/Status
framework_err internal

HealthAlert 灵活

在 fuchsia.driver.framework/health.fidl 中定义

驱动程序通过 OnHealthAlert 发出的主动健康状况提醒的载荷。“上游”是驱动程序所依赖的内容(父级:总线、时钟、电源域、复合父级)。“下游”是指依赖于驱动程序的内容(子级 / 使用者)。

序数变体类型说明
self_fault HealthCheckResponse

驱动程序检测到内部硬件或软件故障,或从之前报告的故障中恢复(当 conditions 为空时)。 边缘触发:在驱动程序的整体状态恶化时(正常 -> 降级,降级 -> 运行状况不佳)发送,并在恢复时再次发送(conditions 为空);绝不会在每次发生已报告的状况时发送。

upstream_neighbor_fault HealthCheckResponse

由于上游依赖项(父级/总线/时钟/电源/寄存器提供方)无响应或无效,驱动程序无法继续运行。

downstream_neighbor_fault HealthCheckResponse

由于下游使用方(子级/客户端)被卡住或无法排空队列/缓冲区,驱动程序无法继续运行。

HealthDiagnosticValue flexible

在 fuchsia.driver.framework/health.fidl 中定义

HealthCheckResponse 中返回的诊断值。

序数变体类型说明
string_value string:256
int_value int64
uint_value uint64
bool_value bool
timestamp zx/InstantBoot

启动时间轴时刻,例如上次中断或输入报告的时间。

Health_HealthCheck_Result strict

在 fuchsia.driver.framework/health.fidl 中定义

序数变体类型说明
response HealthCheckResponse
err HealthCheckError
framework_err internal

NodeController_RequestBind_Result strict

在 fuchsia.driver.framework/topology.fidl 中定义

序数变体类型说明
response NodeController_RequestBind_Response
err zx/Status
framework_err internal

NodeController_WaitForDriver_Result strict resource

在 fuchsia.driver.framework/topology.fidl 中定义

序数变体类型说明
response DriverResult
err zx/Status
framework_err internal

NodeManager_AddNode_Result strict

在 fuchsia.driver.framework/topology.fidl 中定义

序数变体类型说明
response NodeManager_AddNode_Response
err NodeError
framework_err internal

NodePropertyValue flexible

在 fuchsia.driver.framework/topology.fidl 中定义

序数变体类型说明
int_value NodePropertyValueUint
string_value NodePropertyValueString
bool_value NodePropertyValueBool
enum_value NodePropertyValueEnum

Node_AddChild_Result strict

在 fuchsia.driver.framework/topology.fidl 中定义

序数变体类型说明
response Node_AddChild_Response
err NodeError
framework_err internal

Node_ProvideResource_Result strict

在 fuchsia.driver.framework/topology.fidl 中定义

序数变体类型说明
response Node_ProvideResource_Response
err NodeError
framework_err internal

提供灵活

在 fuchsia.driver.framework/topology.fidl 中定义

序数变体类型说明
zircon_transport fuchsia.component.decl/Offer
driver_transport fuchsia.component.decl/Offer
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