blob: ac53fa8f4d20bda16a05dba031ca4088dc271d81 [file] [log] [blame] [view]
<link rel="stylesheet" href="../style.css" />
[TOC]
# fuchsia.tracing.perfetto
<p>Library providing methods for connecting Perfetto clients to a system
tracing service.</p>
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 8</span></div>
## **PROTOCOLS**
## BufferReceiver {#BufferReceiver}
*Defined in [fuchsia.tracing.perfetto/producer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.tracing.perfetto/producer.fidl;l=12)*
<p>An interface for exchanging trace data buffers between Providers and the
system tracing service.</p>
### ProvideBuffer {#BufferReceiver.ProvideBuffer}
<p>Sends a file to be used as a trace buffer.
The file must support writable mmap() access.</p>
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div>
#### Request {#BufferReceiver.ProvideBuffer_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>buffer</code></td>
<td>
<code><a class='link' href='../fuchsia.io/'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/#File'>File</a></code>
</td>
</tr>
</table>
#### Response {#BufferReceiver.ProvideBuffer_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#BufferReceiver_ProvideBuffer_Result'>BufferReceiver_ProvideBuffer_Result</a></code>
</td>
</tr>
</table>
## ConsumerConnector {#ConsumerConnector}
*Defined in [fuchsia.tracing.perfetto/consumer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.tracing.perfetto/consumer.fidl;l=13)*
<p>Interface for creating connections between Perfetto &quot;Consumers&quot; and
a shared Perfetto service.
To learn more about Perfetto, see: https://www.perfetto.dev/docs/
and https://perfetto.dev/docs/concepts/service-model .</p>
### ConnectConsumer {#ConsumerConnector.ConnectConsumer}
<p>Connects a Perfetto Consumer to the Perfetto backend. Both sides
will communicate over <code>producer_socket</code> using Perfetto's internal wire
format.
The lifetime of <code>consumer_socket</code> may outlive the connection lifetime
of ConsumerConnector.
Multiple producers may be connected simultaneously.</p>
#### Request {#ConsumerConnector.ConnectConsumer_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>consumer_socket</code></td>
<td>
<code>handle&lt;socket&gt;</code>
</td>
</tr>
</table>
#### Response {#ConsumerConnector.ConnectConsumer_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#ConsumerConnector_ConnectConsumer_Result'>ConsumerConnector_ConnectConsumer_Result</a></code>
</td>
</tr>
</table>
## ProducerConnector {#ProducerConnector}
*Defined in [fuchsia.tracing.perfetto/producer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.tracing.perfetto/producer.fidl;l=45)*
<p>Interface for creating connections between Perfetto &quot;Producers&quot; and
a shared Perfetto service.
To learn more about Perfetto, see: https://www.perfetto.dev/docs/
and https://perfetto.dev/docs/concepts/service-model .</p>
### ConnectProducer {#ProducerConnector.ConnectProducer}
<p>Connects a Perfetto Producer to the Perfetto backend. Both sides
will communicate over <code>producer_socket</code> using Perfetto's internal
wire format &quot;ProducerPort&quot; (see
//third_party/perfetto/protos/perfetto/ipc/producer_port.proto).</p>
<p><code>trace_buffer</code> either provides a buffer for communicating trace data
from the client, or an interface for receiving a buffer from the
server, depending on the client's needs.</p>
<p>The lifetime of <code>producer_socket</code> may outlive the connection lifetime
of ProducerConnector.
Multiple Producers may be connected simultaneously.</p>
#### Request {#ProducerConnector.ConnectProducer_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>producer_socket</code></td>
<td>
<code>handle&lt;socket&gt;</code>
</td>
</tr>
<tr>
<td><code>buffer</code></td>
<td>
<code><a class='link' href='#TraceBuffer'>TraceBuffer</a></code>
</td>
</tr>
</table>
#### Response {#ProducerConnector.ConnectProducer_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#ProducerConnector_ConnectProducer_Result'>ProducerConnector_ConnectProducer_Result</a></code>
</td>
</tr>
</table>
## **STRUCTS**
### BufferReceiver_ProvideBuffer_Response {#BufferReceiver_ProvideBuffer_Response data-text="BufferReceiver_ProvideBuffer_Response"}
*Defined in [fuchsia.tracing.perfetto/producer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.tracing.perfetto/producer.fidl;l=18)*
&lt;EMPTY&gt;
### ConsumerConnector_ConnectConsumer_Response {#ConsumerConnector_ConnectConsumer_Response data-text="ConsumerConnector_ConnectConsumer_Response"}
*Defined in [fuchsia.tracing.perfetto/consumer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.tracing.perfetto/consumer.fidl;l=23)*
&lt;EMPTY&gt;
### ProducerConnector_ConnectProducer_Response {#ProducerConnector_ConnectProducer_Response data-text="ProducerConnector_ConnectProducer_Response"}
*Defined in [fuchsia.tracing.perfetto/producer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.tracing.perfetto/producer.fidl;l=62)*
&lt;EMPTY&gt;
## **UNIONS**
### BufferReceiver_ProvideBuffer_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#BufferReceiver_ProvideBuffer_Result data-text="BufferReceiver_ProvideBuffer_Result"}
*Defined in [fuchsia.tracing.perfetto/producer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.tracing.perfetto/producer.fidl;l=18)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="BufferReceiver_ProvideBuffer_Result.response">
<td><h3 id="BufferReceiver_ProvideBuffer_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#BufferReceiver_ProvideBuffer_Response'>BufferReceiver_ProvideBuffer_Response</a></code>
</td>
<td></td>
</tr>
<tr id="BufferReceiver_ProvideBuffer_Result.err">
<td><h3 id="BufferReceiver_ProvideBuffer_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code>
</td>
<td></td>
</tr>
</table>
### ConsumerConnector_ConnectConsumer_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ConsumerConnector_ConnectConsumer_Result data-text="ConsumerConnector_ConnectConsumer_Result"}
*Defined in [fuchsia.tracing.perfetto/consumer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.tracing.perfetto/consumer.fidl;l=23)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="ConsumerConnector_ConnectConsumer_Result.response">
<td><h3 id="ConsumerConnector_ConnectConsumer_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#ConsumerConnector_ConnectConsumer_Response'>ConsumerConnector_ConnectConsumer_Response</a></code>
</td>
<td></td>
</tr>
<tr id="ConsumerConnector_ConnectConsumer_Result.err">
<td><h3 id="ConsumerConnector_ConnectConsumer_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code>
</td>
<td></td>
</tr>
</table>
### ProducerConnector_ConnectProducer_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ProducerConnector_ConnectProducer_Result data-text="ProducerConnector_ConnectProducer_Result"}
*Defined in [fuchsia.tracing.perfetto/producer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.tracing.perfetto/producer.fidl;l=62)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="ProducerConnector_ConnectProducer_Result.response">
<td><h3 id="ProducerConnector_ConnectProducer_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#ProducerConnector_ConnectProducer_Response'>ProducerConnector_ConnectProducer_Response</a></code>
</td>
<td></td>
</tr>
<tr id="ProducerConnector_ConnectProducer_Result.err">
<td><h3 id="ProducerConnector_ConnectProducer_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code>
</td>
<td></td>
</tr>
</table>
### TraceBuffer [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#TraceBuffer data-text="TraceBuffer"}
*Defined in [fuchsia.tracing.perfetto/producer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.tracing.perfetto/producer.fidl;l=35)*
<p>Specifies how the trace buffer should be exchanged.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="TraceBuffer.from_server">
<td><h3 id="TraceBuffer.from_server" class="add-link hide-from-toc">1</h3></td>
<td><code>from_server</code></td>
<td>
<code><a class='link' href='#BufferReceiver'>BufferReceiver</a></code>
</td>
<td><p>Used to receive the trace buffer from the system tracing service.</p>
</td>
</tr>
</table>