Index: base/trace_event/trace_event_impl.h |
diff --git a/base/trace_event/trace_event_impl.h b/base/trace_event/trace_event_impl.h |
index efa20c4ff85ff57b3b6c52b22247cfb136392fe6..33a85c9b6ce854f4e6b6cde748fe6abca8a015d2 100644 |
--- a/base/trace_event/trace_event_impl.h |
+++ b/base/trace_event/trace_event_impl.h |
@@ -26,6 +26,7 @@ |
// Older style trace macros with explicit id and extra data |
// Only these macros result in publishing data to ETW as currently implemented. |
+// TODO(georgesak): Update/replace these with new ETW macros. |
#define TRACE_EVENT_BEGIN_ETW(name, id, extra) \ |
base::trace_event::TraceLog::AddTraceEventEtw( \ |
TRACE_EVENT_PHASE_BEGIN, \ |
@@ -446,6 +447,8 @@ class BASE_EXPORT TraceLog { |
ENABLED_FOR_MONITORING = 1 << 1, |
// Category group enabled by SetEventCallbackEnabled(). |
ENABLED_FOR_EVENT_CALLBACK = 1 << 2, |
+ // Category group enabled to export events to ETW. |
+ ENABLED_FOR_ETW_EXPORT = 1 << 3 |
}; |
static TraceLog* GetInstance(); |
@@ -538,10 +541,11 @@ class BASE_EXPORT TraceLog { |
// Due to the implementation of thread-local buffers, flush can't be |
// done when tracing is enabled. If called when tracing is enabled, the |
// callback will be called directly with (empty_string, false) to indicate |
- // the end of this unsuccessful flush. |
+ // the end of this unsuccessful flush. Flush does the serialization |
+ // on the same thread if the caller doesn't set use_worker_thread explicitly. |
typedef base::Callback<void(const scoped_refptr<base::RefCountedString>&, |
bool has_more_events)> OutputCallback; |
- void Flush(const OutputCallback& cb); |
+ void Flush(const OutputCallback& cb, bool use_worker_thread = false); |
void FlushButLeaveBufferIntact(const OutputCallback& flush_output_callback); |
// Called by TRACE_EVENT* macros, don't call this directly. |
@@ -602,6 +606,8 @@ class BASE_EXPORT TraceLog { |
int process_id() const { return process_id_; } |
+ uint64 MangleEventId(uint64 id); |
+ |
// Exposed for unittesting: |
void WaitSamplingEventForTesting(); |
@@ -710,7 +716,9 @@ class BASE_EXPORT TraceLog { |
// |generation| is used in the following callbacks to check if the callback |
// is called for the flush of the current |logged_events_|. |
void FlushCurrentThread(int generation); |
- void ConvertTraceEventsToTraceFormat(scoped_ptr<TraceBuffer> logged_events, |
+ // Usually it runs on a different thread. |
+ static void ConvertTraceEventsToTraceFormat( |
+ scoped_ptr<TraceBuffer> logged_events, |
const TraceLog::OutputCallback& flush_output_callback); |
void FinishFlush(int generation); |
void OnFlushTimeout(int generation); |
@@ -803,6 +811,7 @@ class BASE_EXPORT TraceLog { |
OutputCallback flush_output_callback_; |
scoped_refptr<MessageLoopProxy> flush_message_loop_proxy_; |
subtle::AtomicWord generation_; |
+ bool use_worker_thread_; |
DISALLOW_COPY_AND_ASSIGN(TraceLog); |
}; |