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