|  | // 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_ |