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

用于评估 中的属性值的条件 匹配过程。值必须为“ACCEPT” 或拒绝。

无默认设置
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| 的节点的节点属性。如果 该节点是一个复合,那么 |properties|为空,不包含 其父母的属性。

无默认设置

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]

用于与复合驱动程序的绑定规则匹配的属性。 键必须是唯一的。

无默认设置

精英

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

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

2

缓存的软件包是基础软件包,如果完整软件包在解析期间可以更新 。

3

仅当完整的软件包解析器解析 UNIVERSE 软件包后,它才会进入设备上。

NodeError 柔性

类型:uint32

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

节点协议的错误代码。

名称说明
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()。 可选:如果未提供此属性,则 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

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

添加时间:16
controller_connector fuchsia.device.fs/Connector

这是要在 devfs 中安装的控制器连接器。 当客户端连接到 device_controller 连接时,系统会调用 Connect() 创建 Deployment 清单 可选:如果未提供此属性,则节点将以原生方式处理连接。 此选项应仅由 compat shim 或在测试中使用

添加时间: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|。这些信息来自 添加了 |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 strict

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

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

Driver_Start_Result strict

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

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

NodeController_RequestBind_Result 严格

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

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

NodePropertyKey 严格

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

Ordinal变体类型说明
int_value NodePropertyKeyUint
string_value NodePropertyKeyString

NodePropertyValue 柔性

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

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

Node_AddChild_Result 严格

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

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

优惠灵活

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

添加时间:18
Ordinal变体类型说明
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]