Lines Matching refs:mmap
341 eventItem.attr.mmap = 1; in AddEvent()
1084 void *rbuf = mmap(nullptr, (1 + mmapPages_) * pageSize_, PROT_READ | PROT_WRITE, MAP_SHARED, in CreateMmap()
1231 bool PerfEvents::GetRecordFromMmap(MmapFd &mmap) in GetRecordFromMmap() argument
1233 if (mmap.dataSize <= 0) { in GetRecordFromMmap()
1237 GetRecordFieldFromMmap(mmap, &(mmap.header), mmap.mmapPage->data_tail, sizeof(mmap.header)); in GetRecordFromMmap()
1238 if (mmap.header.type != PERF_RECORD_SAMPLE) { in GetRecordFromMmap()
1239 mmap.timestamp = 0; in GetRecordFromMmap()
1245 GetRecordFieldFromMmap(mmap, &(mmap.timestamp), mmap.mmapPage->data_tail + timePos, in GetRecordFromMmap()
1246 sizeof(mmap.timestamp)); in GetRecordFromMmap()
1250 void PerfEvents::GetRecordFieldFromMmap(MmapFd &mmap, void *dest, size_t pos, size_t size) in GetRecordFieldFromMmap() argument
1252 pos = pos % mmap.bufSize; in GetRecordFieldFromMmap()
1253 size_t tailSize = mmap.bufSize - pos; in GetRecordFieldFromMmap()
1255 if (memcpy_s(dest, copySize, mmap.buf + pos, copySize) != 0) { in GetRecordFieldFromMmap()
1256 HLOGEP("memcpy_s %p to %p failed. size %zd", mmap.buf + pos, dest, copySize); in GetRecordFieldFromMmap()
1260 if (memcpy_s(static_cast<uint8_t *>(dest) + copySize, size, mmap.buf, size) != 0) { in GetRecordFieldFromMmap()
1280 size_t PerfEvents::GetStackSizePosInSampleRecord(MmapFd &mmap) in GetStackSizePosInSampleRecord() argument
1282 size_t pos = mmap.posCallChain; in GetStackSizePosInSampleRecord()
1283 if (mmap.attr->sample_type & PERF_SAMPLE_CALLCHAIN) { in GetStackSizePosInSampleRecord()
1285 GetRecordFieldFromMmap(mmap, &nr, mmap.mmapPage->data_tail + pos, sizeof(nr)); in GetStackSizePosInSampleRecord()
1288 if (mmap.attr->sample_type & PERF_SAMPLE_RAW) { in GetStackSizePosInSampleRecord()
1290 GetRecordFieldFromMmap(mmap, &raw_size, mmap.mmapPage->data_tail + pos, sizeof(raw_size)); in GetStackSizePosInSampleRecord()
1293 if (mmap.attr->sample_type & PERF_SAMPLE_BRANCH_STACK) { in GetStackSizePosInSampleRecord()
1295 GetRecordFieldFromMmap(mmap, &bnr, mmap.mmapPage->data_tail + pos, sizeof(bnr)); in GetStackSizePosInSampleRecord()
1298 if (mmap.attr->sample_type & PERF_SAMPLE_REGS_USER) { in GetStackSizePosInSampleRecord()
1300 GetRecordFieldFromMmap(mmap, &user_abi, mmap.mmapPage->data_tail + pos, sizeof(user_abi)); in GetStackSizePosInSampleRecord()
1303 uint64_t reg_nr = __builtin_popcountll(mmap.attr->sample_regs_user); in GetStackSizePosInSampleRecord()
1307 if (mmap.attr->sample_type & PERF_SAMPLE_SERVER_PID) { in GetStackSizePosInSampleRecord()
1309 GetRecordFieldFromMmap(mmap, &server_nr, mmap.mmapPage->data_tail + pos, sizeof(server_nr)); in GetStackSizePosInSampleRecord()
1315 bool PerfEvents::CutStackAndMove(MmapFd &mmap) in CutStackAndMove() argument
1318 if (!(mmap.attr->sample_type & PERF_SAMPLE_STACK_USER)) { in CutStackAndMove()
1321 size_t stackSizePos = GetStackSizePosInSampleRecord(mmap); in CutStackAndMove()
1323 GetRecordFieldFromMmap(mmap, &stackSize, mmap.mmapPage->data_tail + stackSizePos, in CutStackAndMove()
1330 GetRecordFieldFromMmap(mmap, &dynSize, mmap.mmapPage->data_tail + dynSizePos, sizeof(dynSize)); in CutStackAndMove()
1340 uint16_t recordSize = mmap.header.size; in CutStackAndMove()
1341 mmap.header.size -= stackSize - newStackSize; // reduce the stack size in CutStackAndMove()
1342 uint8_t *buf = recordBuf_->AllocForWrite(mmap.header.size); in CutStackAndMove()
1347 if (memcpy_s(buf, sizeof(perf_event_header), &(mmap.header), sizeof(perf_event_header)) != 0) { in CutStackAndMove()
1348 HLOGEP("memcpy_s %p to %p failed. size %zd", &(mmap.header), buf, in CutStackAndMove()
1354 GetRecordFieldFromMmap(mmap, buf + copyPos, mmap.mmapPage->data_tail + copyPos, copySize); in CutStackAndMove()
1357 GetRecordFieldFromMmap(mmap, buf + copyPos, mmap.mmapPage->data_tail + dynSizePos, in CutStackAndMove()
1365 mmap.mmapPage->data_tail += recordSize; in CutStackAndMove()
1366 mmap.dataSize -= recordSize; in CutStackAndMove()
1370 void PerfEvents::MoveRecordToBuf(MmapFd &mmap) in MoveRecordToBuf() argument
1373 if (mmap.header.type == PERF_RECORD_SAMPLE) { in MoveRecordToBuf()
1379 if (CutStackAndMove(mmap)) { in MoveRecordToBuf()
1382 } else if (mmap.header.type == PERF_RECORD_LOST) { in MoveRecordToBuf()
1386 GetRecordFieldFromMmap(mmap, &lost, mmap.mmapPage->data_tail + lostPos, sizeof(lost)); in MoveRecordToBuf()
1392 if ((buf = recordBuf_->AllocForWrite(mmap.header.size)) == nullptr) { in MoveRecordToBuf()
1399 GetRecordFieldFromMmap(mmap, buf, mmap.mmapPage->data_tail, mmap.header.size); in MoveRecordToBuf()
1403 mmap.mmapPage->data_tail += mmap.header.size; in MoveRecordToBuf()
1404 mmap.dataSize -= mmap.header.size; in MoveRecordToBuf()