| // Copyright (c) 2012 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. | 
 |  | 
 | // This is a glue file, which allows third party code to call into our profiler | 
 | // without having to include most any functions from base. | 
 |  | 
 | #ifndef BASE_PROFILER_ALTERNATE_TIMER_H_ | 
 | #define BASE_PROFILER_ALTERNATE_TIMER_H_ | 
 |  | 
 | #include "base/base_export.h" | 
 |  | 
 | namespace tracked_objects { | 
 |  | 
 | enum TimeSourceType { | 
 |   TIME_SOURCE_TYPE_WALL_TIME, | 
 |   TIME_SOURCE_TYPE_TCMALLOC | 
 | }; | 
 |  | 
 | // Provide type for an alternate timer function. | 
 | typedef unsigned int NowFunction(); | 
 |  | 
 | // Environment variable name that is used to activate alternate timer profiling | 
 | // (such as using TCMalloc allocations to provide a pseudo-timer) for tasks | 
 | // instead of wall clock profiling. | 
 | BASE_EXPORT extern const char kAlternateProfilerTime[]; | 
 |  | 
 | // Set an alternate timer function to replace the OS time function when | 
 | // profiling.  Typically this is called by an allocator that is providing a | 
 | // function that indicates how much memory has been allocated on any given | 
 | // thread. | 
 | BASE_EXPORT void SetAlternateTimeSource(NowFunction* now_function, | 
 |                                         TimeSourceType type); | 
 |  | 
 | // Gets the pointer to a function that was set via SetAlternateTimeSource(). | 
 | // Returns NULL if no set was done prior to calling GetAlternateTimeSource. | 
 | NowFunction* GetAlternateTimeSource(); | 
 |  | 
 | // Returns the type of the currently set time source. | 
 | BASE_EXPORT TimeSourceType GetTimeSourceType(); | 
 |  | 
 | }  // namespace tracked_objects | 
 |  | 
 | #endif  // BASE_PROFILER_ALTERNATE_TIMER_H_ |