Home | History | Annotate | Download | only in linux
      1 /****************************************************************************
      2  ****************************************************************************
      3  ***
      4  ***   This header was automatically generated from a Linux kernel header
      5  ***   of the same name, to make information necessary for userspace to
      6  ***   call into the kernel available to libc.  It contains only constants,
      7  ***   structures, and macros generated from the original header, and thus,
      8  ***   contains no copyrightable information.
      9  ***
     10  ***   To edit the content of this header, modify the corresponding
     11  ***   source file (e.g. under external/kernel-headers/original/) then
     12  ***   run bionic/libc/kernel/tools/update_all.py
     13  ***
     14  ***   Any manual change here will be lost the next time this script will
     15  ***   be run. You've been warned!
     16  ***
     17  ****************************************************************************
     18  ****************************************************************************/
     19 #ifndef _UAPI__LINUX_BTF_H__
     20 #define _UAPI__LINUX_BTF_H__
     21 #include <linux/types.h>
     22 #define BTF_MAGIC 0xeB9F
     23 #define BTF_VERSION 1
     24 struct btf_header {
     25   __u16 magic;
     26   __u8 version;
     27   __u8 flags;
     28   __u32 hdr_len;
     29   __u32 type_off;
     30   __u32 type_len;
     31   __u32 str_off;
     32   __u32 str_len;
     33 };
     34 #define BTF_MAX_TYPE 0x0000ffff
     35 #define BTF_MAX_NAME_OFFSET 0x0000ffff
     36 #define BTF_MAX_VLEN 0xffff
     37 struct btf_type {
     38   __u32 name_off;
     39   __u32 info;
     40   union {
     41     __u32 size;
     42     __u32 type;
     43   };
     44 };
     45 #define BTF_INFO_KIND(info) (((info) >> 24) & 0x0f)
     46 #define BTF_INFO_VLEN(info) ((info) & 0xffff)
     47 #define BTF_INFO_KFLAG(info) ((info) >> 31)
     48 #define BTF_KIND_UNKN 0
     49 #define BTF_KIND_INT 1
     50 #define BTF_KIND_PTR 2
     51 #define BTF_KIND_ARRAY 3
     52 #define BTF_KIND_STRUCT 4
     53 #define BTF_KIND_UNION 5
     54 #define BTF_KIND_ENUM 6
     55 #define BTF_KIND_FWD 7
     56 #define BTF_KIND_TYPEDEF 8
     57 #define BTF_KIND_VOLATILE 9
     58 #define BTF_KIND_CONST 10
     59 #define BTF_KIND_RESTRICT 11
     60 #define BTF_KIND_FUNC 12
     61 #define BTF_KIND_FUNC_PROTO 13
     62 #define BTF_KIND_MAX 13
     63 #define NR_BTF_KINDS 14
     64 #define BTF_INT_ENCODING(VAL) (((VAL) & 0x0f000000) >> 24)
     65 #define BTF_INT_OFFSET(VAL) (((VAL & 0x00ff0000)) >> 16)
     66 #define BTF_INT_BITS(VAL) ((VAL) & 0x000000ff)
     67 #define BTF_INT_SIGNED (1 << 0)
     68 #define BTF_INT_CHAR (1 << 1)
     69 #define BTF_INT_BOOL (1 << 2)
     70 struct btf_enum {
     71   __u32 name_off;
     72   __s32 val;
     73 };
     74 struct btf_array {
     75   __u32 type;
     76   __u32 index_type;
     77   __u32 nelems;
     78 };
     79 struct btf_member {
     80   __u32 name_off;
     81   __u32 type;
     82   __u32 offset;
     83 };
     84 #define BTF_MEMBER_BITFIELD_SIZE(val) ((val) >> 24)
     85 #define BTF_MEMBER_BIT_OFFSET(val) ((val) & 0xffffff)
     86 struct btf_param {
     87   __u32 name_off;
     88   __u32 type;
     89 };
     90 #endif
     91