mirror of
https://gitee.com/openharmony/developtools_hiperf
synced 2024-11-23 07:29:42 +00:00
修改变量命名
Signed-off-by: yuanye <yuanye64@huawei.com>
This commit is contained in:
parent
b260a3a786
commit
e0abef1784
@ -73,7 +73,7 @@ struct AttrWithId {
|
|||||||
|
|
||||||
class PerfEventRecord {
|
class PerfEventRecord {
|
||||||
public:
|
public:
|
||||||
virtual const char* GetNameP() const = 0;
|
virtual const char* GetName() const = 0;
|
||||||
virtual void Init(uint8_t* data, const perf_event_attr& attr) = 0;
|
virtual void Init(uint8_t* data, const perf_event_attr& attr) = 0;
|
||||||
|
|
||||||
virtual ~PerfEventRecord() = default;
|
virtual ~PerfEventRecord() = default;
|
||||||
@ -104,7 +104,7 @@ public:
|
|||||||
|
|
||||||
struct perf_event_header header_ = {};
|
struct perf_event_header header_ = {};
|
||||||
DataType data_ = {};
|
DataType data_ = {};
|
||||||
const char* GetNameP() const override final
|
const char* GetName() const override final
|
||||||
{
|
{
|
||||||
return RECORD_TYPE_NAME;
|
return RECORD_TYPE_NAME;
|
||||||
}
|
}
|
||||||
@ -184,39 +184,6 @@ protected:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// PerfEventRecord
|
|
||||||
// template <typename DataType, const char* RECORD_TYPE_NAME>
|
|
||||||
// void PerfEventRecordTemplate<DataType, RECORD_TYPE_NAME>::Init(perf_event_type type, bool inKernel)
|
|
||||||
// {
|
|
||||||
// }
|
|
||||||
|
|
||||||
// template <typename DataType, const char* RECORD_TYPE_NAME>
|
|
||||||
// void PerfEventRecordTemplate<DataType, RECORD_TYPE_NAME>::Init(perf_event_hiperf_ext_type type)
|
|
||||||
// {
|
|
||||||
// }
|
|
||||||
|
|
||||||
// template <typename DataType, const char* RECORD_TYPE_NAME>
|
|
||||||
// void PerfEventRecordTemplate<DataType, RECORD_TYPE_NAME>::Init(uint8_t *p, const perf_event_attr&)
|
|
||||||
// {
|
|
||||||
// if (p == nullptr) {
|
|
||||||
// header_.type = PERF_RECORD_MMAP;
|
|
||||||
// header_.misc = PERF_RECORD_MISC_USER;
|
|
||||||
// header_.size = 0;
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// header_ = *(reinterpret_cast<perf_event_header *>(p));
|
|
||||||
|
|
||||||
// size_t dataSize = GetSize();
|
|
||||||
// if (dataSize >= sizeof(header_)) {
|
|
||||||
// size_t copySize = dataSize - sizeof(header_);
|
|
||||||
// if (memcpy_s(reinterpret_cast<uint8_t *>(&data_), sizeof(data_), p + sizeof(header_), copySize) != 0) {
|
|
||||||
// HLOGE("init perf record memcpy_s failed!");
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// HLOGE("init perf record failed!");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
template <typename DataType, const char* NAME>
|
template <typename DataType, const char* NAME>
|
||||||
void PerfEventRecordTemplate<DataType, NAME>::GetHeaderBinary(std::vector<uint8_t>& buf) const
|
void PerfEventRecordTemplate<DataType, NAME>::GetHeaderBinary(std::vector<uint8_t>& buf) const
|
||||||
{
|
{
|
||||||
@ -241,7 +208,7 @@ void PerfEventRecordTemplate<DataType, NAME>::Dump(int indent, std::string outpu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
PRINT_INDENT(indent, "\n");
|
PRINT_INDENT(indent, "\n");
|
||||||
PRINT_INDENT(indent, "record %s: type %u, misc %u, size %zu\n", GetNameP(), GetType(),
|
PRINT_INDENT(indent, "record %s: type %u, misc %u, size %zu\n", GetName(), GetType(),
|
||||||
GetMisc(), GetSize());
|
GetMisc(), GetSize());
|
||||||
DumpData(indent + 1);
|
DumpData(indent + 1);
|
||||||
}
|
}
|
||||||
@ -249,12 +216,13 @@ void PerfEventRecordTemplate<DataType, NAME>::Dump(int indent, std::string outpu
|
|||||||
template <typename DataType, const char* NAME>
|
template <typename DataType, const char* NAME>
|
||||||
void PerfEventRecordTemplate<DataType, NAME>::DumpLog(const std::string& prefix) const
|
void PerfEventRecordTemplate<DataType, NAME>::DumpLog(const std::string& prefix) const
|
||||||
{
|
{
|
||||||
HLOGV("%s: record %s: type %u, misc %u, size %zu\n", prefix.c_str(), GetNameP(),
|
HLOGV("%s: record %s: type %u, misc %u, size %zu\n", prefix.c_str(), GetName(),
|
||||||
GetType(), GetMisc(), GetSize());
|
GetType(), GetMisc(), GetSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
// define convert from linux/perf_event.h
|
// define convert from linux/perf_event.h
|
||||||
// description from https://man7.org/linux/man-pages/man2/perf_event_open.2.html
|
// description from https://man7.org/linux/man-pages/man2/perf_event_open.2.html
|
||||||
|
|
||||||
constexpr __u64 SAMPLE_ID = PERF_SAMPLE_TID | PERF_SAMPLE_TIME | PERF_SAMPLE_ID |
|
constexpr __u64 SAMPLE_ID = PERF_SAMPLE_TID | PERF_SAMPLE_TIME | PERF_SAMPLE_ID |
|
||||||
PERF_SAMPLE_STREAM_ID | PERF_SAMPLE_CPU | PERF_SAMPLE_IDENTIFIER;
|
PERF_SAMPLE_STREAM_ID | PERF_SAMPLE_CPU | PERF_SAMPLE_IDENTIFIER;
|
||||||
|
|
||||||
@ -528,16 +496,16 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void PushToBinary(bool condition, uint8_t*& p, const T& v);
|
void PushToBinary(bool condition, uint8_t *&p, const T &v);
|
||||||
|
|
||||||
template<typename T1, typename T2>
|
template<typename T1, typename T2>
|
||||||
void PushToBinary2(bool condition, uint8_t*& p, const T1& v1, const T2& v2);
|
void PushToBinary2(bool condition, uint8_t *&p, const T1 &v1, const T2 &v2);
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void PopFromBinary(bool condition, uint8_t*& p, T& v);
|
void PopFromBinary(bool condition, uint8_t *&p, T &v);
|
||||||
|
|
||||||
template<typename T1, typename T2>
|
template<typename T1, typename T2>
|
||||||
void PopFromBinary2(bool condition, uint8_t*& p, T1& v1, T2& v2);
|
void PopFromBinary2(bool condition, uint8_t *&p, T1 &v1, T2 &v2);
|
||||||
} // namespace HiPerf
|
} // namespace HiPerf
|
||||||
} // namespace Developtools
|
} // namespace Developtools
|
||||||
} // namespace OHOS
|
} // namespace OHOS
|
||||||
|
@ -20,8 +20,6 @@
|
|||||||
|
|
||||||
#include "utilities.h"
|
#include "utilities.h"
|
||||||
|
|
||||||
// using namespace OHOS::HiviewDFX;
|
|
||||||
// using namespace std;
|
|
||||||
namespace OHOS {
|
namespace OHOS {
|
||||||
namespace Developtools {
|
namespace Developtools {
|
||||||
namespace HiPerf {
|
namespace HiPerf {
|
||||||
|
@ -279,7 +279,7 @@ bool PerfFileReader::ReadRecord(ProcessRecordCB &callback)
|
|||||||
PerfEventRecord& record = PerfEventRecordFactory::GetPerfEventRecord(
|
PerfEventRecord& record = PerfEventRecordFactory::GetPerfEventRecord(
|
||||||
static_cast<perf_event_type>(header->type), data, *attr);
|
static_cast<perf_event_type>(header->type), data, *attr);
|
||||||
// unknown record , break the process
|
// unknown record , break the process
|
||||||
if (record.GetNameP() == nullptr) {
|
if (record.GetName() == nullptr) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
HLOGV("record type %u", record.GetType());
|
HLOGV("record type %u", record.GetType());
|
||||||
|
@ -125,10 +125,10 @@ bool PerfFileWriter::WriteRecord(const PerfEventRecord &record)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
HLOGV("write '%s', size %zu", record.GetNameP(), record.GetSize());
|
HLOGV("write '%s', size %zu", record.GetName(), record.GetSize());
|
||||||
|
|
||||||
CHECK_TRUE(record.GetSize() > RECORD_SIZE_LIMIT_SPE, false, 1,
|
CHECK_TRUE(record.GetSize() > RECORD_SIZE_LIMIT_SPE, false, 1,
|
||||||
"%s record size exceed limit", record.GetNameP());
|
"%s record size exceed limit", record.GetName());
|
||||||
// signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0xb64eb195
|
// signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0xb64eb195
|
||||||
static std::vector<u8> buf(RECORD_SIZE_LIMIT_SPE);
|
static std::vector<u8> buf(RECORD_SIZE_LIMIT_SPE);
|
||||||
|
|
||||||
@ -189,7 +189,7 @@ bool PerfFileWriter::ReadRecords(ProcessRecordCB &callback)
|
|||||||
PerfEventRecord& record = PerfEventRecordFactory::GetPerfEventRecord(static_cast<perf_event_type>(header->type),
|
PerfEventRecord& record = PerfEventRecordFactory::GetPerfEventRecord(static_cast<perf_event_type>(header->type),
|
||||||
data, defaultEventAttr_);
|
data, defaultEventAttr_);
|
||||||
// skip unknown record
|
// skip unknown record
|
||||||
CHECK_TRUE(record.GetNameP() == nullptr, true, 0, "");
|
CHECK_TRUE(record.GetName() == nullptr, true, 0, "");
|
||||||
remainingSize = remainingSize - header->size - speSize;
|
remainingSize = remainingSize - header->size - speSize;
|
||||||
// call callback to process, do not destroy the record
|
// call callback to process, do not destroy the record
|
||||||
callback(record);
|
callback(record);
|
||||||
|
@ -440,7 +440,7 @@ void SubCommandDump::DumpDataPortion(int indent)
|
|||||||
{
|
{
|
||||||
int recordCount = 0;
|
int recordCount = 0;
|
||||||
auto recordcCallback = [&](PerfEventRecord& record) {
|
auto recordcCallback = [&](PerfEventRecord& record) {
|
||||||
CHECK_TRUE(record.GetNameP() == nullptr, false, 0, ""); // return false in callback can stop the read process
|
CHECK_TRUE(record.GetName() == nullptr, false, 0, ""); // return false in callback can stop the read process
|
||||||
|
|
||||||
// for UT
|
// for UT
|
||||||
if (exportSampleIndex_ > 0) {
|
if (exportSampleIndex_ > 0) {
|
||||||
|
@ -1325,7 +1325,7 @@ void SubCommandRecord::RemoveVdsoTmpFile()
|
|||||||
|
|
||||||
bool SubCommandRecord::ProcessRecord(PerfEventRecord& record)
|
bool SubCommandRecord::ProcessRecord(PerfEventRecord& record)
|
||||||
{
|
{
|
||||||
CHECK_TRUE(record.GetNameP() == nullptr, false, 1, "record is null");
|
CHECK_TRUE(record.GetName() == nullptr, false, 1, "record is null");
|
||||||
#if HIDEBUG_RECORD_NOT_PROCESS
|
#if HIDEBUG_RECORD_NOT_PROCESS
|
||||||
// some times we want to check performance
|
// some times we want to check performance
|
||||||
// but we still want to see the record number
|
// but we still want to see the record number
|
||||||
@ -1375,14 +1375,14 @@ bool SubCommandRecord::SaveRecord(PerfEventRecord& record, bool ptrReleaseFlag)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (record.GetNameP() == nullptr) {
|
if (record.GetName() == nullptr) {
|
||||||
#ifdef HIPERF_DEBUG_TIME
|
#ifdef HIPERF_DEBUG_TIME
|
||||||
const auto saveTime = steady_clock::now();
|
const auto saveTime = steady_clock::now();
|
||||||
#endif
|
#endif
|
||||||
if (!fileWriter_->WriteRecord(record)) {
|
if (!fileWriter_->WriteRecord(record)) {
|
||||||
// write file failed, need stop record
|
// write file failed, need stop record
|
||||||
perfEvents_.StopTracking();
|
perfEvents_.StopTracking();
|
||||||
HLOGV("fail to write record %s", record.GetNameP());
|
HLOGV("fail to write record %s", record.GetName());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (record.GetType() == PERF_RECORD_SAMPLE) {
|
if (record.GetType() == PERF_RECORD_SAMPLE) {
|
||||||
@ -1390,7 +1390,7 @@ bool SubCommandRecord::SaveRecord(PerfEventRecord& record, bool ptrReleaseFlag)
|
|||||||
} else {
|
} else {
|
||||||
recordNoSamples_++;
|
recordNoSamples_++;
|
||||||
}
|
}
|
||||||
HLOGV(" write done. size=%zu name=%s", record.GetSize(), record.GetNameP());
|
HLOGV(" write done. size=%zu name=%s", record.GetSize(), record.GetName());
|
||||||
#ifdef HIPERF_DEBUG_TIME
|
#ifdef HIPERF_DEBUG_TIME
|
||||||
saveRecordTimes_ += duration_cast<microseconds>(steady_clock::now() - saveTime);
|
saveRecordTimes_ += duration_cast<microseconds>(steady_clock::now() - saveTime);
|
||||||
#endif
|
#endif
|
||||||
@ -1607,7 +1607,7 @@ bool SubCommandRecord::PostProcessRecordFile()
|
|||||||
|
|
||||||
// 2. read out the file and unwind
|
// 2. read out the file and unwind
|
||||||
auto record_callback = [&](PerfEventRecord& record) {
|
auto record_callback = [&](PerfEventRecord& record) {
|
||||||
if (record.GetNameP() == nullptr) {
|
if (record.GetName() == nullptr) {
|
||||||
// return false in callback can stop the read process
|
// return false in callback can stop the read process
|
||||||
return false;
|
return false;
|
||||||
} else if (record.GetType() == PERF_RECORD_SAMPLE) {
|
} else if (record.GetType() == PERF_RECORD_SAMPLE) {
|
||||||
@ -1657,7 +1657,7 @@ void SubCommandRecord::SymbolicHits()
|
|||||||
|
|
||||||
bool SubCommandRecord::CollectionSymbol(PerfEventRecord& record)
|
bool SubCommandRecord::CollectionSymbol(PerfEventRecord& record)
|
||||||
{
|
{
|
||||||
CHECK_TRUE(record.GetNameP() == nullptr, false, 0, "");
|
CHECK_TRUE(record.GetName() == nullptr, false, 0, "");
|
||||||
if (record.GetType() == PERF_RECORD_SAMPLE) {
|
if (record.GetType() == PERF_RECORD_SAMPLE) {
|
||||||
PerfRecordSample* sample = static_cast<PerfRecordSample*>(&record);
|
PerfRecordSample* sample = static_cast<PerfRecordSample*>(&record);
|
||||||
#if USE_COLLECT_SYMBOLIC
|
#if USE_COLLECT_SYMBOLIC
|
||||||
|
Loading…
Reference in New Issue
Block a user