blob: 377f749f74a1a3e3104f0acdb436f51c90018bc6 [file] [log] [blame]
// 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_