fuchsia.tracing.provider

新增:7

协议

提供商

在 fuchsia.tracing.provider/provider.fidl 中定义

应用必须实现并向 TraceRegistry 注册的提供程序接口,以便参与跟踪。

如需查看此接口的 C++ 实现(可由应用轻松配置),请参阅 //zircon/system/ulib/trace-provider/。

已移除:31

GetKnownCategories

获取此提供方可能生成的跟踪类别。

新增:11

请求

<EMPTY>

响应

名称类型
categories vector<fuchsia.tracing/KnownCategory>:5000

初始化

初始化跟踪,并准备好使用 fifo 发出信号,将指定 categories 中事件的跟踪记录写入 buffer。 跟踪尚未开始,仍需调用 Start()。

一次最多只能有一个跟踪记录处于活动状态。在 Terminate() 调用之前收到的后续 Initialize() 请求必须被忽略。

请求

名称类型
config ProviderConfig

开始

开始跟踪。

如果跟踪已启动,提供程序必须忽略该请求。

没有结果。提供方必须在 fifo 上发送 TRACE_PROVIDER_STARTED 数据包,以指示启动成功/失败。

请求

名称类型
options StartOptions

停止

停止跟踪。

如果跟踪已停止,提供程序必须忽略该请求。

提供方将所有最终事件写入跟踪缓冲区后,必须在 fifo 上发送 TRACE_PROVIDER_STOPPED 数据包。请注意,在 Initialize,Terminate 之间可能会收到多个 Start,Stop 请求。

请求

<EMPTY>

终止

终止跟踪。

如果跟踪尚未停止,则会先停止跟踪。 跟踪完全终止后,提供程序必须同时关闭 buffer 和 fifo,以向跟踪管理器指示跟踪已完成。

请求

<EMPTY>

ProviderV2

在 fuchsia.tracing.provider/provider.fidl 中定义

应用必须实现并向 TraceRegistry 注册的提供程序接口,以便参与跟踪。

新增:31

清空

请求提供方读取其缓冲区,无论缓冲区是否已满。

通常,流式传输模式仅在有足够的数据需要缓冲区交换和数据刷新时才会发送数据。这会产生较少但较大且突发的数据传输。

有些客户可能希望更频繁地进行较小规模的数据传输。这些客户端可以在准备好接收数据时手动调用 Flush。

请求

<EMPTY>

GetKnownCategories

获取此提供方可能生成的跟踪类别。

请求

<EMPTY>

响应

名称类型
payload ProviderV2_GetKnownCategories_Result

初始化

初始化跟踪,并准备将指定 categories 中事件的跟踪记录写入 buffer。 跟踪尚未开始,仍需调用 Start()。

一次最多只能有一个跟踪记录处于活动状态。在 Terminate() 调用之前收到的后续 Initialize() 请求必须被忽略。

请求

名称类型
config ProviderConfigV2

NotifyBufferSaved

缓冲区已保存(仅限流处理模式)。

请求

名称类型
wrapped_count uint32
durable_data_end uint64

OnAlert

发送提醒。

响应

名称类型
name string:14

OnSaveBuffer

缓冲区已满,需要保存(仅限流式传输模式)。

响应

名称类型
wrapped_count uint32
durable_data_end uint64

开始

开始跟踪。

如果跟踪已启动,提供程序必须忽略该请求。

请求

名称类型
options StartOptions

响应

名称类型
payload ProviderV2_Start_Result

停止

停止跟踪。

如果跟踪已停止,提供程序必须忽略该请求。

提供程序将所有最终事件写入跟踪缓冲区后,必须发送 OnStopped() 事件。请注意,在 Initialize,Terminate 之间可能会收到多个 Start,Stop 请求。

请求

<EMPTY>

响应

名称类型
payload ProviderV2_Stop_Result

终止

终止跟踪。

如果跟踪尚未停止,则会先停止跟踪。

请求

<EMPTY>

响应

名称类型
payload ProviderV2_Terminate_Result

注册类型

在 fuchsia.tracing.provider/provider.fidl 中定义

跟踪提供程序用于向跟踪系统注册自身的服务。 请注意,此接口的一个属性是,一旦完成注册,提供方就可以断开此连接。

RegisterProvider

注册跟踪记录提供程序。 注意:注册是异步的,只有在此方法返回后的某个时间点,提供程序才会实际注册。 如需取消注册,只需关闭提供程序管道即可。 pid 是提供方的进程 ID,name 是提供方的名称。这两者都用于日志记录和诊断消息。

弃用

请改用“RegisterV2”来使用基于 FIDL 的协调协议。

已移除:31

请求

名称类型
provider client_end:Provider
pid zx/Koid
name string:100

RegisterProviderSynchronously

同步注册跟踪记录提供程序。在提供程序注册之前,该调用不会返回。 如果注册成功,则返回 s 为 ZX_OK。 如果跟踪已开始,started 为 true,这会提示提供程序在继续之前等待 Start() 消息,前提是它不希望在收到 Start() 之前丢弃跟踪记录。 如需取消注册,只需关闭提供程序管道即可。 pid 是提供方的进程 ID,name 是提供方的名称。这两者都用于日志记录和诊断消息。

