aboutsummaryrefslogtreecommitdiffstats
path: root/ipc
diff options
context:
space:
mode:
authorAndrey Ignatov <rdna@fb.com>2019-02-14 15:01:42 -0800
committerDaniel Borkmann <daniel@iogearbox.net>2019-02-15 15:20:42 +0100
commit1a11a4c74f73adb840d61371c3bb560ed4d7a87f (patch)
treec550a378980ca3070ac1398ebe7eea853f2149f2 /ipc
parentnet: bpf: remove XDP_QUERY_XSK_UMEM enumerator (diff)
downloadlinux-dev-1a11a4c74f73adb840d61371c3bb560ed4d7a87f.tar.xz
linux-dev-1a11a4c74f73adb840d61371c3bb560ed4d7a87f.zip
libbpf: Introduce bpf_map__resize
Add bpf_map__resize() to change max_entries for a map. Quite often necessary map size is unknown at compile time and can be calculated only at run time. Currently the following approach is used to do so: * bpf_object__open_buffer() to open Elf file from a buffer; * bpf_object__find_map_by_name() to find relevant map; * bpf_map__def() to get map attributes and create struct bpf_create_map_attr from them; * update max_entries in bpf_create_map_attr; * bpf_create_map_xattr() to create new map with updated max_entries; * bpf_map__reuse_fd() to replace the map in bpf_object with newly created one. And after all this bpf_object can finally be loaded. The map will have new size. It 1) is quite a lot of steps; 2) doesn't take BTF into account. For "2)" even more steps should be made and some of them require changes to libbpf (e.g. to get struct btf * from bpf_object). Instead the whole problem can be solved by introducing simple bpf_map__resize() API that checks the map and sets new max_entries if the map is not loaded yet. So the new steps are: * bpf_object__open_buffer() to open Elf file from a buffer; * bpf_object__find_map_by_name() to find relevant map; * bpf_map__resize() to update max_entries. That's much simpler and works with BTF. Signed-off-by: Andrey Ignatov <rdna@fb.com> Acked-by: Yonghong Song <yhs@fb.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'ipc')
0 files changed, 0 insertions, 0 deletions