Index: base/trace_event/trace_sampling_thread.cc |
diff --git a/base/trace_event/trace_sampling_thread.cc b/base/trace_event/trace_sampling_thread.cc |
deleted file mode 100644 |
index 5a0d2f8a024e12f3a23fbc6673bba1bbaedb323a..0000000000000000000000000000000000000000 |
--- a/base/trace_event/trace_sampling_thread.cc |
+++ /dev/null |
@@ -1,107 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include <stddef.h> |
- |
-#include "base/trace_event/trace_event.h" |
-#include "base/trace_event/trace_event_impl.h" |
-#include "base/trace_event/trace_log.h" |
-#include "base/trace_event/trace_sampling_thread.h" |
- |
-namespace base { |
-namespace trace_event { |
- |
-class TraceBucketData { |
- public: |
- TraceBucketData(base::subtle::AtomicWord* bucket, |
- const char* name, |
- TraceSampleCallback callback); |
- ~TraceBucketData(); |
- |
- TRACE_EVENT_API_ATOMIC_WORD* bucket; |
- const char* bucket_name; |
- TraceSampleCallback callback; |
-}; |
- |
-TraceSamplingThread::TraceSamplingThread() |
- : thread_running_(false), |
- waitable_event_for_testing_(WaitableEvent::ResetPolicy::AUTOMATIC, |
- WaitableEvent::InitialState::NOT_SIGNALED) {} |
- |
-TraceSamplingThread::~TraceSamplingThread() {} |
- |
-void TraceSamplingThread::ThreadMain() { |
- PlatformThread::SetName("Sampling Thread"); |
- thread_running_ = true; |
- const int kSamplingFrequencyMicroseconds = 1000; |
- while (!cancellation_flag_.IsSet()) { |
- PlatformThread::Sleep( |
- TimeDelta::FromMicroseconds(kSamplingFrequencyMicroseconds)); |
- GetSamples(); |
- waitable_event_for_testing_.Signal(); |
- } |
-} |
- |
-// static |
-void TraceSamplingThread::DefaultSamplingCallback( |
- TraceBucketData* bucket_data) { |
- TRACE_EVENT_API_ATOMIC_WORD category_and_name = |
- TRACE_EVENT_API_ATOMIC_LOAD(*bucket_data->bucket); |
- if (!category_and_name) |
- return; |
- const char* const combined = |
- reinterpret_cast<const char* const>(category_and_name); |
- const char* category_group; |
- const char* name; |
- ExtractCategoryAndName(combined, &category_group, &name); |
- TRACE_EVENT_API_ADD_TRACE_EVENT( |
- TRACE_EVENT_PHASE_SAMPLE, |
- TraceLog::GetCategoryGroupEnabled(category_group), name, |
- trace_event_internal::kGlobalScope, trace_event_internal::kNoId, 0, |
- NULL, NULL, NULL, NULL, 0); |
-} |
- |
-void TraceSamplingThread::GetSamples() { |
- for (size_t i = 0; i < sample_buckets_.size(); ++i) { |
- TraceBucketData* bucket_data = &sample_buckets_[i]; |
- bucket_data->callback.Run(bucket_data); |
- } |
-} |
- |
-void TraceSamplingThread::RegisterSampleBucket( |
- TRACE_EVENT_API_ATOMIC_WORD* bucket, |
- const char* const name, |
- TraceSampleCallback callback) { |
- // Access to sample_buckets_ doesn't cause races with the sampling thread |
- // that uses the sample_buckets_, because it is guaranteed that |
- // RegisterSampleBucket is called before the sampling thread is created. |
- DCHECK(!thread_running_); |
- sample_buckets_.push_back(TraceBucketData(bucket, name, callback)); |
-} |
- |
-// static |
-void TraceSamplingThread::ExtractCategoryAndName(const char* combined, |
- const char** category, |
- const char** name) { |
- *category = combined; |
- *name = &combined[strlen(combined) + 1]; |
-} |
- |
-void TraceSamplingThread::Stop() { |
- cancellation_flag_.Set(); |
-} |
- |
-void TraceSamplingThread::WaitSamplingEventForTesting() { |
- waitable_event_for_testing_.Wait(); |
-} |
- |
-TraceBucketData::TraceBucketData(base::subtle::AtomicWord* bucket, |
- const char* name, |
- TraceSampleCallback callback) |
- : bucket(bucket), bucket_name(name), callback(callback) {} |
- |
-TraceBucketData::~TraceBucketData() {} |
- |
-} // namespace trace_event |
-} // namespace base |