172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// found in the LICENSE file.
472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#ifndef BASE_DEBUG_PROFILER_H
672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#define BASE_DEBUG_PROFILER_H
772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#pragma once
872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include <string>
1072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
1172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// The Profiler functions allow usage of the underlying sampling based
1272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// profiler. If the application has not been built with the necessary
1372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// flags (-DENABLE_PROFILING and not -DNO_TCMALLOC) then these functions
1472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// are noops.
1572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsennamespace base {
1672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsennamespace debug {
1772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
1872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Start profiling with the supplied name.
1972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// {pid} will be replaced by the process' pid and {count} will be replaced
2072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// by the count of the profile run (starts at 1 with each process).
2172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid StartProfiling(const std::string& name);
2272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
2372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Stop profiling and write out data.
2472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid StopProfiling();
2572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
2672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Force data to be written to file.
2772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid FlushProfiling();
2872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
2972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Returns true if process is being profiled.
3072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenbool BeingProfiled();
3172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}  // namespace debug
3372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}  // namespace base
3472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
3572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#endif  // BASE_DEBUG_DEBUGGER_H
36