diff options
author | georgesak <georgesak@chromium.org> | 2015-04-13 18:36:17 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-14 01:37:57 +0000 |
commit | 1cc86c4f686869f32dfede093a07828c73563892 (patch) | |
tree | 256f51e5a02376d70d06014f173df09ece8594c7 /base/trace_event/trace_event_impl.cc | |
parent | 3455a3e0cbbd6b1d812518251589f0646b0a1518 (diff) | |
download | chromium_src-1cc86c4f686869f32dfede093a07828c73563892.zip chromium_src-1cc86c4f686869f32dfede093a07828c73563892.tar.gz chromium_src-1cc86c4f686869f32dfede093a07828c73563892.tar.bz2 |
Add option to export tracing events to ETW.
- Exporting of ETW events can be turned on using --trace-export-events-to-etw.
BUG=
Review URL: https://codereview.chromium.org/1038453002
Cr-Commit-Position: refs/heads/master@{#324982}
Diffstat (limited to 'base/trace_event/trace_event_impl.cc')
-rw-r--r-- | base/trace_event/trace_event_impl.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/base/trace_event/trace_event_impl.cc b/base/trace_event/trace_event_impl.cc index 834f826e..3cf4f07 100644 --- a/base/trace_event/trace_event_impl.cc +++ b/base/trace_event/trace_event_impl.cc @@ -36,6 +36,7 @@ #include "base/trace_event/trace_event_synthetic_delay.h" #if defined(OS_WIN) +#include "base/trace_event/trace_event_etw_export_win.h" #include "base/trace_event/trace_event_win.h" #endif @@ -1292,6 +1293,11 @@ void TraceLog::UpdateCategoryGroupEnabledFlag(size_t category_index) { if (event_callback_ && event_callback_category_filter_.IsCategoryGroupEnabled(category_group)) enabled_flag |= ENABLED_FOR_EVENT_CALLBACK; +#if defined(OS_WIN) + if (base::trace_event::TraceEventETWExport::isETWExportEnabled()) + enabled_flag |= ENABLED_FOR_ETW_EXPORT; +#endif + g_category_group_enabled[category_index] = enabled_flag; } @@ -1984,6 +1990,15 @@ TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp( } } +#if defined(OS_WIN) + // This is done sooner rather than later, to avoid creating the event and + // acquiring the lock, which is not needed for ETW as it's already threadsafe. + if (*category_group_enabled & ENABLED_FOR_ETW_EXPORT) + TraceEventETWExport::AddEvent(phase, category_group_enabled, name, id, + num_args, arg_names, arg_types, arg_values, + convertable_values); +#endif // OS_WIN + std::string console_message; if (*category_group_enabled & (ENABLED_FOR_RECORDING | ENABLED_FOR_MONITORING)) { |