3.6 Android gpu_mem ebpf程序设计原理(二)

本篇我们继续以gpu_mem为例详细拆解eBPF程序组成。

三,DEFINE_BPF_PROG宏

从宏的字面意义上,我们可以看到,该宏定义了处理kernel内核事件被触发后的handler函数。这部分后面照葫芦画瓢写HelloWorld Demo的时候还会介绍。这里我们来先看android的宏定义的设计。

frameworks/libs/net/common/native/bpf_headers/include/bpf/bpf_helpers.h

// programs with no kernel version requirements
#define DEFINE_BPF_PROG(SECTION_NAME, prog_uid, prog_gid, the_prog) \
    DEFINE_BPF_PROG_KVER_RANGE_OPT(SECTION_NAME, prog_uid, prog_gid, the_prog, 0, KVER_INF, false)
#define DEFINE_OPTIONAL_BPF_PROG(SECTION_NAME, prog_uid, prog_gid, the_prog) \
    DEFINE_BPF_PROG_KVER_RANGE_OPT(SECTION_NAME, prog_uid, prog_gid, the_prog, 0, KVER_INF, true)

#define DEFINE_BPF_PROG_KVER_RANGE_OPT(SECTION_NAME, prog_uid, prog_gid, the_prog, min_kv, max_kv, \
                                       opt)                                                        \
    //段的定义
    const struct bpf_prog_def SECTION("progs") the_prog##_def = {                              

你可能感兴趣的:(Android,eBPF,Book,android,python,开发语言,eBPF,ebpf,linux)