• Andrii Nakryiko's avatar
    libbpf: Rework feature-probing APIs · 878d8def
    Andrii Nakryiko authored
    Create three extensible alternatives to inconsistently named
    feature-probing APIs:
    
      - libbpf_probe_bpf_prog_type() instead of bpf_probe_prog_type();
      - libbpf_probe_bpf_map_type() instead of bpf_probe_map_type();
      - libbpf_probe_bpf_helper() instead of bpf_probe_helper().
    
    Set up return values such that libbpf can report errors (e.g., if some
    combination of input arguments isn't possible to validate, etc), in
    addition to whether the feature is supported (return value 1) or not
    supported (return value 0).
    
    Also schedule deprecation of those three APIs. Also schedule deprecation
    of bpf_probe_large_insn_limit().
    
    Also fix all the existing detection logic for various program and map
    types that never worked:
    
      - BPF_PROG_TYPE_LIRC_MODE2;
      - BPF_PROG_TYPE_TRACING;
      - BPF_PROG_TYPE_LSM;
      - BPF_PROG_TYPE_EXT;
      - BPF_PROG_TYPE_SYSCALL;
      - BPF_PROG_TYPE_STRUCT_OPS;
      - BPF_MAP_TYPE_STRUCT_OPS;
      - BPF_MAP_TYPE_BLOOM_FILTER.
    
    Above prog/map types needed special setups and detection logic to work.
    Subsequent patch adds selftests that will make sure that all the
    detection logic keeps working for all current and future program and map
    types, avoiding otherwise inevitable bit rot.
    
      [0] Closes: https://github.com/libbpf/libbpf/issues/312Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: default avatarDave Marchevsky <davemarchevsky@fb.com>
    Cc: Julia Kartseva <hex@fb.com>
    Link: https://lore.kernel.org/bpf/20211217171202.3352835-2-andrii@kernel.org
    878d8def
libbpf.map 9.28 KB