1 // Copyright 2019 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 5 #ifndef CHROME_BROWSER_CHROMEOS_ARC_TRACING_ARC_VALUE_EVENT_H_ 6 #define CHROME_BROWSER_CHROMEOS_ARC_TRACING_ARC_VALUE_EVENT_H_ 7 8 #include <ostream> 9 #include <vector> 10 11 #include "base/values.h" 12 13 namespace arc { 14 15 // Tracing event with a value. 16 struct ArcValueEvent { 17 enum class Type { 18 kMemTotal, 19 kMemUsed, 20 kSwapRead, 21 kSwapWrite, 22 kSwapWait, 23 kGemObjects, 24 kGemSize, 25 kGpuFrequency, 26 kCpuTemperature, 27 kCpuFrequency, 28 kCpuPower, 29 kGpuPower, 30 kMemoryPower, 31 kPackagePowerConstraint, 32 kWakenessfullMode, 33 kThrottlingMode, 34 }; 35 36 ArcValueEvent(int64_t timestamp, Type type, int value); 37 38 bool operator==(const ArcValueEvent& other) const; 39 40 uint64_t timestamp; 41 Type type; 42 /** 43 * kMemTotal - kb. 44 * kMemUsed - kb. 45 * kSwapRead - number of sectors. 46 * kSwapWrite - number of sectors. 47 * kSwapWait - milliseconds. 48 * kGemObjects - number of objects 49 * kGemSize - kb 50 * kGpuFrequency - mhz 51 * kCpuTemperature - celsius * 1000 52 * kCpuFrequency - khz 53 * kCpuPower - milli-watts 54 * kGpuPower - milli-watts 55 * kMemporyPower - milli-watts 56 * kPackagePowerConstraint - milli-watts 57 */ 58 int value; 59 }; 60 61 using ValueEvents = std::vector<ArcValueEvent>; 62 63 // Serializes value events into |base::ListValue|. 64 base::ListValue SerializeValueEvents(const ValueEvents& value_events); 65 66 // Loads value events from |base::ListValue|. Returns true in case value 67 // events were loaded successfully. 68 bool LoadValueEvents(const base::Value* value, ValueEvents* value_events); 69 70 std::ostream& operator<<(std::ostream& os, ArcValueEvent::Type event_type); 71 72 } // namespace arc 73 74 #endif // CHROME_BROWSER_CHROMEOS_ARC_TRACING_ARC_VALUE_EVENT_H_ 75