OSDN Git Service

Merge "Add __s32 define."
[android-x86/system-extras.git] / simpleperf / record_file_writer.cpp
index 2d66729..dddd0b0 100644 (file)
 #include <sys/mman.h>
 #include <unistd.h>
 #include <set>
+#include <string>
 #include <vector>
 
-#include <base/logging.h>
+#include <android-base/file.h>
+#include <android-base/logging.h>
 
 #include "perf_event.h"
 #include "record.h"
@@ -33,7 +35,9 @@ using namespace PerfFileFormat;
 
 std::unique_ptr<RecordFileWriter> RecordFileWriter::CreateInstance(const std::string& filename) {
   // Remove old perf.data to avoid file ownership problems.
-  if (!RemovePossibleFile(filename)) {
+  std::string err;
+  if (!android::base::RemoveFileIfExists(filename, &err)) {
+    LOG(ERROR) << "failed to remove file " << filename << ": " << err;
     return nullptr;
   }
   FILE* fp = fopen(filename.c_str(), "web+");
@@ -129,54 +133,6 @@ bool RecordFileWriter::Write(const void* buf, size_t len) {
   return true;
 }
 
-bool RecordFileWriter::ReadDataSection(std::vector<std::unique_ptr<Record>>* records) {
-  if (fflush(record_fp_) != 0) {
-    PLOG(ERROR) << "fflush() failed";
-    return false;
-  }
-  uint64_t file_size;
-  if (!SeekFileEnd(&file_size)) {
-    return false;
-  }
-  size_t mmap_len = static_cast<size_t>(file_size);
-  void* mmap_addr = mmap(nullptr, mmap_len, PROT_READ, MAP_SHARED, fileno(record_fp_), 0);
-  if (mmap_addr == MAP_FAILED) {
-    PLOG(ERROR) << "mmap() failed";
-    return false;
-  }
-  const char* data_section = reinterpret_cast<char*>(mmap_addr) + data_section_offset_;
-  std::vector<std::unique_ptr<Record>> result =
-      ReadRecordsFromBuffer(event_attr_, data_section, data_section_size_);
-  if (munmap(mmap_addr, mmap_len) == -1) {
-    PLOG(ERROR) << "munmap() failed";
-    return false;
-  }
-  *records = std::move(result);
-  return true;
-}
-
-bool RecordFileWriter::WriteDataSection(const std::vector<std::unique_ptr<Record>>& records) {
-  // Truncate data section written before.
-  if (ftruncate(fileno(record_fp_), data_section_offset_) != 0) {
-    PLOG(ERROR) << "ftruncate() failed";
-    return false;
-  }
-  uint64_t file_end;
-  if (!SeekFileEnd(&file_end)) {
-    return false;
-  }
-  CHECK_EQ(data_section_offset_, file_end);
-  uint64_t old_size = data_section_size_;
-  data_section_size_ = 0;
-  for (auto& r : records) {
-    if (!WriteData(r->BinaryFormat())) {
-      return false;
-    }
-  }
-  LOG(DEBUG) << "data section is changed from " << old_size << " to " << data_section_size_;
-  return true;
-}
-
 bool RecordFileWriter::SeekFileEnd(uint64_t* file_end) {
   if (fseek(record_fp_, 0, SEEK_END) == -1) {
     PLOG(ERROR) << "fseek() failed";