Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Side by Side Diff: base/debug/trace_event_impl.h

Issue 12096115: Update tracing framework to optionally use a ringbuffer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | base/debug/trace_event_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 5
6 #ifndef BASE_DEBUG_TRACE_EVENT_IMPL_H_ 6 #ifndef BASE_DEBUG_TRACE_EVENT_IMPL_H_
7 #define BASE_DEBUG_TRACE_EVENT_IMPL_H_ 7 #define BASE_DEBUG_TRACE_EVENT_IMPL_H_
8 8
9 #include "build/build_config.h" 9 #include "build/build_config.h"
10 10
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 // meaningful if |IsEnabled()| is true. 201 // meaningful if |IsEnabled()| is true.
202 void GetEnabledTraceCategories(std::vector<std::string>* included_out, 202 void GetEnabledTraceCategories(std::vector<std::string>* included_out,
203 std::vector<std::string>* excluded_out); 203 std::vector<std::string>* excluded_out);
204 204
205 // Disable tracing for all categories. 205 // Disable tracing for all categories.
206 void SetDisabled(); 206 void SetDisabled();
207 // Helper method to enable/disable tracing for all categories. 207 // Helper method to enable/disable tracing for all categories.
208 void SetEnabled(bool enabled); 208 void SetEnabled(bool enabled);
209 bool IsEnabled() { return !!enable_count_; } 209 bool IsEnabled() { return !!enable_count_; }
210 210
211 void SetContinuousTracing(bool continuous_tracing) {
nduca 2013/02/12 19:42:22 I like it, but can we make it a mode and a require
dsinclair 2013/02/25 19:04:34 Done.
212 continuous_tracing_ = continuous_tracing;
213 }
214 bool GetContinuousTracing() { return continuous_tracing_; }
215
211 #if defined(OS_ANDROID) 216 #if defined(OS_ANDROID)
212 static void InitATrace(); 217 static void InitATrace();
213 #endif 218 #endif
214 219
215 // Enabled state listeners give a callback when tracing is enabled or 220 // Enabled state listeners give a callback when tracing is enabled or
216 // disabled. This can be used to tie into other library's tracing systems 221 // disabled. This can be used to tie into other library's tracing systems
217 // on-demand. 222 // on-demand.
218 class EnabledStateChangedObserver { 223 class EnabledStateChangedObserver {
219 public: 224 public:
220 virtual ~EnabledStateChangedObserver() { } 225 virtual ~EnabledStateChangedObserver() { }
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 void SendToATrace(char phase, 362 void SendToATrace(char phase,
358 const char* category, 363 const char* category,
359 const char* name, 364 const char* name,
360 int num_args, 365 int num_args,
361 const char** arg_names, 366 const char** arg_names,
362 const unsigned char* arg_types, 367 const unsigned char* arg_types,
363 const unsigned long long* arg_values); 368 const unsigned long long* arg_values);
364 static void ApplyATraceEnabledFlag(unsigned char* category_enabled); 369 static void ApplyATraceEnabledFlag(unsigned char* category_enabled);
365 #endif 370 #endif
366 371
372 void AddEvent(const TraceEvent& event);
373
367 // TODO(nduca): switch to per-thread trace buffers to reduce thread 374 // TODO(nduca): switch to per-thread trace buffers to reduce thread
368 // synchronization. 375 // synchronization.
369 // This lock protects TraceLog member accesses from arbitrary threads. 376 // This lock protects TraceLog member accesses from arbitrary threads.
370 Lock lock_; 377 Lock lock_;
371 int enable_count_; 378 int enable_count_;
372 NotificationCallback notification_callback_; 379 NotificationCallback notification_callback_;
373 std::vector<TraceEvent> logged_events_; 380 std::vector<TraceEvent> logged_events_;
381 bool continuous_tracing_;
nduca 2013/02/12 19:42:22 Hm... can you factor out logged_events and logged_
dsinclair 2013/02/15 19:38:55 Done.
382 uint32 logged_events_newest_;
383 uint32 logged_events_oldest_;
374 std::vector<std::string> included_categories_; 384 std::vector<std::string> included_categories_;
375 std::vector<std::string> excluded_categories_; 385 std::vector<std::string> excluded_categories_;
376 bool dispatching_to_observer_list_; 386 bool dispatching_to_observer_list_;
377 ObserverList<EnabledStateChangedObserver> enabled_state_observer_list_; 387 ObserverList<EnabledStateChangedObserver> enabled_state_observer_list_;
378 388
379 base::hash_map<int, std::string> thread_names_; 389 base::hash_map<int, std::string> thread_names_;
380 390
381 // XORed with TraceID to make it unlikely to collide with other processes. 391 // XORed with TraceID to make it unlikely to collide with other processes.
382 unsigned long long process_id_hash_; 392 unsigned long long process_id_hash_;
383 393
384 int process_id_; 394 int process_id_;
385 395
386 TimeDelta time_offset_; 396 TimeDelta time_offset_;
387 397
388 // Allow tests to wake up when certain events occur. 398 // Allow tests to wake up when certain events occur.
389 const unsigned char* watch_category_; 399 const unsigned char* watch_category_;
390 std::string watch_event_name_; 400 std::string watch_event_name_;
391 401
392 DISALLOW_COPY_AND_ASSIGN(TraceLog); 402 DISALLOW_COPY_AND_ASSIGN(TraceLog);
393 }; 403 };
394 404
395 } // namespace debug 405 } // namespace debug
396 } // namespace base 406 } // namespace base
397 407
398 #endif // BASE_DEBUG_TRACE_EVENT_IMPL_H_ 408 #endif // BASE_DEBUG_TRACE_EVENT_IMPL_H_
OLDNEW
« no previous file with comments | « no previous file | base/debug/trace_event_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698