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 |