Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2267)

Unified Diff: base/debug/trace_event_synthetic_delay.h

Issue 885443002: Roll Chrome into Mojo. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Rebase to ToT mojo Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/debug/trace_event_memory_unittest.cc ('k') | base/debug/trace_event_synthetic_delay.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/debug/trace_event_synthetic_delay.h
diff --git a/base/debug/trace_event_synthetic_delay.h b/base/debug/trace_event_synthetic_delay.h
index 06d6cdea1f98b7125ba9f64248a5fe5bfd28a9d8..1f1eafb5a6e256ecc051c4488dd96694aef58ab6 100644
--- a/base/debug/trace_event_synthetic_delay.h
+++ b/base/debug/trace_event_synthetic_delay.h
@@ -2,165 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// The synthetic delay framework makes it possible to dynamically inject
-// arbitrary delays into into different parts of the codebase. This can be used,
-// for instance, for testing various task scheduling algorithms.
-//
-// The delays are specified in terms of a target duration for a given block of
-// code. If the code executes faster than the duration, the thread is made to
-// sleep until the deadline is met.
-//
-// Code can be instrumented for delays with two sets of macros. First, for
-// delays that should apply within a scope, use the following macro:
-//
-// TRACE_EVENT_SYNTHETIC_DELAY("cc.LayerTreeHost.DrawAndSwap");
-//
-// For delaying operations that span multiple scopes, use:
-//
-// TRACE_EVENT_SYNTHETIC_DELAY_BEGIN("cc.Scheduler.BeginMainFrame");
-// ...
-// TRACE_EVENT_SYNTHETIC_DELAY_END("cc.Scheduler.BeginMainFrame");
-//
-// Here BEGIN establishes the start time for the delay and END executes the
-// delay based on the remaining time. If BEGIN is called multiple times in a
-// row, END should be called a corresponding number of times. Only the last
-// call to END will have an effect.
-//
-// Note that a single delay may begin on one thread and end on another. This
-// implies that a single delay cannot not be applied in several threads at once.
+// In the process of moving the trace event files. Right now the headers
+// are being forwarded. In next CLs the change will get completed
+// TODO(ssid): https://code.google.com/p/chromium/issues/detail?id=451032
#ifndef BASE_DEBUG_TRACE_EVENT_SYNTHETIC_DELAY_H_
#define BASE_DEBUG_TRACE_EVENT_SYNTHETIC_DELAY_H_
-#include "base/atomicops.h"
-#include "base/debug/trace_event.h"
-#include "base/synchronization/lock.h"
-#include "base/time/time.h"
+#include "base/trace_event/trace_event_synthetic_delay.h"
-// Apply a named delay in the current scope.
-#define TRACE_EVENT_SYNTHETIC_DELAY(name) \
- static base::subtle::AtomicWord INTERNAL_TRACE_EVENT_UID(impl_ptr) = 0; \
- trace_event_internal::ScopedSyntheticDelay INTERNAL_TRACE_EVENT_UID(delay)( \
- name, &INTERNAL_TRACE_EVENT_UID(impl_ptr));
-
-// Begin a named delay, establishing its timing start point. May be called
-// multiple times as long as the calls to TRACE_EVENT_SYNTHETIC_DELAY_END are
-// balanced. Only the first call records the timing start point.
-#define TRACE_EVENT_SYNTHETIC_DELAY_BEGIN(name) \
- do { \
- static base::subtle::AtomicWord impl_ptr = 0; \
- trace_event_internal::GetOrCreateDelay(name, &impl_ptr)->Begin(); \
- } while (false)
-
-// End a named delay. The delay is applied only if this call matches the
-// first corresponding call to TRACE_EVENT_SYNTHETIC_DELAY_BEGIN with the
-// same delay.
-#define TRACE_EVENT_SYNTHETIC_DELAY_END(name) \
- do { \
- static base::subtle::AtomicWord impl_ptr = 0; \
- trace_event_internal::GetOrCreateDelay(name, &impl_ptr)->End(); \
- } while (false)
-
-template <typename Type>
-struct DefaultSingletonTraits;
-
-namespace base {
-namespace debug {
-
-// Time source for computing delay durations. Used for testing.
-class TRACE_EVENT_API_CLASS_EXPORT TraceEventSyntheticDelayClock {
- public:
- TraceEventSyntheticDelayClock();
- virtual ~TraceEventSyntheticDelayClock();
- virtual base::TimeTicks Now() = 0;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(TraceEventSyntheticDelayClock);
-};
-
-// Single delay point instance.
-class TRACE_EVENT_API_CLASS_EXPORT TraceEventSyntheticDelay {
- public:
- enum Mode {
- STATIC, // Apply the configured delay every time.
- ONE_SHOT, // Apply the configured delay just once.
- ALTERNATING // Apply the configured delay every other time.
- };
-
- // Returns an existing named delay instance or creates a new one with |name|.
- static TraceEventSyntheticDelay* Lookup(const std::string& name);
-
- void SetTargetDuration(TimeDelta target_duration);
- void SetMode(Mode mode);
- void SetClock(TraceEventSyntheticDelayClock* clock);
-
- // Begin the delay, establishing its timing start point. May be called
- // multiple times as long as the calls to End() are balanced. Only the first
- // call records the timing start point.
- void Begin();
-
- // End the delay. The delay is applied only if this call matches the first
- // corresponding call to Begin() with the same delay.
- void End();
-
- // Begin a parallel instance of the delay. Several parallel instances may be
- // active simultaneously and will complete independently. The computed end
- // time for the delay is stored in |out_end_time|, which should later be
- // passed to EndParallel().
- void BeginParallel(base::TimeTicks* out_end_time);
-
- // End a previously started parallel delay. |end_time| is the delay end point
- // computed by BeginParallel().
- void EndParallel(base::TimeTicks end_time);
-
- private:
- TraceEventSyntheticDelay();
- ~TraceEventSyntheticDelay();
- friend class TraceEventSyntheticDelayRegistry;
-
- void Initialize(const std::string& name,
- TraceEventSyntheticDelayClock* clock);
- base::TimeTicks CalculateEndTimeLocked(base::TimeTicks start_time);
- void ApplyDelay(base::TimeTicks end_time);
-
- Lock lock_;
- Mode mode_;
- std::string name_;
- int begin_count_;
- int trigger_count_;
- base::TimeTicks end_time_;
- base::TimeDelta target_duration_;
- TraceEventSyntheticDelayClock* clock_;
-
- DISALLOW_COPY_AND_ASSIGN(TraceEventSyntheticDelay);
-};
-
-// Set the target durations of all registered synthetic delay points to zero.
-TRACE_EVENT_API_CLASS_EXPORT void ResetTraceEventSyntheticDelays();
-
-} // namespace debug
-} // namespace base
-
-namespace trace_event_internal {
-
-// Helper class for scoped delays. Do not use directly.
-class TRACE_EVENT_API_CLASS_EXPORT ScopedSyntheticDelay {
- public:
- explicit ScopedSyntheticDelay(const char* name,
- base::subtle::AtomicWord* impl_ptr);
- ~ScopedSyntheticDelay();
-
- private:
- base::debug::TraceEventSyntheticDelay* delay_impl_;
- base::TimeTicks end_time_;
-
- DISALLOW_COPY_AND_ASSIGN(ScopedSyntheticDelay);
-};
-
-// Helper for registering delays. Do not use directly.
-TRACE_EVENT_API_CLASS_EXPORT base::debug::TraceEventSyntheticDelay*
- GetOrCreateDelay(const char* name, base::subtle::AtomicWord* impl_ptr);
-
-} // namespace trace_event_internal
-
-#endif /* BASE_DEBUG_TRACE_EVENT_SYNTHETIC_DELAY_H_ */
+#endif // BASE_DEBUG_TRACE_EVENT_SYNTHETIC_DELAY_H_
« no previous file with comments | « base/debug/trace_event_memory_unittest.cc ('k') | base/debug/trace_event_synthetic_delay.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698