blob: 5e78ef1dba6bbfae841a60ab6910caf4e4e81199 [file] [log] [blame]
// Copyright 2016 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.
#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 Process {
UNKNOWN_PROCESS,
BROWSER_PROCESS,
RENDERER_PROCESS,
GPU_PROCESS,
UTILITY_PROCESS,
ZYGOTE_PROCESS,
SANDBOX_HELPER_PROCESS,
PPAPI_PLUGIN_PROCESS,
PPAPI_BROKER_PROCESS
};
// The thread from which the collection occurred.
enum Thread {
UNKNOWN_THREAD,
// Each process has a 'main thread'. In the Browser process, the 'main
// thread' is also often called the 'UI thread'.
MAIN_THREAD,
IO_THREAD,
// Compositor thread (can be in both renderer and gpu processes).
COMPOSITOR_THREAD,
};
// The event that triggered the profile collection.
enum Trigger {
UNKNOWN,
PROCESS_STARTUP,
JANKY_TASK,
THREAD_HUNG,
PERIODIC_COLLECTION,
TRIGGER_LAST = PERIODIC_COLLECTION
};
// The default constructor is required for mojo and should not be used
// otherwise. A valid trigger should always be specified.
constexpr CallStackProfileParams()
: CallStackProfileParams(UNKNOWN_PROCESS, UNKNOWN_THREAD, UNKNOWN) {}
constexpr CallStackProfileParams(Process process,
Thread thread,
Trigger trigger)
: process(process), thread(thread), trigger(trigger) {}
// The collection process.
Process process;
// The collection thread.
Thread thread;
// The triggering event.
Trigger trigger;
};
} // namespace metrics
#endif // COMPONENTS_METRICS_CALL_STACK_PROFILE_PARAMS_H_