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

Side by Side Diff: base/process_util_linux.cc

Issue 179028: Revert "Fix a ton of compiler warnings." (Closed)
Patch Set: Created 11 years, 3 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
« no previous file with comments | « base/multiprocess_test.h ('k') | base/process_util_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2008 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 "base/process_util.h" 5 #include "base/process_util.h"
6 6
7 #include <ctype.h> 7 #include <ctype.h>
8 #include <dirent.h> 8 #include <dirent.h>
9 #include <fcntl.h> 9 #include <fcntl.h>
10 #include <sys/types.h> 10 #include <sys/types.h>
11 #include <sys/wait.h> 11 #include <sys/wait.h>
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 // Private and Shared working set sizes are obtained from /proc/<pid>/smaps, 252 // Private and Shared working set sizes are obtained from /proc/<pid>/smaps,
253 // as in http://www.pixelbeat.org/scripts/ps_mem.py 253 // as in http://www.pixelbeat.org/scripts/ps_mem.py
254 bool ProcessMetrics::GetWorkingSetKBytes(WorkingSetKBytes* ws_usage) const { 254 bool ProcessMetrics::GetWorkingSetKBytes(WorkingSetKBytes* ws_usage) const {
255 FilePath stat_file = 255 FilePath stat_file =
256 FilePath("/proc").Append(IntToString(process_)).Append("smaps"); 256 FilePath("/proc").Append(IntToString(process_)).Append("smaps");
257 std::string smaps; 257 std::string smaps;
258 int shared_kb = 0; 258 int shared_kb = 0;
259 int private_kb = 0; 259 int private_kb = 0;
260 int pss_kb = 0; 260 int pss_kb = 0;
261 bool have_pss = false; 261 bool have_pss = false;
262 const int kPssAdjust = 0.5;
262 if (!file_util::ReadFileToString(stat_file, &smaps)) 263 if (!file_util::ReadFileToString(stat_file, &smaps))
263 return false; 264 return false;
264 265
265 StringTokenizer tokenizer(smaps, ":\n"); 266 StringTokenizer tokenizer(smaps, ":\n");
266 ParsingState state = KEY_NAME; 267 ParsingState state = KEY_NAME;
267 std::string last_key_name; 268 std::string last_key_name;
268 while (tokenizer.GetNext()) { 269 while (tokenizer.GetNext()) {
269 switch (state) { 270 switch (state) {
270 case KEY_NAME: 271 case KEY_NAME:
271 last_key_name = tokenizer.token(); 272 last_key_name = tokenizer.token();
272 state = KEY_VALUE; 273 state = KEY_VALUE;
273 break; 274 break;
274 case KEY_VALUE: 275 case KEY_VALUE:
275 if (last_key_name.empty()) { 276 if (last_key_name.empty()) {
276 NOTREACHED(); 277 NOTREACHED();
277 return false; 278 return false;
278 } 279 }
279 if (StartsWithASCII(last_key_name, "Shared_", 1)) { 280 if (StartsWithASCII(last_key_name, "Shared_", 1)) {
280 shared_kb += StringToInt(tokenizer.token()); 281 shared_kb += StringToInt(tokenizer.token());
281 } else if (StartsWithASCII(last_key_name, "Private_", 1)) { 282 } else if (StartsWithASCII(last_key_name, "Private_", 1)) {
282 private_kb += StringToInt(tokenizer.token()); 283 private_kb += StringToInt(tokenizer.token());
283 } else if (StartsWithASCII(last_key_name, "Pss", 1)) { 284 } else if (StartsWithASCII(last_key_name, "Pss", 1)) {
284 have_pss = true; 285 have_pss = true;
285 pss_kb += StringToInt(tokenizer.token()); 286 pss_kb += StringToInt(tokenizer.token()) + kPssAdjust;
286 } 287 }
287 state = KEY_NAME; 288 state = KEY_NAME;
288 break; 289 break;
289 } 290 }
290 } 291 }
291 ws_usage->priv = private_kb; 292 ws_usage->priv = private_kb;
292 // Sharable is not calculated, as it does not provide interesting data. 293 // Sharable is not calculated, as it does not provide interesting data.
293 ws_usage->shareable = 0; 294 ws_usage->shareable = 0;
294 if (have_pss) { 295 if (have_pss) {
295 ws_usage->shared = pss_kb - private_kb; 296 ws_usage->shared = pss_kb - private_kb;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 (*io_counters).WriteTransferCount = StringToInt64(tokenizer.token()); 334 (*io_counters).WriteTransferCount = StringToInt64(tokenizer.token());
334 } 335 }
335 state = KEY_NAME; 336 state = KEY_NAME;
336 break; 337 break;
337 } 338 }
338 } 339 }
339 return true; 340 return true;
340 } 341 }
341 342
342 } // namespace base 343 } // namespace base
OLDNEW
« no previous file with comments | « base/multiprocess_test.h ('k') | base/process_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698