From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yonghong Song Subject: [PATCH bpf-next 3/7] tools/bpf: sync btf.h header from kernel to tools Date: Tue, 11 Dec 2018 16:46:33 -0800 Message-ID: <20181212004633.395662-1-yhs@fb.com> References: <20181212004630.395424-1-yhs@fb.com> Mime-Version: 1.0 Content-Type: text/plain Cc: Alexei Starovoitov , Daniel Borkmann , , Martin KaFai Lau To: Return-path: Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:44840 "EHLO mx0b-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726275AbeLLAqh (ORCPT ); Tue, 11 Dec 2018 19:46:37 -0500 Received: from pps.filterd (m0148460.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id wBC0dCOC007605 for ; Tue, 11 Dec 2018 16:46:36 -0800 Received: from maileast.thefacebook.com ([199.201.65.23]) by mx0a-00082601.pphosted.com with ESMTP id 2panr0gefb-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Tue, 11 Dec 2018 16:46:36 -0800 In-Reply-To: <20181212004630.395424-1-yhs@fb.com> Sender: netdev-owner@vger.kernel.org List-ID: Sync include/uapi/linux/btf.h to tools/include/uapi/linux/btf.h. Signed-off-by: Yonghong Song --- tools/include/uapi/linux/btf.h | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tools/include/uapi/linux/btf.h b/tools/include/uapi/linux/btf.h index 14f66948fc95..34aba40ed926 100644 --- a/tools/include/uapi/linux/btf.h +++ b/tools/include/uapi/linux/btf.h @@ -34,7 +34,9 @@ struct btf_type { * bits 0-15: vlen (e.g. # of struct's members) * bits 16-23: unused * bits 24-27: kind (e.g. int, ptr, array...etc) - * bits 28-31: unused + * bits 28-30: unused + * bit 31: kind_flag, currently used by + * struct, union and fwd */ __u32 info; /* "size" is used by INT, ENUM, STRUCT and UNION. @@ -52,6 +54,7 @@ struct btf_type { #define BTF_INFO_KIND(info) (((info) >> 24) & 0x0f) #define BTF_INFO_VLEN(info) ((info) & 0xffff) +#define BTF_INFO_KFLAG(info) ((info) >> 31) #define BTF_KIND_UNKN 0 /* Unknown */ #define BTF_KIND_INT 1 /* Integer */ @@ -110,9 +113,17 @@ struct btf_array { struct btf_member { __u32 name_off; __u32 type; - __u32 offset; /* offset in bits */ + __u32 offset; /* [bitfield_size and] offset in bits */ }; +/* If the type info kind_flag set, the btf_member.offset + * contains both member bit offset and bitfield size, and + * bitfield size will set for struct/union bitfield members. + * Otherwise, it contains only bit offset. + */ +#define BTF_MEMBER_BITFIELD_SIZE(val) ((val) >> 24) +#define BTF_MEMBER_BIT_OFFSET(val) ((val) & 0xffffff) + /* BTF_KIND_FUNC_PROTO is followed by multiple "struct btf_param". * The exact number of btf_param is stored in the vlen (of the * info in "struct btf_type"). -- 2.17.1