diff --git a/garnet/bin/trace_manager/trace_manager.cc b/garnet/bin/trace_manager/trace_manager.cc index 240203c20fc00a302a8339a957e330df54ab3a44..e87655260a0afd26491d1d467b226ac132689925 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 7cf9b84942a911f62643091f73db5876ebf40753..91196d864ba502d3b5a6398195e1737924db12ad 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); } }