OLD | NEW |
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 <map> |
9 #include <stack> | 10 #include <stack> |
10 #include <string> | 11 #include <string> |
11 #include <vector> | 12 #include <vector> |
12 | 13 |
13 #include "base/callback.h" | 14 #include "base/callback.h" |
14 #include "base/containers/hash_tables.h" | 15 #include "base/containers/hash_tables.h" |
15 #include "base/gtest_prod_util.h" | 16 #include "base/gtest_prod_util.h" |
16 #include "base/memory/ref_counted_memory.h" | 17 #include "base/memory/ref_counted_memory.h" |
17 #include "base/memory/scoped_vector.h" | 18 #include "base/memory/scoped_vector.h" |
18 #include "base/observer_list.h" | 19 #include "base/observer_list.h" |
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 // Allows resurrecting our singleton instance post-AtExit processing. | 444 // Allows resurrecting our singleton instance post-AtExit processing. |
444 static void Resurrect(); | 445 static void Resurrect(); |
445 | 446 |
446 // Allow tests to inspect TraceEvents. | 447 // Allow tests to inspect TraceEvents. |
447 size_t GetEventsSize() const { return logged_events_->Size(); } | 448 size_t GetEventsSize() const { return logged_events_->Size(); } |
448 const TraceEvent& GetEventAt(size_t index) const { | 449 const TraceEvent& GetEventAt(size_t index) const { |
449 return logged_events_->GetEventAt(index); | 450 return logged_events_->GetEventAt(index); |
450 } | 451 } |
451 | 452 |
452 void SetProcessID(int process_id); | 453 void SetProcessID(int process_id); |
| 454 void SetProcessSortIndex(int sort_index); |
| 455 void SetProcessLabel(int label_id, const std::string& current_label); |
| 456 void SetThreadSortIndex(int thread_id, int sort_index); |
453 | 457 |
454 // Allow setting an offset between the current TimeTicks time and the time | 458 // Allow setting an offset between the current TimeTicks time and the time |
455 // that should be reported. | 459 // that should be reported. |
456 void SetTimeOffset(TimeDelta offset); | 460 void SetTimeOffset(TimeDelta offset); |
457 | 461 |
458 size_t GetObserverCountForTest() const; | 462 size_t GetObserverCountForTest() const; |
459 | 463 |
460 private: | 464 private: |
461 // This allows constructor and destructor to be private and usable only | 465 // This allows constructor and destructor to be private and usable only |
462 // by the Singleton class. | 466 // by the Singleton class. |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 | 506 |
503 private: | 507 private: |
504 TraceLog* trace_log_; | 508 TraceLog* trace_log_; |
505 NotificationCallback callback_copy_; | 509 NotificationCallback callback_copy_; |
506 int notification_; | 510 int notification_; |
507 }; | 511 }; |
508 | 512 |
509 TraceLog(); | 513 TraceLog(); |
510 ~TraceLog(); | 514 ~TraceLog(); |
511 const unsigned char* GetCategoryGroupEnabledInternal(const char* name); | 515 const unsigned char* GetCategoryGroupEnabledInternal(const char* name); |
512 void AddThreadNameMetadataEvents(); | 516 void AddMetadataEvents(); |
513 | 517 |
514 #if defined(OS_ANDROID) | 518 #if defined(OS_ANDROID) |
515 void SendToATrace(char phase, | 519 void SendToATrace(char phase, |
516 const char* category_group, | 520 const char* category_group, |
517 const char* name, | 521 const char* name, |
518 unsigned long long id, | 522 unsigned long long id, |
519 int num_args, | 523 int num_args, |
520 const char** arg_names, | 524 const char** arg_names, |
521 const unsigned char* arg_types, | 525 const unsigned char* arg_types, |
522 const unsigned long long* arg_values, | 526 const unsigned long long* arg_values, |
523 scoped_ptr<ConvertableToTraceFormat> convertable_values[], | 527 scoped_ptr<ConvertableToTraceFormat> convertable_values[], |
524 unsigned char flags); | 528 unsigned char flags); |
525 static void ApplyATraceEnabledFlag(unsigned char* category_group_enabled); | 529 static void ApplyATraceEnabledFlag(unsigned char* category_group_enabled); |
526 #endif | 530 #endif |
527 | 531 |
528 TraceBuffer* GetTraceBuffer(); | 532 TraceBuffer* GetTraceBuffer(); |
529 | 533 |
530 // TODO(nduca): switch to per-thread trace buffers to reduce thread | 534 // TODO(nduca): switch to per-thread trace buffers to reduce thread |
531 // synchronization. | 535 // synchronization. |
532 // This lock protects TraceLog member accesses from arbitrary threads. | 536 // This lock protects TraceLog member accesses from arbitrary threads. |
533 Lock lock_; | 537 Lock lock_; |
534 int enable_count_; | 538 int enable_count_; |
535 int num_traces_recorded_; | 539 int num_traces_recorded_; |
536 NotificationCallback notification_callback_; | 540 NotificationCallback notification_callback_; |
537 scoped_ptr<TraceBuffer> logged_events_; | 541 scoped_ptr<TraceBuffer> logged_events_; |
538 EventCallback event_callback_; | 542 EventCallback event_callback_; |
539 bool dispatching_to_observer_list_; | 543 bool dispatching_to_observer_list_; |
540 std::vector<EnabledStateObserver*> enabled_state_observer_list_; | 544 std::vector<EnabledStateObserver*> enabled_state_observer_list_; |
541 | 545 |
| 546 std::map<int, std::string> process_labels_; |
| 547 int process_sort_index_; |
| 548 base::hash_map<int, int> thread_sort_indices_; |
| 549 |
542 base::hash_map<int, std::string> thread_names_; | 550 base::hash_map<int, std::string> thread_names_; |
543 base::hash_map<int, std::stack<TimeTicks> > thread_event_start_times_; | 551 base::hash_map<int, std::stack<TimeTicks> > thread_event_start_times_; |
544 base::hash_map<std::string, int> thread_colors_; | 552 base::hash_map<std::string, int> thread_colors_; |
545 | 553 |
546 // XORed with TraceID to make it unlikely to collide with other processes. | 554 // XORed with TraceID to make it unlikely to collide with other processes. |
547 unsigned long long process_id_hash_; | 555 unsigned long long process_id_hash_; |
548 | 556 |
549 int process_id_; | 557 int process_id_; |
550 | 558 |
551 TimeDelta time_offset_; | 559 TimeDelta time_offset_; |
(...skipping 10 matching lines...) Expand all Loading... |
562 | 570 |
563 CategoryFilter category_filter_; | 571 CategoryFilter category_filter_; |
564 | 572 |
565 DISALLOW_COPY_AND_ASSIGN(TraceLog); | 573 DISALLOW_COPY_AND_ASSIGN(TraceLog); |
566 }; | 574 }; |
567 | 575 |
568 } // namespace debug | 576 } // namespace debug |
569 } // namespace base | 577 } // namespace base |
570 | 578 |
571 #endif // BASE_DEBUG_TRACE_EVENT_IMPL_H_ | 579 #endif // BASE_DEBUG_TRACE_EVENT_IMPL_H_ |
OLD | NEW |