Re: [PATCH bpf-next 02/10] libbpf: Support BTF_KIND_TYPE_TAG

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

 





On 11/11/21 10:41 AM, Andrii Nakryiko wrote:
On Tue, Nov 9, 2021 at 9:20 PM Yonghong Song <yhs@xxxxxx> wrote:

Add libbpf support for BTF_KIND_TYPE_TAG.

Signed-off-by: Yonghong Song <yhs@xxxxxx>
---

Few nits below.

Acked-by: Andrii Nakryiko <andrii@xxxxxxxxxx>

  tools/lib/bpf/btf.c             | 23 +++++++++++++++++++++++
  tools/lib/bpf/btf.h             |  9 ++++++++-
  tools/lib/bpf/btf_dump.c        |  9 +++++++++
  tools/lib/bpf/libbpf.c          | 31 ++++++++++++++++++++++++++++++-
  tools/lib/bpf/libbpf.map        |  1 +
  tools/lib/bpf/libbpf_internal.h |  2 ++
  6 files changed, 73 insertions(+), 2 deletions(-)

diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c
index 7e4c5586bd87..4d9883bef330 100644
--- a/tools/lib/bpf/btf.c
+++ b/tools/lib/bpf/btf.c
@@ -299,6 +299,7 @@ static int btf_type_size(const struct btf_type *t)
         case BTF_KIND_TYPEDEF:
         case BTF_KIND_FUNC:
         case BTF_KIND_FLOAT:
+       case BTF_KIND_TYPE_TAG:
                 return base_size;
         case BTF_KIND_INT:
                 return base_size + sizeof(__u32);
@@ -349,6 +350,7 @@ static int btf_bswap_type_rest(struct btf_type *t)
         case BTF_KIND_TYPEDEF:
         case BTF_KIND_FUNC:
         case BTF_KIND_FLOAT:
+       case BTF_KIND_TYPE_TAG:
                 return 0;
         case BTF_KIND_INT:
                 *(__u32 *)(t + 1) = bswap_32(*(__u32 *)(t + 1));
@@ -649,6 +651,7 @@ int btf__align_of(const struct btf *btf, __u32 id)
         case BTF_KIND_VOLATILE:
         case BTF_KIND_CONST:
         case BTF_KIND_RESTRICT:
+       case BTF_KIND_TYPE_TAG:
                 return btf__align_of(btf, t->type);
         case BTF_KIND_ARRAY:
                 return btf__align_of(btf, btf_array(t)->type);
@@ -2235,6 +2238,22 @@ int btf__add_restrict(struct btf *btf, int ref_type_id)
         return btf_add_ref_kind(btf, BTF_KIND_RESTRICT, NULL, ref_type_id);
  }

+/*
+ * Append new BTF_KIND_TYPE_TAGtype with:

missing space

Ack.


+ *   - *value*, non-empty/non-NULL name;

s/name/tag value/ ? It's not just a name, some tags can have
"parameters", right?

copy-paste issue (I copied from btf__add_typedef).
Yes, tag value is the correct terminology.


+ *   - *ref_type_id* - referenced type ID, it might not exist yet;
+ * Returns:
+ *   - >0, type ID of newly added BTF type;
+ *   - <0, on error.
+ */
+int btf__add_type_tag(struct btf *btf, const char *value, int ref_type_id)
+{
+       if (!value|| !value[0])
+               return libbpf_err(-EINVAL);
+
+       return btf_add_ref_kind(btf, BTF_KIND_TYPE_TAG, value, ref_type_id);
+}
+

[...]




[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