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()12SystemMetrics::SystemMetrics() { 13 committed_memory_ = 0; 14 } 15 Sample()16SystemMetrics 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() const31scoped_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()46double 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()55int ProcessMetrics::GetIdleWakeupsPerSecond() { 56 NOTIMPLEMENTED(); // http://crbug.com/20488 57 return 0; 58 } 59 #endif // !defined(OS_MACOSX) 60 61 } // namespace base 62