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.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
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
| Name | Type |
|---|---|
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
| Name | Type |
|---|---|
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
| Name | Type |
|---|---|
provider |
client_end: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
| Name | Type |
|---|---|
provider |
client_end:Provider
|
pid |
zx/Koid
|
name |
string:100
|
Response
| Name | Type |
|---|---|
s |
zx/Status
|
started |
bool
|
STRUCTS
ProviderConfig resource
Defined in fuchsia.tracing.provider/provider.fidl
Trace provider configuration.
| Field | Type | Description | Default |
|---|---|---|---|
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 |
No default |
categories |
vector<string:100>:5000
|
Added: 11
|
No default |
StartOptions
Defined in fuchsia.tracing.provider/provider.fidl
Additional options to control tracing at start.
| Field | Type | Description | Default |
|---|---|---|---|
buffer_disposition |
fuchsia.tracing/BufferDisposition
|
Added: 11
|
No default |
additional_categories |
vector<string:100>:5000
|
Added: 11
|
No default |