写在前面
前面已经介绍,Android从9.0版本开始支持eBPF,并且主要用于网络及CPU性能的监控上。它包含一个eBPF加载器和库。加载器在Andoroid init启动/system/etc/bpf/下的所有eBPF程序,ebpf程序在完成加载后,内核ebpf程序进行verify和attach,顺利的话,最终,ebpf程序会被hook或插入到指定的内核函数中,这样就可以完成对内核活动的监控。
本章,我们继续探索eBPF在Android上的应用。首先我们来看,ebpf的代码仓分布。
一,bpfloader
- android/system/bpf
- android/system/bpf/bpfloader
这个bpf代码仓基本上是ebpf加载器在android上的唯一实现。系统编译时生成bpfloader可执行程序,系统镜像打包后的路径为/system/bin/bpfloader。
它包含bpfloader.rc文件和bpfloader主程序。而rc我们就比价熟悉了,它是很多native服务的初始化及运行入口,那么bpfloader.rc自然而然也是bpfloader程序运行的入口。
bpfloader负载在系统初始化时,会创建相关的目录,并加载/system/etc/bpf目录下的所有eBPF程序。android 12默认支持的eBPF程序包括clatd.o,gpu_mem.o,netd.o,time_in_state.o等。文章来源:https://www.toymoban.com/news/detail-705675.html
- android/system/bpf/libbpf_android
系统编译时生成libbpf_android.so,系统镜像打包后的路径为/lib64/libbpf_android.so。其主要的作为bpfloader可执行程序的共享库,文章来源地址https://www.toymoban.com/news/detail-705675.html
到了这里,关于3.1 Android eBPF代码仓解读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!