Add a new pinned_maps_path member to the bpf_prog_load_attr structure and extend the bpf_prog_load_xattr() function to pass this pointer to the new bpf_object__reuse_maps() helper. This change provides users with a simple way to use existing pinned maps when (re)loading BPF programs. Signed-off-by: Anton Protopopov <a.s.protopopov@xxxxxxxxx> --- tools/lib/bpf/libbpf.c | 8 ++++++++ tools/lib/bpf/libbpf.h | 1 + 2 files changed, 9 insertions(+) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 84c9e8f7bfd3..9daa09c9fe1a 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -3953,6 +3953,14 @@ int bpf_prog_load_xattr(const struct bpf_prog_load_attr *attr, first_prog = prog; } + if (attr->pinned_maps_path) { + err = bpf_object__reuse_maps(obj, attr->pinned_maps_path); + if (err < 0) { + bpf_object__close(obj); + return err; + } + } + bpf_object__for_each_map(map, obj) { if (!bpf_map__is_offload_neutral(map)) map->map_ifindex = attr->ifindex; diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h index 7fe465a1be76..6bf405bb9c1f 100644 --- a/tools/lib/bpf/libbpf.h +++ b/tools/lib/bpf/libbpf.h @@ -329,6 +329,7 @@ struct bpf_prog_load_attr { int ifindex; int log_level; int prog_flags; + const char *pinned_maps_path; }; LIBBPF_API int bpf_prog_load_xattr(const struct bpf_prog_load_attr *attr, -- 2.19.1