From 5a615f0f1f0c08f4d552a091a6072491fc437753 Mon Sep 17 00:00:00 2001
From: Doug Evans <dje@google.com>
Date: Sat, 11 May 2019 07:02:12 +0000
Subject: [PATCH] [trace-manager] Pass on verbosity to configured providers

... and add VLOG message to perfmon event processing

Change-Id: I3029a9c97a8c2710025d5e435fccf508e168f156
---
 garnet/bin/trace_manager/trace_manager.cc | 16 ++++++++++++----
 garnet/lib/perfmon/config.cc              | 21 ++++++++++++++-------
 2 files changed, 26 insertions(+), 11 deletions(-)

diff --git a/garnet/bin/trace_manager/trace_manager.cc b/garnet/bin/trace_manager/trace_manager.cc
index 240203c20fc..e87655260a0 100644
--- a/garnet/bin/trace_manager/trace_manager.cc
+++ b/garnet/bin/trace_manager/trace_manager.cc
@@ -5,6 +5,7 @@
 #include "garnet/bin/trace_manager/trace_manager.h"
 
 #include <lib/zx/time.h>
+#include <src/lib/fxl/log_settings_command_line.h>
 
 #include <algorithm>
 #include <iostream>
@@ -199,19 +200,26 @@ void TraceManager::LaunchConfiguredProviders() {
     // TODO(jeffbrown): Only do this if the provider isn't already running.
     // Also keep track of the provider so we can kill it when the trace
     // manager exits or restart it if needed.
+    fuchsia::sys::LaunchInfo launch_info;
+    launch_info.url = pair.second->url;
+    fidl::Clone(pair.second->arguments, &launch_info.arguments);
+
+    // Transfer our log settings to the provider.
+    for (auto arg : fxl::LogSettingsToArgv(fxl::GetLogSettings())) {
+      launch_info.arguments.push_back(arg);
+    }
+
     FXL_VLOG(1) << "Starting configured provider: " << pair.first;
     FXL_VLOG(2) << "URL: " << pair.second->url;
     if (FXL_VLOG_IS_ON(2)) {
       std::string args;
-      for (const auto& arg : *pair.second->arguments) {
+      for (const auto& arg : *launch_info.arguments) {
         args += " ";
         args += arg;
       }
       FXL_VLOG(2) << "Args:" << args;
     }
-    fuchsia::sys::LaunchInfo launch_info;
-    launch_info.url = pair.second->url;
-    fidl::Clone(pair.second->arguments, &launch_info.arguments);
+
     launcher->CreateComponent(std::move(launch_info), nullptr);
   }
 }
diff --git a/garnet/lib/perfmon/config.cc b/garnet/lib/perfmon/config.cc
index 7cf9b84942a..91196d864ba 100644
--- a/garnet/lib/perfmon/config.cc
+++ b/garnet/lib/perfmon/config.cc
@@ -74,22 +74,29 @@ std::string Config::ToString() {
 
 static void ToIoctlEvent(const Config::EventConfig& event, size_t index,
                          perfmon_ioctl_config_t* out_config) {
-  out_config->events[index].event = event.event;
-  out_config->events[index].rate = event.rate;
+  perfmon_ioctl_event_config_t& out_event = out_config->events[index];
+  out_event.event = event.event;
+  out_event.rate = event.rate;
   if (event.flags & Config::kFlagOs) {
-    out_config->events[index].flags |= PERFMON_CONFIG_FLAG_OS;
+    out_event.flags |= PERFMON_CONFIG_FLAG_OS;
   }
   if (event.flags & Config::kFlagUser) {
-    out_config->events[index].flags |= PERFMON_CONFIG_FLAG_USER;
+    out_event.flags |= PERFMON_CONFIG_FLAG_USER;
   }
   if (event.flags & Config::kFlagPc) {
-    out_config->events[index].flags |= PERFMON_CONFIG_FLAG_PC;
+    out_event.flags |= PERFMON_CONFIG_FLAG_PC;
   }
   if (event.flags & Config::kFlagTimebase) {
-    out_config->events[index].flags |= PERFMON_CONFIG_FLAG_TIMEBASE;
+    out_event.flags |= PERFMON_CONFIG_FLAG_TIMEBASE;
   }
   if (event.flags & Config::kFlagLastBranch) {
-    out_config->events[index].flags |= PERFMON_CONFIG_FLAG_LAST_BRANCH;
+    out_event.flags |= PERFMON_CONFIG_FLAG_LAST_BRANCH;
+  }
+
+  if (FXL_VLOG_IS_ON(3)) {
+    FXL_VLOG(3) << fxl::StringPrintf(
+        "Converted event: 0x%x, rate %u, flags 0x%x", out_event.event,
+        out_event.rate, out_event.flags);
   }
 }
 
-- 
GitLab