1*cda5da8dSAndroid Build Coastguard Worker /* 2*cda5da8dSAndroid Build Coastguard Worker * This file is auto-generated. Modifications will be lost. 3*cda5da8dSAndroid Build Coastguard Worker * 4*cda5da8dSAndroid Build Coastguard Worker * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5*cda5da8dSAndroid Build Coastguard Worker * for more information. 6*cda5da8dSAndroid Build Coastguard Worker */ 7*cda5da8dSAndroid Build Coastguard Worker #ifndef _UAPI__LINUX_BTF_H__ 8*cda5da8dSAndroid Build Coastguard Worker #define _UAPI__LINUX_BTF_H__ 9*cda5da8dSAndroid Build Coastguard Worker #include <linux/types.h> 10*cda5da8dSAndroid Build Coastguard Worker #define BTF_MAGIC 0xeB9F 11*cda5da8dSAndroid Build Coastguard Worker #define BTF_VERSION 1 12*cda5da8dSAndroid Build Coastguard Worker struct btf_header { 13*cda5da8dSAndroid Build Coastguard Worker __u16 magic; 14*cda5da8dSAndroid Build Coastguard Worker __u8 version; 15*cda5da8dSAndroid Build Coastguard Worker __u8 flags; 16*cda5da8dSAndroid Build Coastguard Worker __u32 hdr_len; 17*cda5da8dSAndroid Build Coastguard Worker __u32 type_off; 18*cda5da8dSAndroid Build Coastguard Worker __u32 type_len; 19*cda5da8dSAndroid Build Coastguard Worker __u32 str_off; 20*cda5da8dSAndroid Build Coastguard Worker __u32 str_len; 21*cda5da8dSAndroid Build Coastguard Worker }; 22*cda5da8dSAndroid Build Coastguard Worker #define BTF_MAX_TYPE 0x000fffff 23*cda5da8dSAndroid Build Coastguard Worker #define BTF_MAX_NAME_OFFSET 0x00ffffff 24*cda5da8dSAndroid Build Coastguard Worker #define BTF_MAX_VLEN 0xffff 25*cda5da8dSAndroid Build Coastguard Worker struct btf_type { 26*cda5da8dSAndroid Build Coastguard Worker __u32 name_off; 27*cda5da8dSAndroid Build Coastguard Worker __u32 info; 28*cda5da8dSAndroid Build Coastguard Worker union { 29*cda5da8dSAndroid Build Coastguard Worker __u32 size; 30*cda5da8dSAndroid Build Coastguard Worker __u32 type; 31*cda5da8dSAndroid Build Coastguard Worker }; 32*cda5da8dSAndroid Build Coastguard Worker }; 33*cda5da8dSAndroid Build Coastguard Worker #define BTF_INFO_KIND(info) (((info) >> 24) & 0x1f) 34*cda5da8dSAndroid Build Coastguard Worker #define BTF_INFO_VLEN(info) ((info) & 0xffff) 35*cda5da8dSAndroid Build Coastguard Worker #define BTF_INFO_KFLAG(info) ((info) >> 31) 36*cda5da8dSAndroid Build Coastguard Worker enum { 37*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_UNKN = 0, 38*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_INT = 1, 39*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_PTR = 2, 40*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_ARRAY = 3, 41*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_STRUCT = 4, 42*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_UNION = 5, 43*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_ENUM = 6, 44*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_FWD = 7, 45*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_TYPEDEF = 8, 46*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_VOLATILE = 9, 47*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_CONST = 10, 48*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_RESTRICT = 11, 49*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_FUNC = 12, 50*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_FUNC_PROTO = 13, 51*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_VAR = 14, 52*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_DATASEC = 15, 53*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_FLOAT = 16, 54*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_DECL_TAG = 17, 55*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_TYPE_TAG = 18, 56*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_ENUM64 = 19, 57*cda5da8dSAndroid Build Coastguard Worker NR_BTF_KINDS, 58*cda5da8dSAndroid Build Coastguard Worker BTF_KIND_MAX = NR_BTF_KINDS - 1, 59*cda5da8dSAndroid Build Coastguard Worker }; 60*cda5da8dSAndroid Build Coastguard Worker #define BTF_INT_ENCODING(VAL) (((VAL) & 0x0f000000) >> 24) 61*cda5da8dSAndroid Build Coastguard Worker #define BTF_INT_OFFSET(VAL) (((VAL) & 0x00ff0000) >> 16) 62*cda5da8dSAndroid Build Coastguard Worker #define BTF_INT_BITS(VAL) ((VAL) & 0x000000ff) 63*cda5da8dSAndroid Build Coastguard Worker #define BTF_INT_SIGNED (1 << 0) 64*cda5da8dSAndroid Build Coastguard Worker #define BTF_INT_CHAR (1 << 1) 65*cda5da8dSAndroid Build Coastguard Worker #define BTF_INT_BOOL (1 << 2) 66*cda5da8dSAndroid Build Coastguard Worker struct btf_enum { 67*cda5da8dSAndroid Build Coastguard Worker __u32 name_off; 68*cda5da8dSAndroid Build Coastguard Worker __s32 val; 69*cda5da8dSAndroid Build Coastguard Worker }; 70*cda5da8dSAndroid Build Coastguard Worker struct btf_array { 71*cda5da8dSAndroid Build Coastguard Worker __u32 type; 72*cda5da8dSAndroid Build Coastguard Worker __u32 index_type; 73*cda5da8dSAndroid Build Coastguard Worker __u32 nelems; 74*cda5da8dSAndroid Build Coastguard Worker }; 75*cda5da8dSAndroid Build Coastguard Worker struct btf_member { 76*cda5da8dSAndroid Build Coastguard Worker __u32 name_off; 77*cda5da8dSAndroid Build Coastguard Worker __u32 type; 78*cda5da8dSAndroid Build Coastguard Worker __u32 offset; 79*cda5da8dSAndroid Build Coastguard Worker }; 80*cda5da8dSAndroid Build Coastguard Worker #define BTF_MEMBER_BITFIELD_SIZE(val) ((val) >> 24) 81*cda5da8dSAndroid Build Coastguard Worker #define BTF_MEMBER_BIT_OFFSET(val) ((val) & 0xffffff) 82*cda5da8dSAndroid Build Coastguard Worker struct btf_param { 83*cda5da8dSAndroid Build Coastguard Worker __u32 name_off; 84*cda5da8dSAndroid Build Coastguard Worker __u32 type; 85*cda5da8dSAndroid Build Coastguard Worker }; 86*cda5da8dSAndroid Build Coastguard Worker enum { 87*cda5da8dSAndroid Build Coastguard Worker BTF_VAR_STATIC = 0, 88*cda5da8dSAndroid Build Coastguard Worker BTF_VAR_GLOBAL_ALLOCATED = 1, 89*cda5da8dSAndroid Build Coastguard Worker BTF_VAR_GLOBAL_EXTERN = 2, 90*cda5da8dSAndroid Build Coastguard Worker }; 91*cda5da8dSAndroid Build Coastguard Worker enum btf_func_linkage { 92*cda5da8dSAndroid Build Coastguard Worker BTF_FUNC_STATIC = 0, 93*cda5da8dSAndroid Build Coastguard Worker BTF_FUNC_GLOBAL = 1, 94*cda5da8dSAndroid Build Coastguard Worker BTF_FUNC_EXTERN = 2, 95*cda5da8dSAndroid Build Coastguard Worker }; 96*cda5da8dSAndroid Build Coastguard Worker struct btf_var { 97*cda5da8dSAndroid Build Coastguard Worker __u32 linkage; 98*cda5da8dSAndroid Build Coastguard Worker }; 99*cda5da8dSAndroid Build Coastguard Worker struct btf_var_secinfo { 100*cda5da8dSAndroid Build Coastguard Worker __u32 type; 101*cda5da8dSAndroid Build Coastguard Worker __u32 offset; 102*cda5da8dSAndroid Build Coastguard Worker __u32 size; 103*cda5da8dSAndroid Build Coastguard Worker }; 104*cda5da8dSAndroid Build Coastguard Worker struct btf_decl_tag { 105*cda5da8dSAndroid Build Coastguard Worker __s32 component_idx; 106*cda5da8dSAndroid Build Coastguard Worker }; 107*cda5da8dSAndroid Build Coastguard Worker struct btf_enum64 { 108*cda5da8dSAndroid Build Coastguard Worker __u32 name_off; 109*cda5da8dSAndroid Build Coastguard Worker __u32 val_lo32; 110*cda5da8dSAndroid Build Coastguard Worker __u32 val_hi32; 111*cda5da8dSAndroid Build Coastguard Worker }; 112*cda5da8dSAndroid Build Coastguard Worker #endif 113