Lines Matching refs:pb

13285 	struct perf_buffer *pb;  member
13309 static void perf_buffer__free_cpu_buf(struct perf_buffer *pb, in perf_buffer__free_cpu_buf() argument
13315 munmap(cpu_buf->base, pb->mmap_size + pb->page_size)) in perf_buffer__free_cpu_buf()
13325 void perf_buffer__free(struct perf_buffer *pb) in perf_buffer__free() argument
13329 if (IS_ERR_OR_NULL(pb)) in perf_buffer__free()
13331 if (pb->cpu_bufs) { in perf_buffer__free()
13332 for (i = 0; i < pb->cpu_cnt; i++) { in perf_buffer__free()
13333 struct perf_cpu_buf *cpu_buf = pb->cpu_bufs[i]; in perf_buffer__free()
13338 bpf_map_delete_elem(pb->map_fd, &cpu_buf->map_key); in perf_buffer__free()
13339 perf_buffer__free_cpu_buf(pb, cpu_buf); in perf_buffer__free()
13341 free(pb->cpu_bufs); in perf_buffer__free()
13343 if (pb->epoll_fd >= 0) in perf_buffer__free()
13344 close(pb->epoll_fd); in perf_buffer__free()
13345 free(pb->events); in perf_buffer__free()
13346 free(pb); in perf_buffer__free()
13350 perf_buffer__open_cpu_buf(struct perf_buffer *pb, struct perf_event_attr *attr, in perf_buffer__open_cpu_buf() argument
13360 cpu_buf->pb = pb; in perf_buffer__open_cpu_buf()
13373 cpu_buf->base = mmap(NULL, pb->mmap_size + pb->page_size, in perf_buffer__open_cpu_buf()
13394 perf_buffer__free_cpu_buf(pb, cpu_buf); in perf_buffer__open_cpu_buf()
13462 struct perf_buffer *pb; in __perf_buffer__new() local
13497 pb = calloc(1, sizeof(*pb)); in __perf_buffer__new()
13498 if (!pb) in __perf_buffer__new()
13501 pb->event_cb = p->event_cb; in __perf_buffer__new()
13502 pb->sample_cb = p->sample_cb; in __perf_buffer__new()
13503 pb->lost_cb = p->lost_cb; in __perf_buffer__new()
13504 pb->ctx = p->ctx; in __perf_buffer__new()
13506 pb->page_size = getpagesize(); in __perf_buffer__new()
13507 pb->mmap_size = pb->page_size * page_cnt; in __perf_buffer__new()
13508 pb->map_fd = map_fd; in __perf_buffer__new()
13510 pb->epoll_fd = epoll_create1(EPOLL_CLOEXEC); in __perf_buffer__new()
13511 if (pb->epoll_fd < 0) { in __perf_buffer__new()
13519 pb->cpu_cnt = p->cpu_cnt; in __perf_buffer__new()
13521 pb->cpu_cnt = libbpf_num_possible_cpus(); in __perf_buffer__new()
13522 if (pb->cpu_cnt < 0) { in __perf_buffer__new()
13523 err = pb->cpu_cnt; in __perf_buffer__new()
13526 if (map.max_entries && map.max_entries < pb->cpu_cnt) in __perf_buffer__new()
13527 pb->cpu_cnt = map.max_entries; in __perf_buffer__new()
13530 pb->events = calloc(pb->cpu_cnt, sizeof(*pb->events)); in __perf_buffer__new()
13531 if (!pb->events) { in __perf_buffer__new()
13536 pb->cpu_bufs = calloc(pb->cpu_cnt, sizeof(*pb->cpu_bufs)); in __perf_buffer__new()
13537 if (!pb->cpu_bufs) { in __perf_buffer__new()
13549 for (i = 0, j = 0; i < pb->cpu_cnt; i++) { in __perf_buffer__new()
13562 cpu_buf = perf_buffer__open_cpu_buf(pb, p->attr, cpu, map_key); in __perf_buffer__new()
13568 pb->cpu_bufs[j] = cpu_buf; in __perf_buffer__new()
13570 err = bpf_map_update_elem(pb->map_fd, &map_key, in __perf_buffer__new()
13580 pb->events[j].events = EPOLLIN; in __perf_buffer__new()
13581 pb->events[j].data.ptr = cpu_buf; in __perf_buffer__new()
13582 if (epoll_ctl(pb->epoll_fd, EPOLL_CTL_ADD, cpu_buf->fd, in __perf_buffer__new()
13583 &pb->events[j]) < 0) { in __perf_buffer__new()
13592 pb->cpu_cnt = j; in __perf_buffer__new()
13595 return pb; in __perf_buffer__new()
13599 if (pb) in __perf_buffer__new()
13600 perf_buffer__free(pb); in __perf_buffer__new()
13621 struct perf_buffer *pb = cpu_buf->pb; in perf_buffer__process_record() local
13625 if (pb->event_cb) in perf_buffer__process_record()
13626 return pb->event_cb(pb->ctx, cpu_buf->cpu, e); in perf_buffer__process_record()
13632 if (pb->sample_cb) in perf_buffer__process_record()
13633 pb->sample_cb(pb->ctx, cpu_buf->cpu, s->data, s->size); in perf_buffer__process_record()
13639 if (pb->lost_cb) in perf_buffer__process_record()
13640 pb->lost_cb(pb->ctx, cpu_buf->cpu, s->lost); in perf_buffer__process_record()
13650 static int perf_buffer__process_records(struct perf_buffer *pb, in perf_buffer__process_records() argument
13655 ret = perf_event_read_simple(cpu_buf->base, pb->mmap_size, in perf_buffer__process_records()
13656 pb->page_size, &cpu_buf->buf, in perf_buffer__process_records()
13664 int perf_buffer__epoll_fd(const struct perf_buffer *pb) in perf_buffer__epoll_fd() argument
13666 return pb->epoll_fd; in perf_buffer__epoll_fd()
13669 int perf_buffer__poll(struct perf_buffer *pb, int timeout_ms) in perf_buffer__poll() argument
13673 cnt = epoll_wait(pb->epoll_fd, pb->events, pb->cpu_cnt, timeout_ms); in perf_buffer__poll()
13678 struct perf_cpu_buf *cpu_buf = pb->events[i].data.ptr; in perf_buffer__poll()
13680 err = perf_buffer__process_records(pb, cpu_buf); in perf_buffer__poll()
13692 size_t perf_buffer__buffer_cnt(const struct perf_buffer *pb) in perf_buffer__buffer_cnt() argument
13694 return pb->cpu_cnt; in perf_buffer__buffer_cnt()
13702 int perf_buffer__buffer_fd(const struct perf_buffer *pb, size_t buf_idx) in perf_buffer__buffer_fd() argument
13706 if (buf_idx >= pb->cpu_cnt) in perf_buffer__buffer_fd()
13709 cpu_buf = pb->cpu_bufs[buf_idx]; in perf_buffer__buffer_fd()
13716 int perf_buffer__buffer(struct perf_buffer *pb, int buf_idx, void **buf, size_t *buf_size) in perf_buffer__buffer() argument
13720 if (buf_idx >= pb->cpu_cnt) in perf_buffer__buffer()
13723 cpu_buf = pb->cpu_bufs[buf_idx]; in perf_buffer__buffer()
13728 *buf_size = pb->mmap_size; in perf_buffer__buffer()
13740 int perf_buffer__consume_buffer(struct perf_buffer *pb, size_t buf_idx) in perf_buffer__consume_buffer() argument
13744 if (buf_idx >= pb->cpu_cnt) in perf_buffer__consume_buffer()
13747 cpu_buf = pb->cpu_bufs[buf_idx]; in perf_buffer__consume_buffer()
13751 return perf_buffer__process_records(pb, cpu_buf); in perf_buffer__consume_buffer()
13754 int perf_buffer__consume(struct perf_buffer *pb) in perf_buffer__consume() argument
13758 for (i = 0; i < pb->cpu_cnt; i++) { in perf_buffer__consume()
13759 struct perf_cpu_buf *cpu_buf = pb->cpu_bufs[i]; in perf_buffer__consume()
13764 err = perf_buffer__process_records(pb, cpu_buf); in perf_buffer__consume()