| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "tracing.h" |
| |
| #include <lib/async-loop/loop.h> |
| #include <trace-provider/provider.h> |
| |
| #include "../shared/log.h" |
| |
| namespace devmgr { |
| |
| zx_status_t devhost_start_trace_provider() { |
| async_loop_t* loop; |
| zx_status_t status = async_loop_create(&kAsyncLoopConfigNoAttachToThread, &loop); |
| if (status != ZX_OK) { |
| log(ERROR, "devhost: error creating async loop: %d\n", status); |
| return status; |
| } |
| |
| status = async_loop_start_thread(loop, "devhost-tracer", nullptr); |
| if (status != ZX_OK) { |
| async_loop_destroy(loop); |
| log(ERROR, "devhost: error starting async loop thread: %d\n", status); |
| return status; |
| } |
| |
| async_dispatcher_t* dispatcher = async_loop_get_dispatcher(loop); |
| trace_provider_t* trace_provider = trace_provider_create(dispatcher); |
| if (!trace_provider) { |
| async_loop_destroy(loop); |
| log(ERROR, "devhost: error registering provider\n"); |
| return ZX_ERR_INTERNAL; |
| } |
| |
| // N.B. The registry has begun, but these things are async. TraceManager |
| // may not even be running yet (and likely isn't). |
| log(INFO, "devhost: trace provider registry begun\n"); |
| return ZX_OK; |
| } |
| |
| } // namespace devmgr |