• Wang Nan's avatar
    bpf tools: Collect eBPF programs from their own sections · a5b8bd47
    Wang Nan authored
    This patch collects all programs in an object file into an array of
    'struct bpf_program' for further processing. That structure is for
    representing each eBPF program. 'bpf_prog' should be a better name, but
    it has been used by linux/filter.h. Although it is a kernel space name,
    I still prefer to call it 'bpf_program' to prevent possible confusion.
    
    bpf_object__add_program() creates a new 'struct bpf_program' object.
    It first init a variable in stack using bpf_program__init(), then if
    success, enlarges obj->programs array and copy the new object in.
    Signed-off-by: default avatarWang Nan <wangnan0@huawei.com>
    Acked-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
    Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: He Kuang <hekuang@huawei.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kaixu Xia <xiakaixu@huawei.com>
    Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/1435716878-189507-13-git-send-email-wangnan0@huawei.com
    [ Made bpf_object__add_program() propagate the error (-EINVAL or -ENOMEM) ]
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    a5b8bd47
libbpf.c 11.3 KB