blob: b06a85037a57a2a917b5b1110bcda70202d45381 [file] [log] [blame]
Benjamin Lerman507bb1a2015-02-26 13:15:17 +01001// Copyright 2015 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#ifndef BASE_TRACE_EVENT_PROCESS_MEMORY_MAPS_H_
6#define BASE_TRACE_EVENT_PROCESS_MEMORY_MAPS_H_
7
8#include <string>
9#include <vector>
10
11#include "base/base_export.h"
12#include "base/basictypes.h"
13
14namespace base {
15namespace trace_event {
16
17class TracedValue;
18
19// Data model for process-wide memory stats.
20class BASE_EXPORT ProcessMemoryMaps {
21 public:
Viet-Trung Luu235cf3d2015-06-11 10:01:25 -070022 struct BASE_EXPORT VMRegion {
Benjamin Lerman507bb1a2015-02-26 13:15:17 +010023 static const uint32 kProtectionFlagsRead;
24 static const uint32 kProtectionFlagsWrite;
25 static const uint32 kProtectionFlagsExec;
26
Viet-Trung Luu235cf3d2015-06-11 10:01:25 -070027 VMRegion();
28
Benjamin Lerman507bb1a2015-02-26 13:15:17 +010029 uint64 start_address;
30 uint64 size_in_bytes;
31 uint32 protection_flags;
32 std::string mapped_file;
Alhaad Gokhale4f513072015-03-24 10:49:34 -070033
Viet-Trung Luu235cf3d2015-06-11 10:01:25 -070034 // private_dirty_resident + private_clean_resident + shared_dirty_resident +
35 // shared_clean_resident = resident set size.
36 uint64 byte_stats_private_dirty_resident;
37 uint64 byte_stats_private_clean_resident;
38 uint64 byte_stats_shared_dirty_resident;
39 uint64 byte_stats_shared_clean_resident;
40
41 uint64 byte_stats_swapped;
Alhaad Gokhale4f513072015-03-24 10:49:34 -070042
43 // For multiprocess accounting.
44 uint64 byte_stats_proportional_resident;
Benjamin Lerman507bb1a2015-02-26 13:15:17 +010045 };
46
47 ProcessMemoryMaps();
48 ~ProcessMemoryMaps();
49
50 void AddVMRegion(const VMRegion& region) { vm_regions_.push_back(region); }
51 const std::vector<VMRegion>& vm_regions() const { return vm_regions_; }
52
53 // Called at trace generation time to populate the TracedValue.
54 void AsValueInto(TracedValue* value) const;
55
Viet-Trung Luu235cf3d2015-06-11 10:01:25 -070056 // Clears up all the VMRegion(s) stored.
57 void Clear();
58
Benjamin Lerman507bb1a2015-02-26 13:15:17 +010059 private:
60 std::vector<VMRegion> vm_regions_;
61
62 DISALLOW_COPY_AND_ASSIGN(ProcessMemoryMaps);
63};
64
65} // namespace trace_event
66} // namespace base
67
68#endif // BASE_TRACE_EVENT_PROCESS_MEMORY_MAPS_H_