Index: base/trace_event/memory_dump_provider.h |
diff --git a/base/trace_event/memory_dump_provider.h b/base/trace_event/memory_dump_provider.h |
index 5cc3a6ee66c1d276a2a43dc7c722968417d7d2ef..9ec7ad92496c62c4c437968cc26659e35e935577 100644 |
--- a/base/trace_event/memory_dump_provider.h |
+++ b/base/trace_event/memory_dump_provider.h |
@@ -6,9 +6,13 @@ |
#define BASE_TRACE_EVENT_MEMORY_DUMP_PROVIDER_H_ |
#include "base/base_export.h" |
-#include "base/trace_event/memory_allocator_attributes.h" |
+#include "base/memory/ref_counted.h" |
+#include "base/trace_event/memory_allocator_attributes_type_info.h" |
namespace base { |
+ |
+class SingleThreadTaskRunner; |
+ |
namespace trace_event { |
class ProcessMemoryDump; |
@@ -16,27 +20,46 @@ class ProcessMemoryDump; |
// The contract interface that memory dump providers must implement. |
class BASE_EXPORT MemoryDumpProvider { |
public: |
- // Called by the MemoryDumpManager when generating dump points. |
+ // Called by the MemoryDumpManager when generating memory dumps. |
// Returns: true if the |pmd| was successfully populated, false otherwise. |
virtual bool DumpInto(ProcessMemoryDump* pmd) = 0; |
virtual const char* GetFriendlyName() const = 0; |
- const MemoryAllocatorDeclaredAttributes& allocator_attributes() const { |
- return allocator_attributes_; |
+ const MemoryAllocatorAttributesTypeInfo& allocator_attributes_type_info() |
+ const { |
+ return allocator_attributes_type_info_; |
+ } |
+ |
+ // The dump provider can specify an optional thread affinity (in its |
+ // base constructor call). If |task_runner| is non empty, all the calls to |
+ // DumpInto are guaranteed to be posted to that TaskRunner. |
+ const scoped_refptr<SingleThreadTaskRunner>& task_runner() const { |
+ return task_runner_; |
} |
protected: |
+ // Default ctor: the MDP is not bound to any thread (must be a singleton). |
MemoryDumpProvider(); |
+ |
+ // Use this ctor to ensure that DumpInto() is called always on the same thread |
+ // specified by |task_runner|. |
+ explicit MemoryDumpProvider( |
+ const scoped_refptr<SingleThreadTaskRunner>& task_runner); |
+ |
virtual ~MemoryDumpProvider(); |
- void DeclareAllocatorAttribute(const MemoryAllocatorDeclaredAttribute& attr); |
+ void DeclareAllocatorAttribute(const std::string& allocator_name, |
+ const std::string& attribute_name, |
+ const std::string& attribute_type); |
private: |
- // The map (attribute name -> type) that specifies the semantic of the |
- // extra attributes that the MemoryAllocatorDump(s) produced by this |
- // MemoryDumpProvider will have. |
- MemoryAllocatorDeclaredAttributes allocator_attributes_; |
+ // A map of attributes types (declared through DeclareAllocatorAttribute()) |
+ // emitted by this allocator dumper. |
+ MemoryAllocatorAttributesTypeInfo allocator_attributes_type_info_; |
+ |
+ // (Optional) TaskRunner on which the DumpInfo call should be posted. |
+ scoped_refptr<SingleThreadTaskRunner> task_runner_; |
DISALLOW_COPY_AND_ASSIGN(MemoryDumpProvider); |
}; |