1.3.2、bpf_obj_get() static int bpf_obj_get(const union bpf_attr *attr) { if (CHECK_ATTR(BPF_OBJ) || attr->bpf_fd != 0) return -EINVAL; return bpf_obj_get_user(u64_to_ptr(attr->pathname)); } ↓ int bpf_obj_get_user(const char __user *pathname) { enum bpf_type type ...
1.1.1、bpf内存空间分配1.1.2、bpf verifier1.1.3、bpf JIT/kernel interpreter1.1.4、fd分配1.2、bpf map操作1.2.1、map的创建1.2.2、map的查找1.2.3、BPF_FUNC_map_lookup_elem1.3、obj pin1.3.1、bpf_obj_pin()1.3.2、bpf_obj_get() 2、Tracing类型的BPF程序 2.1、bpf程序的绑定2.2、bpf程序的执行 3...
1.2.3、BPF_FUNC_map_lookup_elem 1.3、obj pin 1.3.1、bpf_obj_pin 1.3.2、bpf_obj_get 2、Tracing类型的BPF程序 2.1、bpf程序的绑定 2.2、bpf程序的执行 3、Filter类型的BPF程序 BPF的字面上意思Berkeley Packet Filter意味着它是从包过滤而来。如果在开始前对BPF缺乏感性的认识建议先看一下参考文档:“3.1...
BPF映射的基本特征使基于文件描述符的,这意味着关闭文件描述符后,映射及其所保存的所有信息都会消失。这意味着我们无法获取已经结束的BPF程序保存在映射之中的信息,在Linux 内核4.4 版本之后,引入了两个新的系统调用,bpf_obj_pin用来固定(固定后不可更改)和bpf_obj_get获取来自BPF虚拟文件系统的映射和BPF程序。 BPF...
2.bpf_obj_get函数 可从已固定的/sys/fs/bpf文件返回文件描述符。此文件描述符可用于进一步的操作,例如读取映射或将程序附加到跟踪点。 定义如下: intbpf_obj_get(constchar*pathname) 3.bpf_map_delete_elem函数 删除映像中对应键的键值对,定义如下: ...
● int bpf_obj_get(const char *pathname) ● fd = sys_bpf(BPF_OBJ_GET, …); 生命周期 BPF map 的生命周期通过 refcnt 管理,如下是各种操作对应的 refcnt 的变化。 BPF MAP 类型 截止到 Linux Kernel 5.13 版本, 已有的 map 类型如下所示: ...
1.3、objpin 1.3.1、bpf_obj_pin() 1.3.2、bpf_obj_get() 2、Tracing类型的BPF程序 2.1、bpf程序的绑定 2.2、bpf程序的执行 3、Filter类型的BPF程序 BPF的字面上意思Berkeley Packet Filter意味着它是从包过滤而来。如果在开始前对BPF缺乏感性的认识建议先看一下参考文档:“3.1、Berkeley Packet Filter (BPF)...
通过bpf_obj_get()来取得bpf程序和bpf map的句柄(不是使用常规的fd open) 通过android::bpf::BpfMap来遍历bpf map里面的所有数据(Key-Value对) 可以访问文章开头的Github链接查看完整代码 总结 bpf提供了强大的功能,凭借数量众多的tracepoint和kprobe,绝大多数位置都能提供hook,在不修改内核的情况下能实现非常精彩...
1.3.2、bpf_obj_get() 2、Tracing类型的BPF程序 2.1、bpf程序的绑定 2.2、bpf程序的执行 3、Filter类型的BPF程序 BPF的字面上意思Berkeley Packet Filter意味着它是从包过滤而来。如果在开始前对BPF缺乏感性的认识建议先看一下参考文档:“3.1、Berkeley Packet Filter (BPF) (Kernel Document)”、“3.2、BPF and...
BPF_OBJ_GET, }; 用户程序调用syscall(__NR_bpf, BPF_PROG_LOAD, &attr, sizeof(attr))来将我们写的BPF代码加载进内核,attr结构体中包含了指令数量、指令首地址、日志级别等属性。在加载之前会利用虚拟执行的方式来做安全行校验,这个校验包括对指定语法的检查、指令数量的检查、指令中的指针和立即数的范围及读...