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_DUMP_PROVIDER_H_
      6 #define BASE_TRACE_EVENT_PROCESS_MEMORY_MAPS_DUMP_PROVIDER_H_
      7 
      8 #include "base/gtest_prod_util.h"
      9 #include "base/macros.h"
     10 #include "base/memory/singleton.h"
     11 #include "base/trace_event/memory_dump_provider.h"
     12 #include "build/build_config.h"
     13 
     14 namespace base {
     15 namespace trace_event {
     16 
     17 // Dump provider which collects process-wide memory stats.
     18 class BASE_EXPORT ProcessMemoryMapsDumpProvider : public MemoryDumpProvider {
     19  public:
     20   static ProcessMemoryMapsDumpProvider* GetInstance();
     21 
     22   // MemoryDumpProvider implementation.
     23   bool OnMemoryDump(const MemoryDumpArgs& args,
     24                     ProcessMemoryDump* pmd) override;
     25 
     26  private:
     27   friend struct DefaultSingletonTraits<ProcessMemoryMapsDumpProvider>;
     28   FRIEND_TEST_ALL_PREFIXES(ProcessMemoryMapsDumpProviderTest, ParseProcSmaps);
     29 
     30   static FILE* proc_smaps_for_testing;
     31 
     32   ProcessMemoryMapsDumpProvider();
     33   ~ProcessMemoryMapsDumpProvider() override;
     34 
     35   DISALLOW_COPY_AND_ASSIGN(ProcessMemoryMapsDumpProvider);
     36 };
     37 
     38 }  // namespace trace_event
     39 }  // namespace base
     40 
     41 #endif  // BASE_TRACE_EVENT_PROCESS_MEMORY_MAPS_DUMP_PROVIDER_H_
     42