|  | /* | 
|  | * This file is auto-generated. Modifications will be lost. | 
|  | * | 
|  | * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ | 
|  | * for more information. | 
|  | */ | 
|  | #ifndef _UAPI__LINUX_BTF_H__ | 
|  | #define _UAPI__LINUX_BTF_H__ | 
|  | #include <linux/types.h> | 
|  | #define BTF_MAGIC 0xeB9F | 
|  | #define BTF_VERSION 1 | 
|  | struct btf_header { | 
|  | __u16 magic; | 
|  | __u8 version; | 
|  | __u8 flags; | 
|  | __u32 hdr_len; | 
|  | __u32 type_off; | 
|  | __u32 type_len; | 
|  | __u32 str_off; | 
|  | __u32 str_len; | 
|  | }; | 
|  | #define BTF_MAX_TYPE 0x000fffff | 
|  | #define BTF_MAX_NAME_OFFSET 0x00ffffff | 
|  | #define BTF_MAX_VLEN 0xffff | 
|  | struct btf_type { | 
|  | __u32 name_off; | 
|  | __u32 info; | 
|  | union { | 
|  | __u32 size; | 
|  | __u32 type; | 
|  | }; | 
|  | }; | 
|  | #define BTF_INFO_KIND(info) (((info) >> 24) & 0x1f) | 
|  | #define BTF_INFO_VLEN(info) ((info) & 0xffff) | 
|  | #define BTF_INFO_KFLAG(info) ((info) >> 31) | 
|  | enum { | 
|  | BTF_KIND_UNKN = 0, | 
|  | BTF_KIND_INT = 1, | 
|  | BTF_KIND_PTR = 2, | 
|  | BTF_KIND_ARRAY = 3, | 
|  | BTF_KIND_STRUCT = 4, | 
|  | BTF_KIND_UNION = 5, | 
|  | BTF_KIND_ENUM = 6, | 
|  | BTF_KIND_FWD = 7, | 
|  | BTF_KIND_TYPEDEF = 8, | 
|  | BTF_KIND_VOLATILE = 9, | 
|  | BTF_KIND_CONST = 10, | 
|  | BTF_KIND_RESTRICT = 11, | 
|  | BTF_KIND_FUNC = 12, | 
|  | BTF_KIND_FUNC_PROTO = 13, | 
|  | BTF_KIND_VAR = 14, | 
|  | BTF_KIND_DATASEC = 15, | 
|  | BTF_KIND_FLOAT = 16, | 
|  | BTF_KIND_DECL_TAG = 17, | 
|  | BTF_KIND_TYPE_TAG = 18, | 
|  | BTF_KIND_ENUM64 = 19, | 
|  | NR_BTF_KINDS, | 
|  | BTF_KIND_MAX = NR_BTF_KINDS - 1, | 
|  | }; | 
|  | #define BTF_INT_ENCODING(VAL) (((VAL) & 0x0f000000) >> 24) | 
|  | #define BTF_INT_OFFSET(VAL) (((VAL) & 0x00ff0000) >> 16) | 
|  | #define BTF_INT_BITS(VAL) ((VAL) & 0x000000ff) | 
|  | #define BTF_INT_SIGNED (1 << 0) | 
|  | #define BTF_INT_CHAR (1 << 1) | 
|  | #define BTF_INT_BOOL (1 << 2) | 
|  | struct btf_enum { | 
|  | __u32 name_off; | 
|  | __s32 val; | 
|  | }; | 
|  | struct btf_array { | 
|  | __u32 type; | 
|  | __u32 index_type; | 
|  | __u32 nelems; | 
|  | }; | 
|  | struct btf_member { | 
|  | __u32 name_off; | 
|  | __u32 type; | 
|  | __u32 offset; | 
|  | }; | 
|  | #define BTF_MEMBER_BITFIELD_SIZE(val) ((val) >> 24) | 
|  | #define BTF_MEMBER_BIT_OFFSET(val) ((val) & 0xffffff) | 
|  | struct btf_param { | 
|  | __u32 name_off; | 
|  | __u32 type; | 
|  | }; | 
|  | enum { | 
|  | BTF_VAR_STATIC = 0, | 
|  | BTF_VAR_GLOBAL_ALLOCATED = 1, | 
|  | BTF_VAR_GLOBAL_EXTERN = 2, | 
|  | }; | 
|  | enum btf_func_linkage { | 
|  | BTF_FUNC_STATIC = 0, | 
|  | BTF_FUNC_GLOBAL = 1, | 
|  | BTF_FUNC_EXTERN = 2, | 
|  | }; | 
|  | struct btf_var { | 
|  | __u32 linkage; | 
|  | }; | 
|  | struct btf_var_secinfo { | 
|  | __u32 type; | 
|  | __u32 offset; | 
|  | __u32 size; | 
|  | }; | 
|  | struct btf_decl_tag { | 
|  | __s32 component_idx; | 
|  | }; | 
|  | struct btf_enum64 { | 
|  | __u32 name_off; | 
|  | __u32 val_lo32; | 
|  | __u32 val_hi32; | 
|  | }; | 
|  | #endif |