// Copyright 2021 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_SYSTEM_CPU_CPU_PROBE_H_ #define COMPONENTS_SYSTEM_CPU_CPU_PROBE_H_ #include <memory> #include <optional> #include "base/functional/callback_forward.h" #include "base/functional/callback_helpers.h" #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" #include "base/thread_annotations.h" #include "components/system_cpu/cpu_sample.h" namespace system_cpu { // Interface for retrieving the CPU load from the underlying OS on request. // // Operating systems differ in how they summarize the info needed to derive the // compute pressure state. For example, the Linux kernel exposes CPU utilization // as a summary over the device's entire uptime, while the Windows WMI exposes // CPU utilization over the last second. // // This interface abstracts over the differences with a unified model where the // implementation is responsible for integrating over the time between two // Update() calls. // // Callers must call StartSampling() to establish a baseline. After this they // can call RequestUpdate(), generally on a fixed schedule. Each call returns // the total CPU usage of processors since the baseline or the last // RequestUpdate() call. // // Instances are not thread-safe and should be used on the same sequence. class CpuProbe { … }; } // namespace system_cpu #endif // COMPONENTS_SYSTEM_CPU_CPU_PROBE_H_