Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(239)

Side by Side Diff: base/trace_event/memory_dump_manager.h

Issue 2895083004: memory-infra: rename service folder to memory_instrumentation (Closed)
Patch Set: comments Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | base/trace_event/memory_dump_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef BASE_TRACE_EVENT_MEMORY_DUMP_MANAGER_H_ 5 #ifndef BASE_TRACE_EVENT_MEMORY_DUMP_MANAGER_H_
6 #define BASE_TRACE_EVENT_MEMORY_DUMP_MANAGER_H_ 6 #define BASE_TRACE_EVENT_MEMORY_DUMP_MANAGER_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <map> 10 #include <map>
11 #include <memory> 11 #include <memory>
12 #include <unordered_set> 12 #include <unordered_set>
13 #include <vector> 13 #include <vector>
14 14
15 #include "base/atomicops.h" 15 #include "base/atomicops.h"
16 #include "base/containers/hash_tables.h" 16 #include "base/containers/hash_tables.h"
17 #include "base/macros.h" 17 #include "base/macros.h"
18 #include "base/memory/ref_counted.h" 18 #include "base/memory/ref_counted.h"
19 #include "base/memory/singleton.h" 19 #include "base/memory/singleton.h"
20 #include "base/synchronization/lock.h" 20 #include "base/synchronization/lock.h"
21 #include "base/trace_event/memory_allocator_dump.h" 21 #include "base/trace_event/memory_allocator_dump.h"
22 #include "base/trace_event/memory_dump_provider_info.h" 22 #include "base/trace_event/memory_dump_provider_info.h"
23 #include "base/trace_event/memory_dump_request_args.h" 23 #include "base/trace_event/memory_dump_request_args.h"
24 #include "base/trace_event/process_memory_dump.h" 24 #include "base/trace_event/process_memory_dump.h"
25 #include "base/trace_event/trace_event.h" 25 #include "base/trace_event/trace_event.h"
26 26
27 // Forward declare |ProcessLocalDumpManagerImplTest| so that we can make it a
28 // friend of |MemoryDumpManager| and give it access to |SetInstanceForTesting|.
29 namespace memory_instrumentation {
30
31 class ProcessLocalDumpManagerImplTest;
32
33 } // namespace memory_instrumentation
34
35 namespace base { 27 namespace base {
36 28
37 class SequencedTaskRunner; 29 class SequencedTaskRunner;
38 class SingleThreadTaskRunner; 30 class SingleThreadTaskRunner;
39 class Thread; 31 class Thread;
40 32
41 namespace trace_event { 33 namespace trace_event {
42 34
43 class MemoryTracingObserver; 35 class MemoryTracingObserver;
44 class MemoryDumpProvider; 36 class MemoryDumpProvider;
45 class HeapProfilerSerializationState; 37 class HeapProfilerSerializationState;
46 38
47 // This is the interface exposed to the rest of the codebase to deal with 39 // This is the interface exposed to the rest of the codebase to deal with
48 // memory tracing. The main entry point for clients is represented by 40 // memory tracing. The main entry point for clients is represented by
49 // RequestDumpPoint(). The extension by Un(RegisterDumpProvider). 41 // RequestDumpPoint(). The extension by Un(RegisterDumpProvider).
50 class BASE_EXPORT MemoryDumpManager { 42 class BASE_EXPORT MemoryDumpManager {
51 public: 43 public:
52 using RequestGlobalDumpFunction = 44 using RequestGlobalDumpFunction =
53 RepeatingCallback<void(const MemoryDumpRequestArgs& args, 45 RepeatingCallback<void(const MemoryDumpRequestArgs& args,
54 const GlobalMemoryDumpCallback& callback)>; 46 const GlobalMemoryDumpCallback& callback)>;
55 47
56 static const char* const kTraceCategory; 48 static const char* const kTraceCategory;
57 static const char* const kLogPrefix; 49 static const char* const kLogPrefix;
58 50
59 // This value is returned as the tracing id of the child processes by 51 // This value is returned as the tracing id of the child processes by
60 // GetTracingProcessId() when tracing is not enabled. 52 // GetTracingProcessId() when tracing is not enabled.
61 static const uint64_t kInvalidTracingProcessId; 53 static const uint64_t kInvalidTracingProcessId;
62 54
63 static MemoryDumpManager* GetInstance(); 55 static MemoryDumpManager* GetInstance();
56 static std::unique_ptr<MemoryDumpManager> CreateInstanceForTesting();
64 57
65 // Invoked once per process to listen to trace begin / end events. 58 // Invoked once per process to listen to trace begin / end events.
66 // Initialization can happen after (Un)RegisterMemoryDumpProvider() calls 59 // Initialization can happen after (Un)RegisterMemoryDumpProvider() calls
67 // and the MemoryDumpManager guarantees to support this. 60 // and the MemoryDumpManager guarantees to support this.
68 // On the other side, the MemoryDumpManager will not be fully operational 61 // On the other side, the MemoryDumpManager will not be fully operational
69 // (i.e. will NACK any RequestGlobalMemoryDump()) until initialized. 62 // (i.e. will NACK any RequestGlobalMemoryDump()) until initialized.
70 // Arguments: 63 // Arguments:
71 // request_dump_function: Function to invoke a global dump. Global dump 64 // request_dump_function: Function to invoke a global dump. Global dump
72 // involves embedder-specific behaviors like multiprocess handshaking. 65 // involves embedder-specific behaviors like multiprocess handshaking.
73 // is_coordinator: True when current process coodinates the periodic dump 66 // is_coordinator: True when current process coodinates the periodic dump
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 169
177 // When set to true, calling |RegisterMemoryDumpProvider| is a no-op. 170 // When set to true, calling |RegisterMemoryDumpProvider| is a no-op.
178 void set_dumper_registrations_ignored_for_testing(bool ignored) { 171 void set_dumper_registrations_ignored_for_testing(bool ignored) {
179 dumper_registrations_ignored_for_testing_ = ignored; 172 dumper_registrations_ignored_for_testing_ = ignored;
180 } 173 }
181 174
182 private: 175 private:
183 friend std::default_delete<MemoryDumpManager>; // For the testing instance. 176 friend std::default_delete<MemoryDumpManager>; // For the testing instance.
184 friend struct DefaultSingletonTraits<MemoryDumpManager>; 177 friend struct DefaultSingletonTraits<MemoryDumpManager>;
185 friend class MemoryDumpManagerTest; 178 friend class MemoryDumpManagerTest;
186 friend class memory_instrumentation::ProcessLocalDumpManagerImplTest;
187 179
188 // Holds the state of a process memory dump that needs to be carried over 180 // Holds the state of a process memory dump that needs to be carried over
189 // across task runners in order to fulfil an asynchronous CreateProcessDump() 181 // across task runners in order to fulfil an asynchronous CreateProcessDump()
190 // request. At any time exactly one task runner owns a 182 // request. At any time exactly one task runner owns a
191 // ProcessMemoryDumpAsyncState. 183 // ProcessMemoryDumpAsyncState.
192 struct ProcessMemoryDumpAsyncState { 184 struct ProcessMemoryDumpAsyncState {
193 ProcessMemoryDumpAsyncState( 185 ProcessMemoryDumpAsyncState(
194 MemoryDumpRequestArgs req_args, 186 MemoryDumpRequestArgs req_args,
195 const MemoryDumpProviderInfo::OrderedSet& dump_providers, 187 const MemoryDumpProviderInfo::OrderedSet& dump_providers,
196 scoped_refptr<HeapProfilerSerializationState> 188 scoped_refptr<HeapProfilerSerializationState>
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 // Whether new memory dump providers should be told to enable heap profiling. 314 // Whether new memory dump providers should be told to enable heap profiling.
323 bool heap_profiling_enabled_; 315 bool heap_profiling_enabled_;
324 316
325 DISALLOW_COPY_AND_ASSIGN(MemoryDumpManager); 317 DISALLOW_COPY_AND_ASSIGN(MemoryDumpManager);
326 }; 318 };
327 319
328 } // namespace trace_event 320 } // namespace trace_event
329 } // namespace base 321 } // namespace base
330 322
331 #endif // BASE_TRACE_EVENT_MEMORY_DUMP_MANAGER_H_ 323 #endif // BASE_TRACE_EVENT_MEMORY_DUMP_MANAGER_H_
OLDNEW
« no previous file with comments | « no previous file | base/trace_event/memory_dump_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698