OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #include "base/trace_event/trace_log.h" | 5 #include "base/trace_event/trace_log.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 unsigned long long arg_value; | 132 unsigned long long arg_value; |
133 ::trace_event_internal::SetTraceValue(value, &arg_type, &arg_value); | 133 ::trace_event_internal::SetTraceValue(value, &arg_type, &arg_value); |
134 trace_event->Initialize( | 134 trace_event->Initialize( |
135 thread_id, | 135 thread_id, |
136 TimeTicks(), | 136 TimeTicks(), |
137 ThreadTicks(), | 137 ThreadTicks(), |
138 TRACE_EVENT_PHASE_METADATA, | 138 TRACE_EVENT_PHASE_METADATA, |
139 &g_category_group_enabled[g_category_metadata], | 139 &g_category_group_enabled[g_category_metadata], |
140 metadata_name, | 140 metadata_name, |
141 trace_event_internal::kNoId, // id | 141 trace_event_internal::kNoId, // id |
142 trace_event_internal::kNoId, // context_id | |
143 trace_event_internal::kNoId, // bind_id | 142 trace_event_internal::kNoId, // bind_id |
144 num_args, | 143 num_args, |
145 &arg_name, | 144 &arg_name, |
146 &arg_type, | 145 &arg_type, |
147 &arg_value, | 146 &arg_value, |
148 nullptr, | 147 nullptr, |
149 TRACE_EVENT_FLAG_NONE); | 148 TRACE_EVENT_FLAG_NONE); |
150 } | 149 } |
151 | 150 |
152 class AutoThreadLocalBoolean { | 151 class AutoThreadLocalBoolean { |
(...skipping 906 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1059 const unsigned long long* arg_values, | 1058 const unsigned long long* arg_values, |
1060 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, | 1059 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, |
1061 unsigned int flags) { | 1060 unsigned int flags) { |
1062 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); | 1061 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); |
1063 base::TimeTicks now = base::TimeTicks::Now(); | 1062 base::TimeTicks now = base::TimeTicks::Now(); |
1064 return AddTraceEventWithThreadIdAndTimestamp( | 1063 return AddTraceEventWithThreadIdAndTimestamp( |
1065 phase, | 1064 phase, |
1066 category_group_enabled, | 1065 category_group_enabled, |
1067 name, | 1066 name, |
1068 id, | 1067 id, |
1069 trace_event_internal::kNoId, // context_id | |
1070 trace_event_internal::kNoId, // bind_id | 1068 trace_event_internal::kNoId, // bind_id |
1071 thread_id, | 1069 thread_id, |
1072 now, | 1070 now, |
1073 num_args, | 1071 num_args, |
1074 arg_names, | 1072 arg_names, |
1075 arg_types, | 1073 arg_types, |
1076 arg_values, | 1074 arg_values, |
1077 convertable_values, | 1075 convertable_values, |
1078 flags); | 1076 flags); |
1079 } | 1077 } |
1080 | 1078 |
1081 TraceEventHandle TraceLog::AddTraceEventWithContextId( | 1079 TraceEventHandle TraceLog::AddTraceEventWithBindId( |
1082 char phase, | 1080 char phase, |
1083 const unsigned char* category_group_enabled, | 1081 const unsigned char* category_group_enabled, |
1084 const char* name, | 1082 const char* name, |
1085 unsigned long long id, | 1083 unsigned long long id, |
1086 unsigned long long context_id, | 1084 unsigned long long bind_id, |
1087 int num_args, | 1085 int num_args, |
1088 const char** arg_names, | 1086 const char** arg_names, |
1089 const unsigned char* arg_types, | 1087 const unsigned char* arg_types, |
1090 const unsigned long long* arg_values, | 1088 const unsigned long long* arg_values, |
1091 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, | 1089 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, |
1092 unsigned int flags) { | 1090 unsigned int flags) { |
1093 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); | 1091 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); |
1094 base::TimeTicks now = base::TimeTicks::Now(); | 1092 base::TimeTicks now = base::TimeTicks::Now(); |
1095 return AddTraceEventWithThreadIdAndTimestamp( | 1093 return AddTraceEventWithThreadIdAndTimestamp( |
1096 phase, | 1094 phase, |
1097 category_group_enabled, | 1095 category_group_enabled, |
1098 name, | 1096 name, |
1099 id, | 1097 id, |
1100 context_id, | 1098 bind_id, |
1101 trace_event_internal::kNoId, // bind_id | |
1102 thread_id, | 1099 thread_id, |
1103 now, | 1100 now, |
1104 num_args, | 1101 num_args, |
1105 arg_names, | 1102 arg_names, |
1106 arg_types, | 1103 arg_types, |
1107 arg_values, | 1104 arg_values, |
1108 convertable_values, | 1105 convertable_values, |
1109 flags | TRACE_EVENT_FLAG_HAS_CONTEXT_ID); | 1106 flags | TRACE_EVENT_FLAG_HAS_CONTEXT_ID); |
1110 } | 1107 } |
1111 | 1108 |
1112 TraceEventHandle TraceLog::AddTraceEventWithProcessId( | 1109 TraceEventHandle TraceLog::AddTraceEventWithProcessId( |
1113 char phase, | 1110 char phase, |
1114 const unsigned char* category_group_enabled, | 1111 const unsigned char* category_group_enabled, |
1115 const char* name, | 1112 const char* name, |
1116 unsigned long long id, | 1113 unsigned long long id, |
1117 int process_id, | 1114 int process_id, |
1118 int num_args, | 1115 int num_args, |
1119 const char** arg_names, | 1116 const char** arg_names, |
1120 const unsigned char* arg_types, | 1117 const unsigned char* arg_types, |
1121 const unsigned long long* arg_values, | 1118 const unsigned long long* arg_values, |
1122 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, | 1119 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, |
1123 unsigned int flags) { | 1120 unsigned int flags) { |
1124 base::TimeTicks now = base::TimeTicks::Now(); | 1121 base::TimeTicks now = base::TimeTicks::Now(); |
1125 return AddTraceEventWithThreadIdAndTimestamp( | 1122 return AddTraceEventWithThreadIdAndTimestamp( |
1126 phase, | 1123 phase, |
1127 category_group_enabled, | 1124 category_group_enabled, |
1128 name, | 1125 name, |
1129 id, | 1126 id, |
1130 trace_event_internal::kNoId, // context_id | |
1131 trace_event_internal::kNoId, // bind_id | 1127 trace_event_internal::kNoId, // bind_id |
1132 process_id, | 1128 process_id, |
1133 now, | 1129 now, |
1134 num_args, | 1130 num_args, |
1135 arg_names, | 1131 arg_names, |
1136 arg_types, | 1132 arg_types, |
1137 arg_values, | 1133 arg_values, |
1138 convertable_values, | 1134 convertable_values, |
1139 flags | TRACE_EVENT_FLAG_HAS_PROCESS_ID); | 1135 flags | TRACE_EVENT_FLAG_HAS_PROCESS_ID); |
1140 } | 1136 } |
1141 | 1137 |
1142 // Handle legacy calls to AddTraceEventWithThreadIdAndTimestamp | 1138 // Handle legacy calls to AddTraceEventWithThreadIdAndTimestamp |
1143 // with kNoId as bind_id | 1139 // with kNoId as bind_id |
1144 TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp( | 1140 TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp( |
1145 char phase, | 1141 char phase, |
1146 const unsigned char* category_group_enabled, | 1142 const unsigned char* category_group_enabled, |
1147 const char* name, | 1143 const char* name, |
1148 unsigned long long id, | 1144 unsigned long long id, |
1149 unsigned long long context_id, | |
1150 int thread_id, | 1145 int thread_id, |
1151 const TimeTicks& timestamp, | 1146 const TimeTicks& timestamp, |
1152 int num_args, | 1147 int num_args, |
1153 const char** arg_names, | 1148 const char** arg_names, |
1154 const unsigned char* arg_types, | 1149 const unsigned char* arg_types, |
1155 const unsigned long long* arg_values, | 1150 const unsigned long long* arg_values, |
1156 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, | 1151 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, |
1157 unsigned int flags) { | 1152 unsigned int flags) { |
1158 return AddTraceEventWithThreadIdAndTimestamp( | 1153 return AddTraceEventWithThreadIdAndTimestamp( |
1159 phase, | 1154 phase, |
1160 category_group_enabled, | 1155 category_group_enabled, |
1161 name, | 1156 name, |
1162 id, | 1157 id, |
1163 context_id, | |
1164 trace_event_internal::kNoId, // bind_id | 1158 trace_event_internal::kNoId, // bind_id |
1165 thread_id, | 1159 thread_id, |
1166 timestamp, | 1160 timestamp, |
1167 num_args, | 1161 num_args, |
1168 arg_names, | 1162 arg_names, |
1169 arg_types, | 1163 arg_types, |
1170 arg_values, | 1164 arg_values, |
1171 convertable_values, | 1165 convertable_values, |
1172 flags); | 1166 flags); |
1173 } | 1167 } |
1174 | 1168 |
1175 TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp( | 1169 TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp( |
1176 char phase, | 1170 char phase, |
1177 const unsigned char* category_group_enabled, | 1171 const unsigned char* category_group_enabled, |
1178 const char* name, | 1172 const char* name, |
1179 unsigned long long id, | 1173 unsigned long long id, |
1180 unsigned long long context_id, | |
1181 unsigned long long bind_id, | 1174 unsigned long long bind_id, |
1182 int thread_id, | 1175 int thread_id, |
1183 const TimeTicks& timestamp, | 1176 const TimeTicks& timestamp, |
1184 int num_args, | 1177 int num_args, |
1185 const char** arg_names, | 1178 const char** arg_names, |
1186 const unsigned char* arg_types, | 1179 const unsigned char* arg_types, |
1187 const unsigned long long* arg_values, | 1180 const unsigned long long* arg_values, |
1188 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, | 1181 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, |
1189 unsigned int flags) { | 1182 unsigned int flags) { |
1190 TraceEventHandle handle = {0, 0, 0}; | 1183 TraceEventHandle handle = {0, 0, 0}; |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1277 } | 1270 } |
1278 | 1271 |
1279 if (trace_event) { | 1272 if (trace_event) { |
1280 trace_event->Initialize(thread_id, | 1273 trace_event->Initialize(thread_id, |
1281 offset_event_timestamp, | 1274 offset_event_timestamp, |
1282 thread_now, | 1275 thread_now, |
1283 phase, | 1276 phase, |
1284 category_group_enabled, | 1277 category_group_enabled, |
1285 name, | 1278 name, |
1286 id, | 1279 id, |
1287 context_id, | |
1288 bind_id, | 1280 bind_id, |
1289 num_args, | 1281 num_args, |
1290 arg_names, | 1282 arg_names, |
1291 arg_types, | 1283 arg_types, |
1292 arg_values, | 1284 arg_values, |
1293 convertable_values, | 1285 convertable_values, |
1294 flags); | 1286 flags); |
1295 | 1287 |
1296 #if defined(OS_ANDROID) | 1288 #if defined(OS_ANDROID) |
1297 trace_event->SendToATrace(); | 1289 trace_event->SendToATrace(); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1354 const unsigned char* arg_types, | 1346 const unsigned char* arg_types, |
1355 const unsigned long long* arg_values, | 1347 const unsigned long long* arg_values, |
1356 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, | 1348 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, |
1357 unsigned int flags) { | 1349 unsigned int flags) { |
1358 scoped_ptr<TraceEvent> trace_event(new TraceEvent); | 1350 scoped_ptr<TraceEvent> trace_event(new TraceEvent); |
1359 trace_event->Initialize( | 1351 trace_event->Initialize( |
1360 0, // thread_id | 1352 0, // thread_id |
1361 TimeTicks(), ThreadTicks(), TRACE_EVENT_PHASE_METADATA, | 1353 TimeTicks(), ThreadTicks(), TRACE_EVENT_PHASE_METADATA, |
1362 &g_category_group_enabled[g_category_metadata], name, | 1354 &g_category_group_enabled[g_category_metadata], name, |
1363 trace_event_internal::kNoId, // id | 1355 trace_event_internal::kNoId, // id |
1364 trace_event_internal::kNoId, // context_id | |
1365 trace_event_internal::kNoId, // bind_id | 1356 trace_event_internal::kNoId, // bind_id |
1366 num_args, arg_names, arg_types, arg_values, convertable_values, flags); | 1357 num_args, arg_names, arg_types, arg_values, convertable_values, flags); |
1367 AutoLock lock(lock_); | 1358 AutoLock lock(lock_); |
1368 metadata_events_.push_back(std::move(trace_event)); | 1359 metadata_events_.push_back(std::move(trace_event)); |
1369 } | 1360 } |
1370 | 1361 |
1371 // May be called when a COMPELETE event ends and the unfinished event has been | 1362 // May be called when a COMPELETE event ends and the unfinished event has been |
1372 // recycled (phase == TRACE_EVENT_PHASE_END and trace_event == NULL). | 1363 // recycled (phase == TRACE_EVENT_PHASE_END and trace_event == NULL). |
1373 std::string TraceLog::EventToConsoleMessage(unsigned char phase, | 1364 std::string TraceLog::EventToConsoleMessage(unsigned char phase, |
1374 const TimeTicks& timestamp, | 1365 const TimeTicks& timestamp, |
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1726 INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO_CUSTOM_VARIABLES( | 1717 INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO_CUSTOM_VARIABLES( |
1727 category_group, atomic, category_group_enabled_); | 1718 category_group, atomic, category_group_enabled_); |
1728 name_ = name; | 1719 name_ = name; |
1729 if (*category_group_enabled_) { | 1720 if (*category_group_enabled_) { |
1730 event_handle_ = | 1721 event_handle_ = |
1731 TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( | 1722 TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( |
1732 TRACE_EVENT_PHASE_COMPLETE, | 1723 TRACE_EVENT_PHASE_COMPLETE, |
1733 category_group_enabled_, | 1724 category_group_enabled_, |
1734 name, | 1725 name, |
1735 trace_event_internal::kNoId, // id | 1726 trace_event_internal::kNoId, // id |
1736 trace_event_internal::kNoId, // context_id | |
1737 static_cast<int>(base::PlatformThread::CurrentId()), // thread_id | 1727 static_cast<int>(base::PlatformThread::CurrentId()), // thread_id |
1738 base::TimeTicks::Now(), | 1728 base::TimeTicks::Now(), |
1739 trace_event_internal::kZeroNumArgs, | 1729 trace_event_internal::kZeroNumArgs, |
1740 nullptr, | 1730 nullptr, |
1741 nullptr, | 1731 nullptr, |
1742 nullptr, | 1732 nullptr, |
1743 nullptr, | 1733 nullptr, |
1744 TRACE_EVENT_FLAG_NONE); | 1734 TRACE_EVENT_FLAG_NONE); |
1745 } | 1735 } |
1746 } | 1736 } |
1747 | 1737 |
1748 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { | 1738 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { |
1749 if (*category_group_enabled_) { | 1739 if (*category_group_enabled_) { |
1750 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_, | 1740 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_, |
1751 event_handle_); | 1741 event_handle_); |
1752 } | 1742 } |
1753 } | 1743 } |
1754 | 1744 |
1755 } // namespace trace_event_internal | 1745 } // namespace trace_event_internal |
OLD | NEW |