Index: base/trace_event/trace_event_etw_export_win.h |
diff --git a/base/trace_event/trace_event_etw_export_win.h b/base/trace_event/trace_event_etw_export_win.h |
index 9f73d781f73585c3d42c6da1a9abe733c59f83cb..eb5511909ff3d5909091371fcbfd2a0c5295ccdb 100644 |
--- a/base/trace_event/trace_event_etw_export_win.h |
+++ b/base/trace_event/trace_event_etw_export_win.h |
@@ -16,6 +16,10 @@ |
template <typename Type> |
struct StaticMemorySingletonTraits; |
+namespace { |
+class ETWKeywordUpdateThread; |
+} |
+ |
namespace base { |
namespace trace_event { |
@@ -67,6 +71,8 @@ class BASE_EXPORT TraceEventETWExport { |
private: |
// Ensure only the provider can construct us. |
friend struct StaticMemorySingletonTraits<TraceEventETWExport>; |
+ // To have access to UpdateKeyword(). |
+ friend class ETWKeywordUpdateThread; |
TraceEventETWExport(); |
// Updates the list of enabled categories by consulting the ETW keyword. |
@@ -76,6 +82,10 @@ class BASE_EXPORT TraceEventETWExport { |
// Returns true if the category is enabled. |
bool IsCategoryEnabled(const char* category_name) const; |
+ // Called back by the update thread to check for potential changes to the |
+ // keyword. |
+ static void UpdateKeyword(); |
brucedawson
2015/08/10 23:47:15
Perhaps name it UpdateETWKeyword() to avoid name c
Georges Khalil
2015/08/11 18:12:31
Done.
|
+ |
// True if ETW is enabled. Allows hiding the exporting behind a flag. |
bool etw_export_enabled_; |
@@ -85,6 +95,11 @@ class BASE_EXPORT TraceEventETWExport { |
// Local copy of the ETW keyword. |
uint64 etw_match_any_keyword_; |
+ // Background thread that monitors changes to the ETW keyword and updates |
+ // the enabled categories when a change occurs. |
+ scoped_ptr<ETWKeywordUpdateThread> keyword_update_thread_; |
+ PlatformThreadHandle keyword_update_thread_handle_; |
+ |
DISALLOW_COPY_AND_ASSIGN(TraceEventETWExport); |
}; |