All of lore.kernel.org
 help / color / mirror / Atom feed
From: KaFai Wan <kafai.wan@linux.dev>
To: luoliang@kylinos.cn, Quentin Monnet <qmo@kernel.org>
Cc: Alexei Starovoitov <ast@kernel.org>,
	Andrii Nakryiko <andrii@kernel.org>,
	 bpf@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] bpftool: use btf_vlen()/btf_kind()/btf_kflag() helpers consistently
Date: Wed, 01 Jul 2026 23:05:23 +0800	[thread overview]
Message-ID: <283f55ab6c34b18168a028ea00bbea5d3c953696.camel@linux.dev> (raw)
In-Reply-To: <20260701062541.704792-1-luoliang@kylinos.cn>

On Wed, 2026-07-01 at 14:25 +0800, luoliang@kylinos.cn wrote:
> From: luoliang <luoliang@kylinos.cn>
> 
> The btf_vlen(), btf_kind() and btf_kflag() inline helpers defined in
> tools/lib/bpf/btf.h are thin wrappers around the BTF_INFO_VLEN(),
> BTF_INFO_KIND() and BTF_INFO_KFLAG() UAPI macros - each one simply
> returns the corresponding macro applied to t->info.
> 
> bpftool already uses these helpers in most places, but 13 call sites
> in btf.c and btf_dumper.c still open-code the raw macros. Use the
> helpers consistently, matching the rest of bpftool as well as libbpf.
> 
> No functional change.
> 
> Signed-off-by: Liang Luo <luoliang@kylinos.cn>
> ---
>  tools/bpf/bpftool/btf.c        | 12 ++++++------
>  tools/bpf/bpftool/btf_dumper.c | 14 +++++++-------
>  2 files changed, 13 insertions(+), 13 deletions(-)
> 
> diff --git a/tools/bpf/bpftool/btf.c b/tools/bpf/bpftool/btf.c
> index 6ef908adf3a4..24e4cb600b3f 100644
> --- a/tools/bpf/bpftool/btf.c
> +++ b/tools/bpf/bpftool/btf.c
> @@ -179,7 +179,7 @@ static int dump_btf_type(const struct btf *btf, __u32 id,
>  	case BTF_KIND_STRUCT:
>  	case BTF_KIND_UNION: {
>  		const struct btf_member *m = (const void *)(t + 1);
> -		__u32 i, vlen = BTF_INFO_VLEN(t->info);
> +		__u32 i, vlen = btf_vlen(t);
>  
>  		if (json_output) {
>  			jsonw_uint_field(w, "size", t->size);
> @@ -193,7 +193,7 @@ static int dump_btf_type(const struct btf *btf, __u32 id,
>  			const char *name = btf_str(btf, m->name_off);
>  			__u32 bit_off, bit_sz;
>  
> -			if (BTF_INFO_KFLAG(t->info)) {
> +			if (btf_kflag(t)) {
>  				bit_off = BTF_MEMBER_BIT_OFFSET(m->offset);
>  				bit_sz = BTF_MEMBER_BITFIELD_SIZE(m->offset);
>  			} else {
> @@ -224,7 +224,7 @@ static int dump_btf_type(const struct btf *btf, __u32 id,
>  	}
>  	case BTF_KIND_ENUM: {
>  		const struct btf_enum *v = (const void *)(t + 1);
> -		__u32 i, vlen = BTF_INFO_VLEN(t->info);
> +		__u32 i, vlen = btf_vlen(t);
>  		const char *encoding;
>  
>  		encoding = btf_kflag(t) ? "SIGNED" : "UNSIGNED";
> @@ -300,7 +300,7 @@ static int dump_btf_type(const struct btf *btf, __u32 id,
>  		break;
>  	}
>  	case BTF_KIND_FWD: {
> -		const char *fwd_kind = BTF_INFO_KFLAG(t->info) ? "union"
> +		const char *fwd_kind = btf_kflag(t) ? "union"
>  							       : "struct";
nit: coding style, and can be one line.
>  
>  		if (json_output)
> @@ -322,7 +322,7 @@ static int dump_btf_type(const struct btf *btf, __u32 id,
>  	}
>  	case BTF_KIND_FUNC_PROTO: {
>  		const struct btf_param *p = (const void *)(t + 1);
> -		__u32 i, vlen = BTF_INFO_VLEN(t->info);
> +		__u32 i, vlen = btf_vlen(t);
>  
>  		if (json_output) {
>  			jsonw_uint_field(w, "ret_type_id", t->type);
> @@ -365,7 +365,7 @@ static int dump_btf_type(const struct btf *btf, __u32 id,
>  	case BTF_KIND_DATASEC: {
>  		const struct btf_var_secinfo *v = (const void *)(t + 1);
>  		const struct btf_type *vt;
> -		__u32 i, vlen = BTF_INFO_VLEN(t->info);
> +		__u32 i, vlen = btf_vlen(t);
>  
>  		if (json_output) {
>  			jsonw_uint_field(w, "size", t->size);
> diff --git a/tools/bpf/bpftool/btf_dumper.c b/tools/bpf/bpftool/btf_dumper.c
> index 9dc8425b1789..e4075824343f 100644
> --- a/tools/bpf/bpftool/btf_dumper.c
> +++ b/tools/bpf/bpftool/btf_dumper.c
> @@ -476,8 +476,8 @@ static int btf_dumper_struct(const struct btf_dumper *d, __u32 type_id,
>  	if (!t)
>  		return -EINVAL;
>  
> -	kind_flag = BTF_INFO_KFLAG(t->info);
> -	vlen = BTF_INFO_VLEN(t->info);
> +	kind_flag = btf_kflag(t);
> +	vlen = btf_vlen(t);
>  	jsonw_start_object(d->jw);
>  	m = (struct btf_member *)(t + 1);
>  
> @@ -535,7 +535,7 @@ static int btf_dumper_datasec(const struct btf_dumper *d, __u32 type_id,
>  	if (!t)
>  		return -EINVAL;
>  
> -	vlen = BTF_INFO_VLEN(t->info);
> +	vlen = btf_vlen(t);
>  	vsi = (struct btf_var_secinfo *)(t + 1);
>  
>  	jsonw_start_object(d->jw);
> @@ -557,7 +557,7 @@ static int btf_dumper_do_type(const struct btf_dumper *d, __u32 type_id,
>  {
>  	const struct btf_type *t = btf__type_by_id(d->btf, type_id);
>  
> -	switch (BTF_INFO_KIND(t->info)) {
> +	switch (btf_kind(t)) {
>  	case BTF_KIND_INT:
>  		return btf_dumper_int(t, bit_offset, data, d->jw,
>  				     d->is_plain_text);
> @@ -631,7 +631,7 @@ static int __btf_dumper_type_only(const struct btf *btf, __u32 type_id,
>  
>  	t = btf__type_by_id(btf, type_id);
>  
> -	switch (BTF_INFO_KIND(t->info)) {
> +	switch (btf_kind(t)) {
>  	case BTF_KIND_INT:
>  	case BTF_KIND_TYPEDEF:
>  	case BTF_KIND_FLOAT:
> @@ -661,7 +661,7 @@ static int __btf_dumper_type_only(const struct btf *btf, __u32 type_id,
>  		break;
>  	case BTF_KIND_FWD:
>  		BTF_PRINT_ARG("%s %s ",
> -			      BTF_INFO_KFLAG(t->info) ? "union" : "struct",
> +			      btf_kflag(t) ? "union" : "struct",
>  			      btf__name_by_offset(btf, t->name_off));
>  		break;
>  	case BTF_KIND_VOLATILE:
> @@ -718,7 +718,7 @@ static int btf_dump_func(const struct btf *btf, char *func_sig,
>  		BTF_PRINT_ARG("%s(", btf__name_by_offset(btf, func->name_off));
>  	else
>  		BTF_PRINT_ARG("(");
> -	vlen = BTF_INFO_VLEN(func_proto->info);
> +	vlen = btf_vlen(func_proto);
>  	for (i = 0; i < vlen; i++) {
>  		struct btf_param *arg = &((struct btf_param *)(func_proto + 1))[i];
>  


  parent reply	other threads:[~2026-07-01 15:05 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-01  6:25 [PATCH] bpftool: use btf_vlen()/btf_kind()/btf_kflag() helpers consistently luoliang
2026-07-01 12:58 ` Quentin Monnet
2026-07-01 15:05 ` KaFai Wan [this message]
2026-07-01 20:03   ` Andrii Nakryiko
2026-07-02  1:46     ` luoliang
2026-07-02  1:23 ` [PATCH v2] " luoliang
2026-07-02 16:30   ` patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=283f55ab6c34b18168a028ea00bbea5d3c953696.camel@linux.dev \
    --to=kafai.wan@linux.dev \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luoliang@kylinos.cn \
    --cc=qmo@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.