Lines Matching defs:mmap

104     HLOGD("mmap cpu %d, aux_head: %llu, aux_tail:%llu, auxOffset:%llu, auxSize:%llu",
175 // close mmap
451 // we also need mmap for record
477 // for a group of events, only enable comm/mmap on the first event
480 eventItem.attr.mmap = 1;
1119 // if sampling, mmap ring buffer
1126 printf("create mmap fail\n");
1127 HIPERF_HILOGI(MODULE_DEFAULT, "create mmap fail");
1213 void *rbuf = mmap(nullptr, (1 + auxMmapPages_) * pageSize_, (PROT_READ | PROT_WRITE), MAP_SHARED,
1216 void *auxRbuf = mmap(nullptr, auxMmapPages_ * pageSize_, (PROT_READ | PROT_WRITE), MAP_SHARED,
1246 void *rbuf = mmap(nullptr, (1 + mmapPages_) * pageSize_, PROT_READ | PROT_WRITE, MAP_SHARED,
1252 perror("Fail to call mmap \n");
1311 // suppose ring buffer is 4 times as much as mmap
1333 HLOGV("poll record from mmap");
1347 // get readable mmap at this time
1417 bool PerfEvents::GetRecordFromMmap(MmapFd &mmap)
1419 if (mmap.dataSize <= 0) {
1423 GetRecordFieldFromMmap(mmap, &(mmap.header), mmap.mmapPage->data_tail, sizeof(mmap.header));
1424 if (mmap.header.type != PERF_RECORD_SAMPLE) {
1425 mmap.timestamp = 0;
1431 GetRecordFieldFromMmap(mmap, &(mmap.timestamp), mmap.mmapPage->data_tail + timePos,
1432 sizeof(mmap.timestamp));
1436 void PerfEvents::GetRecordFieldFromMmap(MmapFd &mmap, void *dest, size_t pos, size_t size)
1438 CHECK_TRUE(mmap.bufSize == 0, NO_RETVAL, 0, "");
1439 pos = pos % mmap.bufSize;
1440 size_t tailSize = mmap.bufSize - pos;
1442 if (memcpy_s(dest, copySize, mmap.buf + pos, copySize) != 0) {
1443 HLOGEP("memcpy_s %p to %p failed. size %zd", mmap.buf + pos, dest, copySize);
1447 if (memcpy_s(static_cast<uint8_t *>(dest) + copySize, size, mmap.buf, size) != 0) {
1448 HLOGEP("GetRecordFieldFromMmap: memcpy_s mmap.buf to dest failed. size %zd", size);
1467 size_t PerfEvents::GetStackSizePosInSampleRecord(MmapFd &mmap)
1469 size_t pos = mmap.posCallChain;
1470 if (mmap.attr->sample_type & PERF_SAMPLE_CALLCHAIN) {
1472 GetRecordFieldFromMmap(mmap, &nr, mmap.mmapPage->data_tail + pos, sizeof(nr));
1475 if (mmap.attr->sample_type & PERF_SAMPLE_RAW) {
1477 GetRecordFieldFromMmap(mmap, &raw_size, mmap.mmapPage->data_tail + pos, sizeof(raw_size));
1480 if (mmap.attr->sample_type & PERF_SAMPLE_BRANCH_STACK) {
1482 GetRecordFieldFromMmap(mmap, &bnr, mmap.mmapPage->data_tail + pos, sizeof(bnr));
1485 if (mmap.attr->sample_type & PERF_SAMPLE_REGS_USER) {
1487 GetRecordFieldFromMmap(mmap, &user_abi, mmap.mmapPage->data_tail + pos, sizeof(user_abi));
1490 uint64_t reg_nr = __builtin_popcountll(mmap.attr->sample_regs_user);
1494 if (mmap.attr->sample_type & PERF_SAMPLE_SERVER_PID) {
1496 GetRecordFieldFromMmap(mmap, &server_nr, mmap.mmapPage->data_tail + pos, sizeof(server_nr));
1502 bool PerfEvents::CutStackAndMove(MmapFd &mmap)
1505 if (!(mmap.attr->sample_type & PERF_SAMPLE_STACK_USER)) {
1508 size_t stackSizePos = GetStackSizePosInSampleRecord(mmap);
1510 GetRecordFieldFromMmap(mmap, &stackSize, mmap.mmapPage->data_tail + stackSizePos,
1517 GetRecordFieldFromMmap(mmap, &dynSize, mmap.mmapPage->data_tail + dynSizePos, sizeof(dynSize));
1525 // mmap: |<+++copy1+++>|<++++++copy2++++++>|<---------------cut--------------->|<+++copy3+++>|
1528 uint16_t recordSize = mmap.header.size;
1529 mmap.header.size -= stackSize - newStackSize; // reduce the stack size
1530 uint8_t *buf = recordBuf_->AllocForWrite(mmap.header.size);
1533 if (memcpy_s(buf, sizeof(perf_event_header), &(mmap.header), sizeof(perf_event_header)) != 0) {
1534 HLOGEP("memcpy_s %p to %p failed. size %zd", &(mmap.header), buf,
1540 GetRecordFieldFromMmap(mmap, buf + copyPos, mmap.mmapPage->data_tail + copyPos, copySize);
1543 GetRecordFieldFromMmap(mmap, buf + copyPos, mmap.mmapPage->data_tail + dynSizePos,
1551 mmap.mmapPage->data_tail += recordSize;
1552 mmap.dataSize -= recordSize;
1556 void PerfEvents::MoveRecordToBuf(MmapFd &mmap, bool &isAuxEvent, u64 &auxOffset, u64 &auxSize, u32 &pid, u32 &tid)
1559 if (mmap.header.type == PERF_RECORD_SAMPLE) {
1565 if (CutStackAndMove(mmap)) {
1568 } else if (mmap.header.type == PERF_RECORD_LOST) {
1572 GetRecordFieldFromMmap(mmap, &lost, mmap.mmapPage->data_tail + lostPos, sizeof(lost));
1577 if (mmap.header.type == PERF_RECORD_AUX) {
1584 GetRecordFieldFromMmap(mmap, &auxOffset, mmap.mmapPage->data_tail + auxOffsetPos, sizeof(auxOffset));
1585 GetRecordFieldFromMmap(mmap, &auxSize, mmap.mmapPage->data_tail + auxSizePos, sizeof(auxSize));
1586 GetRecordFieldFromMmap(mmap, &pid, mmap.mmapPage->data_tail + pidPos, sizeof(pid));
1587 GetRecordFieldFromMmap(mmap, &tid, mmap.mmapPage->data_tail + tidPos, sizeof(tid));
1590 if ((buf = recordBuf_->AllocForWrite(mmap.header.size)) == nullptr) {
1597 GetRecordFieldFromMmap(mmap, buf, mmap.mmapPage->data_tail, mmap.header.size);
1601 mmap.mmapPage->data_tail += mmap.header.size;
1602 mmap.dataSize -= mmap.header.size;