• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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 #include "base/process/process_metrics.h"
6 
7 #include "base/values.h"
8 
9 namespace base {
10 
SystemMetrics()11 SystemMetrics::SystemMetrics() {
12   committed_memory_ = 0;
13 }
14 
Sample()15 SystemMetrics SystemMetrics::Sample() {
16   SystemMetrics system_metrics;
17 
18   system_metrics.committed_memory_ = GetSystemCommitCharge();
19 #if defined(OS_LINUX) || defined(OS_ANDROID)
20   GetSystemMemoryInfo(&system_metrics.memory_info_);
21   GetSystemDiskInfo(&system_metrics.disk_info_);
22 #endif
23 #if defined(OS_CHROMEOS)
24   GetSwapInfo(&system_metrics.swap_info_);
25 #endif
26 
27   return system_metrics;
28 }
29 
ToValue() const30 scoped_ptr<Value> SystemMetrics::ToValue() const {
31   scoped_ptr<DictionaryValue> res(new DictionaryValue());
32 
33   res->SetInteger("committed_memory", static_cast<int>(committed_memory_));
34 #if defined(OS_LINUX) || defined(OS_ANDROID)
35   res->Set("meminfo", memory_info_.ToValue().release());
36   res->Set("diskinfo", disk_info_.ToValue().release());
37 #endif
38 #if defined(OS_CHROMEOS)
39   res->Set("swapinfo", swap_info_.ToValue().release());
40 #endif
41 
42   return res.PassAs<Value>();
43 }
44 
GetPlatformIndependentCPUUsage()45 double ProcessMetrics::GetPlatformIndependentCPUUsage() {
46 #if defined(OS_WIN)
47   return GetCPUUsage() * processor_count_;
48 #else
49   return GetCPUUsage();
50 #endif
51 }
52 
53 }  // namespace base
54