• Andrii Nakryiko's avatar
    libbpf: add bpf_object__open_{file, mem} w/ extensible opts · 2ce8450e
    Andrii Nakryiko authored
    Add new set of bpf_object__open APIs using new approach to optional
    parameters extensibility allowing simpler ABI compatibility approach.
    
    This patch demonstrates an approach to implementing libbpf APIs that
    makes it easy to extend existing APIs with extra optional parameters in
    such a way, that ABI compatibility is preserved without having to do
    symbol versioning and generating lots of boilerplate code to handle it.
    To facilitate succinct code for working with options, add OPTS_VALID,
    OPTS_HAS, and OPTS_GET macros that hide all the NULL, size, and zero
    checks.
    
    Additionally, newly added libbpf APIs are encouraged to follow similar
    pattern of having all mandatory parameters as formal function parameters
    and always have optional (NULL-able) xxx_opts struct, which should
    always have real struct size as a first field and the rest would be
    optional parameters added over time, which tune the behavior of existing
    API, if specified by user.
    Signed-off-by: default avatarAndrii Nakryiko <andriin@fb.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    2ce8450e
libbpf.c 147 KB