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