首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何得到eBPF地图的大小?

如何得到eBPF地图的大小?
EN

Stack Overflow用户
提问于 2022-06-27 13:12:58
回答 1查看 90关注 0票数 -1

我是eBPF新手,我想将元素插入到BPF_ARRAY中,那么有什么方法可以像C++ push_back() size()函数那样做呢?

EN

回答 1

Stack Overflow用户

发布于 2022-06-27 20:20:07

是也不是。您可以更改数组映射中的元素(通过系统调用bpf(BPF_MAP_UPDATE_ELEM, ...)),但此时不能动态调整映射的大小(请参见这个答案),尽管这在将来可能是可能的,因为以前已经出现过一些工作

因此,现在您有一个固定大小的数组,可以从BPF程序或从用户空间进行更新。对于用户空间方面,在C++中,您可能希望使用libbpf更新您的地图。您在bpf.h、bpf_map_update_elem()中有一个围绕syscall的低级别包装器,以及一个在libbpf.h:bpf_map__update_elem()中对由库管理的映射对象工作的高级函数。

要回答标题中的问题:是的,您可以通过bpf()系统调用获得地图大小。Libbpf提供了一个包装器:bpf_obj_get_info_by_fd(),它填充了一个struct bpf_map_info,您可以从中检索映射的大小。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72772724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档