| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef BASE_TRACE_EVENT_PROCESS_MEMORY_MAPS_H_ |
| #define BASE_TRACE_EVENT_PROCESS_MEMORY_MAPS_H_ |
| |
| #include <stdint.h> |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/base_export.h" |
| #include "base/macros.h" |
| |
| namespace base { |
| namespace trace_event { |
| |
| class TracedValue; |
| |
| // Data model for process-wide memory stats. |
| class BASE_EXPORT ProcessMemoryMaps { |
| public: |
| struct BASE_EXPORT VMRegion { |
| static const uint32_t kProtectionFlagsRead; |
| static const uint32_t kProtectionFlagsWrite; |
| static const uint32_t kProtectionFlagsExec; |
| static const uint32_t kProtectionFlagsMayshare; |
| |
| VMRegion(); |
| VMRegion(const VMRegion& other); |
| |
| uint64_t start_address; |
| uint64_t size_in_bytes; |
| uint32_t protection_flags; |
| std::string mapped_file; |
| |
| // private_dirty_resident + private_clean_resident + shared_dirty_resident + |
| // shared_clean_resident = resident set size. |
| uint64_t byte_stats_private_dirty_resident; |
| uint64_t byte_stats_private_clean_resident; |
| uint64_t byte_stats_shared_dirty_resident; |
| uint64_t byte_stats_shared_clean_resident; |
| |
| uint64_t byte_stats_swapped; |
| |
| // For multiprocess accounting. |
| uint64_t byte_stats_proportional_resident; |
| }; |
| |
| ProcessMemoryMaps(); |
| ~ProcessMemoryMaps(); |
| |
| void AddVMRegion(const VMRegion& region) { vm_regions_.push_back(region); } |
| const std::vector<VMRegion>& vm_regions() const { return vm_regions_; } |
| |
| // Called at trace generation time to populate the TracedValue. |
| void AsValueInto(TracedValue* value) const; |
| |
| // Clears up all the VMRegion(s) stored. |
| void Clear(); |
| |
| private: |
| std::vector<VMRegion> vm_regions_; |
| |
| DISALLOW_COPY_AND_ASSIGN(ProcessMemoryMaps); |
| }; |
| |
| } // namespace trace_event |
| } // namespace base |
| |
| #endif // BASE_TRACE_EVENT_PROCESS_MEMORY_MAPS_H_ |