Re: [PATCH bpf-next 2/3] selftests/bpf: add libbpf feature-probing API selftests

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

 



On Thu, Dec 16, 2021 at 4:21 PM Dave Marchevsky <davemarchevsky@xxxxxx> wrote:
>
> On 12/16/21 2:04 AM, Andrii Nakryiko wrote:
> > Add selftests for prog/map/prog+helper feature probing APIs. Prog and
> > map selftests are designed in such a way that they will always test all
> > the possible prog/map types, based on running kernel's vmlinux BTF enum
> > definition. This way we'll always be sure that when adding new BPF
> > program types or map types, libbpf will be always updated accordingly to
> > be able to feature-detect them.
> >
> > BPF prog_helper selftest will have to be manually extended with
> > interesting and important prog+helper combinations, it's easy, but can't
> > be completely automated.
> >
> > Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx>
> > ---
>
> [...]
>
> > +     for (e = btf_enum(t), i = 0, n = btf_vlen(t); i < n; e++, i++) {
> > +             const char *prog_type_name = btf__str_by_offset(btf, e->name_off);
> > +             enum bpf_prog_type prog_type = (enum bpf_prog_type)e->val;
> > +             int res;
> > +
> > +             if (prog_type == BPF_PROG_TYPE_UNSPEC)
> > +                     continue;
> > +
> > +             if (!test__start_subtest(prog_type_name))
> > +                     continue;
> > +
> > +             res = libbpf_probe_bpf_prog_type(prog_type, NULL);
> > +             ASSERT_EQ(res, 1, prog_type_name);
> > +     }
>
> I like how easy BTF makes this.
> Maybe worth trying to probe one-past-the-end of enum to confirm it fails as
> expected?
>

Yeah, sure, not a bad idea, I'll add in v2.

> Regardless,
>
> Acked-by: Dave Marchevsky <davemarchevsky@xxxxxx>
>
> > +cleanup:
> > +     btf__free(btf);
> > +}
>
> [...]



[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