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 +++++++++++++++++++++++++++++++++++++++
 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:
-- 
2.17.1

Reply via email to