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