traced_power_mode.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // Copyright 2021 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. #ifndef COMPONENTS_POWER_SCHEDULER_TRACED_POWER_MODE_H_
  5. #define COMPONENTS_POWER_SCHEDULER_TRACED_POWER_MODE_H_
  6. #include <atomic>
  7. #include "base/memory/raw_ptr.h"
  8. #include "components/power_scheduler/power_mode.h"
  9. namespace power_scheduler {
  10. // Keeps track of a PowerMode and traces its value transitions. Not thread-safe.
  11. class TracedPowerMode {
  12. public:
  13. TracedPowerMode(const char* name, const void* trace_id);
  14. ~TracedPowerMode();
  15. TracedPowerMode(const TracedPowerMode&) = delete;
  16. TracedPowerMode(TracedPowerMode&&);
  17. void OnTraceLogEnabled();
  18. void OnIncrementalStateCleared();
  19. void SetMode(PowerMode);
  20. PowerMode mode() const { return mode_; }
  21. private:
  22. const char* name_;
  23. raw_ptr<const void> trace_id_;
  24. PowerMode mode_;
  25. bool incremental_state_cleared_ = false;
  26. };
  27. } // namespace power_scheduler
  28. #endif // COMPONENTS_POWER_SCHEDULER_TRACED_POWER_MODE_H_