[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190116050830.1881316-9-ast@kernel.org>
Date: Tue, 15 Jan 2019 21:08:29 -0800
From: Alexei Starovoitov <ast@...nel.org>
To: <davem@...emloft.net>
CC: <daniel@...earbox.net>, <jakub.kicinski@...ronome.com>,
<netdev@...r.kernel.org>, <kernel-team@...com>
Subject: [PATCH bpf-next 8/9] libbpf: introduce bpf_map_lookup_elem_flags()
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 <ast@...nel.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 /dhiebert@...rs.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
Powered by blists - more mailing lists