process_metrics.cc revision 58537e28ecd584eab876aee8be7156509866d23a
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 9namespace base { 10 11SystemMetrics::SystemMetrics() { 12 committed_memory_ = 0; 13} 14 15SystemMetrics 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 30scoped_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 45} // namespace base 46