OSDN Git Service

libbpf: Deprecate bpf_perf_event_read_simple() API
authorChristy Lee <christylee@fb.com>
Wed, 29 Dec 2021 20:41:56 +0000 (12:41 -0800)
committerAndrii Nakryiko <andrii@kernel.org>
Wed, 5 Jan 2022 23:27:43 +0000 (15:27 -0800)
With perf_buffer__poll() and perf_buffer__consume() APIs available,
there is no reason to expose bpf_perf_event_read_simple() API to
users. If users need custom perf buffer, they could re-implement
the function.

Mark bpf_perf_event_read_simple() and move the logic to a new
static function so it can still be called by other functions in the
same file.

  [0] Closes: https://github.com/libbpf/libbpf/issues/310

Signed-off-by: Christy Lee <christylee@fb.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20211229204156.13569-1-christylee@fb.com
tools/lib/bpf/libbpf.c
tools/lib/bpf/libbpf.h

index 9cb99d1..1d02ba7 100644 (file)
@@ -10676,10 +10676,10 @@ struct bpf_link *bpf_map__attach_struct_ops(const struct bpf_map *map)
        return link;
 }
 
-enum bpf_perf_event_ret
-bpf_perf_event_read_simple(void *mmap_mem, size_t mmap_size, size_t page_size,
-                          void **copy_mem, size_t *copy_size,
-                          bpf_perf_event_print_t fn, void *private_data)
+static enum bpf_perf_event_ret
+perf_event_read_simple(void *mmap_mem, size_t mmap_size, size_t page_size,
+                      void **copy_mem, size_t *copy_size,
+                      bpf_perf_event_print_t fn, void *private_data)
 {
        struct perf_event_mmap_page *header = mmap_mem;
        __u64 data_head = ring_buffer_read_head(header);
@@ -10724,6 +10724,12 @@ bpf_perf_event_read_simple(void *mmap_mem, size_t mmap_size, size_t page_size,
        return libbpf_err(ret);
 }
 
+__attribute__((alias("perf_event_read_simple")))
+enum bpf_perf_event_ret
+bpf_perf_event_read_simple(void *mmap_mem, size_t mmap_size, size_t page_size,
+                          void **copy_mem, size_t *copy_size,
+                          bpf_perf_event_print_t fn, void *private_data);
+
 struct perf_buffer;
 
 struct perf_buffer_params {
@@ -11132,10 +11138,10 @@ static int perf_buffer__process_records(struct perf_buffer *pb,
 {
        enum bpf_perf_event_ret ret;
 
-       ret = bpf_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);
+       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);
        if (ret != LIBBPF_PERF_EVENT_CONT)
                return ret;
        return 0;
index 85dfef8..ddf1cc9 100644 (file)
@@ -1026,6 +1026,7 @@ LIBBPF_API int perf_buffer__buffer_fd(const struct perf_buffer *pb, size_t buf_i
 typedef enum bpf_perf_event_ret
        (*bpf_perf_event_print_t)(struct perf_event_header *hdr,
                                  void *private_data);
+LIBBPF_DEPRECATED_SINCE(0, 8, "use perf_buffer__poll() or  perf_buffer__consume() instead")
 LIBBPF_API enum bpf_perf_event_ret
 bpf_perf_event_read_simple(void *mmap_mem, size_t mmap_size, size_t page_size,
                           void **copy_mem, size_t *copy_size,