!689 修复spe数据量异常问题

Merge pull request !689 from yuanye/spe-fix
This commit is contained in:
openharmony_ci 2024-12-31 06:08:44 +00:00 committed by Gitee
commit 810b3645a6
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 57 additions and 1 deletions

View File

@ -182,7 +182,10 @@ void PerfEventRecord::InitHeader(uint8_t* p)
void PerfRecordAuxtrace::Init(uint8_t* data, const perf_event_attr& attr)
{
if (data == nullptr || header_.size > sizeof(perf_event_header)) {
data_ = {};
rawData_ = nullptr;
if (data == nullptr) {
PerfEventRecord::InitHeader(data);
HLOGE("Init failed");
return;
}

View File

@ -892,6 +892,59 @@ HWTEST_F(PerfEventRecordTest, CreatePerfRecordAuxtrace, TestSize.Level1)
free(p);
}
HWTEST_F(PerfEventRecordTest, CreatePerfRecordAuxtrace2, TestSize.Level1)
{
PerfRecordAuxtrace* record = new PerfRecordAuxtrace();
record->Init(nullptr, {});
EXPECT_EQ(record->header_.type, PERF_RECORD_MMAP);
EXPECT_EQ(record->header_.misc, PERF_RECORD_MISC_USER);
EXPECT_EQ(record->header_.size, 0);
EXPECT_EQ(record->data_.size, 0);
EXPECT_EQ(record->data_.offset, 0);
EXPECT_EQ(record->data_.reference, 0);
EXPECT_EQ(record->data_.idx, 0);
EXPECT_EQ(record->data_.tid, 0);
EXPECT_EQ(record->data_.cpu, 0);
EXPECT_EQ(record->data_.reserved__, 0);
EXPECT_EQ(record->rawData_, nullptr);
}
HWTEST_F(PerfEventRecordTest, CreatePerfRecordAuxtrace3, TestSize.Level1)
{
PerfRecordAuxtrace* record = new PerfRecordAuxtrace();
record->Init(nullptr, {});
record->header_.type = PERF_RECORD_AUXTRACE;
record->header_.misc = PERF_RECORD_MISC_KERNEL;
record->header_.size = PERF_RECORD_AUXTRACE;
record->data_.size = 1;
record->data_.offset = 1;
record->data_.reference = 1;
record->data_.idx = 1;
record->data_.tid = 1;
record->data_.cpu = 1;
record->data_.reserved__ = 1;
std::shared_ptr<u8> ptr = std::make_shared<u8>();
record->rawData_ = ptr.get();
record->Init(nullptr, {});
EXPECT_EQ(record->header_.type, PERF_RECORD_MMAP);
EXPECT_EQ(record->header_.misc, PERF_RECORD_MISC_USER);
EXPECT_EQ(record->header_.size, 0);
EXPECT_EQ(record->data_.size, 0);
EXPECT_EQ(record->data_.offset, 0);
EXPECT_EQ(record->data_.reference, 0);
EXPECT_EQ(record->data_.idx, 0);
EXPECT_EQ(record->data_.tid, 0);
EXPECT_EQ(record->data_.cpu, 0);
EXPECT_EQ(record->data_.reserved__, 0);
EXPECT_EQ(record->rawData_, nullptr);
}
HWTEST_F(PerfEventRecordTest, CreatePerfRecordSample, TestSize.Level1)
{
pid_t pid = fork();