| 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 1017 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1028 TraceEventHandle TraceLog::AddTraceEvent( | 1028 TraceEventHandle TraceLog::AddTraceEvent( |
| 1029 char phase, | 1029 char phase, |
| 1030 const unsigned char* category_group_enabled, | 1030 const unsigned char* category_group_enabled, |
| 1031 const char* name, | 1031 const char* name, |
| 1032 const char* scope, | 1032 const char* scope, |
| 1033 unsigned long long id, | 1033 unsigned long long id, |
| 1034 int num_args, | 1034 int num_args, |
| 1035 const char** arg_names, | 1035 const char** arg_names, |
| 1036 const unsigned char* arg_types, | 1036 const unsigned char* arg_types, |
| 1037 const unsigned long long* arg_values, | 1037 const unsigned long long* arg_values, |
| 1038 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, | 1038 scoped_ptr<ConvertableToTraceFormat>* convertable_values, |
| 1039 unsigned int flags) { | 1039 unsigned int flags) { |
| 1040 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); | 1040 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); |
| 1041 base::TimeTicks now = base::TimeTicks::Now(); | 1041 base::TimeTicks now = base::TimeTicks::Now(); |
| 1042 return AddTraceEventWithThreadIdAndTimestamp( | 1042 return AddTraceEventWithThreadIdAndTimestamp( |
| 1043 phase, | 1043 phase, |
| 1044 category_group_enabled, | 1044 category_group_enabled, |
| 1045 name, | 1045 name, |
| 1046 scope, | 1046 scope, |
| 1047 id, | 1047 id, |
| 1048 trace_event_internal::kNoId, // bind_id | 1048 trace_event_internal::kNoId, // bind_id |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1060 char phase, | 1060 char phase, |
| 1061 const unsigned char* category_group_enabled, | 1061 const unsigned char* category_group_enabled, |
| 1062 const char* name, | 1062 const char* name, |
| 1063 const char* scope, | 1063 const char* scope, |
| 1064 unsigned long long id, | 1064 unsigned long long id, |
| 1065 unsigned long long bind_id, | 1065 unsigned long long bind_id, |
| 1066 int num_args, | 1066 int num_args, |
| 1067 const char** arg_names, | 1067 const char** arg_names, |
| 1068 const unsigned char* arg_types, | 1068 const unsigned char* arg_types, |
| 1069 const unsigned long long* arg_values, | 1069 const unsigned long long* arg_values, |
| 1070 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, | 1070 scoped_ptr<ConvertableToTraceFormat>* convertable_values, |
| 1071 unsigned int flags) { | 1071 unsigned int flags) { |
| 1072 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); | 1072 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); |
| 1073 base::TimeTicks now = base::TimeTicks::Now(); | 1073 base::TimeTicks now = base::TimeTicks::Now(); |
| 1074 return AddTraceEventWithThreadIdAndTimestamp( | 1074 return AddTraceEventWithThreadIdAndTimestamp( |
| 1075 phase, | 1075 phase, |
| 1076 category_group_enabled, | 1076 category_group_enabled, |
| 1077 name, | 1077 name, |
| 1078 scope, | 1078 scope, |
| 1079 id, | 1079 id, |
| 1080 bind_id, | 1080 bind_id, |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1092 char phase, | 1092 char phase, |
| 1093 const unsigned char* category_group_enabled, | 1093 const unsigned char* category_group_enabled, |
| 1094 const char* name, | 1094 const char* name, |
| 1095 const char* scope, | 1095 const char* scope, |
| 1096 unsigned long long id, | 1096 unsigned long long id, |
| 1097 int process_id, | 1097 int process_id, |
| 1098 int num_args, | 1098 int num_args, |
| 1099 const char** arg_names, | 1099 const char** arg_names, |
| 1100 const unsigned char* arg_types, | 1100 const unsigned char* arg_types, |
| 1101 const unsigned long long* arg_values, | 1101 const unsigned long long* arg_values, |
| 1102 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, | 1102 scoped_ptr<ConvertableToTraceFormat>* convertable_values, |
| 1103 unsigned int flags) { | 1103 unsigned int flags) { |
| 1104 base::TimeTicks now = base::TimeTicks::Now(); | 1104 base::TimeTicks now = base::TimeTicks::Now(); |
| 1105 return AddTraceEventWithThreadIdAndTimestamp( | 1105 return AddTraceEventWithThreadIdAndTimestamp( |
| 1106 phase, | 1106 phase, |
| 1107 category_group_enabled, | 1107 category_group_enabled, |
| 1108 name, | 1108 name, |
| 1109 scope, | 1109 scope, |
| 1110 id, | 1110 id, |
| 1111 trace_event_internal::kNoId, // bind_id | 1111 trace_event_internal::kNoId, // bind_id |
| 1112 process_id, | 1112 process_id, |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1126 const unsigned char* category_group_enabled, | 1126 const unsigned char* category_group_enabled, |
| 1127 const char* name, | 1127 const char* name, |
| 1128 const char* scope, | 1128 const char* scope, |
| 1129 unsigned long long id, | 1129 unsigned long long id, |
| 1130 int thread_id, | 1130 int thread_id, |
| 1131 const TimeTicks& timestamp, | 1131 const TimeTicks& timestamp, |
| 1132 int num_args, | 1132 int num_args, |
| 1133 const char** arg_names, | 1133 const char** arg_names, |
| 1134 const unsigned char* arg_types, | 1134 const unsigned char* arg_types, |
| 1135 const unsigned long long* arg_values, | 1135 const unsigned long long* arg_values, |
| 1136 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, | 1136 scoped_ptr<ConvertableToTraceFormat>* convertable_values, |
| 1137 unsigned int flags) { | 1137 unsigned int flags) { |
| 1138 return AddTraceEventWithThreadIdAndTimestamp( | 1138 return AddTraceEventWithThreadIdAndTimestamp( |
| 1139 phase, | 1139 phase, |
| 1140 category_group_enabled, | 1140 category_group_enabled, |
| 1141 name, | 1141 name, |
| 1142 scope, | 1142 scope, |
| 1143 id, | 1143 id, |
| 1144 trace_event_internal::kNoId, // bind_id | 1144 trace_event_internal::kNoId, // bind_id |
| 1145 thread_id, | 1145 thread_id, |
| 1146 timestamp, | 1146 timestamp, |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1158 const char* name, | 1158 const char* name, |
| 1159 const char* scope, | 1159 const char* scope, |
| 1160 unsigned long long id, | 1160 unsigned long long id, |
| 1161 unsigned long long bind_id, | 1161 unsigned long long bind_id, |
| 1162 int thread_id, | 1162 int thread_id, |
| 1163 const TimeTicks& timestamp, | 1163 const TimeTicks& timestamp, |
| 1164 int num_args, | 1164 int num_args, |
| 1165 const char** arg_names, | 1165 const char** arg_names, |
| 1166 const unsigned char* arg_types, | 1166 const unsigned char* arg_types, |
| 1167 const unsigned long long* arg_values, | 1167 const unsigned long long* arg_values, |
| 1168 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, | 1168 scoped_ptr<ConvertableToTraceFormat>* convertable_values, |
| 1169 unsigned int flags) { | 1169 unsigned int flags) { |
| 1170 TraceEventHandle handle = {0, 0, 0}; | 1170 TraceEventHandle handle = {0, 0, 0}; |
| 1171 if (!*category_group_enabled) | 1171 if (!*category_group_enabled) |
| 1172 return handle; | 1172 return handle; |
| 1173 | 1173 |
| 1174 // Avoid re-entrance of AddTraceEvent. This may happen in GPU process when | 1174 // Avoid re-entrance of AddTraceEvent. This may happen in GPU process when |
| 1175 // ECHO_TO_CONSOLE is enabled: AddTraceEvent -> LOG(ERROR) -> | 1175 // ECHO_TO_CONSOLE is enabled: AddTraceEvent -> LOG(ERROR) -> |
| 1176 // GpuProcessLogMessageHandler -> PostPendingTask -> TRACE_EVENT ... | 1176 // GpuProcessLogMessageHandler -> PostPendingTask -> TRACE_EVENT ... |
| 1177 if (thread_is_in_trace_event_.Get()) | 1177 if (thread_is_in_trace_event_.Get()) |
| 1178 return handle; | 1178 return handle; |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1329 | 1329 |
| 1330 return handle; | 1330 return handle; |
| 1331 } | 1331 } |
| 1332 | 1332 |
| 1333 void TraceLog::AddMetadataEvent( | 1333 void TraceLog::AddMetadataEvent( |
| 1334 const char* name, | 1334 const char* name, |
| 1335 int num_args, | 1335 int num_args, |
| 1336 const char** arg_names, | 1336 const char** arg_names, |
| 1337 const unsigned char* arg_types, | 1337 const unsigned char* arg_types, |
| 1338 const unsigned long long* arg_values, | 1338 const unsigned long long* arg_values, |
| 1339 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, | 1339 scoped_ptr<ConvertableToTraceFormat>* convertable_values, |
| 1340 unsigned int flags) { | 1340 unsigned int flags) { |
| 1341 scoped_ptr<TraceEvent> trace_event(new TraceEvent); | 1341 scoped_ptr<TraceEvent> trace_event(new TraceEvent); |
| 1342 AutoLock lock(lock_); | 1342 AutoLock lock(lock_); |
| 1343 trace_event->Initialize( | 1343 trace_event->Initialize( |
| 1344 0, // thread_id | 1344 0, // thread_id |
| 1345 TimeTicks(), ThreadTicks(), TRACE_EVENT_PHASE_METADATA, | 1345 TimeTicks(), ThreadTicks(), TRACE_EVENT_PHASE_METADATA, |
| 1346 &g_category_group_enabled[g_category_metadata], name, | 1346 &g_category_group_enabled[g_category_metadata], name, |
| 1347 trace_event_internal::kGlobalScope, // scope | 1347 trace_event_internal::kGlobalScope, // scope |
| 1348 trace_event_internal::kNoId, // id | 1348 trace_event_internal::kNoId, // id |
| 1349 trace_event_internal::kNoId, // bind_id | 1349 trace_event_internal::kNoId, // bind_id |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1482 watch_event_callback_.Reset(); | 1482 watch_event_callback_.Reset(); |
| 1483 } | 1483 } |
| 1484 | 1484 |
| 1485 uint64_t TraceLog::MangleEventId(uint64_t id) { | 1485 uint64_t TraceLog::MangleEventId(uint64_t id) { |
| 1486 return id ^ process_id_hash_; | 1486 return id ^ process_id_hash_; |
| 1487 } | 1487 } |
| 1488 | 1488 |
| 1489 void TraceLog::AddMetadataEventsWhileLocked() { | 1489 void TraceLog::AddMetadataEventsWhileLocked() { |
| 1490 lock_.AssertAcquired(); | 1490 lock_.AssertAcquired(); |
| 1491 | 1491 |
| 1492 // Copy metadata added by |AddMetadataEvent| into the trace log. | 1492 // Move metadata added by |AddMetadataEvent| into the trace log. |
| 1493 for (const scoped_ptr<TraceEvent>& event : metadata_events_) | 1493 while (!metadata_events_.empty()) { |
| 1494 AddEventToThreadSharedChunkWhileLocked(nullptr, false)->CopyFrom(*event); | 1494 TraceEvent* event = AddEventToThreadSharedChunkWhileLocked(nullptr, false); |
| 1495 event->MoveFrom(std::move(metadata_events_.back())); |
| 1496 metadata_events_.pop_back(); |
| 1497 } |
| 1495 | 1498 |
| 1496 #if !defined(OS_NACL) // NaCl shouldn't expose the process id. | 1499 #if !defined(OS_NACL) // NaCl shouldn't expose the process id. |
| 1497 InitializeMetadataEvent(AddEventToThreadSharedChunkWhileLocked(NULL, false), | 1500 InitializeMetadataEvent(AddEventToThreadSharedChunkWhileLocked(NULL, false), |
| 1498 0, "num_cpus", "number", | 1501 0, "num_cpus", "number", |
| 1499 base::SysInfo::NumberOfProcessors()); | 1502 base::SysInfo::NumberOfProcessors()); |
| 1500 #endif | 1503 #endif |
| 1501 | 1504 |
| 1502 int current_thread_id = static_cast<int>(base::PlatformThread::CurrentId()); | 1505 int current_thread_id = static_cast<int>(base::PlatformThread::CurrentId()); |
| 1503 if (process_sort_index_ != 0) { | 1506 if (process_sort_index_ != 0) { |
| 1504 InitializeMetadataEvent(AddEventToThreadSharedChunkWhileLocked(NULL, false), | 1507 InitializeMetadataEvent(AddEventToThreadSharedChunkWhileLocked(NULL, false), |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1727 } | 1730 } |
| 1728 | 1731 |
| 1729 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { | 1732 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { |
| 1730 if (*category_group_enabled_) { | 1733 if (*category_group_enabled_) { |
| 1731 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_, | 1734 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_, |
| 1732 event_handle_); | 1735 event_handle_); |
| 1733 } | 1736 } |
| 1734 } | 1737 } |
| 1735 | 1738 |
| 1736 } // namespace trace_event_internal | 1739 } // namespace trace_event_internal |
| OLD | NEW |