Re: [RFC bpf-next 00/12] Use uapi kernel headers with vmlinux.h

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Oct 25, 2022 at 3:28 PM Eduard Zingerman <eddyz87@xxxxxxxxx> wrote:
>
> Hi BPF community,
>
> AFAIK there is a long standing feature request to use kernel headers
> alongside `vmlinux.h` generated by `bpftool`. For example significant
> effort was put to add an attribute `bpf_dominating_decl` (see [1]) to
> clang, unfortunately this effort was stuck due to concerns regarding C
> language semantics.
>

Maybe we should make another attempt to implement bpf_dominating_decl?
That seems like a more elegant solution than any other implemented or
discussed alternative. Yonghong, WDYT?

BTW, I suggest splitting libbpf btf_dedup and btf_dump changes into a
separate series and sending them as non-RFC sooner. Those improvements
are independent of all the header guards stuff, let's get them landed
sooner.

> After some discussion with Alexei and Yonghong I'd like to request
> your comments regarding a somewhat brittle and partial solution to
> this issue that relies on adding `#ifndef FOO_H ... #endif` guards in
> the generated `vmlinux.h`.
>

[...]

> Eduard Zingerman (12):
>   libbpf: Deduplicate unambigous standalone forward declarations
>   selftests/bpf: Tests for standalone forward BTF declarations
>     deduplication
>   libbpf: Support for BTF_DECL_TAG dump in C format
>   selftests/bpf: Tests for BTF_DECL_TAG dump in C format
>   libbpf: Header guards for selected data structures in vmlinux.h
>   selftests/bpf: Tests for header guards printing in BTF dump
>   bpftool: Enable header guards generation
>   kbuild: Script to infer header guard values for uapi headers
>   kbuild: Header guards for types from include/uapi/*.h in kernel BTF
>   selftests/bpf: Script to verify uapi headers usage with vmlinux.h
>   selftests/bpf: Known good uapi headers for test_uapi_headers.py
>   selftests/bpf: script for infer_header_guards.pl testing
>
>  scripts/infer_header_guards.pl                | 191 +++++
>  scripts/link-vmlinux.sh                       |  13 +-
>  tools/bpf/bpftool/btf.c                       |   4 +-
>  tools/lib/bpf/btf.c                           | 178 ++++-
>  tools/lib/bpf/btf.h                           |   7 +-
>  tools/lib/bpf/btf_dump.c                      | 232 +++++-
>  .../selftests/bpf/good_uapi_headers.txt       | 677 ++++++++++++++++++
>  tools/testing/selftests/bpf/prog_tests/btf.c  | 152 ++++
>  .../selftests/bpf/prog_tests/btf_dump.c       |  11 +-
>  .../bpf/progs/btf_dump_test_case_decl_tag.c   |  39 +
>  .../progs/btf_dump_test_case_header_guards.c  |  94 +++
>  .../bpf/test_uapi_header_guards_infer.sh      |  33 +
>  .../selftests/bpf/test_uapi_headers.py        | 197 +++++
>  13 files changed, 1816 insertions(+), 12 deletions(-)
>  create mode 100755 scripts/infer_header_guards.pl
>  create mode 100644 tools/testing/selftests/bpf/good_uapi_headers.txt
>  create mode 100644 tools/testing/selftests/bpf/progs/btf_dump_test_case_decl_tag.c
>  create mode 100644 tools/testing/selftests/bpf/progs/btf_dump_test_case_header_guards.c
>  create mode 100755 tools/testing/selftests/bpf/test_uapi_header_guards_infer.sh
>  create mode 100755 tools/testing/selftests/bpf/test_uapi_headers.py
>
> --
> 2.34.1
>



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux