A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://fuchsia.dev/docs/development/tracing/tutorial/register-a-trace-provider below:

Register a trace provider | Fuchsia

Register a trace provider

This page describes how to register a new trace provider in a Fuchsia system.

To participate in tracing, new trace providers must be registered with the trace manager in the Fuchsia tracing system. (However, drivers don't have to register as a trace provider since the devhost process does it through libdriver.so.)

To register a trace provider, the steps are:

  1. Register a component with the trace manager.
  2. Set up capability routing.
Register a component with the trace manager

To register a component as a trace provider, you can use the libtrace-provider library to provide an asynchronous loop in your component's code.

See the examples below:

C++ Note: This example uses fdio to set up the FIDL channel with the trace manager. For more information, see fdio.
#include <lib/async-loop/cpp/loop.h>
#include <lib/async-loop/default.h>
#include <lib/trace-provider/provider.h>
// further includes

int main(int argc, const char** argv) {
  // process argv

  async::Loop loop(&kAsyncLoopConfigAttachToCurrentThread);
  trace::TraceProviderWithFdio trace_provider(
      loop.dispatcher(), "my_trace_provider");

  // further setup

  loop.Run();
  return 0;
}
C
#include <lib/async-loop/cpp/loop.h>
#include <lib/async-loop/default.h>
#include <lib/trace-provider/provider.h>

int main(int argc, char** argv) {
  zx_status_t status;
  async_loop_t* loop;
  trace_provider_t* trace_provider;

  // Create a message loop.
  status = async_loop_create(&kAsyncLoopConfigNoAttachToCurrentThread, &loop);
  if (status != ZX_OK) exit(1);

  // Start a thread for the loop to run on.
  // Alternatively, use async_loop_run() to run on the current thread.
  status = async_loop_start_thread(loop, "loop", NULL);
  if (status != ZX_OK) exit(1);

  // Create the trace provider.
  async_dispatcher_t* dispatcher = async_loop_get_dispatcher(loop);
  trace_provider = trace_provider_create(dispatcher);
  if (!trace_provider) exit(1);

  // Do something...

  // Tear down.
  trace_provider_destroy(trace_provider);
  async_loop_shutdown(loop);
  return 0;
}
Rust
fn main() {
    fuchsia_trace_provider::trace_provider_create_with_fdio();
    // ...
}
Set up capability routing

For your component to request the appropriate tracing capabilities, include the following field in the component manifest (.cml):

{
  include: [
    "trace/client.shard.cml",
  ],
  ...
}

This allows your component to communicate with the trace manager using the fuchsia.tracing.provider.Registry protocol as well as forward the offer to its direct children. If your component is a child of another component, you'll need to include the client.shard.cml in each of the parents' cmls as well.

If your component uses a Chromium-based fuchsia.web service and you want to be able to collect trace data from it, both the fuchsia.tracing.provider.Registry and fuchsia.tracing.perfetto.ProducerConnector capabilities need to be provided to your Context. (To understand how capabilities are passed to the Context, see fuchsia.web/CreateContextParams.service_directory.)

Once you have registered your component as a trace provider, you can enable tracing in your code. For more information, see the next Add tracing in your code page.

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-02-28 UTC.

[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-02-28 UTC."],[],[]]


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4