mirror of
https://github.com/torvalds/linux
synced 2024-10-21 02:39:51 +00:00
Merge branch 'libbpf: Deprecate bpf_{map,program}__{prev,next} APIs since v0.7'
Hengqi Chen says: ==================== bpf_{map,program}__{prev,next} don't follow the libbpf API naming convention. Deprecate them and replace them with a new set of APIs named bpf_object__{prev,next}_{program,map}. v1->v2: [0] * Addressed Andrii's comments [0]: https://patchwork.kernel.org/project/netdevbpf/patch/20210906165456.325999-1-hengqi.chen@gmail.com/ ==================== Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
This commit is contained in:
commit
0e545dbaa2
|
@ -128,7 +128,7 @@ int main(int argc, char **argv)
|
|||
if (bpf_prog_load_xattr(&prog_load_attr, &obj, &prog_fd))
|
||||
return 1;
|
||||
|
||||
map = bpf_map__next(NULL, obj);
|
||||
map = bpf_object__next_map(obj, NULL);
|
||||
if (!map) {
|
||||
printf("finding a map in obj file failed\n");
|
||||
return 1;
|
||||
|
|
|
@ -154,7 +154,7 @@ int main(int argc, char **argv)
|
|||
return 1;
|
||||
}
|
||||
|
||||
map = bpf_map__next(NULL, obj);
|
||||
map = bpf_object__next_map(obj, NULL);
|
||||
if (!map) {
|
||||
printf("finding a map in obj file failed\n");
|
||||
return 1;
|
||||
|
|
|
@ -57,7 +57,7 @@ static int do_pin(int argc, char **argv)
|
|||
goto close_obj;
|
||||
}
|
||||
|
||||
prog = bpf_program__next(NULL, obj);
|
||||
prog = bpf_object__next_program(obj, NULL);
|
||||
if (!prog) {
|
||||
p_err("can't find bpf program in objfile %s", objfile);
|
||||
goto close_obj;
|
||||
|
|
|
@ -1601,7 +1601,7 @@ static int load_with_options(int argc, char **argv, bool first_prog_only)
|
|||
goto err_close_obj;
|
||||
|
||||
if (first_prog_only) {
|
||||
prog = bpf_program__next(NULL, obj);
|
||||
prog = bpf_object__next_program(obj, NULL);
|
||||
if (!prog) {
|
||||
p_err("object file doesn't contain any bpf program");
|
||||
goto err_close_obj;
|
||||
|
|
|
@ -7834,6 +7834,12 @@ __bpf_program__iter(const struct bpf_program *p, const struct bpf_object *obj,
|
|||
|
||||
struct bpf_program *
|
||||
bpf_program__next(struct bpf_program *prev, const struct bpf_object *obj)
|
||||
{
|
||||
return bpf_object__next_program(obj, prev);
|
||||
}
|
||||
|
||||
struct bpf_program *
|
||||
bpf_object__next_program(const struct bpf_object *obj, struct bpf_program *prev)
|
||||
{
|
||||
struct bpf_program *prog = prev;
|
||||
|
||||
|
@ -7846,6 +7852,12 @@ bpf_program__next(struct bpf_program *prev, const struct bpf_object *obj)
|
|||
|
||||
struct bpf_program *
|
||||
bpf_program__prev(struct bpf_program *next, const struct bpf_object *obj)
|
||||
{
|
||||
return bpf_object__prev_program(obj, next);
|
||||
}
|
||||
|
||||
struct bpf_program *
|
||||
bpf_object__prev_program(const struct bpf_object *obj, struct bpf_program *next)
|
||||
{
|
||||
struct bpf_program *prog = next;
|
||||
|
||||
|
@ -8778,6 +8790,12 @@ __bpf_map__iter(const struct bpf_map *m, const struct bpf_object *obj, int i)
|
|||
|
||||
struct bpf_map *
|
||||
bpf_map__next(const struct bpf_map *prev, const struct bpf_object *obj)
|
||||
{
|
||||
return bpf_object__next_map(obj, prev);
|
||||
}
|
||||
|
||||
struct bpf_map *
|
||||
bpf_object__next_map(const struct bpf_object *obj, const struct bpf_map *prev)
|
||||
{
|
||||
if (prev == NULL)
|
||||
return obj->maps;
|
||||
|
@ -8787,6 +8805,12 @@ bpf_map__next(const struct bpf_map *prev, const struct bpf_object *obj)
|
|||
|
||||
struct bpf_map *
|
||||
bpf_map__prev(const struct bpf_map *next, const struct bpf_object *obj)
|
||||
{
|
||||
return bpf_object__prev_map(obj, next);
|
||||
}
|
||||
|
||||
struct bpf_map *
|
||||
bpf_object__prev_map(const struct bpf_object *obj, const struct bpf_map *next)
|
||||
{
|
||||
if (next == NULL) {
|
||||
if (!obj->nr_maps)
|
||||
|
|
|
@ -190,16 +190,22 @@ LIBBPF_API int libbpf_find_vmlinux_btf_id(const char *name,
|
|||
|
||||
/* Accessors of bpf_program */
|
||||
struct bpf_program;
|
||||
LIBBPF_API struct bpf_program *bpf_program__next(struct bpf_program *prog,
|
||||
const struct bpf_object *obj);
|
||||
LIBBPF_API LIBBPF_DEPRECATED_SINCE(0, 7, "use bpf_object__next_program() instead")
|
||||
struct bpf_program *bpf_program__next(struct bpf_program *prog,
|
||||
const struct bpf_object *obj);
|
||||
LIBBPF_API struct bpf_program *
|
||||
bpf_object__next_program(const struct bpf_object *obj, struct bpf_program *prog);
|
||||
|
||||
#define bpf_object__for_each_program(pos, obj) \
|
||||
for ((pos) = bpf_program__next(NULL, (obj)); \
|
||||
(pos) != NULL; \
|
||||
(pos) = bpf_program__next((pos), (obj)))
|
||||
#define bpf_object__for_each_program(pos, obj) \
|
||||
for ((pos) = bpf_object__next_program((obj), NULL); \
|
||||
(pos) != NULL; \
|
||||
(pos) = bpf_object__next_program((obj), (pos)))
|
||||
|
||||
LIBBPF_API struct bpf_program *bpf_program__prev(struct bpf_program *prog,
|
||||
const struct bpf_object *obj);
|
||||
LIBBPF_API LIBBPF_DEPRECATED_SINCE(0, 7, "use bpf_object__prev_program() instead")
|
||||
struct bpf_program *bpf_program__prev(struct bpf_program *prog,
|
||||
const struct bpf_object *obj);
|
||||
LIBBPF_API struct bpf_program *
|
||||
bpf_object__prev_program(const struct bpf_object *obj, struct bpf_program *prog);
|
||||
|
||||
typedef void (*bpf_program_clear_priv_t)(struct bpf_program *, void *);
|
||||
|
||||
|
@ -503,16 +509,21 @@ bpf_object__find_map_fd_by_name(const struct bpf_object *obj, const char *name);
|
|||
LIBBPF_API struct bpf_map *
|
||||
bpf_object__find_map_by_offset(struct bpf_object *obj, size_t offset);
|
||||
|
||||
LIBBPF_API LIBBPF_DEPRECATED_SINCE(0, 7, "use bpf_object__next_map() instead")
|
||||
struct bpf_map *bpf_map__next(const struct bpf_map *map, const struct bpf_object *obj);
|
||||
LIBBPF_API struct bpf_map *
|
||||
bpf_map__next(const struct bpf_map *map, const struct bpf_object *obj);
|
||||
bpf_object__next_map(const struct bpf_object *obj, const struct bpf_map *map);
|
||||
|
||||
#define bpf_object__for_each_map(pos, obj) \
|
||||
for ((pos) = bpf_map__next(NULL, (obj)); \
|
||||
for ((pos) = bpf_object__next_map((obj), NULL); \
|
||||
(pos) != NULL; \
|
||||
(pos) = bpf_map__next((pos), (obj)))
|
||||
(pos) = bpf_object__next_map((obj), (pos)))
|
||||
#define bpf_map__for_each bpf_object__for_each_map
|
||||
|
||||
LIBBPF_API LIBBPF_DEPRECATED_SINCE(0, 7, "use bpf_object__prev_map() instead")
|
||||
struct bpf_map *bpf_map__prev(const struct bpf_map *map, const struct bpf_object *obj);
|
||||
LIBBPF_API struct bpf_map *
|
||||
bpf_map__prev(const struct bpf_map *map, const struct bpf_object *obj);
|
||||
bpf_object__prev_map(const struct bpf_object *obj, const struct bpf_map *map);
|
||||
|
||||
/**
|
||||
* @brief **bpf_map__fd()** gets the file descriptor of the passed
|
||||
|
|
|
@ -389,6 +389,10 @@ LIBBPF_0.5.0 {
|
|||
|
||||
LIBBPF_0.6.0 {
|
||||
global:
|
||||
bpf_object__next_map;
|
||||
bpf_object__next_program;
|
||||
bpf_object__prev_map;
|
||||
bpf_object__prev_program;
|
||||
btf__add_btf;
|
||||
btf__add_tag;
|
||||
} LIBBPF_0.5.0;
|
||||
|
|
|
@ -4511,7 +4511,7 @@ static void do_test_file(unsigned int test_num)
|
|||
if (CHECK(err, "obj: %d", err))
|
||||
return;
|
||||
|
||||
prog = bpf_program__next(NULL, obj);
|
||||
prog = bpf_object__next_program(obj, NULL);
|
||||
if (CHECK(!prog, "Cannot find bpf_prog")) {
|
||||
err = -1;
|
||||
goto done;
|
||||
|
|
|
@ -285,7 +285,7 @@ static void test_fmod_ret_freplace(void)
|
|||
if (!ASSERT_OK_PTR(freplace_obj, "freplace_obj_open"))
|
||||
goto out;
|
||||
|
||||
prog = bpf_program__next(NULL, freplace_obj);
|
||||
prog = bpf_object__next_program(freplace_obj, NULL);
|
||||
err = bpf_program__set_attach_target(prog, pkt_fd, NULL);
|
||||
ASSERT_OK(err, "freplace__set_attach_target");
|
||||
|
||||
|
@ -302,7 +302,7 @@ static void test_fmod_ret_freplace(void)
|
|||
goto out;
|
||||
|
||||
attach_prog_fd = bpf_program__fd(prog);
|
||||
prog = bpf_program__next(NULL, fmod_obj);
|
||||
prog = bpf_object__next_program(fmod_obj, NULL);
|
||||
err = bpf_program__set_attach_target(prog, attach_prog_fd, NULL);
|
||||
ASSERT_OK(err, "fmod_ret_set_attach_target");
|
||||
|
||||
|
@ -352,7 +352,7 @@ static void test_obj_load_failure_common(const char *obj_file,
|
|||
if (!ASSERT_OK_PTR(obj, "obj_open"))
|
||||
goto close_prog;
|
||||
|
||||
prog = bpf_program__next(NULL, obj);
|
||||
prog = bpf_object__next_program(obj, NULL);
|
||||
err = bpf_program__set_attach_target(prog, pkt_fd, NULL);
|
||||
ASSERT_OK(err, "set_attach_target");
|
||||
|
||||
|
|
|
@ -114,7 +114,7 @@ static int prepare_bpf_obj(void)
|
|||
err = bpf_object__load(obj);
|
||||
RET_ERR(err, "load bpf_object", "err:%d\n", err);
|
||||
|
||||
prog = bpf_program__next(NULL, obj);
|
||||
prog = bpf_object__next_program(obj, NULL);
|
||||
RET_ERR(!prog, "get first bpf_program", "!prog\n");
|
||||
select_by_skb_data_prog = bpf_program__fd(prog);
|
||||
RET_ERR(select_by_skb_data_prog < 0, "get prog fd",
|
||||
|
|
|
@ -109,7 +109,7 @@ static int run_test(int cgroup_fd, int server_fd)
|
|||
return -1;
|
||||
}
|
||||
|
||||
map = bpf_map__next(NULL, obj);
|
||||
map = bpf_object__next_map(obj, NULL);
|
||||
map_fd = bpf_map__fd(map);
|
||||
|
||||
err = bpf_prog_attach(prog_fd, cgroup_fd, BPF_CGROUP_SOCK_OPS, 0);
|
||||
|
|
|
@ -187,7 +187,7 @@ int main(int argc, char **argv)
|
|||
return 1;
|
||||
}
|
||||
|
||||
map = bpf_map__next(NULL, obj);
|
||||
map = bpf_object__next_map(obj, NULL);
|
||||
if (map)
|
||||
map_fd = bpf_map__fd(map);
|
||||
if (!map || map_fd < 0) {
|
||||
|
|
Loading…
Reference in a new issue