On Mon, Sep 13, 2021 at 8:53 AM Yonghong Song <yhs@xxxxxx> wrote: > > Add BTF_KIND_TAG documentation in btf.rst. > > Signed-off-by: Yonghong Song <yhs@xxxxxx> > --- Probably worth it to mention that component_idx for tag for VAR has to be -1. Acked-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > Documentation/bpf/btf.rst | 27 ++++++++++++++++++++++++++- > 1 file changed, 26 insertions(+), 1 deletion(-) > > diff --git a/Documentation/bpf/btf.rst b/Documentation/bpf/btf.rst > index 846354cd2d69..9fff578a0a35 100644 > --- a/Documentation/bpf/btf.rst > +++ b/Documentation/bpf/btf.rst > @@ -85,6 +85,7 @@ sequentially and type id is assigned to each recognized type starting from id > #define BTF_KIND_VAR 14 /* Variable */ > #define BTF_KIND_DATASEC 15 /* Section */ > #define BTF_KIND_FLOAT 16 /* Floating point */ > + #define BTF_KIND_TAG 17 /* Tag */ > > Note that the type section encodes debug info, not just pure types. > ``BTF_KIND_FUNC`` is not a type, and it represents a defined subprogram. > @@ -106,7 +107,7 @@ Each type contains the following common data:: > * "size" tells the size of the type it is describing. > * > * "type" is used by PTR, TYPEDEF, VOLATILE, CONST, RESTRICT, > - * FUNC and FUNC_PROTO. > + * FUNC, FUNC_PROTO and TAG. > * "type" is a type_id referring to another type. > */ > union { > @@ -465,6 +466,30 @@ map definition. > > No additional type data follow ``btf_type``. > > +2.2.17 BTF_KIND_TAG > +~~~~~~~~~~~~~~~~~~~ > + > +``struct btf_type`` encoding requirement: > + * ``name_off``: offset to a non-empty string > + * ``info.kind_flag``: 0 > + * ``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 component_idx; > + }; > + > +The ``name_off`` encodes btf_tag attribute string. > +The ``type`` should be ``struct``, ``union``, ``func`` or ``var``. > +If ``btf_tag.component_idx = -1``, the btf_tag attribute is > +applied to a valid ``type``. Otherwise, the btf_tag attribute is > +applied to a ``struct``/``union`` member or a ``func`` argument, > +and ``btf_tag.component_idx`` should be a valid index (starting from 0) > +pointing to a member or an argument. > + > 3. BTF Kernel API > ***************** > > -- > 2.30.2 >