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