fuchsia.tracing.provider

Added: 7

PROTOCOLS

Provider

Defined in fuchsia.tracing.provider/provider.fidl

The provider interface which applications must implement and register with the TraceRegistry to participate in tracing.

See //zircon/system/ulib/trace-provider/ for a C++ implementation of this interface which can easily be configured by an application.

GetKnownCategories

Gets the trace categories that might be produced by this provider.

Added: 11

Request

<EMPTY>

Response

NameType
categories vector<fuchsia.tracing/KnownCategory>[5000]

Initialize

Initialize tracing and prepare for writing trace records for events in the specified categories into buffer using fifo for signaling. Tracing hasn't started yet, a Start() call is still required.

At most one trace can be active at a time. Subsequent Initialize() requests received prior to a Terminate() call must be ignored.

Request

NameType
config ProviderConfig

Start

Begin tracing.

If tracing has already started the provider must ignore the request.

There is no result. The provider must send a TRACE_PROVIDER_STARTED packet on fifo to indicate success/failure of starting.

Request

NameType
options StartOptions

Stop

Stop tracing.

If tracing has already stopped the provider must ignore the request.

Once the provider has finished writing any final events to the trace buffer, it must send a TRACE_PROVIDER_STOPPED packet on fifo. Note that multiple Start,Stop requests can be received between Initialize,Terminate.

Request

<EMPTY>

Terminate

Terminate tracing.

Tracing is stopped first if not already stopped. After tracing has fully terminated the provider must close both buffer and fifo to indicate to the trace manager that tracing is finished.

Request

<EMPTY>

Registry

Defined in fuchsia.tracing.provider/provider.fidl

The service which trace providers use to register themselves with the tracing system. Note that one property of this interface is that once registration is made the provider can drop this connection.

RegisterProvider

Registers the trace provider. Note: Registration is asynchronous, it's only at some point after this returns that the provider is actually registered. To unregister, simply close the Provider pipe. pid is the process id of the provider, name is the name of the provider. Both of these are used in logging and diagnostic messages.

Request

NameType
provider Provider
pid zx/Koid
name string[100]

RegisterProviderSynchronously

Registers the trace provider synchronously. The call doesn't return until the provider is registered. On return s is ZX_OK if registration was successful. started is true if tracing has already started, which is a hint to the provider to wait for the Start() message before continuing if it wishes to not drop trace records before Start() is received. To unregister, simply close the Provider pipe. pid is the process id of the provider, name is the name of the provider. Both of these are used in logging and diagnostic messages.

Request

NameType
provider Provider
pid zx/Koid
name string[100]

Response

NameType
s zx/Status
started bool

STRUCTS

ProviderConfig resource

Defined in fuchsia.tracing.provider/provider.fidl

Trace provider configuration.

FieldTypeDescriptionDefault
buffering_mode fuchsia.tracing/BufferingMode
Added: 11
No default
buffer handle<vmo>

The buffer to write trace records into.

No default
fifo handle<fifo>

When the trace provider observes ZX_FIFO_PEER_CLOSED on fifo, it must assume the trace manager has terminated abnormally (since Stop was not received as usual) and stop tracing automatically, discarding any in-flight trace data.

No default
categories vector<string>[5000]
Added: 11
No default

StartOptions

Defined in fuchsia.tracing.provider/provider.fidl

Additional options to control tracing at start.

FieldTypeDescriptionDefault
buffer_disposition fuchsia.tracing/BufferDisposition
Added: 11
No default
additional_categories vector<string>[5000]
Added: 11
No default