Message ID | 20190128191613.11705-2-maciejromanfijalkowski@gmail.com |
---|---|
State | Changes Requested |
Delegated to: | BPF Maintainers |
Headers | show |
Series | xdp: Avoid unloading xdp prog not attached by sample | expand |
On 1/28/19 11:16 AM, Maciej Fijalkowski wrote: > From: Maciej Fijalkowski <maciej.fijalkowski@intel.com> > > XDP samples are mostly cooperating with eBPF maps through their file > descriptors. In case of a eBPF program that contains multiple maps it > might be tiresome to iterate through them and call bpf_map__fd for each > one. Add a helper mostly based on bpf_object__find_map_by_name, but > instead of returning the struct bpf_map pointer, return map fd. > > Suggested-by: Jakub Kicinski <jakub.kicinski@netronome.com> > Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com> > Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> > --- I've been carrying something similar around for awhile as well. Acked-by: John Fastabend <john.fastabend@gmail.com>
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 2ccde17957e6..03bc01ca2577 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -2884,6 +2884,12 @@ bpf_object__find_map_by_name(struct bpf_object *obj, const char *name) return NULL; } +int +bpf_object__find_map_fd_by_name(struct bpf_object *obj, const char *name) +{ + return bpf_map__fd(bpf_object__find_map_by_name(obj, name)); +} + struct bpf_map * bpf_object__find_map_by_offset(struct bpf_object *obj, size_t offset) { diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h index 62ae6cb93da1..931be6f3408c 100644 --- a/tools/lib/bpf/libbpf.h +++ b/tools/lib/bpf/libbpf.h @@ -264,6 +264,9 @@ struct bpf_map; LIBBPF_API struct bpf_map * bpf_object__find_map_by_name(struct bpf_object *obj, const char *name); +LIBBPF_API int +bpf_object__find_map_fd_by_name(struct bpf_object *obj, const char *name); + /* * Get bpf_map through the offset of corresponding struct bpf_map_def * in the BPF object file. diff --git a/tools/lib/bpf/libbpf.map b/tools/lib/bpf/libbpf.map index 266bc95d0142..b183c6c3b990 100644 --- a/tools/lib/bpf/libbpf.map +++ b/tools/lib/bpf/libbpf.map @@ -130,4 +130,5 @@ LIBBPF_0.0.2 { bpf_probe_helper; bpf_probe_map_type; bpf_probe_prog_type; + bpf_object__find_map_fd_by_name; } LIBBPF_0.0.1;