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 > +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? > + > 3. BTF Kernel API > ***************** > > -- > 2.30.2 >