弃用

请改用“RegisterV2Synchronously”来使用基于 FIDL 的协调协议。

已移除:31

请求

名称类型
provider client_end:Provider
pid zx/Koid
name string:100

响应

名称类型
s zx/Result
started bool

RegisterV2

使用 V2 协议注册跟踪提供程序。

注意:注册是异步的,只有在此方法返回后的某个时间点,提供程序才会实际注册。

如需取消注册,请关闭 provider 连接。

新增:31

请求

名称类型
provider client_end:ProviderV2
pid zx/Koid
name string:100

RegisterV2Synchronously

使用 V2 协议同步注册跟踪提供程序。

在提供程序注册之前,该调用不会返回。大多数调用方都应使用 RegisterV2,除非他们需要与跟踪系统同步,以确保捕获特定事件。

如需取消注册,请关闭 provider 连接。

新增:31

请求

名称类型
provider client_end:ProviderV2
pid zx/Koid
name string:100

响应

名称类型
payload Registry_RegisterV2Synchronously_Result

STRUCTS

ProviderConfig 资源

在 fuchsia.tracing.provider/provider.fidl 中定义

跟踪记录提供方配置。

已移除:31

字段类型说明默认
buffering_mode fuchsia.tracing/BufferingMode

buffering_mode 指定缓冲区填满时会发生什么。

新增:11
无默认应用
buffer handle<vmo>

要将跟踪记录写入其中的缓冲区。

无默认应用
fifo handle<fifo>

当跟踪提供程序在 fifo 上观察到 ZX_FIFO_PEER_CLOSED 时,它必须假定跟踪管理器已异常终止(因为未像往常一样收到 Stop),并自动停止跟踪,同时舍弃任何传输中的跟踪数据。

无默认应用
categories vector<string:100>:5000

要收集哪些跟踪类别的数据。

新增:11
无默认应用

ProviderV2_GetKnownCategories_Response

在 fuchsia.tracing.provider/provider.fidl 中定义

字段类型说明默认
categories vector<fuchsia.tracing/KnownCategory>:5000 无默认应用

ProviderV2_Start_Response

在 fuchsia.tracing.provider/provider.fidl 中定义

<EMPTY>

ProviderV2_Stop_Response

在 fuchsia.tracing.provider/provider.fidl 中定义

<EMPTY>

ProviderV2_Terminate_Response

在 fuchsia.tracing.provider/provider.fidl 中定义

<EMPTY>

Registry_RegisterV2Synchronously_Response

在 fuchsia.tracing.provider/provider.fidl 中定义

字段类型说明默认
started bool

如果跟踪已开始,则为 true。这会提示提供程序在继续之前等待 Start() 消息,前提是它不希望在收到 Start() 之前丢弃跟踪记录。

无默认应用

StartOptions

在 fuchsia.tracing.provider/provider.fidl 中定义

用于在启动时控制跟踪的其他选项。

字段类型说明默认
buffer_disposition fuchsia.tracing/BufferDisposition

是否在开始数据收集时清除缓冲区,以及如何清除。 例如,这样可以在同一缓冲区中收集多个开始/停止跟踪运行。

新增:11
无默认应用
additional_categories vector<string:100>:5000

要添加到 ProviderConfig 中提供的初始集合的跟踪类别。

新增:11
无默认应用

TABLES

ProviderConfigV2 资源

在 fuchsia.tracing.provider/provider.fidl 中定义

跟踪记录提供方配置。

新增:31

序数字段类型说明
buffering_mode fuchsia.tracing/BufferingMode

buffering_mode 指定缓冲区填满时会发生什么。

buffer handle<vmo>

要将跟踪记录写入其中的缓冲区。

categories vector<string:100>:5000

要收集哪些跟踪类别的数据。

UNIONS

ProviderV2_GetKnownCategories_Result strict

在 fuchsia.tracing.provider/provider.fidl 中定义

序数变体类型说明
response ProviderV2_GetKnownCategories_Response
framework_err internal

ProviderV2_Start_Result strict

在 fuchsia.tracing.provider/provider.fidl 中定义

序数变体类型说明
response ProviderV2_Start_Response
framework_err internal

ProviderV2_Stop_Result strict

在 fuchsia.tracing.provider/provider.fidl 中定义

序数变体类型说明
response ProviderV2_Stop_Response
framework_err internal

ProviderV2_Terminate_Result strict

在 fuchsia.tracing.provider/provider.fidl 中定义

序数变体类型说明
response ProviderV2_Terminate_Response
framework_err internal

Registry_RegisterV2Synchronously_Result strict

在 fuchsia.tracing.provider/provider.fidl 中定义

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

常量

名称值类型说明
MAX_ALERT_NAME_LENGTH 14 uint32

提醒名称的长度上限。

新增:31