From: Yonghong Song Subject: [PATCH bpf-next v2 4/8] tools/bpf: sync btf.h header from kernel to tools Date: Fri, 14 Dec 2018 15:34:29 -0800 Message-ID: <20181214233429.2667761-1-yhs@fb.com> References: <20181214233425.2667487-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]:58698 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726423AbeLNXep (ORCPT ); Fri, 14 Dec 2018 18:34:45 -0500 Received: from pps.filterd (m0001255.ppops.net [127.0.0.1]) by mx0b-00082601.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id wBENVi0N008290 for ; Fri, 14 Dec 2018 15:34:44 -0800 Received: from maileast.thefacebook.com ([199.201.65.23]) by mx0b-00082601.pphosted.com with ESMTP id 2pckam0j0j-12 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Fri, 14 Dec 2018 15:34:44 -0800 In-Reply-To: <20181214233425.2667487-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