| OLD | NEW |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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_PROVIDER_INFO_H_ | 5 #ifndef BASE_TRACE_EVENT_MEMORY_DUMP_PROVIDER_INFO_H_ |
| 6 #define BASE_TRACE_EVENT_MEMORY_DUMP_PROVIDER_INFO_H_ | 6 #define BASE_TRACE_EVENT_MEMORY_DUMP_PROVIDER_INFO_H_ |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <set> | 9 #include <set> |
| 10 | 10 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 bool operator()(const scoped_refptr<MemoryDumpProviderInfo>& a, | 51 bool operator()(const scoped_refptr<MemoryDumpProviderInfo>& a, |
| 52 const scoped_refptr<MemoryDumpProviderInfo>& b) const; | 52 const scoped_refptr<MemoryDumpProviderInfo>& b) const; |
| 53 }; | 53 }; |
| 54 using OrderedSet = | 54 using OrderedSet = |
| 55 std::set<scoped_refptr<MemoryDumpProviderInfo>, Comparator>; | 55 std::set<scoped_refptr<MemoryDumpProviderInfo>, Comparator>; |
| 56 | 56 |
| 57 MemoryDumpProviderInfo(MemoryDumpProvider* dump_provider, | 57 MemoryDumpProviderInfo(MemoryDumpProvider* dump_provider, |
| 58 const char* name, | 58 const char* name, |
| 59 scoped_refptr<SequencedTaskRunner> task_runner, | 59 scoped_refptr<SequencedTaskRunner> task_runner, |
| 60 const MemoryDumpProvider::Options& options, | 60 const MemoryDumpProvider::Options& options, |
| 61 bool whitelisted_for_background_mode); | 61 bool whitelisted_for_background_mode, |
| 62 bool whitelisted_for_summary_mode); |
| 62 | 63 |
| 63 // It is safe to access the const fields below from any thread as they are | 64 // It is safe to access the const fields below from any thread as they are |
| 64 // never mutated. | 65 // never mutated. |
| 65 | 66 |
| 66 MemoryDumpProvider* const dump_provider; | 67 MemoryDumpProvider* const dump_provider; |
| 67 | 68 |
| 68 // The |options| arg passed to MDM::RegisterDumpProvider(). | 69 // The |options| arg passed to MDM::RegisterDumpProvider(). |
| 69 const MemoryDumpProvider::Options options; | 70 const MemoryDumpProvider::Options options; |
| 70 | 71 |
| 71 // Human readable name, not unique (distinct MDP instances might have the same | 72 // Human readable name, not unique (distinct MDP instances might have the same |
| 72 // name). Used for debugging, testing and whitelisting for BACKGROUND mode. | 73 // name). Used for debugging, testing and whitelisting for BACKGROUND mode. |
| 73 const char* const name; | 74 const char* const name; |
| 74 | 75 |
| 75 // The task runner on which the MDP::OnMemoryDump call should be posted onto. | 76 // The task runner on which the MDP::OnMemoryDump call should be posted onto. |
| 76 // Can be nullptr, in which case the MDP will be invoked on a background | 77 // Can be nullptr, in which case the MDP will be invoked on a background |
| 77 // thread handled by MDM. | 78 // thread handled by MDM. |
| 78 const scoped_refptr<SequencedTaskRunner> task_runner; | 79 const scoped_refptr<SequencedTaskRunner> task_runner; |
| 79 | 80 |
| 80 // True if the dump provider is whitelisted for background mode. | 81 // True if the dump provider is whitelisted for background mode. |
| 81 const bool whitelisted_for_background_mode; | 82 const bool whitelisted_for_background_mode; |
| 82 | 83 |
| 84 // True if the dump provider is whitelisted for summary mode. |
| 85 const bool whitelisted_for_summary_mode; |
| 86 |
| 83 // These fields below, instead, are not thread safe and can be mutated only: | 87 // These fields below, instead, are not thread safe and can be mutated only: |
| 84 // - On the |task_runner|, when not null (i.e. for thread-bound MDPS). | 88 // - On the |task_runner|, when not null (i.e. for thread-bound MDPS). |
| 85 // - By the MDM's background thread (or in any other way that guarantees | 89 // - By the MDM's background thread (or in any other way that guarantees |
| 86 // sequencing) for non-thread-bound MDPs. | 90 // sequencing) for non-thread-bound MDPs. |
| 87 | 91 |
| 88 // Used to transfer ownership for UnregisterAndDeleteDumpProviderSoon(). | 92 // Used to transfer ownership for UnregisterAndDeleteDumpProviderSoon(). |
| 89 // nullptr in all other cases. | 93 // nullptr in all other cases. |
| 90 std::unique_ptr<MemoryDumpProvider> owned_dump_provider; | 94 std::unique_ptr<MemoryDumpProvider> owned_dump_provider; |
| 91 | 95 |
| 92 // For fail-safe logic (auto-disable failing MDPs). | 96 // For fail-safe logic (auto-disable failing MDPs). |
| 93 int consecutive_failures; | 97 int consecutive_failures; |
| 94 | 98 |
| 95 // Flagged either by the auto-disable logic or during unregistration. | 99 // Flagged either by the auto-disable logic or during unregistration. |
| 96 bool disabled; | 100 bool disabled; |
| 97 | 101 |
| 98 private: | 102 private: |
| 99 friend class base::RefCountedThreadSafe<MemoryDumpProviderInfo>; | 103 friend class base::RefCountedThreadSafe<MemoryDumpProviderInfo>; |
| 100 ~MemoryDumpProviderInfo(); | 104 ~MemoryDumpProviderInfo(); |
| 101 | 105 |
| 102 DISALLOW_COPY_AND_ASSIGN(MemoryDumpProviderInfo); | 106 DISALLOW_COPY_AND_ASSIGN(MemoryDumpProviderInfo); |
| 103 }; | 107 }; |
| 104 | 108 |
| 105 } // namespace trace_event | 109 } // namespace trace_event |
| 106 } // namespace base | 110 } // namespace base |
| 107 | 111 |
| 108 #endif // BASE_TRACE_EVENT_MEMORY_DUMP_PROVIDER_INFO_H_ | 112 #endif // BASE_TRACE_EVENT_MEMORY_DUMP_PROVIDER_INFO_H_ |
| OLD | NEW |