Home | History | Annotate | Download | only in trace_event
      1 // 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 <stdint.h>
      9 
     10 #include <string>
     11 #include <vector>
     12 
     13 #include "base/base_export.h"
     14 #include "base/macros.h"
     15 
     16 namespace base {
     17 namespace trace_event {
     18 
     19 class TracedValue;
     20 
     21 // Data model for process-wide memory stats.
     22 class BASE_EXPORT ProcessMemoryMaps {
     23  public:
     24   struct BASE_EXPORT VMRegion {
     25     static const uint32_t kProtectionFlagsRead;
     26     static const uint32_t kProtectionFlagsWrite;
     27     static const uint32_t kProtectionFlagsExec;
     28 
     29     VMRegion();
     30 
     31     uint64_t start_address;
     32     uint64_t size_in_bytes;
     33     uint32_t protection_flags;
     34     std::string mapped_file;
     35 
     36     // private_dirty_resident + private_clean_resident + shared_dirty_resident +
     37     // shared_clean_resident = resident set size.
     38     uint64_t byte_stats_private_dirty_resident;
     39     uint64_t byte_stats_private_clean_resident;
     40     uint64_t byte_stats_shared_dirty_resident;
     41     uint64_t byte_stats_shared_clean_resident;
     42 
     43     uint64_t byte_stats_swapped;
     44 
     45     // For multiprocess accounting.
     46     uint64_t byte_stats_proportional_resident;
     47   };
     48 
     49   ProcessMemoryMaps();
     50   ~ProcessMemoryMaps();
     51 
     52   void AddVMRegion(const VMRegion& region) { vm_regions_.push_back(region); }
     53   const std::vector<VMRegion>& vm_regions() const { return vm_regions_; }
     54 
     55   // Called at trace generation time to populate the TracedValue.
     56   void AsValueInto(TracedValue* value) const;
     57 
     58   // Clears up all the VMRegion(s) stored.
     59   void Clear();
     60 
     61  private:
     62   std::vector<VMRegion> vm_regions_;
     63 
     64   DISALLOW_COPY_AND_ASSIGN(ProcessMemoryMaps);
     65 };
     66 
     67 }  // namespace trace_event
     68 }  // namespace base
     69 
     70 #endif  // BASE_TRACE_EVENT_PROCESS_MEMORY_MAPS_H_
     71