Use libmemory_trace for writing trace data.
Also, add a time value for thread done.
Test: All unit tests pass.
Change-Id: I088b9dfaea1b7054ace64b14ac840923479f60a9
diff --git a/libc/malloc_debug/RecordData.h b/libc/malloc_debug/RecordData.h
index 7efa1f7..f4b0d82 100644
--- a/libc/malloc_debug/RecordData.h
+++ b/libc/malloc_debug/RecordData.h
@@ -39,117 +39,9 @@
#include <string>
#include <vector>
+#include <memory_trace/MemoryTrace.h>
#include <platform/bionic/macros.h>
-class RecordEntry {
- public:
- RecordEntry();
- virtual ~RecordEntry() = default;
-
- virtual bool Write(int fd) const = 0;
-
- protected:
- pid_t tid_;
-
- private:
- BIONIC_DISALLOW_COPY_AND_ASSIGN(RecordEntry);
-};
-
-class ThreadCompleteEntry : public RecordEntry {
- public:
- ThreadCompleteEntry() = default;
- virtual ~ThreadCompleteEntry() = default;
-
- bool Write(int fd) const override;
-
- private:
- BIONIC_DISALLOW_COPY_AND_ASSIGN(ThreadCompleteEntry);
-};
-
-class AllocEntry : public RecordEntry {
- public:
- explicit AllocEntry(void* pointer, uint64_t st, uint64_t et);
- virtual ~AllocEntry() = default;
-
- protected:
- void* pointer_;
-
- // The start/end time of this operation.
- uint64_t start_ns_;
- uint64_t end_ns_;
-
- private:
- BIONIC_DISALLOW_COPY_AND_ASSIGN(AllocEntry);
-};
-
-class MallocEntry : public AllocEntry {
- public:
- MallocEntry(void* pointer, size_t size, uint64_t st, uint64_t et);
- virtual ~MallocEntry() = default;
-
- bool Write(int fd) const override;
-
- protected:
- size_t size_;
-
- private:
- BIONIC_DISALLOW_COPY_AND_ASSIGN(MallocEntry);
-};
-
-class FreeEntry : public AllocEntry {
- public:
- explicit FreeEntry(void* pointer, uint64_t st, uint64_t et);
- virtual ~FreeEntry() = default;
-
- bool Write(int fd) const override;
-
- private:
- BIONIC_DISALLOW_COPY_AND_ASSIGN(FreeEntry);
-};
-
-class CallocEntry : public MallocEntry {
- public:
- CallocEntry(void* pointer, size_t nmemb, size_t size, uint64_t st, uint64_t et);
- virtual ~CallocEntry() = default;
-
- bool Write(int fd) const override;
-
- protected:
- size_t nmemb_;
-
- private:
- BIONIC_DISALLOW_COPY_AND_ASSIGN(CallocEntry);
-};
-
-class ReallocEntry : public MallocEntry {
- public:
- ReallocEntry(void* pointer, size_t size, void* old_pointer, uint64_t st, uint64_t et);
- virtual ~ReallocEntry() = default;
-
- bool Write(int fd) const override;
-
- protected:
- void* old_pointer_;
-
- private:
- BIONIC_DISALLOW_COPY_AND_ASSIGN(ReallocEntry);
-};
-
-// aligned_alloc, posix_memalign, memalign, pvalloc, valloc all recorded with this class.
-class MemalignEntry : public MallocEntry {
- public:
- MemalignEntry(void* pointer, size_t size, size_t alignment, uint64_t st, uint64_t et);
- virtual ~MemalignEntry() = default;
-
- bool Write(int fd) const override;
-
- protected:
- size_t alignment_;
-
- private:
- BIONIC_DISALLOW_COPY_AND_ASSIGN(MemalignEntry);
-};
-
class Config;
class RecordData {
@@ -159,8 +51,8 @@
bool Initialize(const Config& config);
- void AddEntry(const RecordEntry* entry);
- void AddEntryOnly(const RecordEntry* entry);
+ void AddEntry(const memory_trace::Entry& entry);
+ void AddEntryOnly(const memory_trace::Entry& entry);
const std::string& file() { return file_; }
pthread_key_t key() { return key_; }
@@ -176,7 +68,7 @@
std::mutex entries_lock_;
pthread_key_t key_;
- std::vector<std::unique_ptr<const RecordEntry>> entries_;
+ std::vector<memory_trace::Entry> entries_;
size_t cur_index_;
std::string file_;