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 // This header file defines the set of trace_event macros without specifying | 5 // This header file defines the set of trace_event macros without specifying |
6 // how the events actually get collected and stored. If you need to expose trace | 6 // how the events actually get collected and stored. If you need to expose trace |
7 // events to some other universe, you can copy-and-paste this file as well as | 7 // events to some other universe, you can copy-and-paste this file as well as |
8 // trace_event.h, modifying the macros contained there as necessary for the | 8 // trace_event.h, modifying the macros contained there as necessary for the |
9 // target platform. The end result is that multiple libraries can funnel events | 9 // target platform. The end result is that multiple libraries can funnel events |
10 // through to a shared trace event collector. | 10 // through to a shared trace event collector. |
(...skipping 660 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
671 #define TRACE_EVENT_CATEGORY_GROUP_ENABLED(category_group, ret) \ | 671 #define TRACE_EVENT_CATEGORY_GROUP_ENABLED(category_group, ret) \ |
672 do { \ | 672 do { \ |
673 INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \ | 673 INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \ |
674 if (*INTERNAL_TRACE_EVENT_UID(catstatic)) { \ | 674 if (*INTERNAL_TRACE_EVENT_UID(catstatic)) { \ |
675 *ret = true; \ | 675 *ret = true; \ |
676 } else { \ | 676 } else { \ |
677 *ret = false; \ | 677 *ret = false; \ |
678 } \ | 678 } \ |
679 } while (0) | 679 } while (0) |
680 | 680 |
| 681 // Macro to efficiently determine, through polling, if a new trace has begun. |
| 682 #define TRACE_EVENT_IS_NEW_TRACE(ret) \ |
| 683 do { \ |
| 684 static int INTERNAL_TRACE_EVENT_UID(lastRecordingNumber) = 0; \ |
| 685 int num_traces_recorded = TRACE_EVENT_API_GET_NUM_TRACES_RECORDED(); \ |
| 686 if (num_traces_recorded != -1 && \ |
| 687 num_traces_recorded != \ |
| 688 INTERNAL_TRACE_EVENT_UID(lastRecordingNumber)) { \ |
| 689 INTERNAL_TRACE_EVENT_UID(lastRecordingNumber) = \ |
| 690 num_traces_recorded; \ |
| 691 *ret = true; \ |
| 692 } else { \ |
| 693 *ret = false; \ |
| 694 } \ |
| 695 } while (0) |
| 696 |
681 //////////////////////////////////////////////////////////////////////////////// | 697 //////////////////////////////////////////////////////////////////////////////// |
682 // Implementation specific tracing API definitions. | 698 // Implementation specific tracing API definitions. |
683 | 699 |
684 // Get a pointer to the enabled state of the given trace category. Only | 700 // Get a pointer to the enabled state of the given trace category. Only |
685 // long-lived literal strings should be given as the category group. The | 701 // long-lived literal strings should be given as the category group. The |
686 // returned pointer can be held permanently in a local static for example. If | 702 // returned pointer can be held permanently in a local static for example. If |
687 // the unsigned char is non-zero, tracing is enabled. If tracing is enabled, | 703 // the unsigned char is non-zero, tracing is enabled. If tracing is enabled, |
688 // TRACE_EVENT_API_ADD_TRACE_EVENT can be called. It's OK if tracing is disabled | 704 // TRACE_EVENT_API_ADD_TRACE_EVENT can be called. It's OK if tracing is disabled |
689 // between the load of the tracing state and the call to | 705 // between the load of the tracing state and the call to |
690 // TRACE_EVENT_API_ADD_TRACE_EVENT, because this flag only provides an early out | 706 // TRACE_EVENT_API_ADD_TRACE_EVENT, because this flag only provides an early out |
691 // for best performance when tracing is disabled. | 707 // for best performance when tracing is disabled. |
692 // const unsigned char* | 708 // const unsigned char* |
693 // TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED(const char* category_group) | 709 // TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED(const char* category_group) |
694 #define TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED \ | 710 #define TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED \ |
695 base::debug::TraceLog::GetCategoryGroupEnabled | 711 base::debug::TraceLog::GetCategoryGroupEnabled |
696 | 712 |
| 713 // Get the number of times traces have been recorded. This is used to implement |
| 714 // the TRACE_EVENT_IS_NEW_TRACE facility. |
| 715 // unsigned int TRACE_EVENT_API_GET_NUM_TRACES_RECORDED() |
| 716 #define TRACE_EVENT_API_GET_NUM_TRACES_RECORDED \ |
| 717 base::debug::TraceLog::GetInstance()->GetNumTracesRecorded |
| 718 |
697 // Add a trace event to the platform tracing system. | 719 // Add a trace event to the platform tracing system. |
698 // void TRACE_EVENT_API_ADD_TRACE_EVENT( | 720 // void TRACE_EVENT_API_ADD_TRACE_EVENT( |
699 // char phase, | 721 // char phase, |
700 // const unsigned char* category_group_enabled, | 722 // const unsigned char* category_group_enabled, |
701 // const char* name, | 723 // const char* name, |
702 // unsigned long long id, | 724 // unsigned long long id, |
703 // int num_args, | 725 // int num_args, |
704 // const char** arg_names, | 726 // const char** arg_names, |
705 // const unsigned char* arg_types, | 727 // const unsigned char* arg_types, |
706 // const unsigned long long* arg_values, | 728 // const unsigned long long* arg_values, |
(...skipping 738 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1445 const char* name_; | 1467 const char* name_; |
1446 IDType id_; | 1468 IDType id_; |
1447 | 1469 |
1448 DISALLOW_COPY_AND_ASSIGN(TraceScopedTrackableObject); | 1470 DISALLOW_COPY_AND_ASSIGN(TraceScopedTrackableObject); |
1449 }; | 1471 }; |
1450 | 1472 |
1451 } // namespace debug | 1473 } // namespace debug |
1452 } // namespace base | 1474 } // namespace base |
1453 | 1475 |
1454 #endif /* BASE_DEBUG_TRACE_EVENT_H_ */ | 1476 #endif /* BASE_DEBUG_TRACE_EVENT_H_ */ |
OLD | NEW |