On 1/15/19 9:08 PM, Alexei Starovoitov wrote:
> Introduce
> int bpf_map_lookup_elem_flags(int fd, const void *key, void *value, __u64 
> flags)
> helper to lookup array/hash/cgroup_local_storage elements with BPF_F_LOCK 
> flag.
> 
> Signed-off-by: Alexei Starovoitov <a...@kernel.org>
> ---
>   tools/lib/bpf/bpf.c      |  13 ++
>   tools/lib/bpf/bpf.h      |   2 +
>   tools/lib/bpf/libbpf.map |   4 +
>   tools/lib/bpf/tags       | 254 +++++++++++++++++++++++++++++++++++++++

I think this tools/lib/bpf/tags is not needed and accidentally slipped 
in due to cscope?

>   4 files changed, 273 insertions(+)
>   create mode 100644 tools/lib/bpf/tags
> 
> diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c
> index 3caaa3428774..d55a77a05d5f 100644
> --- a/tools/lib/bpf/bpf.c
> +++ b/tools/lib/bpf/bpf.c
> @@ -357,6 +357,19 @@ int bpf_map_lookup_elem(int fd, const void *key, void 
> *value)
>       return sys_bpf(BPF_MAP_LOOKUP_ELEM, &attr, sizeof(attr));
>   }
>   
> +int bpf_map_lookup_elem_flags(int fd, const void *key, void *value, __u64 
> flags)
> +{
> +     union bpf_attr attr;
> +
> +     bzero(&attr, sizeof(attr));
> +     attr.map_fd = fd;
> +     attr.key = ptr_to_u64(key);
> +     attr.value = ptr_to_u64(value);
> +     attr.flags = flags;
> +
> +     return sys_bpf(BPF_MAP_LOOKUP_ELEM, &attr, sizeof(attr));
> +}
> +
>   int bpf_map_lookup_and_delete_elem(int fd, const void *key, void *value)
>   {
>       union bpf_attr attr;
> diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h
> index 8f09de482839..ed09eed2dc3b 100644
> --- a/tools/lib/bpf/bpf.h
> +++ b/tools/lib/bpf/bpf.h
> @@ -110,6 +110,8 @@ LIBBPF_API int bpf_map_update_elem(int fd, const void 
> *key, const void *value,
>                                  __u64 flags);
>   
>   LIBBPF_API int bpf_map_lookup_elem(int fd, const void *key, void *value);
> +LIBBPF_API int bpf_map_lookup_elem_flags(int fd, const void *key, void 
> *value,
> +                                      __u64 flags);
>   LIBBPF_API int bpf_map_lookup_and_delete_elem(int fd, const void *key,
>                                             void *value);
>   LIBBPF_API int bpf_map_delete_elem(int fd, const void *key);
> diff --git a/tools/lib/bpf/libbpf.map b/tools/lib/bpf/libbpf.map
> index cd02cd4e2cc3..ca5155409a15 100644
> --- a/tools/lib/bpf/libbpf.map
> +++ b/tools/lib/bpf/libbpf.map
> @@ -124,3 +124,7 @@ LIBBPF_0.0.1 {
>       local:
>               *;
>   };
> +LIBBPF_0.0.2 {
> +     global:
> +             bpf_map_lookup_elem_flags;
> +} LIBBPF_0.0.1;
> diff --git a/tools/lib/bpf/tags b/tools/lib/bpf/tags
> new file mode 100644
> index 000000000000..be30548a028e
> --- /dev/null
> +++ b/tools/lib/bpf/tags
> @@ -0,0 +1,254 @@
> +!_TAG_FILE_FORMAT    2       /extended format; --format=1 will not append ;" 
> to lines/
> +!_TAG_FILE_SORTED    1       /0=unsorted, 1=sorted, 2=foldcase/
> +!_TAG_PROGRAM_AUTHOR Darren Hiebert  /dhieb...@users.sourceforge.net/
> +!_TAG_PROGRAM_NAME   Exuberant Ctags //
> +!_TAG_PROGRAM_URL    http://ctags.sourceforge.net    /official site/
> +!_TAG_PROGRAM_VERSION        5.8     //
> +BPF_EXTRAVERSION     Makefile        /^BPF_EXTRAVERSION = 1$/;"      m
> +BPF_FS_MAGIC libbpf.c        52;"    d       file:
> +BPF_IN       Makefile        /^BPF_IN    := $(OUTPUT)libbpf-in.o$/;" m
> +BPF_LOG_BUF_SIZE     bpf.h   43;"    d
> +BPF_PATCHLEVEL       Makefile        /^BPF_PATCHLEVEL = 0$/;"        m
> +BPF_PROG_TYPE_FNS    libbpf.c        1702;"  d       file:
> +BPF_VERSION  Makefile        /^BPF_VERSION = 0$/;"   m
> +CFLAGS       Makefile        /^  CFLAGS := $(EXTRA_CFLAGS)$/;"       m
> +CFLAGS       Makefile        /^  CFLAGS := -g -Wall$/;"      m
> +CHECK_ERR    libbpf.c        140;"   d       file:
> +CMD_TARGETS  Makefile        /^CMD_TARGETS = $(LIB_FILE)$/;" m
> +DESTDIR      Makefile        /^DESTDIR ?=$/;"        m
> +DESTDIR_SQ   Makefile        /^DESTDIR_SQ = '$(subst 
> ','\\'',$(DESTDIR))'$/;"        m
> +EM_BPF       libbpf.c        48;"    d       file:
> +ERRCODE_OFFSET       libbpf.c        95;"    d       file:
> +ERRNO_OFFSET libbpf.c        94;"    d       file:
> +EXTRAVERSION Makefile        /^EXTRAVERSION  = $(BPF_EXTRAVERSION)$/;"       
> m
> +FEATURE_CHECK_CFLAGS-bpf     Makefile        /^FEATURE_CHECK_CFLAGS-bpf = 
> $(INCLUDES)$/;"    m
> +FEATURE_DISPLAY      Makefile        /^FEATURE_DISPLAY = libelf bpf$/;"      
> m
> +FEATURE_TESTS        Makefile        /^FEATURE_TESTS = libelf 
> libelf-getphdrnum libelf-mmap bpf$/;"  m
> +FEATURE_USER Makefile        /^FEATURE_USER = .libbpf$/;"    m
> +INCLUDES     Makefile        /^INCLUDES = -I. -I$(srctree)\/tools\/include 
> -I$(srctree)\/tools\/arch\/$(ARCH)\/include\/uapi 
> -I$(srctree)\/tools\/include\/uapi$/;"  m
> +INSTALL      Makefile        /^INSTALL = install$/;" m
> +LIBBPF_ELF_C_READ_MMAP       libbpf.c        162;"   d       file:
> +LIBBPF_ELF_C_READ_MMAP       libbpf.c        164;"   d       file:
> +LIBBPF_ERRNO__ENDIAN libbpf.h        /^      LIBBPF_ERRNO__ENDIAN,   \/* 
> Endian mismatch *\/$/;"     e       enum:libbpf_errno
> +LIBBPF_ERRNO__FORMAT libbpf.h        /^      LIBBPF_ERRNO__FORMAT,   \/* BPF 
> object format invalid *\/$/;"   e       enum:libbpf_errno
> +LIBBPF_ERRNO__INTERNAL       libbpf.h        /^      LIBBPF_ERRNO__INTERNAL, 
> \/* Internal error in libbpf *\/$/;"    e       enum:libbpf_errno
> +LIBBPF_ERRNO__KVER   libbpf.h        /^      LIBBPF_ERRNO__KVER,     \/* 
> Incorrect kernel version *\/$/;"    e       enum:libbpf_errno
> +LIBBPF_ERRNO__KVERSION       libbpf.h        /^      LIBBPF_ERRNO__KVERSION, 
> \/* Incorrect or no 'version' section *\/$/;"   e       enum:libbpf_errno
> +LIBBPF_ERRNO__LIBELF libbpf.h        /^      LIBBPF_ERRNO__LIBELF = 
> __LIBBPF_ERRNO__START,$/;"       e       enum:libbpf_errno
> +LIBBPF_ERRNO__LOAD   libbpf.h        /^      LIBBPF_ERRNO__LOAD,     \/* 
> Load program failure for unknown reason *\/$/;"     e       enum:libbpf_errno
> +LIBBPF_ERRNO__PROG2BIG       libbpf.h        /^      LIBBPF_ERRNO__PROG2BIG, 
> \/* Program too big *\/$/;"     e       enum:libbpf_errno
> +LIBBPF_ERRNO__PROGTYPE       libbpf.h        /^      LIBBPF_ERRNO__PROGTYPE, 
> \/* Kernel doesn't support this program type *\/$/;"    e       
> enum:libbpf_errno
> +LIBBPF_ERRNO__RELOC  libbpf.h        /^      LIBBPF_ERRNO__RELOC,    \/* 
> Relocation failed *\/$/;"   e       enum:libbpf_errno
> +LIBBPF_ERRNO__VERIFY libbpf.h        /^      LIBBPF_ERRNO__VERIFY,   \/* 
> Kernel verifier blocks program loading *\/$/;"      e       enum:libbpf_errno
> +LIBBPF_VERSION       Makefile        /^LIBBPF_VERSION = 
> $(BPF_VERSION).$(BPF_PATCHLEVEL).$(BPF_EXTRAVERSION)$/;"     m
> +LIB_FILE     Makefile        /^LIB_FILE := $(addprefix 
> $(OUTPUT),$(LIB_FILE))$/;"    m
> +LIB_FILE     Makefile        /^LIB_FILE = libbpf.a libbpf.so$/;"     m
> +MAKEOVERRIDES        Makefile        /^MAKEOVERRIDES=$/;"    m
> +N    Makefile        /^N             =$/;"   m
> +NON_CHECK_FEAT_TARGETS       Makefile        /^NON_CHECK_FEAT_TARGETS := 
> clean TAGS tags cscope help$/;"     m
> +NR_ERRNO     libbpf.c        96;"    d       file:
> +OBJ  Makefile        /^OBJ           = $@$/;"        m
> +PATCHLEVEL   Makefile        /^PATCHLEVEL    = $(BPF_PATCHLEVEL)$/;" m
> +Q    Makefile        /^  Q = @$/;"   m
> +Q    Makefile        /^  Q =$/;"     m
> +STRERR_BUFSIZE       libbpf.c        92;"    d       file:
> +TARGETS      Makefile        /^TARGETS = $(CMD_TARGETS)$/;"  m
> +VERBOSE      Makefile        /^  VERBOSE = $(V)$/;"  m
> +VERBOSE      Makefile        /^  VERBOSE = 0$/;"     m
> +VERSION      Makefile        /^VERSION               = $(BPF_VERSION)$/;"    
> m
> +__BPF_BPF_H  bpf.h   22;"    d
> +__BPF_LIBBPF_H       libbpf.h        22;"    d
> +__LIBBPF_ERRNO__END  libbpf.h        /^      __LIBBPF_ERRNO__END,$/;"        
> e       enum:libbpf_errno
> +__LIBBPF_ERRNO__START        libbpf.h        /^      __LIBBPF_ERRNO__START = 
> 4000,$/;"       e       enum:libbpf_errno
> +__NR_bpf     bpf.c   35;"    d       file:
> +__NR_bpf     bpf.c   37;"    d       file:
> +__NR_bpf     bpf.c   39;"    d       file:
> +__NR_bpf     bpf.c   41;"    d       file:
> +__NR_bpf     bpf.c   43;"    d       file:
> +__base_pr    libbpf.c        /^static int __base_pr(const char *format, 
> ...)$/;"     f       file:
> +__bpf_object__open   libbpf.c        /^__bpf_object__open(const char *path, 
> void *obj_buf, size_t obj_buf_sz)$/;"    f       file:
> +__pr libbpf.c        73;"    d       file:
> +__pr_debug   libbpf.c        /^static __printf(1, 2) libbpf_print_fn_t 
> __pr_debug;$/;"       v
> +__pr_info    libbpf.c        /^static __printf(1, 2) libbpf_print_fn_t 
> __pr_info = __base_pr;$/;"    v
> +__pr_warning libbpf.c        /^static __printf(1, 2) libbpf_print_fn_t 
> __pr_warning = __base_pr;$/;" v
> +__printf     libbpf.c        55;"    d       file:
> +allow-override       Makefile        /^define allow-override$/;"     m
> +bpf_create_map       bpf.c   /^int bpf_create_map(enum bpf_map_type 
> map_type, int key_size,$/;"      f
> +bpf_create_map_in_map        bpf.c   /^int bpf_create_map_in_map(enum 
> bpf_map_type map_type, const char *name,$/;"   f
> +bpf_create_map_in_map_node   bpf.c   /^int bpf_create_map_in_map_node(enum 
> bpf_map_type map_type, const char *name,$/;"      f
> +bpf_create_map_name  bpf.c   /^int bpf_create_map_name(enum bpf_map_type 
> map_type, const char *name,$/;"     f
> +bpf_create_map_node  bpf.c   /^int bpf_create_map_node(enum bpf_map_type 
> map_type, const char *name,$/;"     f
> +bpf_load_program     bpf.c   /^int bpf_load_program(enum bpf_prog_type type, 
> const struct bpf_insn *insns,$/;"       f
> +bpf_load_program_name        bpf.c   /^int bpf_load_program_name(enum 
> bpf_prog_type type, const char *name,$/;"      f
> +bpf_map      libbpf.c        /^struct bpf_map {$/;"  s       file:
> +bpf_map__def libbpf.c        /^const struct bpf_map_def *bpf_map__def(struct 
> bpf_map *map)$/;"       f
> +bpf_map__fd  libbpf.c        /^int bpf_map__fd(struct bpf_map *map)$/;"      
> f
> +bpf_map__for_each    libbpf.h        230;"   d
> +bpf_map__name        libbpf.c        /^const char *bpf_map__name(struct 
> bpf_map *map)$/;"    f
> +bpf_map__next        libbpf.c        /^bpf_map__next(struct bpf_map *prev, 
> struct bpf_object *obj)$/;"       f
> +bpf_map__pin libbpf.c        /^int bpf_map__pin(struct bpf_map *map, const 
> char *path)$/;"   f
> +bpf_map__priv        libbpf.c        /^void *bpf_map__priv(struct bpf_map 
> *map)$/;"  f
> +bpf_map__set_priv    libbpf.c        /^int bpf_map__set_priv(struct bpf_map 
> *map, void *priv,$/;"    f
> +bpf_map_clear_priv_t libbpf.h        /^typedef void 
> (*bpf_map_clear_priv_t)(struct bpf_map *, void *);$/;"   t
> +bpf_map_def  libbpf.h        /^struct bpf_map_def {$/;"      s
> +bpf_map_delete_elem  bpf.c   /^int bpf_map_delete_elem(int fd, const void 
> *key)$/;"  f
> +bpf_map_get_fd_by_id bpf.c   /^int bpf_map_get_fd_by_id(__u32 id)$/;"        
> f
> +bpf_map_get_next_id  bpf.c   /^int bpf_map_get_next_id(__u32 start_id, __u32 
> *next_id)$/;"   f
> +bpf_map_get_next_key bpf.c   /^int bpf_map_get_next_key(int fd, const void 
> *key, void *next_key)$/;" f
> +bpf_map_lookup_elem  bpf.c   /^int bpf_map_lookup_elem(int fd, const void 
> *key, void *value)$/;"     f
> +bpf_map_update_elem  bpf.c   /^int bpf_map_update_elem(int fd, const void 
> *key, const void *value,$/;"       f
> +bpf_obj_get  bpf.c   /^int bpf_obj_get(const char *pathname)$/;"     f
> +bpf_obj_get_info_by_fd       bpf.c   /^int bpf_obj_get_info_by_fd(int 
> prog_fd, void *info, __u32 *info_len)$/;"      f
> +bpf_obj_pin  bpf.c   /^int bpf_obj_pin(int fd, const char *pathname)$/;"     
> f
> +bpf_object   libbpf.c        /^struct bpf_object {$/;"       s       file:
> +bpf_object__add_program      libbpf.c        
> /^bpf_object__add_program(struct bpf_object *obj, void *data, size_t 
> size,$/;"  f       file:
> +bpf_object__check_endianness libbpf.c        
> /^bpf_object__check_endianness(struct bpf_object *obj)$/;"      f       file:
> +bpf_object__close    libbpf.c        /^void bpf_object__close(struct 
> bpf_object *obj)$/;"    f
> +bpf_object__collect_reloc    libbpf.c        /^static int 
> bpf_object__collect_reloc(struct bpf_object *obj)$/;"      f       file:
> +bpf_object__create_maps      libbpf.c        
> /^bpf_object__create_maps(struct bpf_object *obj)$/;"   f       file:
> +bpf_object__elf_collect      libbpf.c        /^static int 
> bpf_object__elf_collect(struct bpf_object *obj)$/;"        f       file:
> +bpf_object__elf_finish       libbpf.c        /^static void 
> bpf_object__elf_finish(struct bpf_object *obj)$/;"        f       file:
> +bpf_object__elf_init libbpf.c        /^static int 
> bpf_object__elf_init(struct bpf_object *obj)$/;"   f       file:
> +bpf_object__find_map_by_name libbpf.c        
> /^bpf_object__find_map_by_name(struct bpf_object *obj, const char *name)$/;"  
>   f
> +bpf_object__find_map_by_offset       libbpf.c        
> /^bpf_object__find_map_by_offset(struct bpf_object *obj, size_t offset)$/;"   
>   f
> +bpf_object__find_prog_by_idx libbpf.c        
> /^bpf_object__find_prog_by_idx(struct bpf_object *obj, int idx)$/;"     f     
>   file:
> +bpf_object__for_each_program libbpf.h        95;"    d
> +bpf_object__for_each_safe    libbpf.h        79;"    d
> +bpf_object__init_kversion    libbpf.c        
> /^bpf_object__init_kversion(struct bpf_object *obj,$/;" f       file:
> +bpf_object__init_license     libbpf.c        
> /^bpf_object__init_license(struct bpf_object *obj,$/;"  f       file:
> +bpf_object__init_maps        libbpf.c        /^bpf_object__init_maps(struct 
> bpf_object *obj)$/;"     f       file:
> +bpf_object__init_prog_names  libbpf.c        
> /^bpf_object__init_prog_names(struct bpf_object *obj)$/;"       f       file:
> +bpf_object__kversion libbpf.c        /^unsigned int 
> bpf_object__kversion(struct bpf_object *obj)$/;" f
> +bpf_object__load     libbpf.c        /^int bpf_object__load(struct 
> bpf_object *obj)$/;"      f
> +bpf_object__load_progs       libbpf.c        /^bpf_object__load_progs(struct 
> bpf_object *obj)$/;"    f       file:
> +bpf_object__name     libbpf.c        /^const char *bpf_object__name(struct 
> bpf_object *obj)$/;"      f
> +bpf_object__new      libbpf.c        /^static struct bpf_object 
> *bpf_object__new(const char *path,$/;"       f       file:
> +bpf_object__next     libbpf.c        /^bpf_object__next(struct bpf_object 
> *prev)$/;" f
> +bpf_object__open     libbpf.c        /^struct bpf_object 
> *bpf_object__open(const char *path)$/;"     f
> +bpf_object__open_buffer      libbpf.c        /^struct bpf_object 
> *bpf_object__open_buffer(void *obj_buf,$/;" f
> +bpf_object__pin      libbpf.c        /^int bpf_object__pin(struct bpf_object 
> *obj, const char *path)$/;"     f
> +bpf_object__priv     libbpf.c        /^void *bpf_object__priv(struct 
> bpf_object *obj)$/;"    f
> +bpf_object__relocate libbpf.c        /^bpf_object__relocate(struct 
> bpf_object *obj)$/;"      f       file:
> +bpf_object__set_priv libbpf.c        /^int bpf_object__set_priv(struct 
> bpf_object *obj, void *priv,$/;"      f
> +bpf_object__unload   libbpf.c        /^int bpf_object__unload(struct 
> bpf_object *obj)$/;"    f
> +bpf_object__validate libbpf.c        /^static int 
> bpf_object__validate(struct bpf_object *obj)$/;"   f       file:
> +bpf_object_clear_priv_t      libbpf.h        /^typedef void 
> (*bpf_object_clear_priv_t)(struct bpf_object *, void *);$/;"     t
> +bpf_prog_attach      bpf.c   /^int bpf_prog_attach(int prog_fd, int 
> target_fd, enum bpf_attach_type type,$/;"        f
> +bpf_prog_detach      bpf.c   /^int bpf_prog_detach(int target_fd, enum 
> bpf_attach_type type)$/;"     f
> +bpf_prog_detach2     bpf.c   /^int bpf_prog_detach2(int prog_fd, int 
> target_fd, enum bpf_attach_type type)$/;"       f
> +bpf_prog_get_fd_by_id        bpf.c   /^int bpf_prog_get_fd_by_id(__u32 
> id)$/;"       f
> +bpf_prog_get_next_id bpf.c   /^int bpf_prog_get_next_id(__u32 start_id, 
> __u32 *next_id)$/;"  f
> +bpf_prog_load        libbpf.c        /^int bpf_prog_load(const char *file, 
> enum bpf_prog_type type,$/;"      f
> +bpf_prog_prep_result libbpf.h        /^struct bpf_prog_prep_result {$/;"     
> s
> +bpf_prog_query       bpf.c   /^int bpf_prog_query(int target_fd, enum 
> bpf_attach_type type, __u32 query_flags,$/;"   f
> +bpf_prog_test_run    bpf.c   /^int bpf_prog_test_run(int prog_fd, int 
> repeat, void *data, __u32 size,$/;"    f
> +bpf_program  libbpf.c        /^struct bpf_program {$/;"      s       file:
> +bpf_program__collect_reloc   libbpf.c        
> /^bpf_program__collect_reloc(struct bpf_program *prog,$/;"      f       file:
> +bpf_program__exit    libbpf.c        /^static void bpf_program__exit(struct 
> bpf_program *prog)$/;"   f       file:
> +bpf_program__fd      libbpf.c        /^int bpf_program__fd(struct 
> bpf_program *prog)$/;"     f
> +bpf_program__init    libbpf.c        /^bpf_program__init(void *data, size_t 
> size, char *section_name, int idx,$/;"   f       file:
> +bpf_program__is_type libbpf.c        /^static bool 
> bpf_program__is_type(struct bpf_program *prog,$/;"        f       file:
> +bpf_program__load    libbpf.c        /^bpf_program__load(struct bpf_program 
> *prog,$/;"       f       file:
> +bpf_program__next    libbpf.c        /^bpf_program__next(struct bpf_program 
> *prev, struct bpf_object *obj)$/;"       f
> +bpf_program__nth_fd  libbpf.c        /^int bpf_program__nth_fd(struct 
> bpf_program *prog, int n)$/;"  f
> +bpf_program__pin     libbpf.c        /^int bpf_program__pin(struct 
> bpf_program *prog, const char *path)$/;"  f
> +bpf_program__pin_instance    libbpf.c        /^int 
> bpf_program__pin_instance(struct bpf_program *prog, const char *path,$/;" f
> +bpf_program__priv    libbpf.c        /^void *bpf_program__priv(struct 
> bpf_program *prog)$/;" f
> +bpf_program__relocate        libbpf.c        /^bpf_program__relocate(struct 
> bpf_program *prog, struct bpf_object *obj)$/;"   f       file:
> +bpf_program__set_prep        libbpf.c        /^int 
> bpf_program__set_prep(struct bpf_program *prog, int nr_instances,$/;"     f
> +bpf_program__set_priv        libbpf.c        /^int 
> bpf_program__set_priv(struct bpf_program *prog, void *priv,$/;"   f
> +bpf_program__set_type        libbpf.c        /^void 
> bpf_program__set_type(struct bpf_program *prog, enum bpf_prog_type type)$/;"  
>    f
> +bpf_program__title   libbpf.c        /^const char *bpf_program__title(struct 
> bpf_program *prog, bool needs_copy)$/;" f
> +bpf_program__unload  libbpf.c        /^static void 
> bpf_program__unload(struct bpf_program *prog)$/;" f       file:
> +bpf_program_clear_priv_t     libbpf.h        /^typedef void 
> (*bpf_program_clear_priv_t)(struct bpf_program *,$/;"    t
> +bpf_program_prep_t   libbpf.h        /^typedef int 
> (*bpf_program_prep_t)(struct bpf_program *prog, int n,$/;"        t
> +bpf_verify_program   bpf.c   /^int bpf_verify_program(enum bpf_prog_type 
> type, const struct bpf_insn *insns,$/;"     f
> +check_feat   Makefile        /^  check_feat := 0$/;" m
> +check_feat   Makefile        /^check_feat := 1$/;"   m
> +check_path   libbpf.c        /^static int check_path(const char *path)$/;"   
> f       file:
> +clear_priv   libbpf.c        /^      bpf_map_clear_priv_t clear_priv;$/;"    
> m       struct:bpf_map  file:
> +clear_priv   libbpf.c        /^      bpf_object_clear_priv_t clear_priv;$/;" 
> m       struct:bpf_object       file:
> +clear_priv   libbpf.c        /^      bpf_program_clear_priv_t 
> clear_priv;$/;"        m       struct:bpf_program      file:
> +compare_bpf_map      libbpf.c        /^static int compare_bpf_map(const void 
> *_a, const void *_b)$/;"        f       file:
> +data libbpf.c        /^                      Elf_Data *data;$/;"     m       
> struct:bpf_object::__anon3::__anon4     file:
> +def  libbpf.c        /^      struct bpf_map_def def;$/;"     m       
> struct:bpf_map  typeref:struct:bpf_map::bpf_map_def     file:
> +do_install   Makefile        /^define do_install$/;" m
> +efile        libbpf.c        /^      } efile;$/;"    m       
> struct:bpf_object       typeref:struct:bpf_object::__anon3      file:
> +ehdr libbpf.c        /^              GElf_Ehdr ehdr;$/;"     m       
> struct:bpf_object::__anon3      file:
> +elf  libbpf.c        /^              Elf *elf;$/;"   m       
> struct:bpf_object::__anon3      file:
> +fd   libbpf.c        /^              int fd;$/;"     m       
> struct:bpf_object::__anon3      file:
> +fd   libbpf.c        /^      int fd;$/;"     m       struct:bpf_map  file:
> +fds  libbpf.c        /^              int *fds;$/;"   m       
> struct:bpf_program::__anon2     file:
> +idx  libbpf.c        /^      int idx;$/;"    m       struct:bpf_program      
> file:
> +insn_idx     libbpf.c        /^              int insn_idx;$/;"       m       
> struct:bpf_program::__anon1     file:
> +insns        libbpf.c        /^      struct bpf_insn *insns;$/;"     m       
> struct:bpf_program      typeref:struct:bpf_program::bpf_insn    file:
> +insns_cnt    libbpf.c        /^      size_t insns_cnt;$/;"   m       
> struct:bpf_program      file:
> +instances    libbpf.c        /^      } instances;$/;"        m       
> struct:bpf_program      typeref:struct:bpf_program::__anon2     file:
> +kern_version libbpf.c        /^      u32 kern_version;$/;"   m       
> struct:bpf_object       file:
> +key_size     libbpf.h        /^      unsigned int key_size;$/;"      m       
> struct:bpf_map_def
> +libbpf_errno libbpf.h        /^enum libbpf_errno {$/;"       g
> +libbpf_get_error     libbpf.c        /^long libbpf_get_error(const void 
> *ptr)$/;"    f
> +libbpf_print_fn_t    libbpf.h        /^typedef int 
> (*libbpf_print_fn_t)(const char *, ...)$/;"       t
> +libbpf_set_print     libbpf.c        /^void 
> libbpf_set_print(libbpf_print_fn_t warn,$/;"     f
> +libbpf_strerror      libbpf.c        /^int libbpf_strerror(int err, char 
> *buf, size_t size)$/;"      f
> +libbpf_strerror_table        libbpf.c        /^static const char 
> *libbpf_strerror_table[NR_ERRNO] = {$/;"    v       file:
> +libdir       Makefile        /^libdir = $(prefix)\/$(libdir_relative)$/;"    
> m
> +libdir_SQ    Makefile        /^libdir_SQ = $(subst ','\\'',$(libdir))$/;"    
> m
> +libdir_relative      Makefile        /^  libdir_relative = lib$/;"   m
> +libdir_relative      Makefile        /^  libdir_relative = lib64$/;" m
> +libdir_relative_SQ   Makefile        /^libdir_relative_SQ = $(subst 
> ','\\'',$(libdir_relative))$/;"  m
> +license      libbpf.c        /^      char license[64];$/;"   m       
> struct:bpf_object       file:
> +list libbpf.c        /^      struct list_head list;$/;"      m       
> struct:bpf_object       typeref:struct:bpf_object::list_head    file:
> +load_program libbpf.c        /^load_program(enum bpf_prog_type type, const 
> char *name, struct bpf_insn *insns,$/;"   f       file:
> +loaded       libbpf.c        /^      bool loaded;$/;"        m       
> struct:bpf_object       file:
> +make_dir     libbpf.c        /^static int make_dir(const char *path)$/;"     
> f       file:
> +man_dir      Makefile        /^man_dir = $(prefix)\/share\/man$/;"   m
> +man_dir_SQ   Makefile        /^man_dir_SQ = '$(subst 
> ','\\'',$(man_dir))'$/;"        m
> +map_flags    libbpf.h        /^      unsigned int map_flags;$/;"     m       
> struct:bpf_map_def
> +map_idx      libbpf.c        /^              int map_idx;$/;"        m       
> struct:bpf_program::__anon1     file:
> +maps libbpf.c        /^      struct bpf_map *maps;$/;"       m       
> struct:bpf_object       typeref:struct:bpf_object::bpf_map      file:
> +maps_shndx   libbpf.c        /^              int maps_shndx;$/;"     m       
> struct:bpf_object::__anon3      file:
> +max_entries  libbpf.h        /^      unsigned int max_entries;$/;"   m       
> struct:bpf_map_def
> +min  bpf.c   49;"    d       file:
> +name libbpf.c        /^      char *name;$/;" m       struct:bpf_map  file:
> +name libbpf.c        /^      char *name;$/;" m       struct:bpf_program      
> file:
> +new_insn_cnt libbpf.h        /^      int new_insn_cnt;$/;"   m       
> struct:bpf_prog_prep_result
> +new_insn_ptr libbpf.h        /^      struct bpf_insn *new_insn_ptr;$/;"      
> m       struct:bpf_prog_prep_result     
> typeref:struct:bpf_prog_prep_result::bpf_insn
> +nr   libbpf.c        /^              int nr;$/;"     m       
> struct:bpf_program::__anon2     file:
> +nr_maps      libbpf.c        /^      size_t nr_maps;$/;"     m       
> struct:bpf_object       file:
> +nr_programs  libbpf.c        /^      size_t nr_programs;$/;" m       
> struct:bpf_object       file:
> +nr_reloc     libbpf.c        /^              int nr_reloc;$/;"       m       
> struct:bpf_object::__anon3      file:
> +nr_reloc     libbpf.c        /^      int nr_reloc;$/;"       m       
> struct:bpf_program      file:
> +obj  libbpf.c        /^      struct bpf_object *obj;$/;"     m       
> struct:bpf_program      typeref:struct:bpf_program::bpf_object  file:
> +obj_buf      libbpf.c        /^              void *obj_buf;$/;"      m       
> struct:bpf_object::__anon3      file:
> +obj_buf_sz   libbpf.c        /^              size_t obj_buf_sz;$/;"  m       
> struct:bpf_object::__anon3      file:
> +obj_elf_valid        libbpf.c        250;"   d       file:
> +offset       libbpf.c        /^      size_t offset;$/;"      m       
> struct:bpf_map  file:
> +path libbpf.c        /^      char path[];$/;"        m       
> struct:bpf_object       file:
> +pfd  libbpf.h        /^      int *pfd;$/;"   m       
> struct:bpf_prog_prep_result
> +plugin_dir_SQ        Makefile        /^plugin_dir_SQ = $(subst 
> ','\\'',$(plugin_dir))$/;"    m
> +pr_debug     libbpf.c        81;"    d       file:
> +pr_info      libbpf.c        80;"    d       file:
> +pr_warning   libbpf.c        79;"    d       file:
> +prefix       Makefile        /^prefix ?= \/usr\/local$/;"    m
> +preprocessor libbpf.c        /^      bpf_program_prep_t preprocessor;$/;"    
> m       struct:bpf_program      file:
> +priv libbpf.c        /^      void *priv;$/;" m       struct:bpf_map  file:
> +priv libbpf.c        /^      void *priv;$/;" m       struct:bpf_object       
> file:
> +priv libbpf.c        /^      void *priv;$/;" m       struct:bpf_program      
> file:
> +programs     libbpf.c        /^      struct bpf_program *programs;$/;"       
> m       struct:bpf_object       typeref:struct:bpf_object::bpf_program  file:
> +ptr_to_u64   bpf.c   /^static inline __u64 ptr_to_u64(const void *ptr)$/;"   
> f       file:
> +reloc        libbpf.c        /^              } *reloc;$/;"   m       
> struct:bpf_object::__anon3      typeref:struct:bpf_object::__anon3::__anon4   
>   file:
> +reloc_desc   libbpf.c        /^      } *reloc_desc;$/;"      m       
> struct:bpf_program      typeref:struct:bpf_program::__anon1     file:
> +section_name libbpf.c        /^      char *section_name;$/;" m       
> struct:bpf_program      file:
> +shdr libbpf.c        /^                      GElf_Shdr shdr;$/;"     m       
> struct:bpf_object::__anon3::__anon4     file:
> +srctree      Makefile        /^srctree := $(patsubst %\/,%,$(dir 
> $(CURDIR)))$/;"     m
> +srctree      Makefile        /^srctree := $(patsubst %\/,%,$(dir 
> $(srctree)))$/;"    m
> +strtabidx    libbpf.c        /^              size_t strtabidx;$/;"   m       
> struct:bpf_object::__anon3      file:
> +symbols      libbpf.c        /^              Elf_Data *symbols;$/;"  m       
> struct:bpf_object::__anon3      file:
> +sys_bpf      bpf.c   /^static inline int sys_bpf(enum bpf_cmd cmd, union 
> bpf_attr *attr,$/;" f       file:
> +type libbpf.c        /^      enum bpf_prog_type type;$/;"    m       
> struct:bpf_program      typeref:enum:bpf_program::bpf_prog_type file:
> +type libbpf.h        /^      unsigned int type;$/;"  m       
> struct:bpf_map_def
> +update_dir   Makefile        /^define update_dir$/;" m
> +value_size   libbpf.h        /^      unsigned int value_size;$/;"    m       
> struct:bpf_map_def
> +zclose       libbpf.c        153;"   d       file:
> +zfree        libbpf.c        149;"   d       file:
> 

Reply via email to