Chromium Code Reviews| Index: tools/ThermalManager.h |
| diff --git a/tools/ThermalManager.h b/tools/ThermalManager.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..76d9fa127acd715406bdb4c21872974eae259f9b |
| --- /dev/null |
| +++ b/tools/ThermalManager.h |
| @@ -0,0 +1,59 @@ |
| +/* |
| + * Copyright 2016 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +#ifndef ThermalManager_DEFINED |
| +#define ThermalManager_DEFINED |
| + |
| +#include "SkString.h" |
| +#include "SkTArray.h" |
| + |
| +#if defined(SK_BUILD_FOR_ANDROID) || defined(SK_BUILD_FOR_UNIX) |
| +# define THERMAL_MANAGER_SUPPORTED |
| +#endif |
| + |
| +#ifdef THERMAL_MANAGER_SUPPORTED |
| + |
| +/* |
| + * This simple class monitors the thermal part of sysfs to ensure we don't trigger thermal events |
| + */ |
| + |
| +class ThermalManager { |
| +public: |
| + ThermalManager(int32_t threshold = 1); |
|
djsollen
2016/02/08 20:59:33
don't provide defaults if the code will never use
joshualitt
2016/02/09 13:51:54
Acknowledged.
|
| + |
| + bool coolOffIfNecessary(uint32_t sleepIntervalMs = 10, uint32_t timeoutMs = 1000); |
|
djsollen
2016/02/08 20:59:33
since these never change why not pass them in the
joshualitt
2016/02/09 13:51:54
Acknowledged.
|
| + |
| +private: |
| + static int32_t OpenFileAndReadInt32(const char* path); |
| + |
| + // current temperature can be read from /thermalZonePath/temp |
| + static int32_t GetTemp(SkString thermalZonePath) { |
| + SkString temperatureFilePath(thermalZonePath); |
| + temperatureFilePath.appendf("/temp"); |
| + return OpenFileAndReadInt32(temperatureFilePath.c_str()); |
| + } |
| + |
| + struct TripPoint { |
| + TripPoint(SkString thermalZoneRoot, SkString pointName, int32_t threshold); |
| + |
| + bool willTrip(); |
| + |
| + SkString fThermalZoneRoot; |
| + SkString fPointName; |
| + int32_t fBase; |
| + int32_t fPoint; |
| + int32_t fThreshold; |
| + |
| + // Certain trip points seem to start tripped. For example, I have seen trip points of 0 or |
| + // negative numbers. |
| + bool fDisabled; |
| + }; |
| + |
| + SkTArray<TripPoint> fTripPoints; |
| +}; |
| +#endif |
| +#endif |