89 lines
2.1 KiB
C
89 lines
2.1 KiB
C
|
|
// Copyright 2016 The Chromium Authors
|
||
|
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
|
// found in the LICENSE file.
|
||
|
|
|
||
|
|
#ifndef COMPONENTS_METRICS_CALL_STACK_PROFILE_PARAMS_H_
|
||
|
|
#define COMPONENTS_METRICS_CALL_STACK_PROFILE_PARAMS_H_
|
||
|
|
|
||
|
|
#include "base/time/time.h"
|
||
|
|
|
||
|
|
namespace metrics {
|
||
|
|
|
||
|
|
// Parameters to pass back to the metrics provider.
|
||
|
|
struct CallStackProfileParams {
|
||
|
|
// The process in which the collection occurred.
|
||
|
|
enum class Process {
|
||
|
|
kUnknown,
|
||
|
|
kBrowser,
|
||
|
|
kRenderer,
|
||
|
|
kGpu,
|
||
|
|
kUtility,
|
||
|
|
kZygote,
|
||
|
|
kSandboxHelper,
|
||
|
|
kPpapiPlugin,
|
||
|
|
kNetworkService,
|
||
|
|
|
||
|
|
kMax = kNetworkService,
|
||
|
|
};
|
||
|
|
|
||
|
|
// The thread from which the collection occurred.
|
||
|
|
enum class Thread {
|
||
|
|
kUnknown,
|
||
|
|
|
||
|
|
// Each process has a 'main thread'. In the Browser process, the 'main
|
||
|
|
// thread' is also often called the 'UI thread'.
|
||
|
|
kMain,
|
||
|
|
kIo,
|
||
|
|
|
||
|
|
// Compositor thread (can be in both renderer and gpu processes).
|
||
|
|
kCompositor,
|
||
|
|
|
||
|
|
// Service worker thread.
|
||
|
|
kServiceWorker,
|
||
|
|
|
||
|
|
kMax = kServiceWorker,
|
||
|
|
};
|
||
|
|
|
||
|
|
// The event that triggered the profile collection.
|
||
|
|
enum class Trigger {
|
||
|
|
kUnknown,
|
||
|
|
kProcessStartup,
|
||
|
|
kJankyTask,
|
||
|
|
kThreadHung,
|
||
|
|
kPeriodicCollection,
|
||
|
|
kPeriodicHeapCollection,
|
||
|
|
kLast = kPeriodicHeapCollection
|
||
|
|
};
|
||
|
|
|
||
|
|
// The default constructor is required for mojo and should not be used
|
||
|
|
// otherwise. A valid trigger should always be specified.
|
||
|
|
constexpr CallStackProfileParams() = default;
|
||
|
|
|
||
|
|
constexpr CallStackProfileParams(
|
||
|
|
Process process,
|
||
|
|
Thread thread,
|
||
|
|
Trigger trigger,
|
||
|
|
base::TimeDelta time_offset = base::TimeDelta())
|
||
|
|
: process(process),
|
||
|
|
thread(thread),
|
||
|
|
trigger(trigger),
|
||
|
|
time_offset(time_offset) {}
|
||
|
|
|
||
|
|
// The collection process.
|
||
|
|
Process process = Process::kUnknown;
|
||
|
|
|
||
|
|
// The collection thread.
|
||
|
|
Thread thread = Thread::kUnknown;
|
||
|
|
|
||
|
|
// The triggering event.
|
||
|
|
Trigger trigger = Trigger::kUnknown;
|
||
|
|
|
||
|
|
// The time of the profile, since roughly the start of the process being
|
||
|
|
// profiled. 0 indicates that the time is not reported.
|
||
|
|
base::TimeDelta time_offset;
|
||
|
|
};
|
||
|
|
|
||
|
|
} // namespace metrics
|
||
|
|
|
||
|
|
#endif // COMPONENTS_METRICS_CALL_STACK_PROFILE_PARAMS_H_
|