| 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 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1330 return handle; | 1330 return handle; |
| 1331 } | 1331 } |
| 1332 | 1332 |
| 1333 void TraceLog::AddMetadataEvent( | 1333 void TraceLog::AddMetadataEvent( |
| 1334 const unsigned char* category_group_enabled, | 1334 const unsigned char* category_group_enabled, |
| 1335 const char* name, | 1335 const char* name, |
| 1336 int num_args, | 1336 int num_args, |
| 1337 const char** arg_names, | 1337 const char** arg_names, |
| 1338 const unsigned char* arg_types, | 1338 const unsigned char* arg_types, |
| 1339 const unsigned long long* arg_values, | 1339 const unsigned long long* arg_values, |
| 1340 const scoped_refptr<ConvertableToTraceFormat>* convertable_values, | 1340 scoped_ptr<ConvertableToTraceFormat>* convertable_values, |
| 1341 unsigned int flags) { | 1341 unsigned int flags) { |
| 1342 scoped_ptr<TraceEvent> trace_event(new TraceEvent); | 1342 scoped_ptr<TraceEvent> trace_event(new TraceEvent); |
| 1343 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); | 1343 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); |
| 1344 ThreadTicks thread_now = ThreadNow(); | 1344 ThreadTicks thread_now = ThreadNow(); |
| 1345 TimeTicks now = OffsetNow(); | 1345 TimeTicks now = OffsetNow(); |
| 1346 AutoLock lock(lock_); | 1346 AutoLock lock(lock_); |
| 1347 trace_event->Initialize( | 1347 trace_event->Initialize( |
| 1348 thread_id, now, thread_now, TRACE_EVENT_PHASE_METADATA, | 1348 thread_id, now, thread_now, TRACE_EVENT_PHASE_METADATA, |
| 1349 category_group_enabled, name, | 1349 category_group_enabled, name, |
| 1350 trace_event_internal::kGlobalScope, // scope | 1350 trace_event_internal::kGlobalScope, // scope |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1485 watch_event_callback_.Reset(); | 1485 watch_event_callback_.Reset(); |
| 1486 } | 1486 } |
| 1487 | 1487 |
| 1488 uint64_t TraceLog::MangleEventId(uint64_t id) { | 1488 uint64_t TraceLog::MangleEventId(uint64_t id) { |
| 1489 return id ^ process_id_hash_; | 1489 return id ^ process_id_hash_; |
| 1490 } | 1490 } |
| 1491 | 1491 |
| 1492 void TraceLog::AddMetadataEventsWhileLocked() { | 1492 void TraceLog::AddMetadataEventsWhileLocked() { |
| 1493 lock_.AssertAcquired(); | 1493 lock_.AssertAcquired(); |
| 1494 | 1494 |
| 1495 // Copy metadata added by |AddMetadataEvent| into the trace log. | 1495 // Move metadata added by |AddMetadataEvent| into the trace log. |
| 1496 for (const scoped_ptr<TraceEvent>& event : metadata_events_) | 1496 while (!metadata_events_.empty()) { |
| 1497 AddEventToThreadSharedChunkWhileLocked(nullptr, false)->CopyFrom(*event); | 1497 TraceEvent* event = AddEventToThreadSharedChunkWhileLocked(nullptr, false); |
| 1498 event->MoveFrom(std::move(metadata_events_.back())); |
| 1499 metadata_events_.pop_back(); |
| 1500 } |
| 1498 | 1501 |
| 1499 #if !defined(OS_NACL) // NaCl shouldn't expose the process id. | 1502 #if !defined(OS_NACL) // NaCl shouldn't expose the process id. |
| 1500 InitializeMetadataEvent(AddEventToThreadSharedChunkWhileLocked(NULL, false), | 1503 InitializeMetadataEvent(AddEventToThreadSharedChunkWhileLocked(NULL, false), |
| 1501 0, "num_cpus", "number", | 1504 0, "num_cpus", "number", |
| 1502 base::SysInfo::NumberOfProcessors()); | 1505 base::SysInfo::NumberOfProcessors()); |
| 1503 #endif | 1506 #endif |
| 1504 | 1507 |
| 1505 int current_thread_id = static_cast<int>(base::PlatformThread::CurrentId()); | 1508 int current_thread_id = static_cast<int>(base::PlatformThread::CurrentId()); |
| 1506 if (process_sort_index_ != 0) { | 1509 if (process_sort_index_ != 0) { |
| 1507 InitializeMetadataEvent(AddEventToThreadSharedChunkWhileLocked(NULL, false), | 1510 InitializeMetadataEvent(AddEventToThreadSharedChunkWhileLocked(NULL, false), |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1730 } | 1733 } |
| 1731 | 1734 |
| 1732 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { | 1735 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { |
| 1733 if (*category_group_enabled_) { | 1736 if (*category_group_enabled_) { |
| 1734 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_, | 1737 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_, |
| 1735 event_handle_); | 1738 event_handle_); |
| 1736 } | 1739 } |
| 1737 } | 1740 } |
| 1738 | 1741 |
| 1739 } // namespace trace_event_internal | 1742 } // namespace trace_event_internal |
| OLD | NEW |