lkml.org 
[lkml]   [2016]   [Nov]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 07/34] tools lib bpf: Retrive bpf_map through offset of bpf_map_def
    Date
    Add a new API to libbpf, caller is able to get bpf_map through the
    offset of bpf_map_def to 'maps' section.

    The API will be used to help jitted perf hook code find fd of a map.

    Signed-off-by: Wang Nan <wangnan0@huawei.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    ---
    tools/lib/bpf/libbpf.c | 12 ++++++++++++
    tools/lib/bpf/libbpf.h | 8 ++++++++
    2 files changed, 20 insertions(+)

    diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
    index 866d5cd..2e97459 100644
    --- a/tools/lib/bpf/libbpf.c
    +++ b/tools/lib/bpf/libbpf.c
    @@ -1524,3 +1524,15 @@ bpf_object__find_map_by_name(struct bpf_object *obj, const char *name)
    }
    return NULL;
    }
    +
    +struct bpf_map *
    +bpf_object__find_map_by_offset(struct bpf_object *obj, size_t offset)
    +{
    + int i;
    +
    + for (i = 0; i < obj->nr_maps; i++) {
    + if (obj->maps[i].offset == offset)
    + return &obj->maps[i];
    + }
    + return ERR_PTR(-ENOENT);
    +}
    diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h
    index 0c0b012..a5a8b86 100644
    --- a/tools/lib/bpf/libbpf.h
    +++ b/tools/lib/bpf/libbpf.h
    @@ -24,6 +24,7 @@
    #include <stdio.h>
    #include <stdbool.h>
    #include <linux/err.h>
    +#include <sys/types.h> // for size_t

    enum libbpf_errno {
    __LIBBPF_ERRNO__START = 4000,
    @@ -200,6 +201,13 @@ struct bpf_map;
    struct bpf_map *
    bpf_object__find_map_by_name(struct bpf_object *obj, const char *name);

    +/*
    + * Get bpf_map through the offset of corresponding struct bpf_map_def
    + * in the bpf object file.
    + */
    +struct bpf_map *
    +bpf_object__find_map_by_offset(struct bpf_object *obj, size_t offset);
    +
    struct bpf_map *
    bpf_map__next(struct bpf_map *map, struct bpf_object *obj);
    #define bpf_map__for_each(pos, obj) \
    --
    2.10.1
    \
     
     \ /
      Last update: 2016-11-15 05:12    [W:4.205 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site