1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_COMMON_PROFILING_H_
6#define CHROME_COMMON_PROFILING_H_
7
8#include "build/build_config.h"
9
10#include "base/basictypes.h"
11#include "base/debug/profiler.h"
12
13// The Profiling class manages the interaction with a sampling based profiler.
14// Its function is controlled by the kProfilingAtStart, kProfilingFile, and
15// kProfilingFlush command line values.
16// All of the API should only be called from the main thread of the process.
17class Profiling {
18 public:
19  // Called early in a process' life to allow profiling of startup time.
20  // the presence of kProfilingAtStart is checked.
21  static void ProcessStarted();
22
23  // Start profiling.
24  static void Start();
25
26  // Stop profiling and write out profiling file.
27  static void Stop();
28
29  // Returns true if the process is being profiled.
30  static bool BeingProfiled();
31
32  // Toggle profiling on/off.
33  static void Toggle();
34
35 private:
36  // Do not instantiate this class.
37  Profiling();
38
39  DISALLOW_COPY_AND_ASSIGN(Profiling);
40};
41
42#endif  // CHROME_COMMON_PROFILING_H_
43