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