On Fri, Sep 10, 2021 at 9:40 AM Yonghong Song <yhs@xxxxxx> wrote: > > > > On 9/8/21 10:42 PM, Andrii Nakryiko wrote: > > On Tue, Sep 7, 2021 at 4:01 PM Yonghong Song <yhs@xxxxxx> wrote: > >> > >> Add BTF_KIND_TAG documentation in btf.rst. > >> > >> Signed-off-by: Yonghong Song <yhs@xxxxxx> > >> --- > >> Documentation/bpf/btf.rst | 30 ++++++++++++++++++++++++++++-- > >> 1 file changed, 28 insertions(+), 2 deletions(-) > >> > > > > [...] > > > >> +2.2.17 BTF_KIND_TAG > >> +~~~~~~~~~~~~~~~~~~~ > >> + > >> +``struct btf_type`` encoding requirement: > >> + * ``name_off``: offset to a non-empty string > >> + * ``info.kind_flag``: 0 for tagging ``type``, 1 for tagging member/argument of the ``type`` > >> + * ``info.kind``: BTF_KIND_TAG > >> + * ``info.vlen``: 0 > >> + * ``type``: ``struct``, ``union``, ``func`` or ``var`` > >> + > >> +``btf_type`` is followed by ``struct btf_tag``.:: > >> + > >> + struct btf_tag { > >> + __u32 comp_id; > >> + }; > >> + > >> +The ``name_off`` encodes btf_tag attribute string. > >> +If ``info.kind_flag`` is 1, the attribute is attached to the ``type``. > > > > This contradicts "info.kind_flag" description above > > will remove info.kind_flag stuff in the next revision. > > > > >> +If ``info.kind_flag`` is 0, the attribute is attached to either a > >> +``struct``/``union`` member or a ``func`` argument. > >> +Hence the ``type`` should be ``struct``, ``union`` or > >> +``func``, and ``btf_tag.comp_id``, starting from 0, > >> +indicates which member or argument is attached with > >> +the attribute. > > > > Does the kernel validate this restriction for the VAR target type? > > I.e., if we have kind_flag == 0 (member of type), we should disallow > > VAR, right? > > Yes, I even has a selftest for that. Great, must have missed it on initial review pass. > > > > >> + > >> 3. BTF Kernel API > >> ***************** > >> > >> -- > >> 2.30.2 > >>