Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(614)

Side by Side Diff: chrome/browser/chromeos/power/cpu_data_collector.cc

Issue 1547093002: Switch to standard integer types in chrome/browser/chromeos/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/power/cpu_data_collector.h" 5 #include "chrome/browser/chromeos/power/cpu_data_collector.h"
6 6
7 #include <stddef.h>
8
7 #include <vector> 9 #include <vector>
8 10
9 #include "base/bind.h" 11 #include "base/bind.h"
10 #include "base/files/file_util.h" 12 #include "base/files/file_util.h"
11 #include "base/logging.h" 13 #include "base/logging.h"
12 #include "base/strings/string_number_conversions.h" 14 #include "base/strings/string_number_conversions.h"
13 #include "base/strings/string_split.h" 15 #include "base/strings/string_split.h"
14 #include "base/strings/string_util.h" 16 #include "base/strings/string_util.h"
15 #include "base/strings/stringprintf.h" 17 #include "base/strings/stringprintf.h"
16 #include "base/sys_info.h" 18 #include "base/sys_info.h"
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 name_file_format.c_str(), cpu, state_count); 141 name_file_format.c_str(), cpu, state_count);
140 DCHECK(base::PathExists(base::FilePath(name_file_path))); 142 DCHECK(base::PathExists(base::FilePath(name_file_path)));
141 143
142 const std::string time_file_format = base::StringPrintf( 144 const std::string time_file_format = base::StringPrintf(
143 "%s%s", kCpuDataPathBase, kCpuIdleStateTimePathSuffixFormat); 145 "%s%s", kCpuDataPathBase, kCpuIdleStateTimePathSuffixFormat);
144 const std::string time_file_path = base::StringPrintf( 146 const std::string time_file_path = base::StringPrintf(
145 time_file_format.c_str(), cpu, state_count); 147 time_file_format.c_str(), cpu, state_count);
146 DCHECK(base::PathExists(base::FilePath(time_file_path))); 148 DCHECK(base::PathExists(base::FilePath(time_file_path)));
147 149
148 std::string state_name, occupancy_time_string; 150 std::string state_name, occupancy_time_string;
149 int64 occupancy_time_usec; 151 int64_t occupancy_time_usec;
150 if (!base::ReadFileToString(base::FilePath(name_file_path), 152 if (!base::ReadFileToString(base::FilePath(name_file_path),
151 &state_name) || 153 &state_name) ||
152 !base::ReadFileToString(base::FilePath(time_file_path), 154 !base::ReadFileToString(base::FilePath(time_file_path),
153 &occupancy_time_string)) { 155 &occupancy_time_string)) {
154 // If an error occurs reading/parsing single state data, drop all the 156 // If an error occurs reading/parsing single state data, drop all the
155 // samples as an incomplete sample can mislead consumers of this 157 // samples as an incomplete sample can mislead consumers of this
156 // sample. 158 // sample.
157 LOG(ERROR) << "Error reading idle state from " 159 LOG(ERROR) << "Error reading idle state from "
158 << idle_state_dir << ". Dropping sample."; 160 << idle_state_dir << ". Dropping sample.";
159 idle_samples->clear(); 161 idle_samples->clear();
160 return; 162 return;
161 } 163 }
162 164
163 base::TrimWhitespaceASCII(state_name, base::TRIM_ALL, &state_name); 165 base::TrimWhitespaceASCII(state_name, base::TRIM_ALL, &state_name);
164 base::TrimWhitespaceASCII(occupancy_time_string, base::TRIM_ALL, 166 base::TrimWhitespaceASCII(occupancy_time_string, base::TRIM_ALL,
165 &occupancy_time_string); 167 &occupancy_time_string);
166 if (base::StringToInt64(occupancy_time_string, &occupancy_time_usec)) { 168 if (base::StringToInt64(occupancy_time_string, &occupancy_time_usec)) {
167 // idle state occupancy time in sysfs is recorded in microseconds. 169 // idle state occupancy time in sysfs is recorded in microseconds.
168 int64 time_in_state_ms = occupancy_time_usec / 1000; 170 int64_t time_in_state_ms = occupancy_time_usec / 1000;
169 size_t index = IndexInVector(state_name, cpu_idle_state_names); 171 size_t index = IndexInVector(state_name, cpu_idle_state_names);
170 if (index >= idle_sample.time_in_state.size()) 172 if (index >= idle_sample.time_in_state.size())
171 idle_sample.time_in_state.resize(index + 1); 173 idle_sample.time_in_state.resize(index + 1);
172 idle_sample.time_in_state[index] = time_in_state_ms; 174 idle_sample.time_in_state[index] = time_in_state_ms;
173 } else { 175 } else {
174 LOG(ERROR) << "Bad format in " << time_file_path << ". " 176 LOG(ERROR) << "Bad format in " << time_file_path << ". "
175 << "Dropping sample."; 177 << "Dropping sample.";
176 idle_samples->clear(); 178 idle_samples->clear();
177 return; 179 return;
178 } 180 }
179 } 181 }
180 } 182 }
181 183
182 idle_samples->push_back(idle_sample); 184 idle_samples->push_back(idle_sample);
183 } 185 }
184 186
185 // If there was an interruption in sampling (like system suspended), 187 // If there was an interruption in sampling (like system suspended),
186 // discard the samples! 188 // discard the samples!
187 int64 delay = 189 int64_t delay =
188 base::TimeDelta(base::Time::Now() - start_time).InMilliseconds(); 190 base::TimeDelta(base::Time::Now() - start_time).InMilliseconds();
189 if (delay > kSamplingDurationLimitMs) { 191 if (delay > kSamplingDurationLimitMs) {
190 idle_samples->clear(); 192 idle_samples->clear();
191 LOG(WARNING) << "Dropped an idle state sample due to excessive time delay: " 193 LOG(WARNING) << "Dropped an idle state sample due to excessive time delay: "
192 << delay << "milliseconds."; 194 << delay << "milliseconds.";
193 } 195 }
194 } 196 }
195 197
196 bool ReadCpuFreqFromOldFile( 198 bool ReadCpuFreqFromOldFile(
197 const std::string& path, 199 const std::string& path,
(...skipping 11 matching lines...) Expand all
209 211
210 std::vector<base::StringPiece> lines = base::SplitStringPiece( 212 std::vector<base::StringPiece> lines = base::SplitStringPiece(
211 time_in_state_string, "\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); 213 time_in_state_string, "\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
212 // The last line could end with '\n'. Ignore the last empty string in 214 // The last line could end with '\n'. Ignore the last empty string in
213 // such cases. 215 // such cases.
214 size_t state_count = lines.size(); 216 size_t state_count = lines.size();
215 if (state_count > 0 && lines.back().empty()) 217 if (state_count > 0 && lines.back().empty())
216 state_count -= 1; 218 state_count -= 1;
217 for (size_t state = 0; state < state_count; ++state) { 219 for (size_t state = 0; state < state_count; ++state) {
218 int freq_in_khz; 220 int freq_in_khz;
219 int64 occupancy_time_centisecond; 221 int64_t occupancy_time_centisecond;
220 222
221 // Occupancy of each state is in the format "<state> <time>" 223 // Occupancy of each state is in the format "<state> <time>"
222 std::vector<base::StringPiece> pair = base::SplitStringPiece( 224 std::vector<base::StringPiece> pair = base::SplitStringPiece(
223 lines[state], " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); 225 lines[state], " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
224 if (pair.size() == 2 && base::StringToInt(pair[0], &freq_in_khz) && 226 if (pair.size() == 2 && base::StringToInt(pair[0], &freq_in_khz) &&
225 base::StringToInt64(pair[1], &occupancy_time_centisecond)) { 227 base::StringToInt64(pair[1], &occupancy_time_centisecond)) {
226 const std::string state_name = base::IntToString(freq_in_khz / 1000); 228 const std::string state_name = base::IntToString(freq_in_khz / 1000);
227 size_t index = IndexInVector(state_name, cpu_freq_state_names); 229 size_t index = IndexInVector(state_name, cpu_freq_state_names);
228 if (index >= freq_sample->time_in_state.size()) 230 if (index >= freq_sample->time_in_state.size())
229 freq_sample->time_in_state.resize(index + 1); 231 freq_sample->time_in_state.resize(index + 1);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 freq_samples->clear(); 281 freq_samples->clear();
280 return; 282 return;
281 } 283 }
282 } 284 }
283 285
284 freq_samples->push_back(freq_sample); 286 freq_samples->push_back(freq_sample);
285 } 287 }
286 288
287 // If there was an interruption in sampling (like system suspended), 289 // If there was an interruption in sampling (like system suspended),
288 // discard the samples! 290 // discard the samples!
289 int64 delay = 291 int64_t delay =
290 base::TimeDelta(base::Time::Now() - start_time).InMilliseconds(); 292 base::TimeDelta(base::Time::Now() - start_time).InMilliseconds();
291 if (delay > kSamplingDurationLimitMs) { 293 if (delay > kSamplingDurationLimitMs) {
292 freq_samples->clear(); 294 freq_samples->clear();
293 LOG(WARNING) << "Dropped a freq state sample due to excessive time delay: " 295 LOG(WARNING) << "Dropped a freq state sample due to excessive time delay: "
294 << delay << "milliseconds."; 296 << delay << "milliseconds.";
295 } 297 }
296 } 298 }
297 299
298 // Samples CPU idle and CPU freq data from sysfs. This function should run on 300 // Samples CPU idle and CPU freq data from sysfs. This function should run on
299 // the blocking pool as reading from sysfs is a blocking task. Elements at 301 // the blocking pool as reading from sysfs is a blocking task. Elements at
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 } 439 }
438 440
439 CpuDataCollector::StateOccupancySample::StateOccupancySample() 441 CpuDataCollector::StateOccupancySample::StateOccupancySample()
440 : cpu_online(false) { 442 : cpu_online(false) {
441 } 443 }
442 444
443 CpuDataCollector::StateOccupancySample::~StateOccupancySample() { 445 CpuDataCollector::StateOccupancySample::~StateOccupancySample() {
444 } 446 }
445 447
446 } // namespace chromeos 448 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/power/cpu_data_collector.h ('k') | chrome/browser/chromeos/power/extension_event_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698