• 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/logging.h"
8 #include "base/values.h"
9 
10 namespace base {
11 
SystemMetrics()12 SystemMetrics::SystemMetrics() {
13   committed_memory_ = 0;
14 }
15 
Sample()16 SystemMetrics SystemMetrics::Sample() {
17   SystemMetrics system_metrics;
18 
19   system_metrics.committed_memory_ = GetSystemCommitCharge();
20 #if defined(OS_LINUX) || defined(OS_ANDROID)
21   GetSystemMemoryInfo(&system_metrics.memory_info_);
22   GetSystemDiskInfo(&system_metrics.disk_info_);
23 #endif
24 #if defined(OS_CHROMEOS)
25   GetSwapInfo(&system_metrics.swap_info_);
26 #endif
27 
28   return system_metrics;
29 }
30 
ToValue() const31 scoped_ptr<Value> SystemMetrics::ToValue() const {
32   scoped_ptr<DictionaryValue> res(new DictionaryValue());
33 
34   res->SetInteger("committed_memory", static_cast<int>(committed_memory_));
35 #if defined(OS_LINUX) || defined(OS_ANDROID)
36   res->Set("meminfo", memory_info_.ToValue().release());
37   res->Set("diskinfo", disk_info_.ToValue().release());
38 #endif
39 #if defined(OS_CHROMEOS)
40   res->Set("swapinfo", swap_info_.ToValue().release());
41 #endif
42 
43   return res.PassAs<Value>();
44 }
45 
GetPlatformIndependentCPUUsage()46 double ProcessMetrics::GetPlatformIndependentCPUUsage() {
47 #if defined(OS_WIN)
48   return GetCPUUsage() * processor_count_;
49 #else
50   return GetCPUUsage();
51 #endif
52 }
53 
54 #if !defined(OS_MACOSX)
GetIdleWakeupsPerSecond()55 int ProcessMetrics::GetIdleWakeupsPerSecond() {
56   NOTIMPLEMENTED();  // http://crbug.com/20488
57   return 0;
58 }
59 #endif  // !defined(OS_MACOSX)
60 
61 }  // namespace base
62