cpu_buf
struct perf_cpu_buf *cpu_buf)
if (cpu_buf->base &&
munmap(cpu_buf->base, pb->mmap_size + pb->page_size))
pr_warn("failed to munmap cpu_buf #%d\n", cpu_buf->cpu);
if (cpu_buf->fd >= 0) {
ioctl(cpu_buf->fd, PERF_EVENT_IOC_DISABLE, 0);
close(cpu_buf->fd);
free(cpu_buf->buf);
struct perf_cpu_buf *cpu_buf = pb->cpu_bufs[i];
if (!cpu_buf)
bpf_map_delete_elem(pb->map_fd, &cpu_buf->map_key);
perf_buffer__free_cpu_buf(pb, cpu_buf);
struct perf_cpu_buf *cpu_buf;
cpu_buf = calloc(1, sizeof(*cpu_buf));
if (!cpu_buf)
cpu_buf->pb = pb;
cpu_buf->cpu = cpu;
cpu_buf->map_key = map_key;
cpu_buf->fd = syscall(__NR_perf_event_open, attr, -1 /* pid */, cpu,
if (cpu_buf->fd < 0) {
cpu_buf->base = mmap(NULL, pb->mmap_size + pb->page_size,
cpu_buf->fd, 0);
if (cpu_buf->base == MAP_FAILED) {
cpu_buf->base = NULL;
if (ioctl(cpu_buf->fd, PERF_EVENT_IOC_ENABLE, 0) < 0) {
return cpu_buf;
perf_buffer__free_cpu_buf(pb, cpu_buf);
struct perf_cpu_buf *cpu_buf;
cpu_buf = perf_buffer__open_cpu_buf(pb, p->attr, cpu, map_key);
if (IS_ERR(cpu_buf)) {
err = PTR_ERR(cpu_buf);
pb->cpu_bufs[j] = cpu_buf;
&cpu_buf->fd, 0);
cpu, map_key, cpu_buf->fd,
pb->events[j].data.ptr = cpu_buf;
if (epoll_ctl(pb->epoll_fd, EPOLL_CTL_ADD, cpu_buf->fd,
cpu, cpu_buf->fd,
struct perf_cpu_buf *cpu_buf = ctx;
struct perf_buffer *pb = cpu_buf->pb;
return pb->event_cb(pb->ctx, cpu_buf->cpu, e);
pb->sample_cb(pb->ctx, cpu_buf->cpu, s->data, s->size);
pb->lost_cb(pb->ctx, cpu_buf->cpu, s->lost);
struct perf_cpu_buf *cpu_buf)
ret = perf_event_read_simple(cpu_buf->base, pb->mmap_size,
pb->page_size, &cpu_buf->buf,
&cpu_buf->buf_size,
perf_buffer__process_record, cpu_buf);
struct perf_cpu_buf *cpu_buf = pb->events[i].data.ptr;
err = perf_buffer__process_records(pb, cpu_buf);
struct perf_cpu_buf *cpu_buf;
cpu_buf = pb->cpu_bufs[buf_idx];
if (!cpu_buf)
return cpu_buf->fd;
struct perf_cpu_buf *cpu_buf;
cpu_buf = pb->cpu_bufs[buf_idx];
if (!cpu_buf)
*buf = cpu_buf->base;
struct perf_cpu_buf *cpu_buf;
cpu_buf = pb->cpu_bufs[buf_idx];
if (!cpu_buf)
return perf_buffer__process_records(pb, cpu_buf);
struct perf_cpu_buf *cpu_buf = pb->cpu_bufs[i];
if (!cpu_buf)
err = perf_buffer__process_records(pb, cpu_buf);
struct perf_cpu_buf *cpu_buf;
cpu_buf = pb->events[i].data.ptr;
header = cpu_buf->base;