Update build-tools to ab/8162587

https://ci.android.com/builds/branches/aosp-build-tools-release/grid?head=8162587&tail=8162587

Test: treehugger
Change-Id: Ic07050a8ff3ee1fa4ace3eeccc8fdc1b3605bd43
diff --git a/i686-linux-musl/include/linux/a.out.h b/i686-linux-musl/include/linux/a.out.h
new file mode 100644
index 0000000..8f58c99
--- /dev/null
+++ b/i686-linux-musl/include/linux/a.out.h
@@ -0,0 +1,163 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__A_OUT_GNU_H__
+#define _UAPI__A_OUT_GNU_H__
+#define __GNU_EXEC_MACROS__
+#ifndef __STRUCT_EXEC_OVERRIDE__
+#include <asm/a.out.h>
+#endif
+#ifndef __ASSEMBLY__
+enum machine_type {
+#ifdef M_OLDSUN2
+  M__OLDSUN2 = M_OLDSUN2,
+#else
+  M_OLDSUN2 = 0,
+#endif
+#ifdef M_68010
+  M__68010 = M_68010,
+#else
+  M_68010 = 1,
+#endif
+#ifdef M_68020
+  M__68020 = M_68020,
+#else
+  M_68020 = 2,
+#endif
+#ifdef M_SPARC
+  M__SPARC = M_SPARC,
+#else
+  M_SPARC = 3,
+#endif
+  M_386 = 100,
+  M_MIPS1 = 151,
+  M_MIPS2 = 152
+};
+#ifndef N_MAGIC
+#define N_MAGIC(exec) ((exec).a_info & 0xffff)
+#endif
+#define N_MACHTYPE(exec) ((enum machine_type) (((exec).a_info >> 16) & 0xff))
+#define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff)
+#define N_SET_INFO(exec,magic,type,flags) ((exec).a_info = ((magic) & 0xffff) | (((int) (type) & 0xff) << 16) | (((flags) & 0xff) << 24))
+#define N_SET_MAGIC(exec,magic) ((exec).a_info = (((exec).a_info & 0xffff0000) | ((magic) & 0xffff)))
+#define N_SET_MACHTYPE(exec,machtype) ((exec).a_info = ((exec).a_info & 0xff00ffff) | ((((int) (machtype)) & 0xff) << 16))
+#define N_SET_FLAGS(exec,flags) ((exec).a_info = ((exec).a_info & 0x00ffffff) | (((flags) & 0xff) << 24))
+#define OMAGIC 0407
+#define NMAGIC 0410
+#define ZMAGIC 0413
+#define QMAGIC 0314
+#define CMAGIC 0421
+#ifndef N_BADMAG
+#define N_BADMAG(x) (N_MAGIC(x) != OMAGIC && N_MAGIC(x) != NMAGIC && N_MAGIC(x) != ZMAGIC && N_MAGIC(x) != QMAGIC)
+#endif
+#define _N_HDROFF(x) (1024 - sizeof(struct exec))
+#ifndef N_TXTOFF
+#define N_TXTOFF(x) (N_MAGIC(x) == ZMAGIC ? _N_HDROFF((x)) + sizeof(struct exec) : (N_MAGIC(x) == QMAGIC ? 0 : sizeof(struct exec)))
+#endif
+#ifndef N_DATOFF
+#define N_DATOFF(x) (N_TXTOFF(x) + (x).a_text)
+#endif
+#ifndef N_TRELOFF
+#define N_TRELOFF(x) (N_DATOFF(x) + (x).a_data)
+#endif
+#ifndef N_DRELOFF
+#define N_DRELOFF(x) (N_TRELOFF(x) + N_TRSIZE(x))
+#endif
+#ifndef N_SYMOFF
+#define N_SYMOFF(x) (N_DRELOFF(x) + N_DRSIZE(x))
+#endif
+#ifndef N_STROFF
+#define N_STROFF(x) (N_SYMOFF(x) + N_SYMSIZE(x))
+#endif
+#ifndef N_TXTADDR
+#define N_TXTADDR(x) (N_MAGIC(x) == QMAGIC ? PAGE_SIZE : 0)
+#endif
+#include <unistd.h>
+#if defined(__i386__) || defined(__mc68000__)
+#define SEGMENT_SIZE 1024
+#else
+#ifndef SEGMENT_SIZE
+#define SEGMENT_SIZE getpagesize()
+#endif
+#endif
+#define _N_SEGMENT_ROUND(x) ALIGN(x, SEGMENT_SIZE)
+#define _N_TXTENDADDR(x) (N_TXTADDR(x) + (x).a_text)
+#ifndef N_DATADDR
+#define N_DATADDR(x) (N_MAGIC(x) == OMAGIC ? (_N_TXTENDADDR(x)) : (_N_SEGMENT_ROUND(_N_TXTENDADDR(x))))
+#endif
+#ifndef N_BSSADDR
+#define N_BSSADDR(x) (N_DATADDR(x) + (x).a_data)
+#endif
+#ifndef N_NLIST_DECLARED
+struct nlist {
+  union {
+    char * n_name;
+    struct nlist * n_next;
+    long n_strx;
+  } n_un;
+  unsigned char n_type;
+  char n_other;
+  short n_desc;
+  unsigned long n_value;
+};
+#endif
+#ifndef N_UNDF
+#define N_UNDF 0
+#endif
+#ifndef N_ABS
+#define N_ABS 2
+#endif
+#ifndef N_TEXT
+#define N_TEXT 4
+#endif
+#ifndef N_DATA
+#define N_DATA 6
+#endif
+#ifndef N_BSS
+#define N_BSS 8
+#endif
+#ifndef N_FN
+#define N_FN 15
+#endif
+#ifndef N_EXT
+#define N_EXT 1
+#endif
+#ifndef N_TYPE
+#define N_TYPE 036
+#endif
+#ifndef N_STAB
+#define N_STAB 0340
+#endif
+#define N_INDR 0xa
+#define N_SETA 0x14
+#define N_SETT 0x16
+#define N_SETD 0x18
+#define N_SETB 0x1A
+#define N_SETV 0x1C
+#ifndef N_RELOCATION_INFO_DECLARED
+struct relocation_info {
+  int r_address;
+  unsigned int r_symbolnum : 24;
+  unsigned int r_pcrel : 1;
+  unsigned int r_length : 2;
+  unsigned int r_extern : 1;
+  unsigned int r_pad : 4;
+};
+#endif
+#endif
+#endif
diff --git a/i686-linux-musl/include/linux/acct.h b/i686-linux-musl/include/linux/acct.h
new file mode 100644
index 0000000..aecc9f6
--- /dev/null
+++ b/i686-linux-musl/include/linux/acct.h
@@ -0,0 +1,86 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ACCT_H
+#define _UAPI_LINUX_ACCT_H
+#include <linux/types.h>
+#include <asm/param.h>
+#include <asm/byteorder.h>
+typedef __u16 comp_t;
+typedef __u32 comp2_t;
+#define ACCT_COMM 16
+struct acct {
+  char ac_flag;
+  char ac_version;
+  __u16 ac_uid16;
+  __u16 ac_gid16;
+  __u16 ac_tty;
+  __u32 ac_btime;
+  comp_t ac_utime;
+  comp_t ac_stime;
+  comp_t ac_etime;
+  comp_t ac_mem;
+  comp_t ac_io;
+  comp_t ac_rw;
+  comp_t ac_minflt;
+  comp_t ac_majflt;
+  comp_t ac_swaps;
+  __u16 ac_ahz;
+  __u32 ac_exitcode;
+  char ac_comm[ACCT_COMM + 1];
+  __u8 ac_etime_hi;
+  __u16 ac_etime_lo;
+  __u32 ac_uid;
+  __u32 ac_gid;
+};
+struct acct_v3 {
+  char ac_flag;
+  char ac_version;
+  __u16 ac_tty;
+  __u32 ac_exitcode;
+  __u32 ac_uid;
+  __u32 ac_gid;
+  __u32 ac_pid;
+  __u32 ac_ppid;
+  __u32 ac_btime;
+  float ac_etime;
+  comp_t ac_utime;
+  comp_t ac_stime;
+  comp_t ac_mem;
+  comp_t ac_io;
+  comp_t ac_rw;
+  comp_t ac_minflt;
+  comp_t ac_majflt;
+  comp_t ac_swaps;
+  char ac_comm[ACCT_COMM];
+};
+#define AFORK 0x01
+#define ASU 0x02
+#define ACOMPAT 0x04
+#define ACORE 0x08
+#define AXSIG 0x10
+#if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
+#define ACCT_BYTEORDER 0x80
+#elif defined(__BYTE_ORDER)?__BYTE_ORDER==__LITTLE_ENDIAN:defined(__LITTLE_ENDIAN)
+#define ACCT_BYTEORDER 0x00
+#else
+#error unspecified endianness
+#endif
+#define ACCT_VERSION 2
+#define AHZ (HZ)
+#endif
diff --git a/i686-linux-musl/include/linux/acrn.h b/i686-linux-musl/include/linux/acrn.h
new file mode 100644
index 0000000..c991ac0
--- /dev/null
+++ b/i686-linux-musl/include/linux/acrn.h
@@ -0,0 +1,291 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ACRN_H
+#define _UAPI_ACRN_H
+#include <linux/types.h>
+#include <linux/uuid.h>
+#define ACRN_IO_REQUEST_MAX 16
+#define ACRN_IOREQ_STATE_PENDING 0
+#define ACRN_IOREQ_STATE_COMPLETE 1
+#define ACRN_IOREQ_STATE_PROCESSING 2
+#define ACRN_IOREQ_STATE_FREE 3
+#define ACRN_IOREQ_TYPE_PORTIO 0
+#define ACRN_IOREQ_TYPE_MMIO 1
+#define ACRN_IOREQ_TYPE_PCICFG 2
+#define ACRN_IOREQ_DIR_READ 0
+#define ACRN_IOREQ_DIR_WRITE 1
+struct acrn_mmio_request {
+  __u32 direction;
+  __u32 reserved;
+  __u64 address;
+  __u64 size;
+  __u64 value;
+};
+struct acrn_pio_request {
+  __u32 direction;
+  __u32 reserved;
+  __u64 address;
+  __u64 size;
+  __u32 value;
+};
+struct acrn_pci_request {
+  __u32 direction;
+  __u32 reserved[3];
+  __u64 size;
+  __u32 value;
+  __u32 bus;
+  __u32 dev;
+  __u32 func;
+  __u32 reg;
+};
+struct acrn_io_request {
+  __u32 type;
+  __u32 completion_polling;
+  __u32 reserved0[14];
+  union {
+    struct acrn_pio_request pio_request;
+    struct acrn_pci_request pci_request;
+    struct acrn_mmio_request mmio_request;
+    __u64 data[8];
+  } reqs;
+  __u32 reserved1;
+  __u32 kernel_handled;
+  __u32 processed;
+} __attribute__((aligned(256)));
+struct acrn_io_request_buffer {
+  union {
+    struct acrn_io_request req_slot[ACRN_IO_REQUEST_MAX];
+    __u8 reserved[4096];
+  };
+};
+struct acrn_ioreq_notify {
+  __u16 vmid;
+  __u16 reserved;
+  __u32 vcpu;
+};
+struct acrn_vm_creation {
+  __u16 vmid;
+  __u16 reserved0;
+  __u16 vcpu_num;
+  __u16 reserved1;
+  guid_t uuid;
+  __u64 vm_flag;
+  __u64 ioreq_buf;
+  __u64 cpu_affinity;
+};
+struct acrn_gp_regs {
+  __le64 rax;
+  __le64 rcx;
+  __le64 rdx;
+  __le64 rbx;
+  __le64 rsp;
+  __le64 rbp;
+  __le64 rsi;
+  __le64 rdi;
+  __le64 r8;
+  __le64 r9;
+  __le64 r10;
+  __le64 r11;
+  __le64 r12;
+  __le64 r13;
+  __le64 r14;
+  __le64 r15;
+};
+struct acrn_descriptor_ptr {
+  __le16 limit;
+  __le64 base;
+  __le16 reserved[3];
+} __attribute__((__packed__));
+struct acrn_regs {
+  struct acrn_gp_regs gprs;
+  struct acrn_descriptor_ptr gdt;
+  struct acrn_descriptor_ptr idt;
+  __le64 rip;
+  __le64 cs_base;
+  __le64 cr0;
+  __le64 cr4;
+  __le64 cr3;
+  __le64 ia32_efer;
+  __le64 rflags;
+  __le64 reserved_64[4];
+  __le32 cs_ar;
+  __le32 cs_limit;
+  __le32 reserved_32[3];
+  __le16 cs_sel;
+  __le16 ss_sel;
+  __le16 ds_sel;
+  __le16 es_sel;
+  __le16 fs_sel;
+  __le16 gs_sel;
+  __le16 ldt_sel;
+  __le16 tr_sel;
+};
+struct acrn_vcpu_regs {
+  __u16 vcpu_id;
+  __u16 reserved[3];
+  struct acrn_regs vcpu_regs;
+};
+#define ACRN_MEM_ACCESS_RIGHT_MASK 0x00000007U
+#define ACRN_MEM_ACCESS_READ 0x00000001U
+#define ACRN_MEM_ACCESS_WRITE 0x00000002U
+#define ACRN_MEM_ACCESS_EXEC 0x00000004U
+#define ACRN_MEM_ACCESS_RWX (ACRN_MEM_ACCESS_READ | ACRN_MEM_ACCESS_WRITE | ACRN_MEM_ACCESS_EXEC)
+#define ACRN_MEM_TYPE_MASK 0x000007C0U
+#define ACRN_MEM_TYPE_WB 0x00000040U
+#define ACRN_MEM_TYPE_WT 0x00000080U
+#define ACRN_MEM_TYPE_UC 0x00000100U
+#define ACRN_MEM_TYPE_WC 0x00000200U
+#define ACRN_MEM_TYPE_WP 0x00000400U
+#define ACRN_MEMMAP_RAM 0
+#define ACRN_MEMMAP_MMIO 1
+struct acrn_vm_memmap {
+  __u32 type;
+  __u32 attr;
+  __u64 user_vm_pa;
+  union {
+    __u64 service_vm_pa;
+    __u64 vma_base;
+  };
+  __u64 len;
+};
+#define ACRN_PTDEV_IRQ_INTX 0
+#define ACRN_PTDEV_IRQ_MSI 1
+#define ACRN_PTDEV_IRQ_MSIX 2
+struct acrn_ptdev_irq {
+  __u32 type;
+  __u16 virt_bdf;
+  __u16 phys_bdf;
+  struct {
+    __u32 virt_pin;
+    __u32 phys_pin;
+    __u32 is_pic_pin;
+  } intx;
+};
+#define ACRN_PTDEV_QUIRK_ASSIGN (1U << 0)
+#define ACRN_MMIODEV_RES_NUM 3
+#define ACRN_PCI_NUM_BARS 6
+struct acrn_pcidev {
+  __u32 type;
+  __u16 virt_bdf;
+  __u16 phys_bdf;
+  __u8 intr_line;
+  __u8 intr_pin;
+  __u32 bar[ACRN_PCI_NUM_BARS];
+};
+struct acrn_mmiodev {
+  __u8 name[8];
+  struct {
+    __u64 user_vm_pa;
+    __u64 service_vm_pa;
+    __u64 size;
+    __u64 mem_type;
+  } res[ACRN_MMIODEV_RES_NUM];
+};
+struct acrn_vdev {
+  union {
+    __u64 value;
+    struct {
+      __le16 vendor;
+      __le16 device;
+      __le32 legacy_id;
+    } fields;
+  } id;
+  __u64 slot;
+  __u32 io_addr[ACRN_PCI_NUM_BARS];
+  __u32 io_size[ACRN_PCI_NUM_BARS];
+  __u8 args[128];
+};
+struct acrn_msi_entry {
+  __u64 msi_addr;
+  __u64 msi_data;
+};
+struct acrn_acpi_generic_address {
+  __u8 space_id;
+  __u8 bit_width;
+  __u8 bit_offset;
+  __u8 access_size;
+  __u64 address;
+} __attribute__((__packed__));
+struct acrn_cstate_data {
+  struct acrn_acpi_generic_address cx_reg;
+  __u8 type;
+  __u32 latency;
+  __u64 power;
+};
+struct acrn_pstate_data {
+  __u64 core_frequency;
+  __u64 power;
+  __u64 transition_latency;
+  __u64 bus_master_latency;
+  __u64 control;
+  __u64 status;
+};
+#define PMCMD_TYPE_MASK 0x000000ff
+enum acrn_pm_cmd_type {
+  ACRN_PMCMD_GET_PX_CNT,
+  ACRN_PMCMD_GET_PX_DATA,
+  ACRN_PMCMD_GET_CX_CNT,
+  ACRN_PMCMD_GET_CX_DATA,
+};
+#define ACRN_IOEVENTFD_FLAG_PIO 0x01
+#define ACRN_IOEVENTFD_FLAG_DATAMATCH 0x02
+#define ACRN_IOEVENTFD_FLAG_DEASSIGN 0x04
+struct acrn_ioeventfd {
+  __u32 fd;
+  __u32 flags;
+  __u64 addr;
+  __u32 len;
+  __u32 reserved;
+  __u64 data;
+};
+#define ACRN_IRQFD_FLAG_DEASSIGN 0x01
+struct acrn_irqfd {
+  __s32 fd;
+  __u32 flags;
+  struct acrn_msi_entry msi;
+};
+#define ACRN_IOCTL_TYPE 0xA2
+#define ACRN_IOCTL_CREATE_VM _IOWR(ACRN_IOCTL_TYPE, 0x10, struct acrn_vm_creation)
+#define ACRN_IOCTL_DESTROY_VM _IO(ACRN_IOCTL_TYPE, 0x11)
+#define ACRN_IOCTL_START_VM _IO(ACRN_IOCTL_TYPE, 0x12)
+#define ACRN_IOCTL_PAUSE_VM _IO(ACRN_IOCTL_TYPE, 0x13)
+#define ACRN_IOCTL_RESET_VM _IO(ACRN_IOCTL_TYPE, 0x15)
+#define ACRN_IOCTL_SET_VCPU_REGS _IOW(ACRN_IOCTL_TYPE, 0x16, struct acrn_vcpu_regs)
+#define ACRN_IOCTL_INJECT_MSI _IOW(ACRN_IOCTL_TYPE, 0x23, struct acrn_msi_entry)
+#define ACRN_IOCTL_VM_INTR_MONITOR _IOW(ACRN_IOCTL_TYPE, 0x24, unsigned long)
+#define ACRN_IOCTL_SET_IRQLINE _IOW(ACRN_IOCTL_TYPE, 0x25, __u64)
+#define ACRN_IOCTL_NOTIFY_REQUEST_FINISH _IOW(ACRN_IOCTL_TYPE, 0x31, struct acrn_ioreq_notify)
+#define ACRN_IOCTL_CREATE_IOREQ_CLIENT _IO(ACRN_IOCTL_TYPE, 0x32)
+#define ACRN_IOCTL_ATTACH_IOREQ_CLIENT _IO(ACRN_IOCTL_TYPE, 0x33)
+#define ACRN_IOCTL_DESTROY_IOREQ_CLIENT _IO(ACRN_IOCTL_TYPE, 0x34)
+#define ACRN_IOCTL_CLEAR_VM_IOREQ _IO(ACRN_IOCTL_TYPE, 0x35)
+#define ACRN_IOCTL_SET_MEMSEG _IOW(ACRN_IOCTL_TYPE, 0x41, struct acrn_vm_memmap)
+#define ACRN_IOCTL_UNSET_MEMSEG _IOW(ACRN_IOCTL_TYPE, 0x42, struct acrn_vm_memmap)
+#define ACRN_IOCTL_SET_PTDEV_INTR _IOW(ACRN_IOCTL_TYPE, 0x53, struct acrn_ptdev_irq)
+#define ACRN_IOCTL_RESET_PTDEV_INTR _IOW(ACRN_IOCTL_TYPE, 0x54, struct acrn_ptdev_irq)
+#define ACRN_IOCTL_ASSIGN_PCIDEV _IOW(ACRN_IOCTL_TYPE, 0x55, struct acrn_pcidev)
+#define ACRN_IOCTL_DEASSIGN_PCIDEV _IOW(ACRN_IOCTL_TYPE, 0x56, struct acrn_pcidev)
+#define ACRN_IOCTL_ASSIGN_MMIODEV _IOW(ACRN_IOCTL_TYPE, 0x57, struct acrn_mmiodev)
+#define ACRN_IOCTL_DEASSIGN_MMIODEV _IOW(ACRN_IOCTL_TYPE, 0x58, struct acrn_mmiodev)
+#define ACRN_IOCTL_CREATE_VDEV _IOW(ACRN_IOCTL_TYPE, 0x59, struct acrn_vdev)
+#define ACRN_IOCTL_DESTROY_VDEV _IOW(ACRN_IOCTL_TYPE, 0x5A, struct acrn_vdev)
+#define ACRN_IOCTL_PM_GET_CPU_STATE _IOWR(ACRN_IOCTL_TYPE, 0x60, __u64)
+#define ACRN_IOCTL_IOEVENTFD _IOW(ACRN_IOCTL_TYPE, 0x70, struct acrn_ioeventfd)
+#define ACRN_IOCTL_IRQFD _IOW(ACRN_IOCTL_TYPE, 0x71, struct acrn_irqfd)
+#endif
diff --git a/i686-linux-musl/include/linux/adb.h b/i686-linux-musl/include/linux/adb.h
new file mode 100644
index 0000000..ddb3b65
--- /dev/null
+++ b/i686-linux-musl/include/linux/adb.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__ADB_H
+#define _UAPI__ADB_H
+#define ADB_BUSRESET 0
+#define ADB_FLUSH(id) (0x01 | ((id) << 4))
+#define ADB_WRITEREG(id,reg) (0x08 | (reg) | ((id) << 4))
+#define ADB_READREG(id,reg) (0x0C | (reg) | ((id) << 4))
+#define ADB_DONGLE 1
+#define ADB_KEYBOARD 2
+#define ADB_MOUSE 3
+#define ADB_TABLET 4
+#define ADB_MODEM 5
+#define ADB_MISC 7
+#define ADB_RET_OK 0
+#define ADB_RET_TIMEOUT 3
+#define ADB_PACKET 0
+#define CUDA_PACKET 1
+#define ERROR_PACKET 2
+#define TIMER_PACKET 3
+#define POWER_PACKET 4
+#define MACIIC_PACKET 5
+#define PMU_PACKET 6
+#define ADB_QUERY 7
+#define ADB_QUERY_GETDEVINFO 1
+#endif
diff --git a/i686-linux-musl/include/linux/adfs_fs.h b/i686-linux-musl/include/linux/adfs_fs.h
new file mode 100644
index 0000000..aa1d732
--- /dev/null
+++ b/i686-linux-musl/include/linux/adfs_fs.h
@@ -0,0 +1,55 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ADFS_FS_H
+#define _UAPI_ADFS_FS_H
+#include <linux/types.h>
+#include <linux/magic.h>
+struct adfs_discrecord {
+  __u8 log2secsize;
+  __u8 secspertrack;
+  __u8 heads;
+  __u8 density;
+  __u8 idlen;
+  __u8 log2bpmb;
+  __u8 skew;
+  __u8 bootoption;
+  __u8 lowsector;
+  __u8 nzones;
+  __le16 zone_spare;
+  __le32 root;
+  __le32 disc_size;
+  __le16 disc_id;
+  __u8 disc_name[10];
+  __le32 disc_type;
+  __le32 disc_size_high;
+  __u8 log2sharesize : 4;
+  __u8 unused40 : 4;
+  __u8 big_flag : 1;
+  __u8 unused41 : 7;
+  __u8 nzones_high;
+  __u8 reserved43;
+  __le32 format_version;
+  __le32 root_size;
+  __u8 unused52[60 - 52];
+} __attribute__((packed, aligned(4)));
+#define ADFS_DISCRECORD (0xc00)
+#define ADFS_DR_OFFSET (0x1c0)
+#define ADFS_DR_SIZE 60
+#define ADFS_DR_SIZE_BITS (ADFS_DR_SIZE << 3)
+#endif
diff --git a/i686-linux-musl/include/linux/affs_hardblocks.h b/i686-linux-musl/include/linux/affs_hardblocks.h
new file mode 100644
index 0000000..f46bdf1
--- /dev/null
+++ b/i686-linux-musl/include/linux/affs_hardblocks.h
@@ -0,0 +1,77 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef AFFS_HARDBLOCKS_H
+#define AFFS_HARDBLOCKS_H
+#include <linux/types.h>
+struct RigidDiskBlock {
+  __u32 rdb_ID;
+  __be32 rdb_SummedLongs;
+  __s32 rdb_ChkSum;
+  __u32 rdb_HostID;
+  __be32 rdb_BlockBytes;
+  __u32 rdb_Flags;
+  __u32 rdb_BadBlockList;
+  __be32 rdb_PartitionList;
+  __u32 rdb_FileSysHeaderList;
+  __u32 rdb_DriveInit;
+  __u32 rdb_Reserved1[6];
+  __u32 rdb_Cylinders;
+  __u32 rdb_Sectors;
+  __u32 rdb_Heads;
+  __u32 rdb_Interleave;
+  __u32 rdb_Park;
+  __u32 rdb_Reserved2[3];
+  __u32 rdb_WritePreComp;
+  __u32 rdb_ReducedWrite;
+  __u32 rdb_StepRate;
+  __u32 rdb_Reserved3[5];
+  __u32 rdb_RDBBlocksLo;
+  __u32 rdb_RDBBlocksHi;
+  __u32 rdb_LoCylinder;
+  __u32 rdb_HiCylinder;
+  __u32 rdb_CylBlocks;
+  __u32 rdb_AutoParkSeconds;
+  __u32 rdb_HighRDSKBlock;
+  __u32 rdb_Reserved4;
+  char rdb_DiskVendor[8];
+  char rdb_DiskProduct[16];
+  char rdb_DiskRevision[4];
+  char rdb_ControllerVendor[8];
+  char rdb_ControllerProduct[16];
+  char rdb_ControllerRevision[4];
+  __u32 rdb_Reserved5[10];
+};
+#define IDNAME_RIGIDDISK 0x5244534B
+struct PartitionBlock {
+  __be32 pb_ID;
+  __be32 pb_SummedLongs;
+  __s32 pb_ChkSum;
+  __u32 pb_HostID;
+  __be32 pb_Next;
+  __u32 pb_Flags;
+  __u32 pb_Reserved1[2];
+  __u32 pb_DevFlags;
+  __u8 pb_DriveName[32];
+  __u32 pb_Reserved2[15];
+  __be32 pb_Environment[17];
+  __u32 pb_EReserved[15];
+};
+#define IDNAME_PARTITION 0x50415254
+#define RDB_ALLOCATION_LIMIT 16
+#endif
diff --git a/i686-linux-musl/include/linux/agpgart.h b/i686-linux-musl/include/linux/agpgart.h
new file mode 100644
index 0000000..3b126f1
--- /dev/null
+++ b/i686-linux-musl/include/linux/agpgart.h
@@ -0,0 +1,83 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_AGP_H
+#define _UAPI_AGP_H
+#define AGPIOC_BASE 'A'
+#define AGPIOC_INFO _IOR(AGPIOC_BASE, 0, struct agp_info *)
+#define AGPIOC_ACQUIRE _IO(AGPIOC_BASE, 1)
+#define AGPIOC_RELEASE _IO(AGPIOC_BASE, 2)
+#define AGPIOC_SETUP _IOW(AGPIOC_BASE, 3, struct agp_setup *)
+#define AGPIOC_RESERVE _IOW(AGPIOC_BASE, 4, struct agp_region *)
+#define AGPIOC_PROTECT _IOW(AGPIOC_BASE, 5, struct agp_region *)
+#define AGPIOC_ALLOCATE _IOWR(AGPIOC_BASE, 6, struct agp_allocate *)
+#define AGPIOC_DEALLOCATE _IOW(AGPIOC_BASE, 7, int)
+#define AGPIOC_BIND _IOW(AGPIOC_BASE, 8, struct agp_bind *)
+#define AGPIOC_UNBIND _IOW(AGPIOC_BASE, 9, struct agp_unbind *)
+#define AGPIOC_CHIPSET_FLUSH _IO(AGPIOC_BASE, 10)
+#define AGP_DEVICE "/dev/agpgart"
+#ifndef TRUE
+#define TRUE 1
+#endif
+#ifndef FALSE
+#define FALSE 0
+#endif
+#include <linux/types.h>
+#include <stdlib.h>
+struct agp_version {
+  __u16 major;
+  __u16 minor;
+};
+typedef struct _agp_info {
+  struct agp_version version;
+  __u32 bridge_id;
+  __u32 agp_mode;
+  unsigned long aper_base;
+  size_t aper_size;
+  size_t pg_total;
+  size_t pg_system;
+  size_t pg_used;
+} agp_info;
+typedef struct _agp_setup {
+  __u32 agp_mode;
+} agp_setup;
+typedef struct _agp_segment {
+  __kernel_off_t pg_start;
+  __kernel_size_t pg_count;
+  int prot;
+} agp_segment;
+typedef struct _agp_region {
+  __kernel_pid_t pid;
+  __kernel_size_t seg_count;
+  struct _agp_segment * seg_list;
+} agp_region;
+typedef struct _agp_allocate {
+  int key;
+  __kernel_size_t pg_count;
+  __u32 type;
+  __u32 physical;
+} agp_allocate;
+typedef struct _agp_bind {
+  int key;
+  __kernel_off_t pg_start;
+} agp_bind;
+typedef struct _agp_unbind {
+  int key;
+  __u32 priority;
+} agp_unbind;
+#endif
diff --git a/i686-linux-musl/include/linux/aio_abi.h b/i686-linux-musl/include/linux/aio_abi.h
new file mode 100644
index 0000000..17ca2f9
--- /dev/null
+++ b/i686-linux-musl/include/linux/aio_abi.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX__AIO_ABI_H
+#define __LINUX__AIO_ABI_H
+#include <linux/types.h>
+#include <linux/fs.h>
+#include <asm/byteorder.h>
+typedef __kernel_ulong_t aio_context_t;
+enum {
+  IOCB_CMD_PREAD = 0,
+  IOCB_CMD_PWRITE = 1,
+  IOCB_CMD_FSYNC = 2,
+  IOCB_CMD_FDSYNC = 3,
+  IOCB_CMD_POLL = 5,
+  IOCB_CMD_NOOP = 6,
+  IOCB_CMD_PREADV = 7,
+  IOCB_CMD_PWRITEV = 8,
+};
+#define IOCB_FLAG_RESFD (1 << 0)
+#define IOCB_FLAG_IOPRIO (1 << 1)
+struct io_event {
+  __u64 data;
+  __u64 obj;
+  __s64 res;
+  __s64 res2;
+};
+struct iocb {
+  __u64 aio_data;
+#if defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN)
+  __u32 aio_key;
+  __kernel_rwf_t aio_rw_flags;
+#elif defined(__BYTE_ORDER)?__BYTE_ORDER==__BIG_ENDIAN:defined(__BIG_ENDIAN)
+  __kernel_rwf_t aio_rw_flags;
+  __u32 aio_key;
+#else
+#error edit for your odd byteorder .
+#endif
+  __u16 aio_lio_opcode;
+  __s16 aio_reqprio;
+  __u32 aio_fildes;
+  __u64 aio_buf;
+  __u64 aio_nbytes;
+  __s64 aio_offset;
+  __u64 aio_reserved2;
+  __u32 aio_flags;
+  __u32 aio_resfd;
+};
+#undef IFBIG
+#undef IFLITTLE
+#endif
diff --git a/i686-linux-musl/include/linux/am437x-vpfe.h b/i686-linux-musl/include/linux/am437x-vpfe.h
new file mode 100644
index 0000000..9ea21d2
--- /dev/null
+++ b/i686-linux-musl/include/linux/am437x-vpfe.h
@@ -0,0 +1,80 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef AM437X_VPFE_USER_H
+#define AM437X_VPFE_USER_H
+#include <linux/videodev2.h>
+enum vpfe_ccdc_data_size {
+  VPFE_CCDC_DATA_16BITS = 0,
+  VPFE_CCDC_DATA_15BITS,
+  VPFE_CCDC_DATA_14BITS,
+  VPFE_CCDC_DATA_13BITS,
+  VPFE_CCDC_DATA_12BITS,
+  VPFE_CCDC_DATA_11BITS,
+  VPFE_CCDC_DATA_10BITS,
+  VPFE_CCDC_DATA_8BITS,
+};
+enum vpfe_ccdc_sample_length {
+  VPFE_CCDC_SAMPLE_1PIXELS = 0,
+  VPFE_CCDC_SAMPLE_2PIXELS,
+  VPFE_CCDC_SAMPLE_4PIXELS,
+  VPFE_CCDC_SAMPLE_8PIXELS,
+  VPFE_CCDC_SAMPLE_16PIXELS,
+};
+enum vpfe_ccdc_sample_line {
+  VPFE_CCDC_SAMPLE_1LINES = 0,
+  VPFE_CCDC_SAMPLE_2LINES,
+  VPFE_CCDC_SAMPLE_4LINES,
+  VPFE_CCDC_SAMPLE_8LINES,
+  VPFE_CCDC_SAMPLE_16LINES,
+};
+enum vpfe_ccdc_gamma_width {
+  VPFE_CCDC_GAMMA_BITS_15_6 = 0,
+  VPFE_CCDC_GAMMA_BITS_14_5,
+  VPFE_CCDC_GAMMA_BITS_13_4,
+  VPFE_CCDC_GAMMA_BITS_12_3,
+  VPFE_CCDC_GAMMA_BITS_11_2,
+  VPFE_CCDC_GAMMA_BITS_10_1,
+  VPFE_CCDC_GAMMA_BITS_09_0,
+};
+struct vpfe_ccdc_a_law {
+  unsigned char enable;
+  enum vpfe_ccdc_gamma_width gamma_wd;
+};
+struct vpfe_ccdc_black_clamp {
+  unsigned char enable;
+  enum vpfe_ccdc_sample_length sample_pixel;
+  enum vpfe_ccdc_sample_line sample_ln;
+  unsigned short start_pixel;
+  unsigned short sgain;
+  unsigned short dc_sub;
+};
+struct vpfe_ccdc_black_compensation {
+  char r;
+  char gr;
+  char b;
+  char gb;
+};
+struct vpfe_ccdc_config_params_raw {
+  enum vpfe_ccdc_data_size data_sz;
+  struct vpfe_ccdc_a_law alaw;
+  struct vpfe_ccdc_black_clamp blk_clamp;
+  struct vpfe_ccdc_black_compensation blk_comp;
+};
+#define VIDIOC_AM437X_CCDC_CFG _IOW('V', BASE_VIDIOC_PRIVATE + 1, void *)
+#endif
diff --git a/i686-linux-musl/include/linux/amt.h b/i686-linux-musl/include/linux/amt.h
new file mode 100644
index 0000000..049006d
--- /dev/null
+++ b/i686-linux-musl/include/linux/amt.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_AMT_H_
+#define _UAPI_AMT_H_
+enum ifla_amt_mode {
+  AMT_MODE_GATEWAY = 0,
+  AMT_MODE_RELAY,
+  __AMT_MODE_MAX,
+};
+#define AMT_MODE_MAX (__AMT_MODE_MAX - 1)
+enum {
+  IFLA_AMT_UNSPEC,
+  IFLA_AMT_MODE,
+  IFLA_AMT_RELAY_PORT,
+  IFLA_AMT_GATEWAY_PORT,
+  IFLA_AMT_LINK,
+  IFLA_AMT_LOCAL_IP,
+  IFLA_AMT_REMOTE_IP,
+  IFLA_AMT_DISCOVERY_IP,
+  IFLA_AMT_MAX_TUNNELS,
+  __IFLA_AMT_MAX,
+};
+#define IFLA_AMT_MAX (__IFLA_AMT_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/android/binder.h b/i686-linux-musl/include/linux/android/binder.h
new file mode 100644
index 0000000..ded1756
--- /dev/null
+++ b/i686-linux-musl/include/linux/android/binder.h
@@ -0,0 +1,239 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_BINDER_H
+#define _UAPI_LINUX_BINDER_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define B_PACK_CHARS(c1,c2,c3,c4) ((((c1) << 24)) | (((c2) << 16)) | (((c3) << 8)) | (c4))
+#define B_TYPE_LARGE 0x85
+enum {
+  BINDER_TYPE_BINDER = B_PACK_CHARS('s', 'b', '*', B_TYPE_LARGE),
+  BINDER_TYPE_WEAK_BINDER = B_PACK_CHARS('w', 'b', '*', B_TYPE_LARGE),
+  BINDER_TYPE_HANDLE = B_PACK_CHARS('s', 'h', '*', B_TYPE_LARGE),
+  BINDER_TYPE_WEAK_HANDLE = B_PACK_CHARS('w', 'h', '*', B_TYPE_LARGE),
+  BINDER_TYPE_FD = B_PACK_CHARS('f', 'd', '*', B_TYPE_LARGE),
+  BINDER_TYPE_FDA = B_PACK_CHARS('f', 'd', 'a', B_TYPE_LARGE),
+  BINDER_TYPE_PTR = B_PACK_CHARS('p', 't', '*', B_TYPE_LARGE),
+};
+enum flat_binder_object_shifts {
+  FLAT_BINDER_FLAG_SCHED_POLICY_SHIFT = 9,
+};
+enum flat_binder_object_flags {
+  FLAT_BINDER_FLAG_PRIORITY_MASK = 0xff,
+  FLAT_BINDER_FLAG_ACCEPTS_FDS = 0x100,
+  FLAT_BINDER_FLAG_SCHED_POLICY_MASK = 3U << FLAT_BINDER_FLAG_SCHED_POLICY_SHIFT,
+  FLAT_BINDER_FLAG_INHERIT_RT = 0x800,
+  FLAT_BINDER_FLAG_TXN_SECURITY_CTX = 0x1000,
+};
+#ifdef BINDER_IPC_32BIT
+typedef __u32 binder_size_t;
+typedef __u32 binder_uintptr_t;
+#else
+typedef __u64 binder_size_t;
+typedef __u64 binder_uintptr_t;
+#endif
+struct binder_object_header {
+  __u32 type;
+};
+struct flat_binder_object {
+  struct binder_object_header hdr;
+  __u32 flags;
+  union {
+    binder_uintptr_t binder;
+    __u32 handle;
+  };
+  binder_uintptr_t cookie;
+};
+struct binder_fd_object {
+  struct binder_object_header hdr;
+  __u32 pad_flags;
+  union {
+    binder_uintptr_t pad_binder;
+    __u32 fd;
+  };
+  binder_uintptr_t cookie;
+};
+struct binder_buffer_object {
+  struct binder_object_header hdr;
+  __u32 flags;
+  binder_uintptr_t buffer;
+  binder_size_t length;
+  binder_size_t parent;
+  binder_size_t parent_offset;
+};
+enum {
+  BINDER_BUFFER_FLAG_HAS_PARENT = 0x01,
+};
+struct binder_fd_array_object {
+  struct binder_object_header hdr;
+  __u32 pad;
+  binder_size_t num_fds;
+  binder_size_t parent;
+  binder_size_t parent_offset;
+};
+struct binder_write_read {
+  binder_size_t write_size;
+  binder_size_t write_consumed;
+  binder_uintptr_t write_buffer;
+  binder_size_t read_size;
+  binder_size_t read_consumed;
+  binder_uintptr_t read_buffer;
+};
+struct binder_version {
+  __s32 protocol_version;
+};
+#ifdef BINDER_IPC_32BIT
+#define BINDER_CURRENT_PROTOCOL_VERSION 7
+#else
+#define BINDER_CURRENT_PROTOCOL_VERSION 8
+#endif
+struct binder_node_debug_info {
+  binder_uintptr_t ptr;
+  binder_uintptr_t cookie;
+  __u32 has_strong_ref;
+  __u32 has_weak_ref;
+};
+struct binder_node_info_for_ref {
+  __u32 handle;
+  __u32 strong_count;
+  __u32 weak_count;
+  __u32 reserved1;
+  __u32 reserved2;
+  __u32 reserved3;
+};
+struct binder_freeze_info {
+  __u32 pid;
+  __u32 enable;
+  __u32 timeout_ms;
+};
+struct binder_frozen_status_info {
+  __u32 pid;
+  __u32 sync_recv;
+  __u32 async_recv;
+};
+#define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)
+#define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, __s64)
+#define BINDER_SET_MAX_THREADS _IOW('b', 5, __u32)
+#define BINDER_SET_IDLE_PRIORITY _IOW('b', 6, __s32)
+#define BINDER_SET_CONTEXT_MGR _IOW('b', 7, __s32)
+#define BINDER_THREAD_EXIT _IOW('b', 8, __s32)
+#define BINDER_VERSION _IOWR('b', 9, struct binder_version)
+#define BINDER_GET_NODE_DEBUG_INFO _IOWR('b', 11, struct binder_node_debug_info)
+#define BINDER_GET_NODE_INFO_FOR_REF _IOWR('b', 12, struct binder_node_info_for_ref)
+#define BINDER_SET_CONTEXT_MGR_EXT _IOW('b', 13, struct flat_binder_object)
+#define BINDER_FREEZE _IOW('b', 14, struct binder_freeze_info)
+#define BINDER_GET_FROZEN_INFO _IOWR('b', 15, struct binder_frozen_status_info)
+#define BINDER_ENABLE_ONEWAY_SPAM_DETECTION _IOW('b', 16, __u32)
+enum transaction_flags {
+  TF_ONE_WAY = 0x01,
+  TF_ROOT_OBJECT = 0x04,
+  TF_STATUS_CODE = 0x08,
+  TF_ACCEPT_FDS = 0x10,
+  TF_CLEAR_BUF = 0x20,
+};
+struct binder_transaction_data {
+  union {
+    __u32 handle;
+    binder_uintptr_t ptr;
+  } target;
+  binder_uintptr_t cookie;
+  __u32 code;
+  __u32 flags;
+  pid_t sender_pid;
+  uid_t sender_euid;
+  binder_size_t data_size;
+  binder_size_t offsets_size;
+  union {
+    struct {
+      binder_uintptr_t buffer;
+      binder_uintptr_t offsets;
+    } ptr;
+    __u8 buf[8];
+  } data;
+};
+struct binder_transaction_data_secctx {
+  struct binder_transaction_data transaction_data;
+  binder_uintptr_t secctx;
+};
+struct binder_transaction_data_sg {
+  struct binder_transaction_data transaction_data;
+  binder_size_t buffers_size;
+};
+struct binder_ptr_cookie {
+  binder_uintptr_t ptr;
+  binder_uintptr_t cookie;
+};
+struct binder_handle_cookie {
+  __u32 handle;
+  binder_uintptr_t cookie;
+} __packed;
+struct binder_pri_desc {
+  __s32 priority;
+  __u32 desc;
+};
+struct binder_pri_ptr_cookie {
+  __s32 priority;
+  binder_uintptr_t ptr;
+  binder_uintptr_t cookie;
+};
+enum binder_driver_return_protocol {
+  BR_ERROR = _IOR('r', 0, __s32),
+  BR_OK = _IO('r', 1),
+  BR_TRANSACTION_SEC_CTX = _IOR('r', 2, struct binder_transaction_data_secctx),
+  BR_TRANSACTION = _IOR('r', 2, struct binder_transaction_data),
+  BR_REPLY = _IOR('r', 3, struct binder_transaction_data),
+  BR_ACQUIRE_RESULT = _IOR('r', 4, __s32),
+  BR_DEAD_REPLY = _IO('r', 5),
+  BR_TRANSACTION_COMPLETE = _IO('r', 6),
+  BR_INCREFS = _IOR('r', 7, struct binder_ptr_cookie),
+  BR_ACQUIRE = _IOR('r', 8, struct binder_ptr_cookie),
+  BR_RELEASE = _IOR('r', 9, struct binder_ptr_cookie),
+  BR_DECREFS = _IOR('r', 10, struct binder_ptr_cookie),
+  BR_ATTEMPT_ACQUIRE = _IOR('r', 11, struct binder_pri_ptr_cookie),
+  BR_NOOP = _IO('r', 12),
+  BR_SPAWN_LOOPER = _IO('r', 13),
+  BR_FINISHED = _IO('r', 14),
+  BR_DEAD_BINDER = _IOR('r', 15, binder_uintptr_t),
+  BR_CLEAR_DEATH_NOTIFICATION_DONE = _IOR('r', 16, binder_uintptr_t),
+  BR_FAILED_REPLY = _IO('r', 17),
+  BR_FROZEN_REPLY = _IO('r', 18),
+  BR_ONEWAY_SPAM_SUSPECT = _IO('r', 19),
+};
+enum binder_driver_command_protocol {
+  BC_TRANSACTION = _IOW('c', 0, struct binder_transaction_data),
+  BC_REPLY = _IOW('c', 1, struct binder_transaction_data),
+  BC_ACQUIRE_RESULT = _IOW('c', 2, __s32),
+  BC_FREE_BUFFER = _IOW('c', 3, binder_uintptr_t),
+  BC_INCREFS = _IOW('c', 4, __u32),
+  BC_ACQUIRE = _IOW('c', 5, __u32),
+  BC_RELEASE = _IOW('c', 6, __u32),
+  BC_DECREFS = _IOW('c', 7, __u32),
+  BC_INCREFS_DONE = _IOW('c', 8, struct binder_ptr_cookie),
+  BC_ACQUIRE_DONE = _IOW('c', 9, struct binder_ptr_cookie),
+  BC_ATTEMPT_ACQUIRE = _IOW('c', 10, struct binder_pri_desc),
+  BC_REGISTER_LOOPER = _IO('c', 11),
+  BC_ENTER_LOOPER = _IO('c', 12),
+  BC_EXIT_LOOPER = _IO('c', 13),
+  BC_REQUEST_DEATH_NOTIFICATION = _IOW('c', 14, struct binder_handle_cookie),
+  BC_CLEAR_DEATH_NOTIFICATION = _IOW('c', 15, struct binder_handle_cookie),
+  BC_DEAD_BINDER_DONE = _IOW('c', 16, binder_uintptr_t),
+  BC_TRANSACTION_SG = _IOW('c', 17, struct binder_transaction_data_sg),
+  BC_REPLY_SG = _IOW('c', 18, struct binder_transaction_data_sg),
+};
+#endif
diff --git a/i686-linux-musl/include/linux/android/binderfs.h b/i686-linux-musl/include/linux/android/binderfs.h
new file mode 100644
index 0000000..d58c333
--- /dev/null
+++ b/i686-linux-musl/include/linux/android/binderfs.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_BINDERFS_H
+#define _UAPI_LINUX_BINDERFS_H
+#include <linux/android/binder.h>
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define BINDERFS_MAX_NAME 255
+struct binderfs_device {
+  char name[BINDERFS_MAX_NAME + 1];
+  __u32 major;
+  __u32 minor;
+};
+#define BINDER_CTL_ADD _IOWR('b', 1, struct binderfs_device)
+#endif
diff --git a/i686-linux-musl/include/linux/apm_bios.h b/i686-linux-musl/include/linux/apm_bios.h
new file mode 100644
index 0000000..b2ffe01
--- /dev/null
+++ b/i686-linux-musl/include/linux/apm_bios.h
@@ -0,0 +1,103 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_APM_H
+#define _UAPI_LINUX_APM_H
+#include <linux/types.h>
+typedef unsigned short apm_event_t;
+typedef unsigned short apm_eventinfo_t;
+struct apm_bios_info {
+  __u16 version;
+  __u16 cseg;
+  __u32 offset;
+  __u16 cseg_16;
+  __u16 dseg;
+  __u16 flags;
+  __u16 cseg_len;
+  __u16 cseg_16_len;
+  __u16 dseg_len;
+};
+#define APM_STATE_READY 0x0000
+#define APM_STATE_STANDBY 0x0001
+#define APM_STATE_SUSPEND 0x0002
+#define APM_STATE_OFF 0x0003
+#define APM_STATE_BUSY 0x0004
+#define APM_STATE_REJECT 0x0005
+#define APM_STATE_OEM_SYS 0x0020
+#define APM_STATE_OEM_DEV 0x0040
+#define APM_STATE_DISABLE 0x0000
+#define APM_STATE_ENABLE 0x0001
+#define APM_STATE_DISENGAGE 0x0000
+#define APM_STATE_ENGAGE 0x0001
+#define APM_SYS_STANDBY 0x0001
+#define APM_SYS_SUSPEND 0x0002
+#define APM_NORMAL_RESUME 0x0003
+#define APM_CRITICAL_RESUME 0x0004
+#define APM_LOW_BATTERY 0x0005
+#define APM_POWER_STATUS_CHANGE 0x0006
+#define APM_UPDATE_TIME 0x0007
+#define APM_CRITICAL_SUSPEND 0x0008
+#define APM_USER_STANDBY 0x0009
+#define APM_USER_SUSPEND 0x000a
+#define APM_STANDBY_RESUME 0x000b
+#define APM_CAPABILITY_CHANGE 0x000c
+#define APM_USER_HIBERNATION 0x000d
+#define APM_HIBERNATION_RESUME 0x000e
+#define APM_SUCCESS 0x00
+#define APM_DISABLED 0x01
+#define APM_CONNECTED 0x02
+#define APM_NOT_CONNECTED 0x03
+#define APM_16_CONNECTED 0x05
+#define APM_16_UNSUPPORTED 0x06
+#define APM_32_CONNECTED 0x07
+#define APM_32_UNSUPPORTED 0x08
+#define APM_BAD_DEVICE 0x09
+#define APM_BAD_PARAM 0x0a
+#define APM_NOT_ENGAGED 0x0b
+#define APM_BAD_FUNCTION 0x0c
+#define APM_RESUME_DISABLED 0x0d
+#define APM_NO_ERROR 0x53
+#define APM_BAD_STATE 0x60
+#define APM_NO_EVENTS 0x80
+#define APM_NOT_PRESENT 0x86
+#define APM_DEVICE_BIOS 0x0000
+#define APM_DEVICE_ALL 0x0001
+#define APM_DEVICE_DISPLAY 0x0100
+#define APM_DEVICE_STORAGE 0x0200
+#define APM_DEVICE_PARALLEL 0x0300
+#define APM_DEVICE_SERIAL 0x0400
+#define APM_DEVICE_NETWORK 0x0500
+#define APM_DEVICE_PCMCIA 0x0600
+#define APM_DEVICE_BATTERY 0x8000
+#define APM_DEVICE_OEM 0xe000
+#define APM_DEVICE_OLD_ALL 0xffff
+#define APM_DEVICE_CLASS 0x00ff
+#define APM_DEVICE_MASK 0xff00
+#define APM_MAX_BATTERIES 2
+#define APM_CAP_GLOBAL_STANDBY 0x0001
+#define APM_CAP_GLOBAL_SUSPEND 0x0002
+#define APM_CAP_RESUME_STANDBY_TIMER 0x0004
+#define APM_CAP_RESUME_SUSPEND_TIMER 0x0008
+#define APM_CAP_RESUME_STANDBY_RING 0x0010
+#define APM_CAP_RESUME_SUSPEND_RING 0x0020
+#define APM_CAP_RESUME_STANDBY_PCMCIA 0x0040
+#define APM_CAP_RESUME_SUSPEND_PCMCIA 0x0080
+#include <linux/ioctl.h>
+#define APM_IOC_STANDBY _IO('A', 1)
+#define APM_IOC_SUSPEND _IO('A', 2)
+#endif
diff --git a/i686-linux-musl/include/linux/arcfb.h b/i686-linux-musl/include/linux/arcfb.h
new file mode 100644
index 0000000..93fc722
--- /dev/null
+++ b/i686-linux-musl/include/linux/arcfb.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_ARCFB_H__
+#define __LINUX_ARCFB_H__
+#define FBIO_WAITEVENT _IO('F', 0x88)
+#define FBIO_GETCONTROL2 _IOR('F', 0x89, size_t)
+#endif
diff --git a/i686-linux-musl/include/linux/arm_sdei.h b/i686-linux-musl/include/linux/arm_sdei.h
new file mode 100644
index 0000000..4ec9294
--- /dev/null
+++ b/i686-linux-musl/include/linux/arm_sdei.h
@@ -0,0 +1,72 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ARM_SDEI_H
+#define _UAPI_LINUX_ARM_SDEI_H
+#define SDEI_1_0_FN_BASE 0xC4000020
+#define SDEI_1_0_MASK 0xFFFFFFE0
+#define SDEI_1_0_FN(n) (SDEI_1_0_FN_BASE + (n))
+#define SDEI_1_0_FN_SDEI_VERSION SDEI_1_0_FN(0x00)
+#define SDEI_1_0_FN_SDEI_EVENT_REGISTER SDEI_1_0_FN(0x01)
+#define SDEI_1_0_FN_SDEI_EVENT_ENABLE SDEI_1_0_FN(0x02)
+#define SDEI_1_0_FN_SDEI_EVENT_DISABLE SDEI_1_0_FN(0x03)
+#define SDEI_1_0_FN_SDEI_EVENT_CONTEXT SDEI_1_0_FN(0x04)
+#define SDEI_1_0_FN_SDEI_EVENT_COMPLETE SDEI_1_0_FN(0x05)
+#define SDEI_1_0_FN_SDEI_EVENT_COMPLETE_AND_RESUME SDEI_1_0_FN(0x06)
+#define SDEI_1_0_FN_SDEI_EVENT_UNREGISTER SDEI_1_0_FN(0x07)
+#define SDEI_1_0_FN_SDEI_EVENT_STATUS SDEI_1_0_FN(0x08)
+#define SDEI_1_0_FN_SDEI_EVENT_GET_INFO SDEI_1_0_FN(0x09)
+#define SDEI_1_0_FN_SDEI_EVENT_ROUTING_SET SDEI_1_0_FN(0x0A)
+#define SDEI_1_0_FN_SDEI_PE_MASK SDEI_1_0_FN(0x0B)
+#define SDEI_1_0_FN_SDEI_PE_UNMASK SDEI_1_0_FN(0x0C)
+#define SDEI_1_0_FN_SDEI_INTERRUPT_BIND SDEI_1_0_FN(0x0D)
+#define SDEI_1_0_FN_SDEI_INTERRUPT_RELEASE SDEI_1_0_FN(0x0E)
+#define SDEI_1_0_FN_SDEI_PRIVATE_RESET SDEI_1_0_FN(0x11)
+#define SDEI_1_0_FN_SDEI_SHARED_RESET SDEI_1_0_FN(0x12)
+#define SDEI_VERSION_MAJOR_SHIFT 48
+#define SDEI_VERSION_MAJOR_MASK 0x7fff
+#define SDEI_VERSION_MINOR_SHIFT 32
+#define SDEI_VERSION_MINOR_MASK 0xffff
+#define SDEI_VERSION_VENDOR_SHIFT 0
+#define SDEI_VERSION_VENDOR_MASK 0xffffffff
+#define SDEI_VERSION_MAJOR(x) (x >> SDEI_VERSION_MAJOR_SHIFT & SDEI_VERSION_MAJOR_MASK)
+#define SDEI_VERSION_MINOR(x) (x >> SDEI_VERSION_MINOR_SHIFT & SDEI_VERSION_MINOR_MASK)
+#define SDEI_VERSION_VENDOR(x) (x >> SDEI_VERSION_VENDOR_SHIFT & SDEI_VERSION_VENDOR_MASK)
+#define SDEI_SUCCESS 0
+#define SDEI_NOT_SUPPORTED - 1
+#define SDEI_INVALID_PARAMETERS - 2
+#define SDEI_DENIED - 3
+#define SDEI_PENDING - 5
+#define SDEI_OUT_OF_RESOURCE - 10
+#define SDEI_EVENT_REGISTER_RM_ANY 0
+#define SDEI_EVENT_REGISTER_RM_PE 1
+#define SDEI_EVENT_STATUS_RUNNING 2
+#define SDEI_EVENT_STATUS_ENABLED 1
+#define SDEI_EVENT_STATUS_REGISTERED 0
+#define SDEI_EV_HANDLED 0
+#define SDEI_EV_FAILED 1
+#define SDEI_EVENT_INFO_EV_TYPE 0
+#define SDEI_EVENT_INFO_EV_SIGNALED 1
+#define SDEI_EVENT_INFO_EV_PRIORITY 2
+#define SDEI_EVENT_INFO_EV_ROUTING_MODE 3
+#define SDEI_EVENT_INFO_EV_ROUTING_AFF 4
+#define SDEI_EVENT_TYPE_PRIVATE 0
+#define SDEI_EVENT_TYPE_SHARED 1
+#define SDEI_EVENT_PRIORITY_NORMAL 0
+#define SDEI_EVENT_PRIORITY_CRITICAL 1
+#endif
diff --git a/i686-linux-musl/include/linux/ashmem.h b/i686-linux-musl/include/linux/ashmem.h
new file mode 100644
index 0000000..174667f
--- /dev/null
+++ b/i686-linux-musl/include/linux/ashmem.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ASHMEM_H
+#define _UAPI_LINUX_ASHMEM_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define ASHMEM_NAME_LEN 256
+#define ASHMEM_NAME_DEF "dev/ashmem"
+#define ASHMEM_NOT_PURGED 0
+#define ASHMEM_WAS_PURGED 1
+#define ASHMEM_IS_UNPINNED 0
+#define ASHMEM_IS_PINNED 1
+struct ashmem_pin {
+  __u32 offset;
+  __u32 len;
+};
+#define __ASHMEMIOC 0x77
+#define ASHMEM_SET_NAME _IOW(__ASHMEMIOC, 1, char[ASHMEM_NAME_LEN])
+#define ASHMEM_GET_NAME _IOR(__ASHMEMIOC, 2, char[ASHMEM_NAME_LEN])
+#define ASHMEM_SET_SIZE _IOW(__ASHMEMIOC, 3, size_t)
+#define ASHMEM_GET_SIZE _IO(__ASHMEMIOC, 4)
+#define ASHMEM_SET_PROT_MASK _IOW(__ASHMEMIOC, 5, unsigned long)
+#define ASHMEM_GET_PROT_MASK _IO(__ASHMEMIOC, 6)
+#define ASHMEM_PIN _IOW(__ASHMEMIOC, 7, struct ashmem_pin)
+#define ASHMEM_UNPIN _IOW(__ASHMEMIOC, 8, struct ashmem_pin)
+#define ASHMEM_GET_PIN_STATUS _IO(__ASHMEMIOC, 9)
+#define ASHMEM_PURGE_ALL_CACHES _IO(__ASHMEMIOC, 10)
+#endif
diff --git a/i686-linux-musl/include/linux/aspeed-lpc-ctrl.h b/i686-linux-musl/include/linux/aspeed-lpc-ctrl.h
new file mode 100644
index 0000000..fcde081
--- /dev/null
+++ b/i686-linux-musl/include/linux/aspeed-lpc-ctrl.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ASPEED_LPC_CTRL_H
+#define _UAPI_LINUX_ASPEED_LPC_CTRL_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define ASPEED_LPC_CTRL_WINDOW_FLASH 1
+#define ASPEED_LPC_CTRL_WINDOW_MEMORY 2
+struct aspeed_lpc_ctrl_mapping {
+  __u8 window_type;
+  __u8 window_id;
+  __u16 flags;
+  __u32 addr;
+  __u32 offset;
+  __u32 size;
+};
+#define __ASPEED_LPC_CTRL_IOCTL_MAGIC 0xb2
+#define ASPEED_LPC_CTRL_IOCTL_GET_SIZE _IOWR(__ASPEED_LPC_CTRL_IOCTL_MAGIC, 0x00, struct aspeed_lpc_ctrl_mapping)
+#define ASPEED_LPC_CTRL_IOCTL_MAP _IOW(__ASPEED_LPC_CTRL_IOCTL_MAGIC, 0x01, struct aspeed_lpc_ctrl_mapping)
+#endif
diff --git a/i686-linux-musl/include/linux/aspeed-p2a-ctrl.h b/i686-linux-musl/include/linux/aspeed-p2a-ctrl.h
new file mode 100644
index 0000000..94e5132
--- /dev/null
+++ b/i686-linux-musl/include/linux/aspeed-p2a-ctrl.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ASPEED_P2A_CTRL_H
+#define _UAPI_LINUX_ASPEED_P2A_CTRL_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define ASPEED_P2A_CTRL_READ_ONLY 0
+#define ASPEED_P2A_CTRL_READWRITE 1
+struct aspeed_p2a_ctrl_mapping {
+  __u64 addr;
+  __u32 length;
+  __u32 flags;
+};
+#define __ASPEED_P2A_CTRL_IOCTL_MAGIC 0xb3
+#define ASPEED_P2A_CTRL_IOCTL_SET_WINDOW _IOW(__ASPEED_P2A_CTRL_IOCTL_MAGIC, 0x00, struct aspeed_p2a_ctrl_mapping)
+#define ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG _IOWR(__ASPEED_P2A_CTRL_IOCTL_MAGIC, 0x01, struct aspeed_p2a_ctrl_mapping)
+#endif
diff --git a/i686-linux-musl/include/linux/atalk.h b/i686-linux-musl/include/linux/atalk.h
new file mode 100644
index 0000000..0619cf5
--- /dev/null
+++ b/i686-linux-musl/include/linux/atalk.h
@@ -0,0 +1,49 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_ATALK_H__
+#define _UAPI__LINUX_ATALK_H__
+#include <linux/types.h>
+#include <asm/byteorder.h>
+#include <linux/socket.h>
+#define ATPORT_FIRST 1
+#define ATPORT_RESERVED 128
+#define ATPORT_LAST 254
+#define ATADDR_ANYNET (__u16) 0
+#define ATADDR_ANYNODE (__u8) 0
+#define ATADDR_ANYPORT (__u8) 0
+#define ATADDR_BCAST (__u8) 255
+#define DDP_MAXSZ 587
+#define DDP_MAXHOPS 15
+#define SIOCATALKDIFADDR (SIOCPROTOPRIVATE + 0)
+struct atalk_addr {
+  __be16 s_net;
+  __u8 s_node;
+};
+struct sockaddr_at {
+  __kernel_sa_family_t sat_family;
+  __u8 sat_port;
+  struct atalk_addr sat_addr;
+  char sat_zero[8];
+};
+struct atalk_netrange {
+  __u8 nr_phase;
+  __be16 nr_firstnet;
+  __be16 nr_lastnet;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/atm.h b/i686-linux-musl/include/linux/atm.h
new file mode 100644
index 0000000..488fa05
--- /dev/null
+++ b/i686-linux-musl/include/linux/atm.h
@@ -0,0 +1,146 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ATM_H
+#define _UAPI_LINUX_ATM_H
+#include <linux/compiler.h>
+#include <linux/atmapi.h>
+#include <linux/atmsap.h>
+#include <linux/atmioc.h>
+#include <linux/types.h>
+#define ATM_CELL_SIZE 53
+#define ATM_CELL_PAYLOAD 48
+#define ATM_AAL0_SDU 52
+#define ATM_MAX_AAL34_PDU 65535
+#define ATM_AAL5_TRAILER 8
+#define ATM_MAX_AAL5_PDU 65535
+#define ATM_MAX_CDV 9999
+#define ATM_NOT_RSV_VCI 32
+#define ATM_MAX_VPI 255
+#define ATM_MAX_VPI_NNI 4096
+#define ATM_MAX_VCI 65535
+#define ATM_NO_AAL 0
+#define ATM_AAL0 13
+#define ATM_AAL1 1
+#define ATM_AAL2 2
+#define ATM_AAL34 3
+#define ATM_AAL5 5
+#define __SO_ENCODE(l,n,t) ((((l) & 0x1FF) << 22) | ((n) << 16) | sizeof(t))
+#define __SO_LEVEL_MATCH(c,m) (((c) >> 22) == ((m) & 0x1FF))
+#define __SO_NUMBER(c) (((c) >> 16) & 0x3f)
+#define __SO_SIZE(c) ((c) & 0x3fff)
+#define SO_SETCLP __SO_ENCODE(SOL_ATM, 0, int)
+#define SO_CIRANGE __SO_ENCODE(SOL_ATM, 1, struct atm_cirange)
+#define SO_ATMQOS __SO_ENCODE(SOL_ATM, 2, struct atm_qos)
+#define SO_ATMSAP __SO_ENCODE(SOL_ATM, 3, struct atm_sap)
+#define SO_ATMPVC __SO_ENCODE(SOL_ATM, 4, struct sockaddr_atmpvc)
+#define SO_MULTIPOINT __SO_ENCODE(SOL_ATM, 5, int)
+#define ATM_HDR_GFC_MASK 0xf0000000
+#define ATM_HDR_GFC_SHIFT 28
+#define ATM_HDR_VPI_MASK 0x0ff00000
+#define ATM_HDR_VPI_SHIFT 20
+#define ATM_HDR_VCI_MASK 0x000ffff0
+#define ATM_HDR_VCI_SHIFT 4
+#define ATM_HDR_PTI_MASK 0x0000000e
+#define ATM_HDR_PTI_SHIFT 1
+#define ATM_HDR_CLP 0x00000001
+#define ATM_PTI_US0 0
+#define ATM_PTI_US1 1
+#define ATM_PTI_UCES0 2
+#define ATM_PTI_UCES1 3
+#define ATM_PTI_SEGF5 4
+#define ATM_PTI_E2EF5 5
+#define ATM_PTI_RSV_RM 6
+#define ATM_PTI_RSV 7
+#define ATM_NONE 0
+#define ATM_UBR 1
+#define ATM_CBR 2
+#define ATM_VBR 3
+#define ATM_ABR 4
+#define ATM_ANYCLASS 5
+#define ATM_MAX_PCR - 1
+struct atm_trafprm {
+  unsigned char traffic_class;
+  int max_pcr;
+  int pcr;
+  int min_pcr;
+  int max_cdv;
+  int max_sdu;
+  unsigned int icr;
+  unsigned int tbe;
+  unsigned int frtt : 24;
+  unsigned int rif : 4;
+  unsigned int rdf : 4;
+  unsigned int nrm_pres : 1;
+  unsigned int trm_pres : 1;
+  unsigned int adtf_pres : 1;
+  unsigned int cdf_pres : 1;
+  unsigned int nrm : 3;
+  unsigned int trm : 3;
+  unsigned int adtf : 10;
+  unsigned int cdf : 3;
+  unsigned int spare : 9;
+};
+struct atm_qos {
+  struct atm_trafprm txtp;
+  struct atm_trafprm rxtp __ATM_API_ALIGN;
+  unsigned char aal __ATM_API_ALIGN;
+};
+#define ATM_ITF_ANY - 1
+#define ATM_VPI_ANY - 1
+#define ATM_VCI_ANY - 1
+#define ATM_VPI_UNSPEC - 2
+#define ATM_VCI_UNSPEC - 2
+struct sockaddr_atmpvc {
+  unsigned short sap_family;
+  struct {
+    short itf;
+    short vpi;
+    int vci;
+  } sap_addr __ATM_API_ALIGN;
+};
+#define ATM_ESA_LEN 20
+#define ATM_E164_LEN 12
+#define ATM_AFI_DCC 0x39
+#define ATM_AFI_ICD 0x47
+#define ATM_AFI_E164 0x45
+#define ATM_AFI_LOCAL 0x49
+#define ATM_AFI_DCC_GROUP 0xBD
+#define ATM_AFI_ICD_GROUP 0xC5
+#define ATM_AFI_E164_GROUP 0xC3
+#define ATM_AFI_LOCAL_GROUP 0xC7
+#define ATM_LIJ_NONE 0
+#define ATM_LIJ 1
+#define ATM_LIJ_RPJ 2
+#define ATM_LIJ_NJ 3
+struct sockaddr_atmsvc {
+  unsigned short sas_family;
+  struct {
+    unsigned char prv[ATM_ESA_LEN];
+    char pub[ATM_E164_LEN + 1];
+    char lij_type;
+    __u32 lij_id;
+  } sas_addr __ATM_API_ALIGN;
+};
+struct atmif_sioc {
+  int number;
+  int length;
+  void __user * arg;
+};
+typedef unsigned short atm_backend_t;
+#endif
diff --git a/i686-linux-musl/include/linux/atm_eni.h b/i686-linux-musl/include/linux/atm_eni.h
new file mode 100644
index 0000000..fd721f0
--- /dev/null
+++ b/i686-linux-musl/include/linux/atm_eni.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef LINUX_ATM_ENI_H
+#define LINUX_ATM_ENI_H
+#include <linux/atmioc.h>
+struct eni_multipliers {
+  int tx, rx;
+};
+#define ENI_MEMDUMP _IOW('a', ATMIOC_SARPRV, struct atmif_sioc)
+#define ENI_SETMULT _IOW('a', ATMIOC_SARPRV + 7, struct atmif_sioc)
+#endif
diff --git a/i686-linux-musl/include/linux/atm_he.h b/i686-linux-musl/include/linux/atm_he.h
new file mode 100644
index 0000000..65ec396
--- /dev/null
+++ b/i686-linux-musl/include/linux/atm_he.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef LINUX_ATM_HE_H
+#define LINUX_ATM_HE_H
+#include <linux/atmioc.h>
+#define HE_GET_REG _IOW('a', ATMIOC_SARPRV, struct atmif_sioc)
+#define HE_REGTYPE_PCI 1
+#define HE_REGTYPE_RCM 2
+#define HE_REGTYPE_TCM 3
+#define HE_REGTYPE_MBOX 4
+struct he_ioctl_reg {
+  unsigned addr, val;
+  char type;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/atm_idt77105.h b/i686-linux-musl/include/linux/atm_idt77105.h
new file mode 100644
index 0000000..c3332ee
--- /dev/null
+++ b/i686-linux-musl/include/linux/atm_idt77105.h
@@ -0,0 +1,32 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef LINUX_ATM_IDT77105_H
+#define LINUX_ATM_IDT77105_H
+#include <linux/types.h>
+#include <linux/atmioc.h>
+#include <linux/atmdev.h>
+struct idt77105_stats {
+  __u32 symbol_errors;
+  __u32 tx_cells;
+  __u32 rx_cells;
+  __u32 rx_hec_errors;
+};
+#define IDT77105_GETSTAT _IOW('a', ATMIOC_PHYPRV + 2, struct atmif_sioc)
+#define IDT77105_GETSTATZ _IOW('a', ATMIOC_PHYPRV + 3, struct atmif_sioc)
+#endif
diff --git a/i686-linux-musl/include/linux/atm_nicstar.h b/i686-linux-musl/include/linux/atm_nicstar.h
new file mode 100644
index 0000000..856dbd5
--- /dev/null
+++ b/i686-linux-musl/include/linux/atm_nicstar.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef LINUX_ATM_NICSTAR_H
+#define LINUX_ATM_NICSTAR_H
+#include <linux/atmapi.h>
+#include <linux/atmioc.h>
+#define NS_GETPSTAT _IOWR('a', ATMIOC_SARPRV + 1, struct atmif_sioc)
+#define NS_SETBUFLEV _IOW('a', ATMIOC_SARPRV + 2, struct atmif_sioc)
+#define NS_ADJBUFLEV _IO('a', ATMIOC_SARPRV + 3)
+typedef struct buf_nr {
+  unsigned min;
+  unsigned init;
+  unsigned max;
+} buf_nr;
+typedef struct pool_levels {
+  int buftype;
+  int count;
+  buf_nr level;
+} pool_levels;
+#define NS_BUFTYPE_SMALL 1
+#define NS_BUFTYPE_LARGE 2
+#define NS_BUFTYPE_HUGE 3
+#define NS_BUFTYPE_IOVEC 4
+#endif
diff --git a/i686-linux-musl/include/linux/atm_tcp.h b/i686-linux-musl/include/linux/atm_tcp.h
new file mode 100644
index 0000000..1e08b08
--- /dev/null
+++ b/i686-linux-musl/include/linux/atm_tcp.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPILINUX_ATM_TCP_H
+#define _UAPILINUX_ATM_TCP_H
+#include <linux/atmapi.h>
+#include <linux/atm.h>
+#include <linux/atmioc.h>
+#include <linux/types.h>
+struct atmtcp_hdr {
+  __u16 vpi;
+  __u16 vci;
+  __u32 length;
+};
+#define ATMTCP_HDR_MAGIC (~0)
+#define ATMTCP_CTRL_OPEN 1
+#define ATMTCP_CTRL_CLOSE 2
+struct atmtcp_control {
+  struct atmtcp_hdr hdr;
+  int type;
+  atm_kptr_t vcc;
+  struct sockaddr_atmpvc addr;
+  struct atm_qos qos;
+  int result;
+} __ATM_API_ALIGN;
+#define SIOCSIFATMTCP _IO('a', ATMIOC_ITF)
+#define ATMTCP_CREATE _IO('a', ATMIOC_ITF + 14)
+#define ATMTCP_REMOVE _IO('a', ATMIOC_ITF + 15)
+#endif
diff --git a/i686-linux-musl/include/linux/atm_zatm.h b/i686-linux-musl/include/linux/atm_zatm.h
new file mode 100644
index 0000000..1649b85
--- /dev/null
+++ b/i686-linux-musl/include/linux/atm_zatm.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef LINUX_ATM_ZATM_H
+#define LINUX_ATM_ZATM_H
+#include <linux/atmapi.h>
+#include <linux/atmioc.h>
+#define ZATM_GETPOOL _IOW('a', ATMIOC_SARPRV + 1, struct atmif_sioc)
+#define ZATM_GETPOOLZ _IOW('a', ATMIOC_SARPRV + 2, struct atmif_sioc)
+#define ZATM_SETPOOL _IOW('a', ATMIOC_SARPRV + 3, struct atmif_sioc)
+struct zatm_pool_info {
+  int ref_count;
+  int low_water, high_water;
+  int rqa_count, rqu_count;
+  int offset, next_off;
+  int next_cnt, next_thres;
+};
+struct zatm_pool_req {
+  int pool_num;
+  struct zatm_pool_info info;
+};
+#define ZATM_OAM_POOL 0
+#define ZATM_AAL0_POOL 1
+#define ZATM_AAL5_POOL_BASE 2
+#define ZATM_LAST_POOL ZATM_AAL5_POOL_BASE + 10
+#define ZATM_TIMER_HISTORY_SIZE 16
+#endif
diff --git a/i686-linux-musl/include/linux/atmapi.h b/i686-linux-musl/include/linux/atmapi.h
new file mode 100644
index 0000000..65f48ba
--- /dev/null
+++ b/i686-linux-musl/include/linux/atmapi.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_ATMAPI_H
+#define _LINUX_ATMAPI_H
+#if defined(__sparc__) || defined(__ia64__)
+#define __ATM_API_ALIGN __attribute__((aligned(8)))
+#else
+#define __ATM_API_ALIGN
+#endif
+typedef struct {
+  unsigned char _[8];
+} __ATM_API_ALIGN atm_kptr_t;
+#endif
diff --git a/i686-linux-musl/include/linux/atmarp.h b/i686-linux-musl/include/linux/atmarp.h
new file mode 100644
index 0000000..78f8cae
--- /dev/null
+++ b/i686-linux-musl/include/linux/atmarp.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_ATMARP_H
+#define _LINUX_ATMARP_H
+#include <linux/types.h>
+#include <linux/atmapi.h>
+#include <linux/atmioc.h>
+#define ATMARP_RETRY_DELAY 30
+#define ATMARP_MAX_UNRES_PACKETS 5
+#define ATMARPD_CTRL _IO('a', ATMIOC_CLIP + 1)
+#define ATMARP_MKIP _IO('a', ATMIOC_CLIP + 2)
+#define ATMARP_SETENTRY _IO('a', ATMIOC_CLIP + 3)
+#define ATMARP_ENCAP _IO('a', ATMIOC_CLIP + 5)
+enum atmarp_ctrl_type {
+  act_invalid,
+  act_need,
+  act_up,
+  act_down,
+  act_change
+};
+struct atmarp_ctrl {
+  enum atmarp_ctrl_type type;
+  int itf_num;
+  __be32 ip;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/atmbr2684.h b/i686-linux-musl/include/linux/atmbr2684.h
new file mode 100644
index 0000000..8e115db
--- /dev/null
+++ b/i686-linux-musl/include/linux/atmbr2684.h
@@ -0,0 +1,82 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_ATMBR2684_H
+#define _LINUX_ATMBR2684_H
+#include <linux/types.h>
+#include <linux/atm.h>
+#include <linux/if.h>
+#define BR2684_MEDIA_ETHERNET (0)
+#define BR2684_MEDIA_802_4 (1)
+#define BR2684_MEDIA_TR (2)
+#define BR2684_MEDIA_FDDI (3)
+#define BR2684_MEDIA_802_6 (4)
+#define BR2684_FLAG_ROUTED (1 << 16)
+#define BR2684_FCSIN_NO (0)
+#define BR2684_FCSIN_IGNORE (1)
+#define BR2684_FCSIN_VERIFY (2)
+#define BR2684_FCSOUT_NO (0)
+#define BR2684_FCSOUT_SENDZERO (1)
+#define BR2684_FCSOUT_GENERATE (2)
+#define BR2684_ENCAPS_VC (0)
+#define BR2684_ENCAPS_LLC (1)
+#define BR2684_ENCAPS_AUTODETECT (2)
+#define BR2684_PAYLOAD_ROUTED (0)
+#define BR2684_PAYLOAD_BRIDGED (1)
+struct atm_newif_br2684 {
+  atm_backend_t backend_num;
+  int media;
+  char ifname[IFNAMSIZ];
+  int mtu;
+};
+#define BR2684_FIND_BYNOTHING (0)
+#define BR2684_FIND_BYNUM (1)
+#define BR2684_FIND_BYIFNAME (2)
+struct br2684_if_spec {
+  int method;
+  union {
+    char ifname[IFNAMSIZ];
+    int devnum;
+  } spec;
+};
+struct atm_backend_br2684 {
+  atm_backend_t backend_num;
+  struct br2684_if_spec ifspec;
+  int fcs_in;
+  int fcs_out;
+  int fcs_auto;
+  int encaps;
+  int has_vpiid;
+  __u8 vpn_id[7];
+  int send_padding;
+  int min_size;
+};
+struct br2684_filter {
+  __be32 prefix;
+  __be32 netmask;
+};
+struct br2684_filter_set {
+  struct br2684_if_spec ifspec;
+  struct br2684_filter filter;
+};
+enum br2684_payload {
+  p_routed = BR2684_PAYLOAD_ROUTED,
+  p_bridged = BR2684_PAYLOAD_BRIDGED,
+};
+#define BR2684_SETFILT _IOW('a', ATMIOC_BACKEND + 0, struct br2684_filter_set)
+#endif
diff --git a/i686-linux-musl/include/linux/atmclip.h b/i686-linux-musl/include/linux/atmclip.h
new file mode 100644
index 0000000..52e491c
--- /dev/null
+++ b/i686-linux-musl/include/linux/atmclip.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef LINUX_ATMCLIP_H
+#define LINUX_ATMCLIP_H
+#include <linux/sockios.h>
+#include <linux/atmioc.h>
+#define RFC1483LLC_LEN 8
+#define RFC1626_MTU 9180
+#define CLIP_DEFAULT_IDLETIMER 1200
+#define CLIP_CHECK_INTERVAL 10
+#define SIOCMKCLIP _IO('a', ATMIOC_CLIP)
+#endif
diff --git a/i686-linux-musl/include/linux/atmdev.h b/i686-linux-musl/include/linux/atmdev.h
new file mode 100644
index 0000000..69eb240
--- /dev/null
+++ b/i686-linux-musl/include/linux/atmdev.h
@@ -0,0 +1,114 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPILINUX_ATMDEV_H
+#define _UAPILINUX_ATMDEV_H
+#include <linux/atmapi.h>
+#include <linux/atm.h>
+#include <linux/atmioc.h>
+#define ESI_LEN 6
+#define ATM_OC3_PCR (155520000 / 270 * 260 / 8 / 53)
+#define ATM_25_PCR ((25600000 / 8 - 8000) / 54)
+#define ATM_OC12_PCR (622080000 / 1080 * 1040 / 8 / 53)
+#define ATM_DS3_PCR (8000 * 12)
+#define __AAL_STAT_ITEMS __HANDLE_ITEM(tx); __HANDLE_ITEM(tx_err); __HANDLE_ITEM(rx); __HANDLE_ITEM(rx_err); __HANDLE_ITEM(rx_drop);
+struct atm_aal_stats {
+#define __HANDLE_ITEM(i) int i
+  __AAL_STAT_ITEMS
+#undef __HANDLE_ITEM
+};
+struct atm_dev_stats {
+  struct atm_aal_stats aal0;
+  struct atm_aal_stats aal34;
+  struct atm_aal_stats aal5;
+} __ATM_API_ALIGN;
+#define ATM_GETLINKRATE _IOW('a', ATMIOC_ITF + 1, struct atmif_sioc)
+#define ATM_GETNAMES _IOW('a', ATMIOC_ITF + 3, struct atm_iobuf)
+#define ATM_GETTYPE _IOW('a', ATMIOC_ITF + 4, struct atmif_sioc)
+#define ATM_GETESI _IOW('a', ATMIOC_ITF + 5, struct atmif_sioc)
+#define ATM_GETADDR _IOW('a', ATMIOC_ITF + 6, struct atmif_sioc)
+#define ATM_RSTADDR _IOW('a', ATMIOC_ITF + 7, struct atmif_sioc)
+#define ATM_ADDADDR _IOW('a', ATMIOC_ITF + 8, struct atmif_sioc)
+#define ATM_DELADDR _IOW('a', ATMIOC_ITF + 9, struct atmif_sioc)
+#define ATM_GETCIRANGE _IOW('a', ATMIOC_ITF + 10, struct atmif_sioc)
+#define ATM_SETCIRANGE _IOW('a', ATMIOC_ITF + 11, struct atmif_sioc)
+#define ATM_SETESI _IOW('a', ATMIOC_ITF + 12, struct atmif_sioc)
+#define ATM_SETESIF _IOW('a', ATMIOC_ITF + 13, struct atmif_sioc)
+#define ATM_ADDLECSADDR _IOW('a', ATMIOC_ITF + 14, struct atmif_sioc)
+#define ATM_DELLECSADDR _IOW('a', ATMIOC_ITF + 15, struct atmif_sioc)
+#define ATM_GETLECSADDR _IOW('a', ATMIOC_ITF + 16, struct atmif_sioc)
+#define ATM_GETSTAT _IOW('a', ATMIOC_SARCOM + 0, struct atmif_sioc)
+#define ATM_GETSTATZ _IOW('a', ATMIOC_SARCOM + 1, struct atmif_sioc)
+#define ATM_GETLOOP _IOW('a', ATMIOC_SARCOM + 2, struct atmif_sioc)
+#define ATM_SETLOOP _IOW('a', ATMIOC_SARCOM + 3, struct atmif_sioc)
+#define ATM_QUERYLOOP _IOW('a', ATMIOC_SARCOM + 4, struct atmif_sioc)
+#define ATM_SETSC _IOW('a', ATMIOC_SPECIAL + 1, int)
+#define ATM_SETBACKEND _IOW('a', ATMIOC_SPECIAL + 2, atm_backend_t)
+#define ATM_NEWBACKENDIF _IOW('a', ATMIOC_SPECIAL + 3, atm_backend_t)
+#define ATM_ADDPARTY _IOW('a', ATMIOC_SPECIAL + 4, struct atm_iobuf)
+#define ATM_DROPPARTY _IOW('a', ATMIOC_SPECIAL + 5, int)
+#define ATM_BACKEND_RAW 0
+#define ATM_BACKEND_PPP 1
+#define ATM_BACKEND_BR2684 2
+#define ATM_ITFTYP_LEN 8
+#define __ATM_LM_NONE 0
+#define __ATM_LM_AAL 1
+#define __ATM_LM_ATM 2
+#define __ATM_LM_PHY 8
+#define __ATM_LM_ANALOG 16
+#define __ATM_LM_MKLOC(n) ((n))
+#define __ATM_LM_MKRMT(n) ((n) << 8)
+#define __ATM_LM_XTLOC(n) ((n) & 0xff)
+#define __ATM_LM_XTRMT(n) (((n) >> 8) & 0xff)
+#define ATM_LM_NONE 0
+#define ATM_LM_LOC_AAL __ATM_LM_MKLOC(__ATM_LM_AAL)
+#define ATM_LM_LOC_ATM __ATM_LM_MKLOC(__ATM_LM_ATM)
+#define ATM_LM_LOC_PHY __ATM_LM_MKLOC(__ATM_LM_PHY)
+#define ATM_LM_LOC_ANALOG __ATM_LM_MKLOC(__ATM_LM_ANALOG)
+#define ATM_LM_RMT_AAL __ATM_LM_MKRMT(__ATM_LM_AAL)
+#define ATM_LM_RMT_ATM __ATM_LM_MKRMT(__ATM_LM_ATM)
+#define ATM_LM_RMT_PHY __ATM_LM_MKRMT(__ATM_LM_PHY)
+#define ATM_LM_RMT_ANALOG __ATM_LM_MKRMT(__ATM_LM_ANALOG)
+struct atm_iobuf {
+  int length;
+  void __user * buffer;
+};
+#define ATM_CI_MAX - 1
+struct atm_cirange {
+  signed char vpi_bits;
+  signed char vci_bits;
+};
+#define ATM_SC_RX 1024
+#define ATM_SC_TX 2048
+#define ATM_BACKLOG_DEFAULT 32
+#define ATM_MF_IMMED 1
+#define ATM_MF_INC_RSV 2
+#define ATM_MF_INC_SHP 4
+#define ATM_MF_DEC_RSV 8
+#define ATM_MF_DEC_SHP 16
+#define ATM_MF_BWD 32
+#define ATM_MF_SET (ATM_MF_INC_RSV | ATM_MF_INC_SHP | ATM_MF_DEC_RSV | ATM_MF_DEC_SHP | ATM_MF_BWD)
+#define ATM_VS_IDLE 0
+#define ATM_VS_CONNECTED 1
+#define ATM_VS_CLOSING 2
+#define ATM_VS_LISTEN 3
+#define ATM_VS_INUSE 4
+#define ATM_VS_BOUND 5
+#define ATM_VS2TXT_MAP "IDLE", "CONNECTED", "CLOSING", "LISTEN", "INUSE", "BOUND"
+#define ATM_VF2TXT_MAP "ADDR", "READY", "PARTIAL", "REGIS", "RELEASED", "HASQOS", "LISTEN", "META", "256", "512", "1024", "2048", "SESSION", "HASSAP", "BOUND", "CLOSE"
+#endif
diff --git a/i686-linux-musl/include/linux/atmioc.h b/i686-linux-musl/include/linux/atmioc.h
new file mode 100644
index 0000000..1907288
--- /dev/null
+++ b/i686-linux-musl/include/linux/atmioc.h
@@ -0,0 +1,43 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_ATMIOC_H
+#define _LINUX_ATMIOC_H
+#include <asm/ioctl.h>
+#define ATMIOC_PHYCOM 0x00
+#define ATMIOC_PHYCOM_END 0x0f
+#define ATMIOC_PHYTYP 0x10
+#define ATMIOC_PHYTYP_END 0x2f
+#define ATMIOC_PHYPRV 0x30
+#define ATMIOC_PHYPRV_END 0x4f
+#define ATMIOC_SARCOM 0x50
+#define ATMIOC_SARCOM_END 0x50
+#define ATMIOC_SARPRV 0x60
+#define ATMIOC_SARPRV_END 0x7f
+#define ATMIOC_ITF 0x80
+#define ATMIOC_ITF_END 0x8f
+#define ATMIOC_BACKEND 0x90
+#define ATMIOC_BACKEND_END 0xaf
+#define ATMIOC_AREQUIPA 0xc0
+#define ATMIOC_LANE 0xd0
+#define ATMIOC_MPOA 0xd8
+#define ATMIOC_CLIP 0xe0
+#define ATMIOC_CLIP_END 0xef
+#define ATMIOC_SPECIAL 0xf0
+#define ATMIOC_SPECIAL_END 0xff
+#endif
diff --git a/i686-linux-musl/include/linux/atmlec.h b/i686-linux-musl/include/linux/atmlec.h
new file mode 100644
index 0000000..d70c517
--- /dev/null
+++ b/i686-linux-musl/include/linux/atmlec.h
@@ -0,0 +1,86 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ATMLEC_H_
+#define _ATMLEC_H_
+#include <linux/atmapi.h>
+#include <linux/atmioc.h>
+#include <linux/atm.h>
+#include <linux/if_ether.h>
+#include <linux/types.h>
+#define ATMLEC_CTRL _IO('a', ATMIOC_LANE)
+#define ATMLEC_DATA _IO('a', ATMIOC_LANE + 1)
+#define ATMLEC_MCAST _IO('a', ATMIOC_LANE + 2)
+#define MAX_LEC_ITF 48
+typedef enum {
+  l_set_mac_addr,
+  l_del_mac_addr,
+  l_svc_setup,
+  l_addr_delete,
+  l_topology_change,
+  l_flush_complete,
+  l_arp_update,
+  l_narp_req,
+  l_config,
+  l_flush_tran_id,
+  l_set_lecid,
+  l_arp_xmt,
+  l_rdesc_arp_xmt,
+  l_associate_req,
+  l_should_bridge
+} atmlec_msg_type;
+#define ATMLEC_MSG_TYPE_MAX l_should_bridge
+struct atmlec_config_msg {
+  unsigned int maximum_unknown_frame_count;
+  unsigned int max_unknown_frame_time;
+  unsigned short max_retry_count;
+  unsigned int aging_time;
+  unsigned int forward_delay_time;
+  unsigned int arp_response_time;
+  unsigned int flush_timeout;
+  unsigned int path_switching_delay;
+  unsigned int lane_version;
+  int mtu;
+  int is_proxy;
+};
+struct atmlec_msg {
+  atmlec_msg_type type;
+  int sizeoftlvs;
+  union {
+    struct {
+      unsigned char mac_addr[ETH_ALEN];
+      unsigned char atm_addr[ATM_ESA_LEN];
+      unsigned int flag;
+      unsigned int targetless_le_arp;
+      unsigned int no_source_le_narp;
+    } normal;
+    struct atmlec_config_msg config;
+    struct {
+      __u16 lec_id;
+      __u32 tran_id;
+      unsigned char mac_addr[ETH_ALEN];
+      unsigned char atm_addr[ATM_ESA_LEN];
+    } proxy;
+  } content;
+} __ATM_API_ALIGN;
+struct atmlec_ioc {
+  int dev_num;
+  unsigned char atm_addr[ATM_ESA_LEN];
+  unsigned char receive;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/atmmpc.h b/i686-linux-musl/include/linux/atmmpc.h
new file mode 100644
index 0000000..a420581
--- /dev/null
+++ b/i686-linux-musl/include/linux/atmmpc.h
@@ -0,0 +1,113 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ATMMPC_H_
+#define _ATMMPC_H_
+#include <linux/atmapi.h>
+#include <linux/atmioc.h>
+#include <linux/atm.h>
+#include <linux/types.h>
+#define ATMMPC_CTRL _IO('a', ATMIOC_MPOA)
+#define ATMMPC_DATA _IO('a', ATMIOC_MPOA + 1)
+#define MPC_SOCKET_INGRESS 1
+#define MPC_SOCKET_EGRESS 2
+struct atmmpc_ioc {
+  int dev_num;
+  __be32 ipaddr;
+  int type;
+};
+typedef struct in_ctrl_info {
+  __u8 Last_NHRP_CIE_code;
+  __u8 Last_Q2931_cause_value;
+  __u8 eg_MPC_ATM_addr[ATM_ESA_LEN];
+  __be32 tag;
+  __be32 in_dst_ip;
+  __u16 holding_time;
+  __u32 request_id;
+} in_ctrl_info;
+typedef struct eg_ctrl_info {
+  __u8 DLL_header[256];
+  __u8 DH_length;
+  __be32 cache_id;
+  __be32 tag;
+  __be32 mps_ip;
+  __be32 eg_dst_ip;
+  __u8 in_MPC_data_ATM_addr[ATM_ESA_LEN];
+  __u16 holding_time;
+} eg_ctrl_info;
+struct mpc_parameters {
+  __u16 mpc_p1;
+  __u16 mpc_p2;
+  __u8 mpc_p3[8];
+  __u16 mpc_p4;
+  __u16 mpc_p5;
+  __u16 mpc_p6;
+};
+struct k_message {
+  __u16 type;
+  __be32 ip_mask;
+  __u8 MPS_ctrl[ATM_ESA_LEN];
+  union {
+    in_ctrl_info in_info;
+    eg_ctrl_info eg_info;
+    struct mpc_parameters params;
+  } content;
+  struct atm_qos qos;
+} __ATM_API_ALIGN;
+struct llc_snap_hdr {
+  __u8 dsap;
+  __u8 ssap;
+  __u8 ui;
+  __u8 org[3];
+  __u8 type[2];
+};
+#define TLV_MPOA_DEVICE_TYPE 0x00a03e2a
+#define NON_MPOA 0
+#define MPS 1
+#define MPC 2
+#define MPS_AND_MPC 3
+#define MPC_P1 10
+#define MPC_P2 1
+#define MPC_P3 0
+#define MPC_P4 5
+#define MPC_P5 40
+#define MPC_P6 160
+#define HOLDING_TIME_DEFAULT 1200
+#define MPC_C1 2
+#define MPC_C2 60
+#define SND_MPOA_RES_RQST 201
+#define SET_MPS_CTRL_ADDR 202
+#define SND_MPOA_RES_RTRY 203
+#define STOP_KEEP_ALIVE_SM 204
+#define EGRESS_ENTRY_REMOVED 205
+#define SND_EGRESS_PURGE 206
+#define DIE 207
+#define DATA_PLANE_PURGE 208
+#define OPEN_INGRESS_SVC 209
+#define MPOA_TRIGGER_RCVD 101
+#define MPOA_RES_REPLY_RCVD 102
+#define INGRESS_PURGE_RCVD 103
+#define EGRESS_PURGE_RCVD 104
+#define MPS_DEATH 105
+#define CACHE_IMPOS_RCVD 106
+#define SET_MPC_CTRL_ADDR 107
+#define SET_MPS_MAC_ADDR 108
+#define CLEAN_UP_AND_EXIT 109
+#define SET_MPC_PARAMS 110
+#define RELOAD 301
+#endif
diff --git a/i686-linux-musl/include/linux/atmppp.h b/i686-linux-musl/include/linux/atmppp.h
new file mode 100644
index 0000000..1cc0d08
--- /dev/null
+++ b/i686-linux-musl/include/linux/atmppp.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_ATMPPP_H
+#define _LINUX_ATMPPP_H
+#include <linux/atm.h>
+#define PPPOATM_ENCAPS_AUTODETECT (0)
+#define PPPOATM_ENCAPS_VC (1)
+#define PPPOATM_ENCAPS_LLC (2)
+struct atm_backend_ppp {
+  atm_backend_t backend_num;
+  int encaps;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/atmsap.h b/i686-linux-musl/include/linux/atmsap.h
new file mode 100644
index 0000000..1487f9a
--- /dev/null
+++ b/i686-linux-musl/include/linux/atmsap.h
@@ -0,0 +1,103 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_ATMSAP_H
+#define _LINUX_ATMSAP_H
+#include <linux/atmapi.h>
+#define ATM_L2_NONE 0
+#define ATM_L2_ISO1745 0x01
+#define ATM_L2_Q291 0x02
+#define ATM_L2_X25_LL 0x06
+#define ATM_L2_X25_ML 0x07
+#define ATM_L2_LAPB 0x08
+#define ATM_L2_HDLC_ARM 0x09
+#define ATM_L2_HDLC_NRM 0x0a
+#define ATM_L2_HDLC_ABM 0x0b
+#define ATM_L2_ISO8802 0x0c
+#define ATM_L2_X75 0x0d
+#define ATM_L2_Q922 0x0e
+#define ATM_L2_USER 0x10
+#define ATM_L2_ISO7776 0x11
+#define ATM_L3_NONE 0
+#define ATM_L3_X25 0x06
+#define ATM_L3_ISO8208 0x07
+#define ATM_L3_X223 0x08
+#define ATM_L3_ISO8473 0x09
+#define ATM_L3_T70 0x0a
+#define ATM_L3_TR9577 0x0b
+#define ATM_L3_H310 0x0c
+#define ATM_L3_H321 0x0d
+#define ATM_L3_USER 0x10
+#define ATM_HL_NONE 0
+#define ATM_HL_ISO 0x01
+#define ATM_HL_USER 0x02
+#define ATM_HL_HLP 0x03
+#define ATM_HL_VENDOR 0x04
+#define ATM_IMD_NONE 0
+#define ATM_IMD_NORMAL 1
+#define ATM_IMD_EXTENDED 2
+#define ATM_TT_NONE 0
+#define ATM_TT_RX 1
+#define ATM_TT_TX 2
+#define ATM_TT_RXTX 3
+#define ATM_MC_NONE 0
+#define ATM_MC_TS 1
+#define ATM_MC_TS_FEC 2
+#define ATM_MC_PS 3
+#define ATM_MC_PS_FEC 4
+#define ATM_MC_H221 5
+#define ATM_MAX_HLI 8
+struct atm_blli {
+  unsigned char l2_proto;
+  union {
+    struct {
+      unsigned char mode;
+      unsigned char window;
+    } itu;
+    unsigned char user;
+  } l2;
+  unsigned char l3_proto;
+  union {
+    struct {
+      unsigned char mode;
+      unsigned char def_size;
+      unsigned char window;
+    } itu;
+    unsigned char user;
+    struct {
+      unsigned char term_type;
+      unsigned char fw_mpx_cap;
+      unsigned char bw_mpx_cap;
+    } h310;
+    struct {
+      unsigned char ipi;
+      unsigned char snap[5];
+    } tr9577;
+  } l3;
+} __ATM_API_ALIGN;
+struct atm_bhli {
+  unsigned char hl_type;
+  unsigned char hl_length;
+  unsigned char hl_info[ATM_MAX_HLI];
+};
+#define ATM_MAX_BLLI 3
+struct atm_sap {
+  struct atm_bhli bhli;
+  struct atm_blli blli[ATM_MAX_BLLI] __ATM_API_ALIGN;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/atmsvc.h b/i686-linux-musl/include/linux/atmsvc.h
new file mode 100644
index 0000000..ca038f5
--- /dev/null
+++ b/i686-linux-musl/include/linux/atmsvc.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_ATMSVC_H
+#define _LINUX_ATMSVC_H
+#include <linux/atmapi.h>
+#include <linux/atm.h>
+#include <linux/atmioc.h>
+#define ATMSIGD_CTRL _IO('a', ATMIOC_SPECIAL)
+enum atmsvc_msg_type {
+  as_catch_null,
+  as_bind,
+  as_connect,
+  as_accept,
+  as_reject,
+  as_listen,
+  as_okay,
+  as_error,
+  as_indicate,
+  as_close,
+  as_itf_notify,
+  as_modify,
+  as_identify,
+  as_terminate,
+  as_addparty,
+  as_dropparty
+};
+struct atmsvc_msg {
+  enum atmsvc_msg_type type;
+  atm_kptr_t vcc;
+  atm_kptr_t listen_vcc;
+  int reply;
+  struct sockaddr_atmpvc pvc;
+  struct sockaddr_atmsvc local;
+  struct atm_qos qos;
+  struct atm_sap sap;
+  unsigned int session;
+  struct sockaddr_atmsvc svc;
+} __ATM_API_ALIGN;
+#define SELECT_TOP_PCR(tp) ((tp).pcr ? (tp).pcr : (tp).max_pcr && (tp).max_pcr != ATM_MAX_PCR ? (tp).max_pcr : (tp).min_pcr ? (tp).min_pcr : ATM_MAX_PCR)
+#endif
diff --git a/i686-linux-musl/include/linux/audit.h b/i686-linux-musl/include/linux/audit.h
new file mode 100644
index 0000000..342c7ce
--- /dev/null
+++ b/i686-linux-musl/include/linux/audit.h
@@ -0,0 +1,382 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_AUDIT_H_
+#define _UAPI_LINUX_AUDIT_H_
+#include <linux/types.h>
+#include <linux/elf-em.h>
+#define AUDIT_GET 1000
+#define AUDIT_SET 1001
+#define AUDIT_LIST 1002
+#define AUDIT_ADD 1003
+#define AUDIT_DEL 1004
+#define AUDIT_USER 1005
+#define AUDIT_LOGIN 1006
+#define AUDIT_WATCH_INS 1007
+#define AUDIT_WATCH_REM 1008
+#define AUDIT_WATCH_LIST 1009
+#define AUDIT_SIGNAL_INFO 1010
+#define AUDIT_ADD_RULE 1011
+#define AUDIT_DEL_RULE 1012
+#define AUDIT_LIST_RULES 1013
+#define AUDIT_TRIM 1014
+#define AUDIT_MAKE_EQUIV 1015
+#define AUDIT_TTY_GET 1016
+#define AUDIT_TTY_SET 1017
+#define AUDIT_SET_FEATURE 1018
+#define AUDIT_GET_FEATURE 1019
+#define AUDIT_FIRST_USER_MSG 1100
+#define AUDIT_USER_AVC 1107
+#define AUDIT_USER_TTY 1124
+#define AUDIT_LAST_USER_MSG 1199
+#define AUDIT_FIRST_USER_MSG2 2100
+#define AUDIT_LAST_USER_MSG2 2999
+#define AUDIT_DAEMON_START 1200
+#define AUDIT_DAEMON_END 1201
+#define AUDIT_DAEMON_ABORT 1202
+#define AUDIT_DAEMON_CONFIG 1203
+#define AUDIT_SYSCALL 1300
+#define AUDIT_PATH 1302
+#define AUDIT_IPC 1303
+#define AUDIT_SOCKETCALL 1304
+#define AUDIT_CONFIG_CHANGE 1305
+#define AUDIT_SOCKADDR 1306
+#define AUDIT_CWD 1307
+#define AUDIT_EXECVE 1309
+#define AUDIT_IPC_SET_PERM 1311
+#define AUDIT_MQ_OPEN 1312
+#define AUDIT_MQ_SENDRECV 1313
+#define AUDIT_MQ_NOTIFY 1314
+#define AUDIT_MQ_GETSETATTR 1315
+#define AUDIT_KERNEL_OTHER 1316
+#define AUDIT_FD_PAIR 1317
+#define AUDIT_OBJ_PID 1318
+#define AUDIT_TTY 1319
+#define AUDIT_EOE 1320
+#define AUDIT_BPRM_FCAPS 1321
+#define AUDIT_CAPSET 1322
+#define AUDIT_MMAP 1323
+#define AUDIT_NETFILTER_PKT 1324
+#define AUDIT_NETFILTER_CFG 1325
+#define AUDIT_SECCOMP 1326
+#define AUDIT_PROCTITLE 1327
+#define AUDIT_FEATURE_CHANGE 1328
+#define AUDIT_REPLACE 1329
+#define AUDIT_KERN_MODULE 1330
+#define AUDIT_FANOTIFY 1331
+#define AUDIT_TIME_INJOFFSET 1332
+#define AUDIT_TIME_ADJNTPVAL 1333
+#define AUDIT_BPF 1334
+#define AUDIT_EVENT_LISTENER 1335
+#define AUDIT_URINGOP 1336
+#define AUDIT_OPENAT2 1337
+#define AUDIT_DM_CTRL 1338
+#define AUDIT_DM_EVENT 1339
+#define AUDIT_AVC 1400
+#define AUDIT_SELINUX_ERR 1401
+#define AUDIT_AVC_PATH 1402
+#define AUDIT_MAC_POLICY_LOAD 1403
+#define AUDIT_MAC_STATUS 1404
+#define AUDIT_MAC_CONFIG_CHANGE 1405
+#define AUDIT_MAC_UNLBL_ALLOW 1406
+#define AUDIT_MAC_CIPSOV4_ADD 1407
+#define AUDIT_MAC_CIPSOV4_DEL 1408
+#define AUDIT_MAC_MAP_ADD 1409
+#define AUDIT_MAC_MAP_DEL 1410
+#define AUDIT_MAC_IPSEC_ADDSA 1411
+#define AUDIT_MAC_IPSEC_DELSA 1412
+#define AUDIT_MAC_IPSEC_ADDSPD 1413
+#define AUDIT_MAC_IPSEC_DELSPD 1414
+#define AUDIT_MAC_IPSEC_EVENT 1415
+#define AUDIT_MAC_UNLBL_STCADD 1416
+#define AUDIT_MAC_UNLBL_STCDEL 1417
+#define AUDIT_MAC_CALIPSO_ADD 1418
+#define AUDIT_MAC_CALIPSO_DEL 1419
+#define AUDIT_FIRST_KERN_ANOM_MSG 1700
+#define AUDIT_LAST_KERN_ANOM_MSG 1799
+#define AUDIT_ANOM_PROMISCUOUS 1700
+#define AUDIT_ANOM_ABEND 1701
+#define AUDIT_ANOM_LINK 1702
+#define AUDIT_ANOM_CREAT 1703
+#define AUDIT_INTEGRITY_DATA 1800
+#define AUDIT_INTEGRITY_METADATA 1801
+#define AUDIT_INTEGRITY_STATUS 1802
+#define AUDIT_INTEGRITY_HASH 1803
+#define AUDIT_INTEGRITY_PCR 1804
+#define AUDIT_INTEGRITY_RULE 1805
+#define AUDIT_INTEGRITY_EVM_XATTR 1806
+#define AUDIT_INTEGRITY_POLICY_RULE 1807
+#define AUDIT_KERNEL 2000
+#define AUDIT_FILTER_USER 0x00
+#define AUDIT_FILTER_TASK 0x01
+#define AUDIT_FILTER_ENTRY 0x02
+#define AUDIT_FILTER_WATCH 0x03
+#define AUDIT_FILTER_EXIT 0x04
+#define AUDIT_FILTER_EXCLUDE 0x05
+#define AUDIT_FILTER_TYPE AUDIT_FILTER_EXCLUDE
+#define AUDIT_FILTER_FS 0x06
+#define AUDIT_FILTER_URING_EXIT 0x07
+#define AUDIT_NR_FILTERS 8
+#define AUDIT_FILTER_PREPEND 0x10
+#define AUDIT_NEVER 0
+#define AUDIT_POSSIBLE 1
+#define AUDIT_ALWAYS 2
+#define AUDIT_MAX_FIELDS 64
+#define AUDIT_MAX_KEY_LEN 256
+#define AUDIT_BITMASK_SIZE 64
+#define AUDIT_WORD(nr) ((__u32) ((nr) / 32))
+#define AUDIT_BIT(nr) (1 << ((nr) - AUDIT_WORD(nr) * 32))
+#define AUDIT_SYSCALL_CLASSES 16
+#define AUDIT_CLASS_DIR_WRITE 0
+#define AUDIT_CLASS_DIR_WRITE_32 1
+#define AUDIT_CLASS_CHATTR 2
+#define AUDIT_CLASS_CHATTR_32 3
+#define AUDIT_CLASS_READ 4
+#define AUDIT_CLASS_READ_32 5
+#define AUDIT_CLASS_WRITE 6
+#define AUDIT_CLASS_WRITE_32 7
+#define AUDIT_CLASS_SIGNAL 8
+#define AUDIT_CLASS_SIGNAL_32 9
+#define AUDIT_UNUSED_BITS 0x07FFFC00
+#define AUDIT_COMPARE_UID_TO_OBJ_UID 1
+#define AUDIT_COMPARE_GID_TO_OBJ_GID 2
+#define AUDIT_COMPARE_EUID_TO_OBJ_UID 3
+#define AUDIT_COMPARE_EGID_TO_OBJ_GID 4
+#define AUDIT_COMPARE_AUID_TO_OBJ_UID 5
+#define AUDIT_COMPARE_SUID_TO_OBJ_UID 6
+#define AUDIT_COMPARE_SGID_TO_OBJ_GID 7
+#define AUDIT_COMPARE_FSUID_TO_OBJ_UID 8
+#define AUDIT_COMPARE_FSGID_TO_OBJ_GID 9
+#define AUDIT_COMPARE_UID_TO_AUID 10
+#define AUDIT_COMPARE_UID_TO_EUID 11
+#define AUDIT_COMPARE_UID_TO_FSUID 12
+#define AUDIT_COMPARE_UID_TO_SUID 13
+#define AUDIT_COMPARE_AUID_TO_FSUID 14
+#define AUDIT_COMPARE_AUID_TO_SUID 15
+#define AUDIT_COMPARE_AUID_TO_EUID 16
+#define AUDIT_COMPARE_EUID_TO_SUID 17
+#define AUDIT_COMPARE_EUID_TO_FSUID 18
+#define AUDIT_COMPARE_SUID_TO_FSUID 19
+#define AUDIT_COMPARE_GID_TO_EGID 20
+#define AUDIT_COMPARE_GID_TO_FSGID 21
+#define AUDIT_COMPARE_GID_TO_SGID 22
+#define AUDIT_COMPARE_EGID_TO_FSGID 23
+#define AUDIT_COMPARE_EGID_TO_SGID 24
+#define AUDIT_COMPARE_SGID_TO_FSGID 25
+#define AUDIT_MAX_FIELD_COMPARE AUDIT_COMPARE_SGID_TO_FSGID
+#define AUDIT_PID 0
+#define AUDIT_UID 1
+#define AUDIT_EUID 2
+#define AUDIT_SUID 3
+#define AUDIT_FSUID 4
+#define AUDIT_GID 5
+#define AUDIT_EGID 6
+#define AUDIT_SGID 7
+#define AUDIT_FSGID 8
+#define AUDIT_LOGINUID 9
+#define AUDIT_PERS 10
+#define AUDIT_ARCH 11
+#define AUDIT_MSGTYPE 12
+#define AUDIT_SUBJ_USER 13
+#define AUDIT_SUBJ_ROLE 14
+#define AUDIT_SUBJ_TYPE 15
+#define AUDIT_SUBJ_SEN 16
+#define AUDIT_SUBJ_CLR 17
+#define AUDIT_PPID 18
+#define AUDIT_OBJ_USER 19
+#define AUDIT_OBJ_ROLE 20
+#define AUDIT_OBJ_TYPE 21
+#define AUDIT_OBJ_LEV_LOW 22
+#define AUDIT_OBJ_LEV_HIGH 23
+#define AUDIT_LOGINUID_SET 24
+#define AUDIT_SESSIONID 25
+#define AUDIT_FSTYPE 26
+#define AUDIT_DEVMAJOR 100
+#define AUDIT_DEVMINOR 101
+#define AUDIT_INODE 102
+#define AUDIT_EXIT 103
+#define AUDIT_SUCCESS 104
+#define AUDIT_WATCH 105
+#define AUDIT_PERM 106
+#define AUDIT_DIR 107
+#define AUDIT_FILETYPE 108
+#define AUDIT_OBJ_UID 109
+#define AUDIT_OBJ_GID 110
+#define AUDIT_FIELD_COMPARE 111
+#define AUDIT_EXE 112
+#define AUDIT_SADDR_FAM 113
+#define AUDIT_ARG0 200
+#define AUDIT_ARG1 (AUDIT_ARG0 + 1)
+#define AUDIT_ARG2 (AUDIT_ARG0 + 2)
+#define AUDIT_ARG3 (AUDIT_ARG0 + 3)
+#define AUDIT_FILTERKEY 210
+#define AUDIT_NEGATE 0x80000000
+#define AUDIT_BIT_MASK 0x08000000
+#define AUDIT_LESS_THAN 0x10000000
+#define AUDIT_GREATER_THAN 0x20000000
+#define AUDIT_NOT_EQUAL 0x30000000
+#define AUDIT_EQUAL 0x40000000
+#define AUDIT_BIT_TEST (AUDIT_BIT_MASK | AUDIT_EQUAL)
+#define AUDIT_LESS_THAN_OR_EQUAL (AUDIT_LESS_THAN | AUDIT_EQUAL)
+#define AUDIT_GREATER_THAN_OR_EQUAL (AUDIT_GREATER_THAN | AUDIT_EQUAL)
+#define AUDIT_OPERATORS (AUDIT_EQUAL | AUDIT_NOT_EQUAL | AUDIT_BIT_MASK)
+enum {
+  Audit_equal,
+  Audit_not_equal,
+  Audit_bitmask,
+  Audit_bittest,
+  Audit_lt,
+  Audit_gt,
+  Audit_le,
+  Audit_ge,
+  Audit_bad
+};
+#define AUDIT_STATUS_ENABLED 0x0001
+#define AUDIT_STATUS_FAILURE 0x0002
+#define AUDIT_STATUS_PID 0x0004
+#define AUDIT_STATUS_RATE_LIMIT 0x0008
+#define AUDIT_STATUS_BACKLOG_LIMIT 0x0010
+#define AUDIT_STATUS_BACKLOG_WAIT_TIME 0x0020
+#define AUDIT_STATUS_LOST 0x0040
+#define AUDIT_STATUS_BACKLOG_WAIT_TIME_ACTUAL 0x0080
+#define AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT 0x00000001
+#define AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME 0x00000002
+#define AUDIT_FEATURE_BITMAP_EXECUTABLE_PATH 0x00000004
+#define AUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND 0x00000008
+#define AUDIT_FEATURE_BITMAP_SESSIONID_FILTER 0x00000010
+#define AUDIT_FEATURE_BITMAP_LOST_RESET 0x00000020
+#define AUDIT_FEATURE_BITMAP_FILTER_FS 0x00000040
+#define AUDIT_FEATURE_BITMAP_ALL (AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT | AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME | AUDIT_FEATURE_BITMAP_EXECUTABLE_PATH | AUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND | AUDIT_FEATURE_BITMAP_SESSIONID_FILTER | AUDIT_FEATURE_BITMAP_LOST_RESET | AUDIT_FEATURE_BITMAP_FILTER_FS)
+#define AUDIT_VERSION_LATEST AUDIT_FEATURE_BITMAP_ALL
+#define AUDIT_VERSION_BACKLOG_LIMIT AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT
+#define AUDIT_VERSION_BACKLOG_WAIT_TIME AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME
+#define AUDIT_FAIL_SILENT 0
+#define AUDIT_FAIL_PRINTK 1
+#define AUDIT_FAIL_PANIC 2
+#define __AUDIT_ARCH_CONVENTION_MASK 0x30000000
+#define __AUDIT_ARCH_CONVENTION_MIPS64_N32 0x20000000
+#define __AUDIT_ARCH_64BIT 0x80000000
+#define __AUDIT_ARCH_LE 0x40000000
+#define AUDIT_ARCH_AARCH64 (EM_AARCH64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_ALPHA (EM_ALPHA | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_ARCOMPACT (EM_ARCOMPACT | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_ARCOMPACTBE (EM_ARCOMPACT)
+#define AUDIT_ARCH_ARCV2 (EM_ARCV2 | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_ARCV2BE (EM_ARCV2)
+#define AUDIT_ARCH_ARM (EM_ARM | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_ARMEB (EM_ARM)
+#define AUDIT_ARCH_C6X (EM_TI_C6000 | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_C6XBE (EM_TI_C6000)
+#define AUDIT_ARCH_CRIS (EM_CRIS | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_CSKY (EM_CSKY | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_FRV (EM_FRV)
+#define AUDIT_ARCH_H8300 (EM_H8_300)
+#define AUDIT_ARCH_HEXAGON (EM_HEXAGON)
+#define AUDIT_ARCH_I386 (EM_386 | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_IA64 (EM_IA_64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_M32R (EM_M32R)
+#define AUDIT_ARCH_M68K (EM_68K)
+#define AUDIT_ARCH_MICROBLAZE (EM_MICROBLAZE)
+#define AUDIT_ARCH_MIPS (EM_MIPS)
+#define AUDIT_ARCH_MIPSEL (EM_MIPS | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_MIPS64 (EM_MIPS | __AUDIT_ARCH_64BIT)
+#define AUDIT_ARCH_MIPS64N32 (EM_MIPS | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_CONVENTION_MIPS64_N32)
+#define AUDIT_ARCH_MIPSEL64 (EM_MIPS | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_MIPSEL64N32 (EM_MIPS | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE | __AUDIT_ARCH_CONVENTION_MIPS64_N32)
+#define AUDIT_ARCH_NDS32 (EM_NDS32 | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_NDS32BE (EM_NDS32)
+#define AUDIT_ARCH_NIOS2 (EM_ALTERA_NIOS2 | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_OPENRISC (EM_OPENRISC)
+#define AUDIT_ARCH_PARISC (EM_PARISC)
+#define AUDIT_ARCH_PARISC64 (EM_PARISC | __AUDIT_ARCH_64BIT)
+#define AUDIT_ARCH_PPC (EM_PPC)
+#define AUDIT_ARCH_PPC64 (EM_PPC64 | __AUDIT_ARCH_64BIT)
+#define AUDIT_ARCH_PPC64LE (EM_PPC64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_RISCV32 (EM_RISCV | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_RISCV64 (EM_RISCV | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_S390 (EM_S390)
+#define AUDIT_ARCH_S390X (EM_S390 | __AUDIT_ARCH_64BIT)
+#define AUDIT_ARCH_SH (EM_SH)
+#define AUDIT_ARCH_SHEL (EM_SH | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_SH64 (EM_SH | __AUDIT_ARCH_64BIT)
+#define AUDIT_ARCH_SHEL64 (EM_SH | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_SPARC (EM_SPARC)
+#define AUDIT_ARCH_SPARC64 (EM_SPARCV9 | __AUDIT_ARCH_64BIT)
+#define AUDIT_ARCH_TILEGX (EM_TILEGX | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_TILEGX32 (EM_TILEGX | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_TILEPRO (EM_TILEPRO | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_UNICORE (EM_UNICORE | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_X86_64 (EM_X86_64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_XTENSA (EM_XTENSA)
+#define AUDIT_PERM_EXEC 1
+#define AUDIT_PERM_WRITE 2
+#define AUDIT_PERM_READ 4
+#define AUDIT_PERM_ATTR 8
+#define AUDIT_MESSAGE_TEXT_MAX 8560
+enum audit_nlgrps {
+  AUDIT_NLGRP_NONE,
+  AUDIT_NLGRP_READLOG,
+  __AUDIT_NLGRP_MAX
+};
+#define AUDIT_NLGRP_MAX (__AUDIT_NLGRP_MAX - 1)
+struct audit_status {
+  __u32 mask;
+  __u32 enabled;
+  __u32 failure;
+  __u32 pid;
+  __u32 rate_limit;
+  __u32 backlog_limit;
+  __u32 lost;
+  __u32 backlog;
+  union {
+    __u32 version;
+    __u32 feature_bitmap;
+  };
+  __u32 backlog_wait_time;
+  __u32 backlog_wait_time_actual;
+};
+struct audit_features {
+#define AUDIT_FEATURE_VERSION 1
+  __u32 vers;
+  __u32 mask;
+  __u32 features;
+  __u32 lock;
+};
+#define AUDIT_FEATURE_ONLY_UNSET_LOGINUID 0
+#define AUDIT_FEATURE_LOGINUID_IMMUTABLE 1
+#define AUDIT_LAST_FEATURE AUDIT_FEATURE_LOGINUID_IMMUTABLE
+#define audit_feature_valid(x) ((x) >= 0 && (x) <= AUDIT_LAST_FEATURE)
+#define AUDIT_FEATURE_TO_MASK(x) (1 << ((x) & 31))
+struct audit_tty_status {
+  __u32 enabled;
+  __u32 log_passwd;
+};
+#define AUDIT_UID_UNSET (unsigned int) - 1
+#define AUDIT_SID_UNSET ((unsigned int) - 1)
+struct audit_rule_data {
+  __u32 flags;
+  __u32 action;
+  __u32 field_count;
+  __u32 mask[AUDIT_BITMASK_SIZE];
+  __u32 fields[AUDIT_MAX_FIELDS];
+  __u32 values[AUDIT_MAX_FIELDS];
+  __u32 fieldflags[AUDIT_MAX_FIELDS];
+  __u32 buflen;
+  char buf[0];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/auto_dev-ioctl.h b/i686-linux-musl/include/linux/auto_dev-ioctl.h
new file mode 100644
index 0000000..23c8096
--- /dev/null
+++ b/i686-linux-musl/include/linux/auto_dev-ioctl.h
@@ -0,0 +1,120 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_AUTO_DEV_IOCTL_H
+#define _UAPI_LINUX_AUTO_DEV_IOCTL_H
+#include <linux/auto_fs.h>
+#include <linux/string.h>
+#define AUTOFS_DEVICE_NAME "autofs"
+#define AUTOFS_DEV_IOCTL_VERSION_MAJOR 1
+#define AUTOFS_DEV_IOCTL_VERSION_MINOR 1
+#define AUTOFS_DEV_IOCTL_SIZE sizeof(struct autofs_dev_ioctl)
+struct args_protover {
+  __u32 version;
+};
+struct args_protosubver {
+  __u32 sub_version;
+};
+struct args_openmount {
+  __u32 devid;
+};
+struct args_ready {
+  __u32 token;
+};
+struct args_fail {
+  __u32 token;
+  __s32 status;
+};
+struct args_setpipefd {
+  __s32 pipefd;
+};
+struct args_timeout {
+  __u64 timeout;
+};
+struct args_requester {
+  __u32 uid;
+  __u32 gid;
+};
+struct args_expire {
+  __u32 how;
+};
+struct args_askumount {
+  __u32 may_umount;
+};
+struct args_ismountpoint {
+  union {
+    struct args_in {
+      __u32 type;
+    } in;
+    struct args_out {
+      __u32 devid;
+      __u32 magic;
+    } out;
+  };
+};
+struct autofs_dev_ioctl {
+  __u32 ver_major;
+  __u32 ver_minor;
+  __u32 size;
+  __s32 ioctlfd;
+  union {
+    struct args_protover protover;
+    struct args_protosubver protosubver;
+    struct args_openmount openmount;
+    struct args_ready ready;
+    struct args_fail fail;
+    struct args_setpipefd setpipefd;
+    struct args_timeout timeout;
+    struct args_requester requester;
+    struct args_expire expire;
+    struct args_askumount askumount;
+    struct args_ismountpoint ismountpoint;
+  };
+  char path[0];
+};
+enum {
+  AUTOFS_DEV_IOCTL_VERSION_CMD = 0x71,
+  AUTOFS_DEV_IOCTL_PROTOVER_CMD,
+  AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD,
+  AUTOFS_DEV_IOCTL_OPENMOUNT_CMD,
+  AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD,
+  AUTOFS_DEV_IOCTL_READY_CMD,
+  AUTOFS_DEV_IOCTL_FAIL_CMD,
+  AUTOFS_DEV_IOCTL_SETPIPEFD_CMD,
+  AUTOFS_DEV_IOCTL_CATATONIC_CMD,
+  AUTOFS_DEV_IOCTL_TIMEOUT_CMD,
+  AUTOFS_DEV_IOCTL_REQUESTER_CMD,
+  AUTOFS_DEV_IOCTL_EXPIRE_CMD,
+  AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD,
+  AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD,
+};
+#define AUTOFS_DEV_IOCTL_VERSION _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_VERSION_CMD, struct autofs_dev_ioctl)
+#define AUTOFS_DEV_IOCTL_PROTOVER _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_PROTOVER_CMD, struct autofs_dev_ioctl)
+#define AUTOFS_DEV_IOCTL_PROTOSUBVER _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD, struct autofs_dev_ioctl)
+#define AUTOFS_DEV_IOCTL_OPENMOUNT _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_OPENMOUNT_CMD, struct autofs_dev_ioctl)
+#define AUTOFS_DEV_IOCTL_CLOSEMOUNT _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD, struct autofs_dev_ioctl)
+#define AUTOFS_DEV_IOCTL_READY _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_READY_CMD, struct autofs_dev_ioctl)
+#define AUTOFS_DEV_IOCTL_FAIL _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_FAIL_CMD, struct autofs_dev_ioctl)
+#define AUTOFS_DEV_IOCTL_SETPIPEFD _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_SETPIPEFD_CMD, struct autofs_dev_ioctl)
+#define AUTOFS_DEV_IOCTL_CATATONIC _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_CATATONIC_CMD, struct autofs_dev_ioctl)
+#define AUTOFS_DEV_IOCTL_TIMEOUT _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_TIMEOUT_CMD, struct autofs_dev_ioctl)
+#define AUTOFS_DEV_IOCTL_REQUESTER _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_REQUESTER_CMD, struct autofs_dev_ioctl)
+#define AUTOFS_DEV_IOCTL_EXPIRE _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_EXPIRE_CMD, struct autofs_dev_ioctl)
+#define AUTOFS_DEV_IOCTL_ASKUMOUNT _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD, struct autofs_dev_ioctl)
+#define AUTOFS_DEV_IOCTL_ISMOUNTPOINT _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD, struct autofs_dev_ioctl)
+#endif
diff --git a/i686-linux-musl/include/linux/auto_fs.h b/i686-linux-musl/include/linux/auto_fs.h
new file mode 100644
index 0000000..39d1ac8
--- /dev/null
+++ b/i686-linux-musl/include/linux/auto_fs.h
@@ -0,0 +1,128 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_AUTO_FS_H
+#define _UAPI_LINUX_AUTO_FS_H
+#include <linux/types.h>
+#include <linux/limits.h>
+#include <sys/ioctl.h>
+#define AUTOFS_PROTO_VERSION 5
+#define AUTOFS_MIN_PROTO_VERSION 3
+#define AUTOFS_MAX_PROTO_VERSION 5
+#define AUTOFS_PROTO_SUBVERSION 5
+#if defined(__ia64__) || defined(__alpha__)
+typedef unsigned long autofs_wqt_t;
+#else
+typedef unsigned int autofs_wqt_t;
+#endif
+#define autofs_ptype_missing 0
+#define autofs_ptype_expire 1
+struct autofs_packet_hdr {
+  int proto_version;
+  int type;
+};
+struct autofs_packet_missing {
+  struct autofs_packet_hdr hdr;
+  autofs_wqt_t wait_queue_token;
+  int len;
+  char name[NAME_MAX + 1];
+};
+struct autofs_packet_expire {
+  struct autofs_packet_hdr hdr;
+  int len;
+  char name[NAME_MAX + 1];
+};
+#define AUTOFS_IOCTL 0x93
+enum {
+  AUTOFS_IOC_READY_CMD = 0x60,
+  AUTOFS_IOC_FAIL_CMD,
+  AUTOFS_IOC_CATATONIC_CMD,
+  AUTOFS_IOC_PROTOVER_CMD,
+  AUTOFS_IOC_SETTIMEOUT_CMD,
+  AUTOFS_IOC_EXPIRE_CMD,
+};
+#define AUTOFS_IOC_READY _IO(AUTOFS_IOCTL, AUTOFS_IOC_READY_CMD)
+#define AUTOFS_IOC_FAIL _IO(AUTOFS_IOCTL, AUTOFS_IOC_FAIL_CMD)
+#define AUTOFS_IOC_CATATONIC _IO(AUTOFS_IOCTL, AUTOFS_IOC_CATATONIC_CMD)
+#define AUTOFS_IOC_PROTOVER _IOR(AUTOFS_IOCTL, AUTOFS_IOC_PROTOVER_CMD, int)
+#define AUTOFS_IOC_SETTIMEOUT32 _IOWR(AUTOFS_IOCTL, AUTOFS_IOC_SETTIMEOUT_CMD, compat_ulong_t)
+#define AUTOFS_IOC_SETTIMEOUT _IOWR(AUTOFS_IOCTL, AUTOFS_IOC_SETTIMEOUT_CMD, unsigned long)
+#define AUTOFS_IOC_EXPIRE _IOR(AUTOFS_IOCTL, AUTOFS_IOC_EXPIRE_CMD, struct autofs_packet_expire)
+#define AUTOFS_EXP_NORMAL 0x00
+#define AUTOFS_EXP_IMMEDIATE 0x01
+#define AUTOFS_EXP_LEAVES 0x02
+#define AUTOFS_EXP_FORCED 0x04
+#define AUTOFS_TYPE_ANY 0U
+#define AUTOFS_TYPE_INDIRECT 1U
+#define AUTOFS_TYPE_DIRECT 2U
+#define AUTOFS_TYPE_OFFSET 4U
+enum autofs_notify {
+  NFY_NONE,
+  NFY_MOUNT,
+  NFY_EXPIRE
+};
+#define autofs_ptype_expire_multi 2
+#define autofs_ptype_missing_indirect 3
+#define autofs_ptype_expire_indirect 4
+#define autofs_ptype_missing_direct 5
+#define autofs_ptype_expire_direct 6
+struct autofs_packet_expire_multi {
+  struct autofs_packet_hdr hdr;
+  autofs_wqt_t wait_queue_token;
+  int len;
+  char name[NAME_MAX + 1];
+};
+union autofs_packet_union {
+  struct autofs_packet_hdr hdr;
+  struct autofs_packet_missing missing;
+  struct autofs_packet_expire expire;
+  struct autofs_packet_expire_multi expire_multi;
+};
+struct autofs_v5_packet {
+  struct autofs_packet_hdr hdr;
+  autofs_wqt_t wait_queue_token;
+  __u32 dev;
+  __u64 ino;
+  __u32 uid;
+  __u32 gid;
+  __u32 pid;
+  __u32 tgid;
+  __u32 len;
+  char name[NAME_MAX + 1];
+};
+typedef struct autofs_v5_packet autofs_packet_missing_indirect_t;
+typedef struct autofs_v5_packet autofs_packet_expire_indirect_t;
+typedef struct autofs_v5_packet autofs_packet_missing_direct_t;
+typedef struct autofs_v5_packet autofs_packet_expire_direct_t;
+union autofs_v5_packet_union {
+  struct autofs_packet_hdr hdr;
+  struct autofs_v5_packet v5_packet;
+  autofs_packet_missing_indirect_t missing_indirect;
+  autofs_packet_expire_indirect_t expire_indirect;
+  autofs_packet_missing_direct_t missing_direct;
+  autofs_packet_expire_direct_t expire_direct;
+};
+enum {
+  AUTOFS_IOC_EXPIRE_MULTI_CMD = 0x66,
+  AUTOFS_IOC_PROTOSUBVER_CMD,
+  AUTOFS_IOC_ASKUMOUNT_CMD = 0x70,
+};
+#define AUTOFS_IOC_EXPIRE_MULTI _IOW(AUTOFS_IOCTL, AUTOFS_IOC_EXPIRE_MULTI_CMD, int)
+#define AUTOFS_IOC_PROTOSUBVER _IOR(AUTOFS_IOCTL, AUTOFS_IOC_PROTOSUBVER_CMD, int)
+#define AUTOFS_IOC_ASKUMOUNT _IOR(AUTOFS_IOCTL, AUTOFS_IOC_ASKUMOUNT_CMD, int)
+#endif
diff --git a/i686-linux-musl/include/linux/auto_fs4.h b/i686-linux-musl/include/linux/auto_fs4.h
new file mode 100644
index 0000000..41f3c8c
--- /dev/null
+++ b/i686-linux-musl/include/linux/auto_fs4.h
@@ -0,0 +1,22 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_AUTO_FS4_H
+#define _UAPI_LINUX_AUTO_FS4_H
+#include <linux/auto_fs.h>
+#endif
diff --git a/i686-linux-musl/include/linux/auxvec.h b/i686-linux-musl/include/linux/auxvec.h
new file mode 100644
index 0000000..c80c170
--- /dev/null
+++ b/i686-linux-musl/include/linux/auxvec.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_AUXVEC_H
+#define _UAPI_LINUX_AUXVEC_H
+#include <asm/auxvec.h>
+#define AT_NULL 0
+#define AT_IGNORE 1
+#define AT_EXECFD 2
+#define AT_PHDR 3
+#define AT_PHENT 4
+#define AT_PHNUM 5
+#define AT_PAGESZ 6
+#define AT_BASE 7
+#define AT_FLAGS 8
+#define AT_ENTRY 9
+#define AT_NOTELF 10
+#define AT_UID 11
+#define AT_EUID 12
+#define AT_GID 13
+#define AT_EGID 14
+#define AT_PLATFORM 15
+#define AT_HWCAP 16
+#define AT_CLKTCK 17
+#define AT_SECURE 23
+#define AT_BASE_PLATFORM 24
+#define AT_RANDOM 25
+#define AT_HWCAP2 26
+#define AT_EXECFN 31
+#ifndef AT_MINSIGSTKSZ
+#define AT_MINSIGSTKSZ 51
+#endif
+#endif
diff --git a/i686-linux-musl/include/linux/ax25.h b/i686-linux-musl/include/linux/ax25.h
new file mode 100644
index 0000000..0d6aa95
--- /dev/null
+++ b/i686-linux-musl/include/linux/ax25.h
@@ -0,0 +1,109 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef AX25_KERNEL_H
+#define AX25_KERNEL_H
+#include <linux/socket.h>
+#define AX25_MTU 256
+#define AX25_MAX_DIGIS 8
+#define AX25_WINDOW 1
+#define AX25_T1 2
+#define AX25_N2 3
+#define AX25_T3 4
+#define AX25_T2 5
+#define AX25_BACKOFF 6
+#define AX25_EXTSEQ 7
+#define AX25_PIDINCL 8
+#define AX25_IDLE 9
+#define AX25_PACLEN 10
+#define AX25_IAMDIGI 12
+#define AX25_KILL 99
+#define SIOCAX25GETUID (SIOCPROTOPRIVATE + 0)
+#define SIOCAX25ADDUID (SIOCPROTOPRIVATE + 1)
+#define SIOCAX25DELUID (SIOCPROTOPRIVATE + 2)
+#define SIOCAX25NOUID (SIOCPROTOPRIVATE + 3)
+#define SIOCAX25OPTRT (SIOCPROTOPRIVATE + 7)
+#define SIOCAX25CTLCON (SIOCPROTOPRIVATE + 8)
+#define SIOCAX25GETINFOOLD (SIOCPROTOPRIVATE + 9)
+#define SIOCAX25ADDFWD (SIOCPROTOPRIVATE + 10)
+#define SIOCAX25DELFWD (SIOCPROTOPRIVATE + 11)
+#define SIOCAX25DEVCTL (SIOCPROTOPRIVATE + 12)
+#define SIOCAX25GETINFO (SIOCPROTOPRIVATE + 13)
+#define AX25_SET_RT_IPMODE 2
+#define AX25_NOUID_DEFAULT 0
+#define AX25_NOUID_BLOCK 1
+typedef struct {
+  char ax25_call[7];
+} ax25_address;
+struct sockaddr_ax25 {
+  __kernel_sa_family_t sax25_family;
+  ax25_address sax25_call;
+  int sax25_ndigis;
+};
+#define sax25_uid sax25_ndigis
+struct full_sockaddr_ax25 {
+  struct sockaddr_ax25 fsa_ax25;
+  ax25_address fsa_digipeater[AX25_MAX_DIGIS];
+};
+struct ax25_routes_struct {
+  ax25_address port_addr;
+  ax25_address dest_addr;
+  unsigned char digi_count;
+  ax25_address digi_addr[AX25_MAX_DIGIS];
+};
+struct ax25_route_opt_struct {
+  ax25_address port_addr;
+  ax25_address dest_addr;
+  int cmd;
+  int arg;
+};
+struct ax25_ctl_struct {
+  ax25_address port_addr;
+  ax25_address source_addr;
+  ax25_address dest_addr;
+  unsigned int cmd;
+  unsigned long arg;
+  unsigned char digi_count;
+  ax25_address digi_addr[AX25_MAX_DIGIS];
+};
+struct ax25_info_struct_deprecated {
+  unsigned int n2, n2count;
+  unsigned int t1, t1timer;
+  unsigned int t2, t2timer;
+  unsigned int t3, t3timer;
+  unsigned int idle, idletimer;
+  unsigned int state;
+  unsigned int rcv_q, snd_q;
+};
+struct ax25_info_struct {
+  unsigned int n2, n2count;
+  unsigned int t1, t1timer;
+  unsigned int t2, t2timer;
+  unsigned int t3, t3timer;
+  unsigned int idle, idletimer;
+  unsigned int state;
+  unsigned int rcv_q, snd_q;
+  unsigned int vs, vr, va, vs_max;
+  unsigned int paclen;
+  unsigned int window;
+};
+struct ax25_fwd_struct {
+  ax25_address port_from;
+  ax25_address port_to;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/batadv_packet.h b/i686-linux-musl/include/linux/batadv_packet.h
new file mode 100644
index 0000000..ede53cf
--- /dev/null
+++ b/i686-linux-musl/include/linux/batadv_packet.h
@@ -0,0 +1,282 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_BATADV_PACKET_H_
+#define _UAPI_LINUX_BATADV_PACKET_H_
+#include <asm/byteorder.h>
+#include <linux/if_ether.h>
+#include <linux/types.h>
+#define batadv_tp_is_error(n) ((__u8) (n) > 127 ? 1 : 0)
+enum batadv_packettype {
+  BATADV_IV_OGM = 0x00,
+  BATADV_BCAST = 0x01,
+  BATADV_CODED = 0x02,
+  BATADV_ELP = 0x03,
+  BATADV_OGM2 = 0x04,
+#define BATADV_UNICAST_MIN 0x40
+  BATADV_UNICAST = 0x40,
+  BATADV_UNICAST_FRAG = 0x41,
+  BATADV_UNICAST_4ADDR = 0x42,
+  BATADV_ICMP = 0x43,
+  BATADV_UNICAST_TVLV = 0x44,
+#define BATADV_UNICAST_MAX 0x7f
+};
+enum batadv_subtype {
+  BATADV_P_DATA = 0x01,
+  BATADV_P_DAT_DHT_GET = 0x02,
+  BATADV_P_DAT_DHT_PUT = 0x03,
+  BATADV_P_DAT_CACHE_REPLY = 0x04,
+};
+#define BATADV_COMPAT_VERSION 15
+enum batadv_iv_flags {
+  BATADV_NOT_BEST_NEXT_HOP = 1UL << 0,
+  BATADV_PRIMARIES_FIRST_HOP = 1UL << 1,
+  BATADV_DIRECTLINK = 1UL << 2,
+};
+enum batadv_icmp_packettype {
+  BATADV_ECHO_REPLY = 0,
+  BATADV_DESTINATION_UNREACHABLE = 3,
+  BATADV_ECHO_REQUEST = 8,
+  BATADV_TTL_EXCEEDED = 11,
+  BATADV_PARAMETER_PROBLEM = 12,
+  BATADV_TP = 15,
+};
+enum batadv_mcast_flags {
+  BATADV_MCAST_WANT_ALL_UNSNOOPABLES = 1UL << 0,
+  BATADV_MCAST_WANT_ALL_IPV4 = 1UL << 1,
+  BATADV_MCAST_WANT_ALL_IPV6 = 1UL << 2,
+  BATADV_MCAST_WANT_NO_RTR4 = 1UL << 3,
+  BATADV_MCAST_WANT_NO_RTR6 = 1UL << 4,
+};
+#define BATADV_TT_DATA_TYPE_MASK 0x0F
+enum batadv_tt_data_flags {
+  BATADV_TT_OGM_DIFF = 1UL << 0,
+  BATADV_TT_REQUEST = 1UL << 1,
+  BATADV_TT_RESPONSE = 1UL << 2,
+  BATADV_TT_FULL_TABLE = 1UL << 4,
+};
+enum batadv_vlan_flags {
+  BATADV_VLAN_HAS_TAG = 1UL << 15,
+};
+enum batadv_bla_claimframe {
+  BATADV_CLAIM_TYPE_CLAIM = 0x00,
+  BATADV_CLAIM_TYPE_UNCLAIM = 0x01,
+  BATADV_CLAIM_TYPE_ANNOUNCE = 0x02,
+  BATADV_CLAIM_TYPE_REQUEST = 0x03,
+  BATADV_CLAIM_TYPE_LOOPDETECT = 0x04,
+};
+enum batadv_tvlv_type {
+  BATADV_TVLV_GW = 0x01,
+  BATADV_TVLV_DAT = 0x02,
+  BATADV_TVLV_NC = 0x03,
+  BATADV_TVLV_TT = 0x04,
+  BATADV_TVLV_ROAM = 0x05,
+  BATADV_TVLV_MCAST = 0x06,
+};
+#pragma pack(2)
+struct batadv_bla_claim_dst {
+  __u8 magic[3];
+  __u8 type;
+  __be16 group;
+};
+struct batadv_ogm_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 flags;
+  __be32 seqno;
+  __u8 orig[ETH_ALEN];
+  __u8 prev_sender[ETH_ALEN];
+  __u8 reserved;
+  __u8 tq;
+  __be16 tvlv_len;
+};
+#define BATADV_OGM_HLEN sizeof(struct batadv_ogm_packet)
+struct batadv_ogm2_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 flags;
+  __be32 seqno;
+  __u8 orig[ETH_ALEN];
+  __be16 tvlv_len;
+  __be32 throughput;
+};
+#define BATADV_OGM2_HLEN sizeof(struct batadv_ogm2_packet)
+struct batadv_elp_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 orig[ETH_ALEN];
+  __be32 seqno;
+  __be32 elp_interval;
+};
+#define BATADV_ELP_HLEN sizeof(struct batadv_elp_packet)
+struct batadv_icmp_header {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 msg_type;
+  __u8 dst[ETH_ALEN];
+  __u8 orig[ETH_ALEN];
+  __u8 uid;
+  __u8 align[3];
+};
+struct batadv_icmp_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 msg_type;
+  __u8 dst[ETH_ALEN];
+  __u8 orig[ETH_ALEN];
+  __u8 uid;
+  __u8 reserved;
+  __be16 seqno;
+};
+struct batadv_icmp_tp_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 msg_type;
+  __u8 dst[ETH_ALEN];
+  __u8 orig[ETH_ALEN];
+  __u8 uid;
+  __u8 subtype;
+  __u8 session[2];
+  __be32 seqno;
+  __be32 timestamp;
+};
+enum batadv_icmp_tp_subtype {
+  BATADV_TP_MSG = 0,
+  BATADV_TP_ACK,
+};
+#define BATADV_RR_LEN 16
+struct batadv_icmp_packet_rr {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 msg_type;
+  __u8 dst[ETH_ALEN];
+  __u8 orig[ETH_ALEN];
+  __u8 uid;
+  __u8 rr_cur;
+  __be16 seqno;
+  __u8 rr[BATADV_RR_LEN][ETH_ALEN];
+};
+#define BATADV_ICMP_MAX_PACKET_SIZE sizeof(struct batadv_icmp_packet_rr)
+struct batadv_unicast_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 ttvn;
+  __u8 dest[ETH_ALEN];
+};
+struct batadv_unicast_4addr_packet {
+  struct batadv_unicast_packet u;
+  __u8 src[ETH_ALEN];
+  __u8 subtype;
+  __u8 reserved;
+};
+struct batadv_frag_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 no : 4;
+  __u8 priority : 3;
+  __u8 reserved : 1;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 reserved : 1;
+  __u8 priority : 3;
+  __u8 no : 4;
+#else
+#error "unknown bitfield endianness"
+#endif
+  __u8 dest[ETH_ALEN];
+  __u8 orig[ETH_ALEN];
+  __be16 seqno;
+  __be16 total_size;
+};
+struct batadv_bcast_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 reserved;
+  __be32 seqno;
+  __u8 orig[ETH_ALEN];
+};
+struct batadv_coded_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 first_ttvn;
+  __u8 first_source[ETH_ALEN];
+  __u8 first_orig_dest[ETH_ALEN];
+  __be32 first_crc;
+  __u8 second_ttl;
+  __u8 second_ttvn;
+  __u8 second_dest[ETH_ALEN];
+  __u8 second_source[ETH_ALEN];
+  __u8 second_orig_dest[ETH_ALEN];
+  __be32 second_crc;
+  __be16 coded_len;
+};
+struct batadv_unicast_tvlv_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 reserved;
+  __u8 dst[ETH_ALEN];
+  __u8 src[ETH_ALEN];
+  __be16 tvlv_len;
+  __u16 align;
+};
+struct batadv_tvlv_hdr {
+  __u8 type;
+  __u8 version;
+  __be16 len;
+};
+struct batadv_tvlv_gateway_data {
+  __be32 bandwidth_down;
+  __be32 bandwidth_up;
+};
+struct batadv_tvlv_tt_data {
+  __u8 flags;
+  __u8 ttvn;
+  __be16 num_vlan;
+};
+struct batadv_tvlv_tt_vlan_data {
+  __be32 crc;
+  __be16 vid;
+  __u16 reserved;
+};
+struct batadv_tvlv_tt_change {
+  __u8 flags;
+  __u8 reserved[3];
+  __u8 addr[ETH_ALEN];
+  __be16 vid;
+};
+struct batadv_tvlv_roam_adv {
+  __u8 client[ETH_ALEN];
+  __be16 vid;
+};
+struct batadv_tvlv_mcast_data {
+  __u8 flags;
+  __u8 reserved[3];
+};
+#pragma pack()
+#endif
diff --git a/i686-linux-musl/include/linux/batman_adv.h b/i686-linux-musl/include/linux/batman_adv.h
new file mode 100644
index 0000000..9f48dac
--- /dev/null
+++ b/i686-linux-musl/include/linux/batman_adv.h
@@ -0,0 +1,153 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_BATMAN_ADV_H_
+#define _UAPI_LINUX_BATMAN_ADV_H_
+#define BATADV_NL_NAME "batadv"
+#define BATADV_NL_MCAST_GROUP_CONFIG "config"
+#define BATADV_NL_MCAST_GROUP_TPMETER "tpmeter"
+enum batadv_tt_client_flags {
+  BATADV_TT_CLIENT_DEL = (1 << 0),
+  BATADV_TT_CLIENT_ROAM = (1 << 1),
+  BATADV_TT_CLIENT_WIFI = (1 << 4),
+  BATADV_TT_CLIENT_ISOLA = (1 << 5),
+  BATADV_TT_CLIENT_NOPURGE = (1 << 8),
+  BATADV_TT_CLIENT_NEW = (1 << 9),
+  BATADV_TT_CLIENT_PENDING = (1 << 10),
+  BATADV_TT_CLIENT_TEMP = (1 << 11),
+};
+enum batadv_mcast_flags_priv {
+  BATADV_MCAST_FLAGS_BRIDGED = (1 << 0),
+  BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS = (1 << 1),
+  BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS = (1 << 2),
+  BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING = (1 << 3),
+  BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING = (1 << 4),
+};
+enum batadv_gw_modes {
+  BATADV_GW_MODE_OFF,
+  BATADV_GW_MODE_CLIENT,
+  BATADV_GW_MODE_SERVER,
+};
+enum batadv_nl_attrs {
+  BATADV_ATTR_UNSPEC,
+  BATADV_ATTR_VERSION,
+  BATADV_ATTR_ALGO_NAME,
+  BATADV_ATTR_MESH_IFINDEX,
+  BATADV_ATTR_MESH_IFNAME,
+  BATADV_ATTR_MESH_ADDRESS,
+  BATADV_ATTR_HARD_IFINDEX,
+  BATADV_ATTR_HARD_IFNAME,
+  BATADV_ATTR_HARD_ADDRESS,
+  BATADV_ATTR_ORIG_ADDRESS,
+  BATADV_ATTR_TPMETER_RESULT,
+  BATADV_ATTR_TPMETER_TEST_TIME,
+  BATADV_ATTR_TPMETER_BYTES,
+  BATADV_ATTR_TPMETER_COOKIE,
+  BATADV_ATTR_PAD,
+  BATADV_ATTR_ACTIVE,
+  BATADV_ATTR_TT_ADDRESS,
+  BATADV_ATTR_TT_TTVN,
+  BATADV_ATTR_TT_LAST_TTVN,
+  BATADV_ATTR_TT_CRC32,
+  BATADV_ATTR_TT_VID,
+  BATADV_ATTR_TT_FLAGS,
+  BATADV_ATTR_FLAG_BEST,
+  BATADV_ATTR_LAST_SEEN_MSECS,
+  BATADV_ATTR_NEIGH_ADDRESS,
+  BATADV_ATTR_TQ,
+  BATADV_ATTR_THROUGHPUT,
+  BATADV_ATTR_BANDWIDTH_UP,
+  BATADV_ATTR_BANDWIDTH_DOWN,
+  BATADV_ATTR_ROUTER,
+  BATADV_ATTR_BLA_OWN,
+  BATADV_ATTR_BLA_ADDRESS,
+  BATADV_ATTR_BLA_VID,
+  BATADV_ATTR_BLA_BACKBONE,
+  BATADV_ATTR_BLA_CRC,
+  BATADV_ATTR_DAT_CACHE_IP4ADDRESS,
+  BATADV_ATTR_DAT_CACHE_HWADDRESS,
+  BATADV_ATTR_DAT_CACHE_VID,
+  BATADV_ATTR_MCAST_FLAGS,
+  BATADV_ATTR_MCAST_FLAGS_PRIV,
+  BATADV_ATTR_VLANID,
+  BATADV_ATTR_AGGREGATED_OGMS_ENABLED,
+  BATADV_ATTR_AP_ISOLATION_ENABLED,
+  BATADV_ATTR_ISOLATION_MARK,
+  BATADV_ATTR_ISOLATION_MASK,
+  BATADV_ATTR_BONDING_ENABLED,
+  BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED,
+  BATADV_ATTR_DISTRIBUTED_ARP_TABLE_ENABLED,
+  BATADV_ATTR_FRAGMENTATION_ENABLED,
+  BATADV_ATTR_GW_BANDWIDTH_DOWN,
+  BATADV_ATTR_GW_BANDWIDTH_UP,
+  BATADV_ATTR_GW_MODE,
+  BATADV_ATTR_GW_SEL_CLASS,
+  BATADV_ATTR_HOP_PENALTY,
+  BATADV_ATTR_LOG_LEVEL,
+  BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED,
+  BATADV_ATTR_NETWORK_CODING_ENABLED,
+  BATADV_ATTR_ORIG_INTERVAL,
+  BATADV_ATTR_ELP_INTERVAL,
+  BATADV_ATTR_THROUGHPUT_OVERRIDE,
+  BATADV_ATTR_MULTICAST_FANOUT,
+  __BATADV_ATTR_AFTER_LAST,
+  NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,
+  BATADV_ATTR_MAX = __BATADV_ATTR_AFTER_LAST - 1
+};
+enum batadv_nl_commands {
+  BATADV_CMD_UNSPEC,
+  BATADV_CMD_GET_MESH,
+  BATADV_CMD_GET_MESH_INFO = BATADV_CMD_GET_MESH,
+  BATADV_CMD_TP_METER,
+  BATADV_CMD_TP_METER_CANCEL,
+  BATADV_CMD_GET_ROUTING_ALGOS,
+  BATADV_CMD_GET_HARDIF,
+  BATADV_CMD_GET_HARDIFS = BATADV_CMD_GET_HARDIF,
+  BATADV_CMD_GET_TRANSTABLE_LOCAL,
+  BATADV_CMD_GET_TRANSTABLE_GLOBAL,
+  BATADV_CMD_GET_ORIGINATORS,
+  BATADV_CMD_GET_NEIGHBORS,
+  BATADV_CMD_GET_GATEWAYS,
+  BATADV_CMD_GET_BLA_CLAIM,
+  BATADV_CMD_GET_BLA_BACKBONE,
+  BATADV_CMD_GET_DAT_CACHE,
+  BATADV_CMD_GET_MCAST_FLAGS,
+  BATADV_CMD_SET_MESH,
+  BATADV_CMD_SET_HARDIF,
+  BATADV_CMD_GET_VLAN,
+  BATADV_CMD_SET_VLAN,
+  __BATADV_CMD_AFTER_LAST,
+  BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
+};
+enum batadv_tp_meter_reason {
+  BATADV_TP_REASON_COMPLETE = 3,
+  BATADV_TP_REASON_CANCEL = 4,
+  BATADV_TP_REASON_DST_UNREACHABLE = 128,
+  BATADV_TP_REASON_RESEND_LIMIT = 129,
+  BATADV_TP_REASON_ALREADY_ONGOING = 130,
+  BATADV_TP_REASON_MEMORY_ERROR = 131,
+  BATADV_TP_REASON_CANT_SEND = 132,
+  BATADV_TP_REASON_TOO_MANY = 133,
+};
+enum batadv_ifla_attrs {
+  IFLA_BATADV_UNSPEC,
+  IFLA_BATADV_ALGO_NAME,
+  __IFLA_BATADV_MAX,
+};
+#define IFLA_BATADV_MAX (__IFLA_BATADV_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/baycom.h b/i686-linux-musl/include/linux/baycom.h
new file mode 100644
index 0000000..ce0edf5
--- /dev/null
+++ b/i686-linux-musl/include/linux/baycom.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _BAYCOM_H
+#define _BAYCOM_H
+struct baycom_debug_data {
+  unsigned long debug1;
+  unsigned long debug2;
+  long debug3;
+};
+struct baycom_ioctl {
+  int cmd;
+  union {
+    struct baycom_debug_data dbg;
+  } data;
+};
+#define BAYCOMCTL_GETDEBUG 0x92
+#endif
diff --git a/i686-linux-musl/include/linux/bcm933xx_hcs.h b/i686-linux-musl/include/linux/bcm933xx_hcs.h
new file mode 100644
index 0000000..a57828f
--- /dev/null
+++ b/i686-linux-musl/include/linux/bcm933xx_hcs.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __BCM933XX_HCS_H
+#define __BCM933XX_HCS_H
+#include <linux/types.h>
+struct bcm_hcs {
+  __u16 magic;
+  __u16 control;
+  __u16 rev_maj;
+  __u16 rev_min;
+  __u32 build_date;
+  __u32 filelen;
+  __u32 ldaddress;
+  char filename[64];
+  __u16 hcs;
+  __u16 her_znaet_chto;
+  __u32 crc;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/bfs_fs.h b/i686-linux-musl/include/linux/bfs_fs.h
new file mode 100644
index 0000000..4a11e8a
--- /dev/null
+++ b/i686-linux-musl/include/linux/bfs_fs.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_BFS_FS_H
+#define _LINUX_BFS_FS_H
+#include <linux/types.h>
+#define BFS_BSIZE_BITS 9
+#define BFS_BSIZE (1 << BFS_BSIZE_BITS)
+#define BFS_MAGIC 0x1BADFACE
+#define BFS_ROOT_INO 2
+#define BFS_INODES_PER_BLOCK 8
+#define BFS_VDIR 2L
+#define BFS_VREG 1L
+struct bfs_inode {
+  __le16 i_ino;
+  __u16 i_unused;
+  __le32 i_sblock;
+  __le32 i_eblock;
+  __le32 i_eoffset;
+  __le32 i_vtype;
+  __le32 i_mode;
+  __le32 i_uid;
+  __le32 i_gid;
+  __le32 i_nlink;
+  __le32 i_atime;
+  __le32 i_mtime;
+  __le32 i_ctime;
+  __u32 i_padding[4];
+};
+#define BFS_NAMELEN 14
+#define BFS_DIRENT_SIZE 16
+#define BFS_DIRS_PER_BLOCK 32
+struct bfs_dirent {
+  __le16 ino;
+  char name[BFS_NAMELEN];
+};
+struct bfs_super_block {
+  __le32 s_magic;
+  __le32 s_start;
+  __le32 s_end;
+  __le32 s_from;
+  __le32 s_to;
+  __s32 s_bfrom;
+  __s32 s_bto;
+  char s_fsname[6];
+  char s_volume[6];
+  __u32 s_padding[118];
+};
+#define BFS_OFF2INO(offset) ((((offset) - BFS_BSIZE) / sizeof(struct bfs_inode)) + BFS_ROOT_INO)
+#define BFS_INO2OFF(ino) ((__u32) (((ino) - BFS_ROOT_INO) * sizeof(struct bfs_inode)) + BFS_BSIZE)
+#define BFS_NZFILESIZE(ip) ((le32_to_cpu((ip)->i_eoffset) + 1) - le32_to_cpu((ip)->i_sblock) * BFS_BSIZE)
+#define BFS_FILESIZE(ip) ((ip)->i_sblock == 0 ? 0 : BFS_NZFILESIZE(ip))
+#define BFS_FILEBLOCKS(ip) ((ip)->i_sblock == 0 ? 0 : (le32_to_cpu((ip)->i_eblock) + 1) - le32_to_cpu((ip)->i_sblock))
+#define BFS_UNCLEAN(bfs_sb,sb) ((le32_to_cpu(bfs_sb->s_from) != - 1) && (le32_to_cpu(bfs_sb->s_to) != - 1) && ! (sb->s_flags & SB_RDONLY))
+#endif
diff --git a/i686-linux-musl/include/linux/binfmts.h b/i686-linux-musl/include/linux/binfmts.h
new file mode 100644
index 0000000..053be3c
--- /dev/null
+++ b/i686-linux-musl/include/linux/binfmts.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_BINFMTS_H
+#define _UAPI_LINUX_BINFMTS_H
+#include <linux/capability.h>
+struct pt_regs;
+#define MAX_ARG_STRLEN (PAGE_SIZE * 32)
+#define MAX_ARG_STRINGS 0x7FFFFFFF
+#define BINPRM_BUF_SIZE 256
+#define AT_FLAGS_PRESERVE_ARGV0_BIT 0
+#define AT_FLAGS_PRESERVE_ARGV0 (1 << AT_FLAGS_PRESERVE_ARGV0_BIT)
+#endif
diff --git a/i686-linux-musl/include/linux/blkpg.h b/i686-linux-musl/include/linux/blkpg.h
new file mode 100644
index 0000000..fdde696
--- /dev/null
+++ b/i686-linux-musl/include/linux/blkpg.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_BLKPG_H
+#define _UAPI__LINUX_BLKPG_H
+#include <linux/compiler.h>
+#include <linux/ioctl.h>
+#define BLKPG _IO(0x12, 105)
+struct blkpg_ioctl_arg {
+  int op;
+  int flags;
+  int datalen;
+  void __user * data;
+};
+#define BLKPG_ADD_PARTITION 1
+#define BLKPG_DEL_PARTITION 2
+#define BLKPG_RESIZE_PARTITION 3
+#define BLKPG_DEVNAMELTH 64
+#define BLKPG_VOLNAMELTH 64
+struct blkpg_partition {
+  long long start;
+  long long length;
+  int pno;
+  char devname[BLKPG_DEVNAMELTH];
+  char volname[BLKPG_VOLNAMELTH];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/blktrace_api.h b/i686-linux-musl/include/linux/blktrace_api.h
new file mode 100644
index 0000000..64c0b77
--- /dev/null
+++ b/i686-linux-musl/include/linux/blktrace_api.h
@@ -0,0 +1,125 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPIBLKTRACE_H
+#define _UAPIBLKTRACE_H
+#include <linux/types.h>
+enum blktrace_cat {
+  BLK_TC_READ = 1 << 0,
+  BLK_TC_WRITE = 1 << 1,
+  BLK_TC_FLUSH = 1 << 2,
+  BLK_TC_SYNC = 1 << 3,
+  BLK_TC_SYNCIO = BLK_TC_SYNC,
+  BLK_TC_QUEUE = 1 << 4,
+  BLK_TC_REQUEUE = 1 << 5,
+  BLK_TC_ISSUE = 1 << 6,
+  BLK_TC_COMPLETE = 1 << 7,
+  BLK_TC_FS = 1 << 8,
+  BLK_TC_PC = 1 << 9,
+  BLK_TC_NOTIFY = 1 << 10,
+  BLK_TC_AHEAD = 1 << 11,
+  BLK_TC_META = 1 << 12,
+  BLK_TC_DISCARD = 1 << 13,
+  BLK_TC_DRV_DATA = 1 << 14,
+  BLK_TC_FUA = 1 << 15,
+  BLK_TC_END = 1 << 15,
+};
+#define BLK_TC_SHIFT (16)
+#define BLK_TC_ACT(act) ((act) << BLK_TC_SHIFT)
+enum blktrace_act {
+  __BLK_TA_QUEUE = 1,
+  __BLK_TA_BACKMERGE,
+  __BLK_TA_FRONTMERGE,
+  __BLK_TA_GETRQ,
+  __BLK_TA_SLEEPRQ,
+  __BLK_TA_REQUEUE,
+  __BLK_TA_ISSUE,
+  __BLK_TA_COMPLETE,
+  __BLK_TA_PLUG,
+  __BLK_TA_UNPLUG_IO,
+  __BLK_TA_UNPLUG_TIMER,
+  __BLK_TA_INSERT,
+  __BLK_TA_SPLIT,
+  __BLK_TA_BOUNCE,
+  __BLK_TA_REMAP,
+  __BLK_TA_ABORT,
+  __BLK_TA_DRV_DATA,
+  __BLK_TA_CGROUP = 1 << 8,
+};
+enum blktrace_notify {
+  __BLK_TN_PROCESS = 0,
+  __BLK_TN_TIMESTAMP,
+  __BLK_TN_MESSAGE,
+  __BLK_TN_CGROUP = __BLK_TA_CGROUP,
+};
+#define BLK_TA_QUEUE (__BLK_TA_QUEUE | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_BACKMERGE (__BLK_TA_BACKMERGE | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_FRONTMERGE (__BLK_TA_FRONTMERGE | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_GETRQ (__BLK_TA_GETRQ | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_SLEEPRQ (__BLK_TA_SLEEPRQ | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_REQUEUE (__BLK_TA_REQUEUE | BLK_TC_ACT(BLK_TC_REQUEUE))
+#define BLK_TA_ISSUE (__BLK_TA_ISSUE | BLK_TC_ACT(BLK_TC_ISSUE))
+#define BLK_TA_COMPLETE (__BLK_TA_COMPLETE | BLK_TC_ACT(BLK_TC_COMPLETE))
+#define BLK_TA_PLUG (__BLK_TA_PLUG | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_UNPLUG_IO (__BLK_TA_UNPLUG_IO | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_UNPLUG_TIMER (__BLK_TA_UNPLUG_TIMER | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_INSERT (__BLK_TA_INSERT | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_SPLIT (__BLK_TA_SPLIT)
+#define BLK_TA_BOUNCE (__BLK_TA_BOUNCE)
+#define BLK_TA_REMAP (__BLK_TA_REMAP | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_ABORT (__BLK_TA_ABORT | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_DRV_DATA (__BLK_TA_DRV_DATA | BLK_TC_ACT(BLK_TC_DRV_DATA))
+#define BLK_TN_PROCESS (__BLK_TN_PROCESS | BLK_TC_ACT(BLK_TC_NOTIFY))
+#define BLK_TN_TIMESTAMP (__BLK_TN_TIMESTAMP | BLK_TC_ACT(BLK_TC_NOTIFY))
+#define BLK_TN_MESSAGE (__BLK_TN_MESSAGE | BLK_TC_ACT(BLK_TC_NOTIFY))
+#define BLK_IO_TRACE_MAGIC 0x65617400
+#define BLK_IO_TRACE_VERSION 0x07
+struct blk_io_trace {
+  __u32 magic;
+  __u32 sequence;
+  __u64 time;
+  __u64 sector;
+  __u32 bytes;
+  __u32 action;
+  __u32 pid;
+  __u32 device;
+  __u32 cpu;
+  __u16 error;
+  __u16 pdu_len;
+};
+struct blk_io_trace_remap {
+  __be32 device_from;
+  __be32 device_to;
+  __be64 sector_from;
+};
+enum {
+  Blktrace_setup = 1,
+  Blktrace_running,
+  Blktrace_stopped,
+};
+#define BLKTRACE_BDEV_SIZE 32
+struct blk_user_trace_setup {
+  char name[BLKTRACE_BDEV_SIZE];
+  __u16 act_mask;
+  __u32 buf_size;
+  __u32 buf_nr;
+  __u64 start_lba;
+  __u64 end_lba;
+  __u32 pid;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/blkzoned.h b/i686-linux-musl/include/linux/blkzoned.h
new file mode 100644
index 0000000..b551e8b
--- /dev/null
+++ b/i686-linux-musl/include/linux/blkzoned.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_BLKZONED_H
+#define _UAPI_BLKZONED_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+enum blk_zone_type {
+  BLK_ZONE_TYPE_CONVENTIONAL = 0x1,
+  BLK_ZONE_TYPE_SEQWRITE_REQ = 0x2,
+  BLK_ZONE_TYPE_SEQWRITE_PREF = 0x3,
+};
+enum blk_zone_cond {
+  BLK_ZONE_COND_NOT_WP = 0x0,
+  BLK_ZONE_COND_EMPTY = 0x1,
+  BLK_ZONE_COND_IMP_OPEN = 0x2,
+  BLK_ZONE_COND_EXP_OPEN = 0x3,
+  BLK_ZONE_COND_CLOSED = 0x4,
+  BLK_ZONE_COND_READONLY = 0xD,
+  BLK_ZONE_COND_FULL = 0xE,
+  BLK_ZONE_COND_OFFLINE = 0xF,
+};
+enum blk_zone_report_flags {
+  BLK_ZONE_REP_CAPACITY = (1 << 0),
+};
+struct blk_zone {
+  __u64 start;
+  __u64 len;
+  __u64 wp;
+  __u8 type;
+  __u8 cond;
+  __u8 non_seq;
+  __u8 reset;
+  __u8 resv[4];
+  __u64 capacity;
+  __u8 reserved[24];
+};
+struct blk_zone_report {
+  __u64 sector;
+  __u32 nr_zones;
+  __u32 flags;
+  struct blk_zone zones[0];
+};
+struct blk_zone_range {
+  __u64 sector;
+  __u64 nr_sectors;
+};
+#define BLKREPORTZONE _IOWR(0x12, 130, struct blk_zone_report)
+#define BLKRESETZONE _IOW(0x12, 131, struct blk_zone_range)
+#define BLKGETZONESZ _IOR(0x12, 132, __u32)
+#define BLKGETNRZONES _IOR(0x12, 133, __u32)
+#define BLKOPENZONE _IOW(0x12, 134, struct blk_zone_range)
+#define BLKCLOSEZONE _IOW(0x12, 135, struct blk_zone_range)
+#define BLKFINISHZONE _IOW(0x12, 136, struct blk_zone_range)
+#endif
diff --git a/i686-linux-musl/include/linux/bpf.h b/i686-linux-musl/include/linux/bpf.h
new file mode 100644
index 0000000..833f00e
--- /dev/null
+++ b/i686-linux-musl/include/linux/bpf.h
@@ -0,0 +1,1177 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_BPF_H__
+#define _UAPI__LINUX_BPF_H__
+#include <linux/types.h>
+#include <linux/bpf_common.h>
+#define BPF_JMP32 0x06
+#define BPF_ALU64 0x07
+#define BPF_DW 0x18
+#define BPF_ATOMIC 0xc0
+#define BPF_XADD 0xc0
+#define BPF_MOV 0xb0
+#define BPF_ARSH 0xc0
+#define BPF_END 0xd0
+#define BPF_TO_LE 0x00
+#define BPF_TO_BE 0x08
+#define BPF_FROM_LE BPF_TO_LE
+#define BPF_FROM_BE BPF_TO_BE
+#define BPF_JNE 0x50
+#define BPF_JLT 0xa0
+#define BPF_JLE 0xb0
+#define BPF_JSGT 0x60
+#define BPF_JSGE 0x70
+#define BPF_JSLT 0xc0
+#define BPF_JSLE 0xd0
+#define BPF_CALL 0x80
+#define BPF_EXIT 0x90
+#define BPF_FETCH 0x01
+#define BPF_XCHG (0xe0 | BPF_FETCH)
+#define BPF_CMPXCHG (0xf0 | BPF_FETCH)
+enum {
+  BPF_REG_0 = 0,
+  BPF_REG_1,
+  BPF_REG_2,
+  BPF_REG_3,
+  BPF_REG_4,
+  BPF_REG_5,
+  BPF_REG_6,
+  BPF_REG_7,
+  BPF_REG_8,
+  BPF_REG_9,
+  BPF_REG_10,
+  __MAX_BPF_REG,
+};
+#define MAX_BPF_REG __MAX_BPF_REG
+struct bpf_insn {
+  __u8 code;
+  __u8 dst_reg : 4;
+  __u8 src_reg : 4;
+  __s16 off;
+  __s32 imm;
+};
+struct bpf_lpm_trie_key {
+  __u32 prefixlen;
+  __u8 data[0];
+};
+struct bpf_cgroup_storage_key {
+  __u64 cgroup_inode_id;
+  __u32 attach_type;
+};
+union bpf_iter_link_info {
+  struct {
+    __u32 map_fd;
+  } map;
+};
+enum bpf_cmd {
+  BPF_MAP_CREATE,
+  BPF_MAP_LOOKUP_ELEM,
+  BPF_MAP_UPDATE_ELEM,
+  BPF_MAP_DELETE_ELEM,
+  BPF_MAP_GET_NEXT_KEY,
+  BPF_PROG_LOAD,
+  BPF_OBJ_PIN,
+  BPF_OBJ_GET,
+  BPF_PROG_ATTACH,
+  BPF_PROG_DETACH,
+  BPF_PROG_TEST_RUN,
+  BPF_PROG_RUN = BPF_PROG_TEST_RUN,
+  BPF_PROG_GET_NEXT_ID,
+  BPF_MAP_GET_NEXT_ID,
+  BPF_PROG_GET_FD_BY_ID,
+  BPF_MAP_GET_FD_BY_ID,
+  BPF_OBJ_GET_INFO_BY_FD,
+  BPF_PROG_QUERY,
+  BPF_RAW_TRACEPOINT_OPEN,
+  BPF_BTF_LOAD,
+  BPF_BTF_GET_FD_BY_ID,
+  BPF_TASK_FD_QUERY,
+  BPF_MAP_LOOKUP_AND_DELETE_ELEM,
+  BPF_MAP_FREEZE,
+  BPF_BTF_GET_NEXT_ID,
+  BPF_MAP_LOOKUP_BATCH,
+  BPF_MAP_LOOKUP_AND_DELETE_BATCH,
+  BPF_MAP_UPDATE_BATCH,
+  BPF_MAP_DELETE_BATCH,
+  BPF_LINK_CREATE,
+  BPF_LINK_UPDATE,
+  BPF_LINK_GET_FD_BY_ID,
+  BPF_LINK_GET_NEXT_ID,
+  BPF_ENABLE_STATS,
+  BPF_ITER_CREATE,
+  BPF_LINK_DETACH,
+  BPF_PROG_BIND_MAP,
+};
+enum bpf_map_type {
+  BPF_MAP_TYPE_UNSPEC,
+  BPF_MAP_TYPE_HASH,
+  BPF_MAP_TYPE_ARRAY,
+  BPF_MAP_TYPE_PROG_ARRAY,
+  BPF_MAP_TYPE_PERF_EVENT_ARRAY,
+  BPF_MAP_TYPE_PERCPU_HASH,
+  BPF_MAP_TYPE_PERCPU_ARRAY,
+  BPF_MAP_TYPE_STACK_TRACE,
+  BPF_MAP_TYPE_CGROUP_ARRAY,
+  BPF_MAP_TYPE_LRU_HASH,
+  BPF_MAP_TYPE_LRU_PERCPU_HASH,
+  BPF_MAP_TYPE_LPM_TRIE,
+  BPF_MAP_TYPE_ARRAY_OF_MAPS,
+  BPF_MAP_TYPE_HASH_OF_MAPS,
+  BPF_MAP_TYPE_DEVMAP,
+  BPF_MAP_TYPE_SOCKMAP,
+  BPF_MAP_TYPE_CPUMAP,
+  BPF_MAP_TYPE_XSKMAP,
+  BPF_MAP_TYPE_SOCKHASH,
+  BPF_MAP_TYPE_CGROUP_STORAGE,
+  BPF_MAP_TYPE_REUSEPORT_SOCKARRAY,
+  BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE,
+  BPF_MAP_TYPE_QUEUE,
+  BPF_MAP_TYPE_STACK,
+  BPF_MAP_TYPE_SK_STORAGE,
+  BPF_MAP_TYPE_DEVMAP_HASH,
+  BPF_MAP_TYPE_STRUCT_OPS,
+  BPF_MAP_TYPE_RINGBUF,
+  BPF_MAP_TYPE_INODE_STORAGE,
+  BPF_MAP_TYPE_TASK_STORAGE,
+  BPF_MAP_TYPE_BLOOM_FILTER,
+};
+enum bpf_prog_type {
+  BPF_PROG_TYPE_UNSPEC,
+  BPF_PROG_TYPE_SOCKET_FILTER,
+  BPF_PROG_TYPE_KPROBE,
+  BPF_PROG_TYPE_SCHED_CLS,
+  BPF_PROG_TYPE_SCHED_ACT,
+  BPF_PROG_TYPE_TRACEPOINT,
+  BPF_PROG_TYPE_XDP,
+  BPF_PROG_TYPE_PERF_EVENT,
+  BPF_PROG_TYPE_CGROUP_SKB,
+  BPF_PROG_TYPE_CGROUP_SOCK,
+  BPF_PROG_TYPE_LWT_IN,
+  BPF_PROG_TYPE_LWT_OUT,
+  BPF_PROG_TYPE_LWT_XMIT,
+  BPF_PROG_TYPE_SOCK_OPS,
+  BPF_PROG_TYPE_SK_SKB,
+  BPF_PROG_TYPE_CGROUP_DEVICE,
+  BPF_PROG_TYPE_SK_MSG,
+  BPF_PROG_TYPE_RAW_TRACEPOINT,
+  BPF_PROG_TYPE_CGROUP_SOCK_ADDR,
+  BPF_PROG_TYPE_LWT_SEG6LOCAL,
+  BPF_PROG_TYPE_LIRC_MODE2,
+  BPF_PROG_TYPE_SK_REUSEPORT,
+  BPF_PROG_TYPE_FLOW_DISSECTOR,
+  BPF_PROG_TYPE_CGROUP_SYSCTL,
+  BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE,
+  BPF_PROG_TYPE_CGROUP_SOCKOPT,
+  BPF_PROG_TYPE_TRACING,
+  BPF_PROG_TYPE_STRUCT_OPS,
+  BPF_PROG_TYPE_EXT,
+  BPF_PROG_TYPE_LSM,
+  BPF_PROG_TYPE_SK_LOOKUP,
+  BPF_PROG_TYPE_SYSCALL,
+};
+enum bpf_attach_type {
+  BPF_CGROUP_INET_INGRESS,
+  BPF_CGROUP_INET_EGRESS,
+  BPF_CGROUP_INET_SOCK_CREATE,
+  BPF_CGROUP_SOCK_OPS,
+  BPF_SK_SKB_STREAM_PARSER,
+  BPF_SK_SKB_STREAM_VERDICT,
+  BPF_CGROUP_DEVICE,
+  BPF_SK_MSG_VERDICT,
+  BPF_CGROUP_INET4_BIND,
+  BPF_CGROUP_INET6_BIND,
+  BPF_CGROUP_INET4_CONNECT,
+  BPF_CGROUP_INET6_CONNECT,
+  BPF_CGROUP_INET4_POST_BIND,
+  BPF_CGROUP_INET6_POST_BIND,
+  BPF_CGROUP_UDP4_SENDMSG,
+  BPF_CGROUP_UDP6_SENDMSG,
+  BPF_LIRC_MODE2,
+  BPF_FLOW_DISSECTOR,
+  BPF_CGROUP_SYSCTL,
+  BPF_CGROUP_UDP4_RECVMSG,
+  BPF_CGROUP_UDP6_RECVMSG,
+  BPF_CGROUP_GETSOCKOPT,
+  BPF_CGROUP_SETSOCKOPT,
+  BPF_TRACE_RAW_TP,
+  BPF_TRACE_FENTRY,
+  BPF_TRACE_FEXIT,
+  BPF_MODIFY_RETURN,
+  BPF_LSM_MAC,
+  BPF_TRACE_ITER,
+  BPF_CGROUP_INET4_GETPEERNAME,
+  BPF_CGROUP_INET6_GETPEERNAME,
+  BPF_CGROUP_INET4_GETSOCKNAME,
+  BPF_CGROUP_INET6_GETSOCKNAME,
+  BPF_XDP_DEVMAP,
+  BPF_CGROUP_INET_SOCK_RELEASE,
+  BPF_XDP_CPUMAP,
+  BPF_SK_LOOKUP,
+  BPF_XDP,
+  BPF_SK_SKB_VERDICT,
+  BPF_SK_REUSEPORT_SELECT,
+  BPF_SK_REUSEPORT_SELECT_OR_MIGRATE,
+  BPF_PERF_EVENT,
+  __MAX_BPF_ATTACH_TYPE
+};
+#define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
+enum bpf_link_type {
+  BPF_LINK_TYPE_UNSPEC = 0,
+  BPF_LINK_TYPE_RAW_TRACEPOINT = 1,
+  BPF_LINK_TYPE_TRACING = 2,
+  BPF_LINK_TYPE_CGROUP = 3,
+  BPF_LINK_TYPE_ITER = 4,
+  BPF_LINK_TYPE_NETNS = 5,
+  BPF_LINK_TYPE_XDP = 6,
+  BPF_LINK_TYPE_PERF_EVENT = 7,
+  MAX_BPF_LINK_TYPE,
+};
+#define BPF_F_ALLOW_OVERRIDE (1U << 0)
+#define BPF_F_ALLOW_MULTI (1U << 1)
+#define BPF_F_REPLACE (1U << 2)
+#define BPF_F_STRICT_ALIGNMENT (1U << 0)
+#define BPF_F_ANY_ALIGNMENT (1U << 1)
+#define BPF_F_TEST_RND_HI32 (1U << 2)
+#define BPF_F_TEST_STATE_FREQ (1U << 3)
+#define BPF_F_SLEEPABLE (1U << 4)
+#define BPF_PSEUDO_MAP_FD 1
+#define BPF_PSEUDO_MAP_IDX 5
+#define BPF_PSEUDO_MAP_VALUE 2
+#define BPF_PSEUDO_MAP_IDX_VALUE 6
+#define BPF_PSEUDO_BTF_ID 3
+#define BPF_PSEUDO_FUNC 4
+#define BPF_PSEUDO_CALL 1
+#define BPF_PSEUDO_KFUNC_CALL 2
+enum {
+  BPF_ANY = 0,
+  BPF_NOEXIST = 1,
+  BPF_EXIST = 2,
+  BPF_F_LOCK = 4,
+};
+enum {
+  BPF_F_NO_PREALLOC = (1U << 0),
+  BPF_F_NO_COMMON_LRU = (1U << 1),
+  BPF_F_NUMA_NODE = (1U << 2),
+  BPF_F_RDONLY = (1U << 3),
+  BPF_F_WRONLY = (1U << 4),
+  BPF_F_STACK_BUILD_ID = (1U << 5),
+  BPF_F_ZERO_SEED = (1U << 6),
+  BPF_F_RDONLY_PROG = (1U << 7),
+  BPF_F_WRONLY_PROG = (1U << 8),
+  BPF_F_CLONE = (1U << 9),
+  BPF_F_MMAPABLE = (1U << 10),
+  BPF_F_PRESERVE_ELEMS = (1U << 11),
+  BPF_F_INNER_MAP = (1U << 12),
+};
+#define BPF_F_QUERY_EFFECTIVE (1U << 0)
+#define BPF_F_TEST_RUN_ON_CPU (1U << 0)
+enum bpf_stats_type {
+  BPF_STATS_RUN_TIME = 0,
+};
+enum bpf_stack_build_id_status {
+  BPF_STACK_BUILD_ID_EMPTY = 0,
+  BPF_STACK_BUILD_ID_VALID = 1,
+  BPF_STACK_BUILD_ID_IP = 2,
+};
+#define BPF_BUILD_ID_SIZE 20
+struct bpf_stack_build_id {
+  __s32 status;
+  unsigned char build_id[BPF_BUILD_ID_SIZE];
+  union {
+    __u64 offset;
+    __u64 ip;
+  };
+};
+#define BPF_OBJ_NAME_LEN 16U
+union bpf_attr {
+  struct {
+    __u32 map_type;
+    __u32 key_size;
+    __u32 value_size;
+    __u32 max_entries;
+    __u32 map_flags;
+    __u32 inner_map_fd;
+    __u32 numa_node;
+    char map_name[BPF_OBJ_NAME_LEN];
+    __u32 map_ifindex;
+    __u32 btf_fd;
+    __u32 btf_key_type_id;
+    __u32 btf_value_type_id;
+    __u32 btf_vmlinux_value_type_id;
+    __u64 map_extra;
+  };
+  struct {
+    __u32 map_fd;
+    __aligned_u64 key;
+    union {
+      __aligned_u64 value;
+      __aligned_u64 next_key;
+    };
+    __u64 flags;
+  };
+  struct {
+    __aligned_u64 in_batch;
+    __aligned_u64 out_batch;
+    __aligned_u64 keys;
+    __aligned_u64 values;
+    __u32 count;
+    __u32 map_fd;
+    __u64 elem_flags;
+    __u64 flags;
+  } batch;
+  struct {
+    __u32 prog_type;
+    __u32 insn_cnt;
+    __aligned_u64 insns;
+    __aligned_u64 license;
+    __u32 log_level;
+    __u32 log_size;
+    __aligned_u64 log_buf;
+    __u32 kern_version;
+    __u32 prog_flags;
+    char prog_name[BPF_OBJ_NAME_LEN];
+    __u32 prog_ifindex;
+    __u32 expected_attach_type;
+    __u32 prog_btf_fd;
+    __u32 func_info_rec_size;
+    __aligned_u64 func_info;
+    __u32 func_info_cnt;
+    __u32 line_info_rec_size;
+    __aligned_u64 line_info;
+    __u32 line_info_cnt;
+    __u32 attach_btf_id;
+    union {
+      __u32 attach_prog_fd;
+      __u32 attach_btf_obj_fd;
+    };
+    __u32 : 32;
+    __aligned_u64 fd_array;
+  };
+  struct {
+    __aligned_u64 pathname;
+    __u32 bpf_fd;
+    __u32 file_flags;
+  };
+  struct {
+    __u32 target_fd;
+    __u32 attach_bpf_fd;
+    __u32 attach_type;
+    __u32 attach_flags;
+    __u32 replace_bpf_fd;
+  };
+  struct {
+    __u32 prog_fd;
+    __u32 retval;
+    __u32 data_size_in;
+    __u32 data_size_out;
+    __aligned_u64 data_in;
+    __aligned_u64 data_out;
+    __u32 repeat;
+    __u32 duration;
+    __u32 ctx_size_in;
+    __u32 ctx_size_out;
+    __aligned_u64 ctx_in;
+    __aligned_u64 ctx_out;
+    __u32 flags;
+    __u32 cpu;
+  } test;
+  struct {
+    union {
+      __u32 start_id;
+      __u32 prog_id;
+      __u32 map_id;
+      __u32 btf_id;
+      __u32 link_id;
+    };
+    __u32 next_id;
+    __u32 open_flags;
+  };
+  struct {
+    __u32 bpf_fd;
+    __u32 info_len;
+    __aligned_u64 info;
+  } info;
+  struct {
+    __u32 target_fd;
+    __u32 attach_type;
+    __u32 query_flags;
+    __u32 attach_flags;
+    __aligned_u64 prog_ids;
+    __u32 prog_cnt;
+  } query;
+  struct {
+    __u64 name;
+    __u32 prog_fd;
+  } raw_tracepoint;
+  struct {
+    __aligned_u64 btf;
+    __aligned_u64 btf_log_buf;
+    __u32 btf_size;
+    __u32 btf_log_size;
+    __u32 btf_log_level;
+  };
+  struct {
+    __u32 pid;
+    __u32 fd;
+    __u32 flags;
+    __u32 buf_len;
+    __aligned_u64 buf;
+    __u32 prog_id;
+    __u32 fd_type;
+    __u64 probe_offset;
+    __u64 probe_addr;
+  } task_fd_query;
+  struct {
+    __u32 prog_fd;
+    union {
+      __u32 target_fd;
+      __u32 target_ifindex;
+    };
+    __u32 attach_type;
+    __u32 flags;
+    union {
+      __u32 target_btf_id;
+      struct {
+        __aligned_u64 iter_info;
+        __u32 iter_info_len;
+      };
+      struct {
+        __u64 bpf_cookie;
+      } perf_event;
+    };
+  } link_create;
+  struct {
+    __u32 link_fd;
+    __u32 new_prog_fd;
+    __u32 flags;
+    __u32 old_prog_fd;
+  } link_update;
+  struct {
+    __u32 link_fd;
+  } link_detach;
+  struct {
+    __u32 type;
+  } enable_stats;
+  struct {
+    __u32 link_fd;
+    __u32 flags;
+  } iter_create;
+  struct {
+    __u32 prog_fd;
+    __u32 map_fd;
+    __u32 flags;
+  } prog_bind_map;
+} __attribute__((aligned(8)));
+#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name),
+#define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
+enum bpf_func_id {
+  __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
+};
+#undef __BPF_ENUM_FN
+enum {
+  BPF_F_RECOMPUTE_CSUM = (1ULL << 0),
+  BPF_F_INVALIDATE_HASH = (1ULL << 1),
+};
+enum {
+  BPF_F_HDR_FIELD_MASK = 0xfULL,
+};
+enum {
+  BPF_F_PSEUDO_HDR = (1ULL << 4),
+  BPF_F_MARK_MANGLED_0 = (1ULL << 5),
+  BPF_F_MARK_ENFORCE = (1ULL << 6),
+};
+enum {
+  BPF_F_INGRESS = (1ULL << 0),
+};
+enum {
+  BPF_F_TUNINFO_IPV6 = (1ULL << 0),
+};
+enum {
+  BPF_F_SKIP_FIELD_MASK = 0xffULL,
+  BPF_F_USER_STACK = (1ULL << 8),
+  BPF_F_FAST_STACK_CMP = (1ULL << 9),
+  BPF_F_REUSE_STACKID = (1ULL << 10),
+  BPF_F_USER_BUILD_ID = (1ULL << 11),
+};
+enum {
+  BPF_F_ZERO_CSUM_TX = (1ULL << 1),
+  BPF_F_DONT_FRAGMENT = (1ULL << 2),
+  BPF_F_SEQ_NUMBER = (1ULL << 3),
+};
+enum {
+  BPF_F_INDEX_MASK = 0xffffffffULL,
+  BPF_F_CURRENT_CPU = BPF_F_INDEX_MASK,
+  BPF_F_CTXLEN_MASK = (0xfffffULL << 32),
+};
+enum {
+  BPF_F_CURRENT_NETNS = (- 1L),
+};
+enum {
+  BPF_CSUM_LEVEL_QUERY,
+  BPF_CSUM_LEVEL_INC,
+  BPF_CSUM_LEVEL_DEC,
+  BPF_CSUM_LEVEL_RESET,
+};
+enum {
+  BPF_F_ADJ_ROOM_FIXED_GSO = (1ULL << 0),
+  BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = (1ULL << 1),
+  BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = (1ULL << 2),
+  BPF_F_ADJ_ROOM_ENCAP_L4_GRE = (1ULL << 3),
+  BPF_F_ADJ_ROOM_ENCAP_L4_UDP = (1ULL << 4),
+  BPF_F_ADJ_ROOM_NO_CSUM_RESET = (1ULL << 5),
+  BPF_F_ADJ_ROOM_ENCAP_L2_ETH = (1ULL << 6),
+};
+enum {
+  BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff,
+  BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 56,
+};
+#define BPF_F_ADJ_ROOM_ENCAP_L2(len) (((__u64) len & BPF_ADJ_ROOM_ENCAP_L2_MASK) << BPF_ADJ_ROOM_ENCAP_L2_SHIFT)
+enum {
+  BPF_F_SYSCTL_BASE_NAME = (1ULL << 0),
+};
+enum {
+  BPF_LOCAL_STORAGE_GET_F_CREATE = (1ULL << 0),
+  BPF_SK_STORAGE_GET_F_CREATE = BPF_LOCAL_STORAGE_GET_F_CREATE,
+};
+enum {
+  BPF_F_GET_BRANCH_RECORDS_SIZE = (1ULL << 0),
+};
+enum {
+  BPF_RB_NO_WAKEUP = (1ULL << 0),
+  BPF_RB_FORCE_WAKEUP = (1ULL << 1),
+};
+enum {
+  BPF_RB_AVAIL_DATA = 0,
+  BPF_RB_RING_SIZE = 1,
+  BPF_RB_CONS_POS = 2,
+  BPF_RB_PROD_POS = 3,
+};
+enum {
+  BPF_RINGBUF_BUSY_BIT = (1U << 31),
+  BPF_RINGBUF_DISCARD_BIT = (1U << 30),
+  BPF_RINGBUF_HDR_SZ = 8,
+};
+enum {
+  BPF_SK_LOOKUP_F_REPLACE = (1ULL << 0),
+  BPF_SK_LOOKUP_F_NO_REUSEPORT = (1ULL << 1),
+};
+enum bpf_adj_room_mode {
+  BPF_ADJ_ROOM_NET,
+  BPF_ADJ_ROOM_MAC,
+};
+enum bpf_hdr_start_off {
+  BPF_HDR_START_MAC,
+  BPF_HDR_START_NET,
+};
+enum bpf_lwt_encap_mode {
+  BPF_LWT_ENCAP_SEG6,
+  BPF_LWT_ENCAP_SEG6_INLINE,
+  BPF_LWT_ENCAP_IP,
+};
+enum {
+  BPF_F_BPRM_SECUREEXEC = (1ULL << 0),
+};
+enum {
+  BPF_F_BROADCAST = (1ULL << 3),
+  BPF_F_EXCLUDE_INGRESS = (1ULL << 4),
+};
+#define __bpf_md_ptr(type,name) union { type name; __u64 : 64; \
+} __attribute__((aligned(8)))
+struct __sk_buff {
+  __u32 len;
+  __u32 pkt_type;
+  __u32 mark;
+  __u32 queue_mapping;
+  __u32 protocol;
+  __u32 vlan_present;
+  __u32 vlan_tci;
+  __u32 vlan_proto;
+  __u32 priority;
+  __u32 ingress_ifindex;
+  __u32 ifindex;
+  __u32 tc_index;
+  __u32 cb[5];
+  __u32 hash;
+  __u32 tc_classid;
+  __u32 data;
+  __u32 data_end;
+  __u32 napi_id;
+  __u32 family;
+  __u32 remote_ip4;
+  __u32 local_ip4;
+  __u32 remote_ip6[4];
+  __u32 local_ip6[4];
+  __u32 remote_port;
+  __u32 local_port;
+  __u32 data_meta;
+  __bpf_md_ptr(struct bpf_flow_keys *, flow_keys);
+  __u64 tstamp;
+  __u32 wire_len;
+  __u32 gso_segs;
+  __bpf_md_ptr(struct bpf_sock *, sk);
+  __u32 gso_size;
+  __u32 : 32;
+  __u64 hwtstamp;
+};
+struct bpf_tunnel_key {
+  __u32 tunnel_id;
+  union {
+    __u32 remote_ipv4;
+    __u32 remote_ipv6[4];
+  };
+  __u8 tunnel_tos;
+  __u8 tunnel_ttl;
+  __u16 tunnel_ext;
+  __u32 tunnel_label;
+};
+struct bpf_xfrm_state {
+  __u32 reqid;
+  __u32 spi;
+  __u16 family;
+  __u16 ext;
+  union {
+    __u32 remote_ipv4;
+    __u32 remote_ipv6[4];
+  };
+};
+enum bpf_ret_code {
+  BPF_OK = 0,
+  BPF_DROP = 2,
+  BPF_REDIRECT = 7,
+  BPF_LWT_REROUTE = 128,
+};
+struct bpf_sock {
+  __u32 bound_dev_if;
+  __u32 family;
+  __u32 type;
+  __u32 protocol;
+  __u32 mark;
+  __u32 priority;
+  __u32 src_ip4;
+  __u32 src_ip6[4];
+  __u32 src_port;
+  __u32 dst_port;
+  __u32 dst_ip4;
+  __u32 dst_ip6[4];
+  __u32 state;
+  __s32 rx_queue_mapping;
+};
+struct bpf_tcp_sock {
+  __u32 snd_cwnd;
+  __u32 srtt_us;
+  __u32 rtt_min;
+  __u32 snd_ssthresh;
+  __u32 rcv_nxt;
+  __u32 snd_nxt;
+  __u32 snd_una;
+  __u32 mss_cache;
+  __u32 ecn_flags;
+  __u32 rate_delivered;
+  __u32 rate_interval_us;
+  __u32 packets_out;
+  __u32 retrans_out;
+  __u32 total_retrans;
+  __u32 segs_in;
+  __u32 data_segs_in;
+  __u32 segs_out;
+  __u32 data_segs_out;
+  __u32 lost_out;
+  __u32 sacked_out;
+  __u64 bytes_received;
+  __u64 bytes_acked;
+  __u32 dsack_dups;
+  __u32 delivered;
+  __u32 delivered_ce;
+  __u32 icsk_retransmits;
+};
+struct bpf_sock_tuple {
+  union {
+    struct {
+      __be32 saddr;
+      __be32 daddr;
+      __be16 sport;
+      __be16 dport;
+    } ipv4;
+    struct {
+      __be32 saddr[4];
+      __be32 daddr[4];
+      __be16 sport;
+      __be16 dport;
+    } ipv6;
+  };
+};
+struct bpf_xdp_sock {
+  __u32 queue_id;
+};
+#define XDP_PACKET_HEADROOM 256
+enum xdp_action {
+  XDP_ABORTED = 0,
+  XDP_DROP,
+  XDP_PASS,
+  XDP_TX,
+  XDP_REDIRECT,
+};
+struct xdp_md {
+  __u32 data;
+  __u32 data_end;
+  __u32 data_meta;
+  __u32 ingress_ifindex;
+  __u32 rx_queue_index;
+  __u32 egress_ifindex;
+};
+struct bpf_devmap_val {
+  __u32 ifindex;
+  union {
+    int fd;
+    __u32 id;
+  } bpf_prog;
+};
+struct bpf_cpumap_val {
+  __u32 qsize;
+  union {
+    int fd;
+    __u32 id;
+  } bpf_prog;
+};
+enum sk_action {
+  SK_DROP = 0,
+  SK_PASS,
+};
+struct sk_msg_md {
+  __bpf_md_ptr(void *, data);
+  __bpf_md_ptr(void *, data_end);
+  __u32 family;
+  __u32 remote_ip4;
+  __u32 local_ip4;
+  __u32 remote_ip6[4];
+  __u32 local_ip6[4];
+  __u32 remote_port;
+  __u32 local_port;
+  __u32 size;
+  __bpf_md_ptr(struct bpf_sock *, sk);
+};
+struct sk_reuseport_md {
+  __bpf_md_ptr(void *, data);
+  __bpf_md_ptr(void *, data_end);
+  __u32 len;
+  __u32 eth_protocol;
+  __u32 ip_protocol;
+  __u32 bind_inany;
+  __u32 hash;
+  __bpf_md_ptr(struct bpf_sock *, sk);
+  __bpf_md_ptr(struct bpf_sock *, migrating_sk);
+};
+#define BPF_TAG_SIZE 8
+struct bpf_prog_info {
+  __u32 type;
+  __u32 id;
+  __u8 tag[BPF_TAG_SIZE];
+  __u32 jited_prog_len;
+  __u32 xlated_prog_len;
+  __aligned_u64 jited_prog_insns;
+  __aligned_u64 xlated_prog_insns;
+  __u64 load_time;
+  __u32 created_by_uid;
+  __u32 nr_map_ids;
+  __aligned_u64 map_ids;
+  char name[BPF_OBJ_NAME_LEN];
+  __u32 ifindex;
+  __u32 gpl_compatible : 1;
+  __u32 : 31;
+  __u64 netns_dev;
+  __u64 netns_ino;
+  __u32 nr_jited_ksyms;
+  __u32 nr_jited_func_lens;
+  __aligned_u64 jited_ksyms;
+  __aligned_u64 jited_func_lens;
+  __u32 btf_id;
+  __u32 func_info_rec_size;
+  __aligned_u64 func_info;
+  __u32 nr_func_info;
+  __u32 nr_line_info;
+  __aligned_u64 line_info;
+  __aligned_u64 jited_line_info;
+  __u32 nr_jited_line_info;
+  __u32 line_info_rec_size;
+  __u32 jited_line_info_rec_size;
+  __u32 nr_prog_tags;
+  __aligned_u64 prog_tags;
+  __u64 run_time_ns;
+  __u64 run_cnt;
+  __u64 recursion_misses;
+  __u32 verified_insns;
+} __attribute__((aligned(8)));
+struct bpf_map_info {
+  __u32 type;
+  __u32 id;
+  __u32 key_size;
+  __u32 value_size;
+  __u32 max_entries;
+  __u32 map_flags;
+  char name[BPF_OBJ_NAME_LEN];
+  __u32 ifindex;
+  __u32 btf_vmlinux_value_type_id;
+  __u64 netns_dev;
+  __u64 netns_ino;
+  __u32 btf_id;
+  __u32 btf_key_type_id;
+  __u32 btf_value_type_id;
+  __u32 : 32;
+  __u64 map_extra;
+} __attribute__((aligned(8)));
+struct bpf_btf_info {
+  __aligned_u64 btf;
+  __u32 btf_size;
+  __u32 id;
+  __aligned_u64 name;
+  __u32 name_len;
+  __u32 kernel_btf;
+} __attribute__((aligned(8)));
+struct bpf_link_info {
+  __u32 type;
+  __u32 id;
+  __u32 prog_id;
+  union {
+    struct {
+      __aligned_u64 tp_name;
+      __u32 tp_name_len;
+    } raw_tracepoint;
+    struct {
+      __u32 attach_type;
+      __u32 target_obj_id;
+      __u32 target_btf_id;
+    } tracing;
+    struct {
+      __u64 cgroup_id;
+      __u32 attach_type;
+    } cgroup;
+    struct {
+      __aligned_u64 target_name;
+      __u32 target_name_len;
+      union {
+        struct {
+          __u32 map_id;
+        } map;
+      };
+    } iter;
+    struct {
+      __u32 netns_ino;
+      __u32 attach_type;
+    } netns;
+    struct {
+      __u32 ifindex;
+    } xdp;
+  };
+} __attribute__((aligned(8)));
+struct bpf_sock_addr {
+  __u32 user_family;
+  __u32 user_ip4;
+  __u32 user_ip6[4];
+  __u32 user_port;
+  __u32 family;
+  __u32 type;
+  __u32 protocol;
+  __u32 msg_src_ip4;
+  __u32 msg_src_ip6[4];
+  __bpf_md_ptr(struct bpf_sock *, sk);
+};
+struct bpf_sock_ops {
+  __u32 op;
+  union {
+    __u32 args[4];
+    __u32 reply;
+    __u32 replylong[4];
+  };
+  __u32 family;
+  __u32 remote_ip4;
+  __u32 local_ip4;
+  __u32 remote_ip6[4];
+  __u32 local_ip6[4];
+  __u32 remote_port;
+  __u32 local_port;
+  __u32 is_fullsock;
+  __u32 snd_cwnd;
+  __u32 srtt_us;
+  __u32 bpf_sock_ops_cb_flags;
+  __u32 state;
+  __u32 rtt_min;
+  __u32 snd_ssthresh;
+  __u32 rcv_nxt;
+  __u32 snd_nxt;
+  __u32 snd_una;
+  __u32 mss_cache;
+  __u32 ecn_flags;
+  __u32 rate_delivered;
+  __u32 rate_interval_us;
+  __u32 packets_out;
+  __u32 retrans_out;
+  __u32 total_retrans;
+  __u32 segs_in;
+  __u32 data_segs_in;
+  __u32 segs_out;
+  __u32 data_segs_out;
+  __u32 lost_out;
+  __u32 sacked_out;
+  __u32 sk_txhash;
+  __u64 bytes_received;
+  __u64 bytes_acked;
+  __bpf_md_ptr(struct bpf_sock *, sk);
+  __bpf_md_ptr(void *, skb_data);
+  __bpf_md_ptr(void *, skb_data_end);
+  __u32 skb_len;
+  __u32 skb_tcp_flags;
+};
+enum {
+  BPF_SOCK_OPS_RTO_CB_FLAG = (1 << 0),
+  BPF_SOCK_OPS_RETRANS_CB_FLAG = (1 << 1),
+  BPF_SOCK_OPS_STATE_CB_FLAG = (1 << 2),
+  BPF_SOCK_OPS_RTT_CB_FLAG = (1 << 3),
+  BPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG = (1 << 4),
+  BPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG = (1 << 5),
+  BPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG = (1 << 6),
+  BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7F,
+};
+enum {
+  BPF_SOCK_OPS_VOID,
+  BPF_SOCK_OPS_TIMEOUT_INIT,
+  BPF_SOCK_OPS_RWND_INIT,
+  BPF_SOCK_OPS_TCP_CONNECT_CB,
+  BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB,
+  BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB,
+  BPF_SOCK_OPS_NEEDS_ECN,
+  BPF_SOCK_OPS_BASE_RTT,
+  BPF_SOCK_OPS_RTO_CB,
+  BPF_SOCK_OPS_RETRANS_CB,
+  BPF_SOCK_OPS_STATE_CB,
+  BPF_SOCK_OPS_TCP_LISTEN_CB,
+  BPF_SOCK_OPS_RTT_CB,
+  BPF_SOCK_OPS_PARSE_HDR_OPT_CB,
+  BPF_SOCK_OPS_HDR_OPT_LEN_CB,
+  BPF_SOCK_OPS_WRITE_HDR_OPT_CB,
+};
+enum {
+  BPF_TCP_ESTABLISHED = 1,
+  BPF_TCP_SYN_SENT,
+  BPF_TCP_SYN_RECV,
+  BPF_TCP_FIN_WAIT1,
+  BPF_TCP_FIN_WAIT2,
+  BPF_TCP_TIME_WAIT,
+  BPF_TCP_CLOSE,
+  BPF_TCP_CLOSE_WAIT,
+  BPF_TCP_LAST_ACK,
+  BPF_TCP_LISTEN,
+  BPF_TCP_CLOSING,
+  BPF_TCP_NEW_SYN_RECV,
+  BPF_TCP_MAX_STATES
+};
+enum {
+  TCP_BPF_IW = 1001,
+  TCP_BPF_SNDCWND_CLAMP = 1002,
+  TCP_BPF_DELACK_MAX = 1003,
+  TCP_BPF_RTO_MIN = 1004,
+  TCP_BPF_SYN = 1005,
+  TCP_BPF_SYN_IP = 1006,
+  TCP_BPF_SYN_MAC = 1007,
+};
+enum {
+  BPF_LOAD_HDR_OPT_TCP_SYN = (1ULL << 0),
+};
+enum {
+  BPF_WRITE_HDR_TCP_CURRENT_MSS = 1,
+  BPF_WRITE_HDR_TCP_SYNACK_COOKIE = 2,
+};
+struct bpf_perf_event_value {
+  __u64 counter;
+  __u64 enabled;
+  __u64 running;
+};
+enum {
+  BPF_DEVCG_ACC_MKNOD = (1ULL << 0),
+  BPF_DEVCG_ACC_READ = (1ULL << 1),
+  BPF_DEVCG_ACC_WRITE = (1ULL << 2),
+};
+enum {
+  BPF_DEVCG_DEV_BLOCK = (1ULL << 0),
+  BPF_DEVCG_DEV_CHAR = (1ULL << 1),
+};
+struct bpf_cgroup_dev_ctx {
+  __u32 access_type;
+  __u32 major;
+  __u32 minor;
+};
+struct bpf_raw_tracepoint_args {
+  __u64 args[0];
+};
+enum {
+  BPF_FIB_LOOKUP_DIRECT = (1U << 0),
+  BPF_FIB_LOOKUP_OUTPUT = (1U << 1),
+};
+enum {
+  BPF_FIB_LKUP_RET_SUCCESS,
+  BPF_FIB_LKUP_RET_BLACKHOLE,
+  BPF_FIB_LKUP_RET_UNREACHABLE,
+  BPF_FIB_LKUP_RET_PROHIBIT,
+  BPF_FIB_LKUP_RET_NOT_FWDED,
+  BPF_FIB_LKUP_RET_FWD_DISABLED,
+  BPF_FIB_LKUP_RET_UNSUPP_LWT,
+  BPF_FIB_LKUP_RET_NO_NEIGH,
+  BPF_FIB_LKUP_RET_FRAG_NEEDED,
+};
+struct bpf_fib_lookup {
+  __u8 family;
+  __u8 l4_protocol;
+  __be16 sport;
+  __be16 dport;
+  union {
+    __u16 tot_len;
+    __u16 mtu_result;
+  };
+  __u32 ifindex;
+  union {
+    __u8 tos;
+    __be32 flowinfo;
+    __u32 rt_metric;
+  };
+  union {
+    __be32 ipv4_src;
+    __u32 ipv6_src[4];
+  };
+  union {
+    __be32 ipv4_dst;
+    __u32 ipv6_dst[4];
+  };
+  __be16 h_vlan_proto;
+  __be16 h_vlan_TCI;
+  __u8 smac[6];
+  __u8 dmac[6];
+};
+struct bpf_redir_neigh {
+  __u32 nh_family;
+  union {
+    __be32 ipv4_nh;
+    __u32 ipv6_nh[4];
+  };
+};
+enum bpf_check_mtu_flags {
+  BPF_MTU_CHK_SEGS = (1U << 0),
+};
+enum bpf_check_mtu_ret {
+  BPF_MTU_CHK_RET_SUCCESS,
+  BPF_MTU_CHK_RET_FRAG_NEEDED,
+  BPF_MTU_CHK_RET_SEGS_TOOBIG,
+};
+enum bpf_task_fd_type {
+  BPF_FD_TYPE_RAW_TRACEPOINT,
+  BPF_FD_TYPE_TRACEPOINT,
+  BPF_FD_TYPE_KPROBE,
+  BPF_FD_TYPE_KRETPROBE,
+  BPF_FD_TYPE_UPROBE,
+  BPF_FD_TYPE_URETPROBE,
+};
+enum {
+  BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG = (1U << 0),
+  BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL = (1U << 1),
+  BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP = (1U << 2),
+};
+struct bpf_flow_keys {
+  __u16 nhoff;
+  __u16 thoff;
+  __u16 addr_proto;
+  __u8 is_frag;
+  __u8 is_first_frag;
+  __u8 is_encap;
+  __u8 ip_proto;
+  __be16 n_proto;
+  __be16 sport;
+  __be16 dport;
+  union {
+    struct {
+      __be32 ipv4_src;
+      __be32 ipv4_dst;
+    };
+    struct {
+      __u32 ipv6_src[4];
+      __u32 ipv6_dst[4];
+    };
+  };
+  __u32 flags;
+  __be32 flow_label;
+};
+struct bpf_func_info {
+  __u32 insn_off;
+  __u32 type_id;
+};
+#define BPF_LINE_INFO_LINE_NUM(line_col) ((line_col) >> 10)
+#define BPF_LINE_INFO_LINE_COL(line_col) ((line_col) & 0x3ff)
+struct bpf_line_info {
+  __u32 insn_off;
+  __u32 file_name_off;
+  __u32 line_off;
+  __u32 line_col;
+};
+struct bpf_spin_lock {
+  __u32 val;
+};
+struct bpf_timer {
+  __u64 : 64;
+  __u64 : 64;
+} __attribute__((aligned(8)));
+struct bpf_sysctl {
+  __u32 write;
+  __u32 file_pos;
+};
+struct bpf_sockopt {
+  __bpf_md_ptr(struct bpf_sock *, sk);
+  __bpf_md_ptr(void *, optval);
+  __bpf_md_ptr(void *, optval_end);
+  __s32 level;
+  __s32 optname;
+  __s32 optlen;
+  __s32 retval;
+};
+struct bpf_pidns_info {
+  __u32 pid;
+  __u32 tgid;
+};
+struct bpf_sk_lookup {
+  union {
+    __bpf_md_ptr(struct bpf_sock *, sk);
+    __u64 cookie;
+  };
+  __u32 family;
+  __u32 protocol;
+  __u32 remote_ip4;
+  __u32 remote_ip6[4];
+  __u32 remote_port;
+  __u32 local_ip4;
+  __u32 local_ip6[4];
+  __u32 local_port;
+};
+struct btf_ptr {
+  void * ptr;
+  __u32 type_id;
+  __u32 flags;
+};
+enum {
+  BTF_F_COMPACT = (1ULL << 0),
+  BTF_F_NONAME = (1ULL << 1),
+  BTF_F_PTR_RAW = (1ULL << 2),
+  BTF_F_ZERO = (1ULL << 3),
+};
+#endif
diff --git a/i686-linux-musl/include/linux/bpf_common.h b/i686-linux-musl/include/linux/bpf_common.h
new file mode 100644
index 0000000..a368db7
--- /dev/null
+++ b/i686-linux-musl/include/linux/bpf_common.h
@@ -0,0 +1,64 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_BPF_COMMON_H__
+#define _UAPI__LINUX_BPF_COMMON_H__
+#define BPF_CLASS(code) ((code) & 0x07)
+#define BPF_LD 0x00
+#define BPF_LDX 0x01
+#define BPF_ST 0x02
+#define BPF_STX 0x03
+#define BPF_ALU 0x04
+#define BPF_JMP 0x05
+#define BPF_RET 0x06
+#define BPF_MISC 0x07
+#define BPF_SIZE(code) ((code) & 0x18)
+#define BPF_W 0x00
+#define BPF_H 0x08
+#define BPF_B 0x10
+#define BPF_MODE(code) ((code) & 0xe0)
+#define BPF_IMM 0x00
+#define BPF_ABS 0x20
+#define BPF_IND 0x40
+#define BPF_MEM 0x60
+#define BPF_LEN 0x80
+#define BPF_MSH 0xa0
+#define BPF_OP(code) ((code) & 0xf0)
+#define BPF_ADD 0x00
+#define BPF_SUB 0x10
+#define BPF_MUL 0x20
+#define BPF_DIV 0x30
+#define BPF_OR 0x40
+#define BPF_AND 0x50
+#define BPF_LSH 0x60
+#define BPF_RSH 0x70
+#define BPF_NEG 0x80
+#define BPF_MOD 0x90
+#define BPF_XOR 0xa0
+#define BPF_JA 0x00
+#define BPF_JEQ 0x10
+#define BPF_JGT 0x20
+#define BPF_JGE 0x30
+#define BPF_JSET 0x40
+#define BPF_SRC(code) ((code) & 0x08)
+#define BPF_K 0x00
+#define BPF_X 0x08
+#ifndef BPF_MAXINSNS
+#define BPF_MAXINSNS 4096
+#endif
+#endif
diff --git a/i686-linux-musl/include/linux/bpf_perf_event.h b/i686-linux-musl/include/linux/bpf_perf_event.h
new file mode 100644
index 0000000..190b916
--- /dev/null
+++ b/i686-linux-musl/include/linux/bpf_perf_event.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_BPF_PERF_EVENT_H__
+#define _UAPI__LINUX_BPF_PERF_EVENT_H__
+#include <asm/bpf_perf_event.h>
+struct bpf_perf_event_data {
+  bpf_user_pt_regs_t regs;
+  __u64 sample_period;
+  __u64 addr;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/bpfilter.h b/i686-linux-musl/include/linux/bpfilter.h
new file mode 100644
index 0000000..a7d8d66
--- /dev/null
+++ b/i686-linux-musl/include/linux/bpfilter.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_BPFILTER_H
+#define _UAPI_LINUX_BPFILTER_H
+#include <linux/if.h>
+enum {
+  BPFILTER_IPT_SO_SET_REPLACE = 64,
+  BPFILTER_IPT_SO_SET_ADD_COUNTERS = 65,
+  BPFILTER_IPT_SET_MAX,
+};
+enum {
+  BPFILTER_IPT_SO_GET_INFO = 64,
+  BPFILTER_IPT_SO_GET_ENTRIES = 65,
+  BPFILTER_IPT_SO_GET_REVISION_MATCH = 66,
+  BPFILTER_IPT_SO_GET_REVISION_TARGET = 67,
+  BPFILTER_IPT_GET_MAX,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/bpqether.h b/i686-linux-musl/include/linux/bpqether.h
new file mode 100644
index 0000000..0b0b861
--- /dev/null
+++ b/i686-linux-musl/include/linux/bpqether.h
@@ -0,0 +1,41 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __BPQETHER_H
+#define __BPQETHER_H
+#include <linux/if_ether.h>
+#define SIOCSBPQETHOPT (SIOCDEVPRIVATE + 0)
+#define SIOCSBPQETHADDR (SIOCDEVPRIVATE + 1)
+struct bpq_ethaddr {
+  unsigned char destination[ETH_ALEN];
+  unsigned char accept[ETH_ALEN];
+};
+#define SIOCGBPQETHPARAM 0x5000
+#define SIOCSBPQETHPARAM 0x5001
+struct bpq_req {
+  int cmd;
+  int speed;
+  int clockmode;
+  int txdelay;
+  unsigned char persist;
+  int slotime;
+  int squeldelay;
+  int dmachan;
+  int irq;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/bsg.h b/i686-linux-musl/include/linux/bsg.h
new file mode 100644
index 0000000..0fcf8fc
--- /dev/null
+++ b/i686-linux-musl/include/linux/bsg.h
@@ -0,0 +1,63 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPIBSG_H
+#define _UAPIBSG_H
+#include <linux/types.h>
+#define BSG_PROTOCOL_SCSI 0
+#define BSG_SUB_PROTOCOL_SCSI_CMD 0
+#define BSG_SUB_PROTOCOL_SCSI_TMF 1
+#define BSG_SUB_PROTOCOL_SCSI_TRANSPORT 2
+#define BSG_FLAG_Q_AT_TAIL 0x10
+#define BSG_FLAG_Q_AT_HEAD 0x20
+struct sg_io_v4 {
+  __s32 guard;
+  __u32 protocol;
+  __u32 subprotocol;
+  __u32 request_len;
+  __u64 request;
+  __u64 request_tag;
+  __u32 request_attr;
+  __u32 request_priority;
+  __u32 request_extra;
+  __u32 max_response_len;
+  __u64 response;
+  __u32 dout_iovec_count;
+  __u32 dout_xfer_len;
+  __u32 din_iovec_count;
+  __u32 din_xfer_len;
+  __u64 dout_xferp;
+  __u64 din_xferp;
+  __u32 timeout;
+  __u32 flags;
+  __u64 usr_ptr;
+  __u32 spare_in;
+  __u32 driver_status;
+  __u32 transport_status;
+  __u32 device_status;
+  __u32 retry_delay;
+  __u32 info;
+  __u32 duration;
+  __u32 response_len;
+  __s32 din_resid;
+  __s32 dout_resid;
+  __u64 generated_tag;
+  __u32 spare_out;
+  __u32 padding;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/bt-bmc.h b/i686-linux-musl/include/linux/bt-bmc.h
new file mode 100644
index 0000000..4bd566d
--- /dev/null
+++ b/i686-linux-musl/include/linux/bt-bmc.h
@@ -0,0 +1,24 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_BT_BMC_H
+#define _UAPI_LINUX_BT_BMC_H
+#include <linux/ioctl.h>
+#define __BT_BMC_IOCTL_MAGIC 0xb1
+#define BT_BMC_IOCTL_SMS_ATN _IO(__BT_BMC_IOCTL_MAGIC, 0x00)
+#endif
diff --git a/i686-linux-musl/include/linux/btf.h b/i686-linux-musl/include/linux/btf.h
new file mode 100644
index 0000000..1bb64db
--- /dev/null
+++ b/i686-linux-musl/include/linux/btf.h
@@ -0,0 +1,117 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#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,
+  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;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/btrfs.h b/i686-linux-musl/include/linux/btrfs.h
new file mode 100644
index 0000000..08b96a3
--- /dev/null
+++ b/i686-linux-musl/include/linux/btrfs.h
@@ -0,0 +1,537 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_BTRFS_H
+#define _UAPI_LINUX_BTRFS_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define BTRFS_IOCTL_MAGIC 0x94
+#define BTRFS_VOL_NAME_MAX 255
+#define BTRFS_LABEL_SIZE 256
+#define BTRFS_PATH_NAME_MAX 4087
+struct btrfs_ioctl_vol_args {
+  __s64 fd;
+  char name[BTRFS_PATH_NAME_MAX + 1];
+};
+#define BTRFS_DEVICE_PATH_NAME_MAX 1024
+#define BTRFS_SUBVOL_NAME_MAX 4039
+#define BTRFS_SUBVOL_CREATE_ASYNC (1ULL << 0)
+#define BTRFS_SUBVOL_RDONLY (1ULL << 1)
+#define BTRFS_SUBVOL_QGROUP_INHERIT (1ULL << 2)
+#define BTRFS_DEVICE_SPEC_BY_ID (1ULL << 3)
+#define BTRFS_SUBVOL_SPEC_BY_ID (1ULL << 4)
+#define BTRFS_VOL_ARG_V2_FLAGS_SUPPORTED (BTRFS_SUBVOL_RDONLY | BTRFS_SUBVOL_QGROUP_INHERIT | BTRFS_DEVICE_SPEC_BY_ID | BTRFS_SUBVOL_SPEC_BY_ID)
+#define BTRFS_FSID_SIZE 16
+#define BTRFS_UUID_SIZE 16
+#define BTRFS_UUID_UNPARSED_SIZE 37
+#define BTRFS_QGROUP_LIMIT_MAX_RFER (1ULL << 0)
+#define BTRFS_QGROUP_LIMIT_MAX_EXCL (1ULL << 1)
+#define BTRFS_QGROUP_LIMIT_RSV_RFER (1ULL << 2)
+#define BTRFS_QGROUP_LIMIT_RSV_EXCL (1ULL << 3)
+#define BTRFS_QGROUP_LIMIT_RFER_CMPR (1ULL << 4)
+#define BTRFS_QGROUP_LIMIT_EXCL_CMPR (1ULL << 5)
+struct btrfs_qgroup_limit {
+  __u64 flags;
+  __u64 max_rfer;
+  __u64 max_excl;
+  __u64 rsv_rfer;
+  __u64 rsv_excl;
+};
+#define BTRFS_QGROUP_INHERIT_SET_LIMITS (1ULL << 0)
+struct btrfs_qgroup_inherit {
+  __u64 flags;
+  __u64 num_qgroups;
+  __u64 num_ref_copies;
+  __u64 num_excl_copies;
+  struct btrfs_qgroup_limit lim;
+  __u64 qgroups[0];
+};
+struct btrfs_ioctl_qgroup_limit_args {
+  __u64 qgroupid;
+  struct btrfs_qgroup_limit lim;
+};
+#define BTRFS_DEVICE_REMOVE_ARGS_MASK (BTRFS_DEVICE_SPEC_BY_ID)
+#define BTRFS_SUBVOL_CREATE_ARGS_MASK (BTRFS_SUBVOL_RDONLY | BTRFS_SUBVOL_QGROUP_INHERIT)
+#define BTRFS_SUBVOL_DELETE_ARGS_MASK (BTRFS_SUBVOL_SPEC_BY_ID)
+struct btrfs_ioctl_vol_args_v2 {
+  __s64 fd;
+  __u64 transid;
+  __u64 flags;
+  union {
+    struct {
+      __u64 size;
+      struct btrfs_qgroup_inherit __user * qgroup_inherit;
+    };
+    __u64 unused[4];
+  };
+  union {
+    char name[BTRFS_SUBVOL_NAME_MAX + 1];
+    __u64 devid;
+    __u64 subvolid;
+  };
+};
+struct btrfs_scrub_progress {
+  __u64 data_extents_scrubbed;
+  __u64 tree_extents_scrubbed;
+  __u64 data_bytes_scrubbed;
+  __u64 tree_bytes_scrubbed;
+  __u64 read_errors;
+  __u64 csum_errors;
+  __u64 verify_errors;
+  __u64 no_csum;
+  __u64 csum_discards;
+  __u64 super_errors;
+  __u64 malloc_errors;
+  __u64 uncorrectable_errors;
+  __u64 corrected_errors;
+  __u64 last_physical;
+  __u64 unverified_errors;
+};
+#define BTRFS_SCRUB_READONLY 1
+struct btrfs_ioctl_scrub_args {
+  __u64 devid;
+  __u64 start;
+  __u64 end;
+  __u64 flags;
+  struct btrfs_scrub_progress progress;
+  __u64 unused[(1024 - 32 - sizeof(struct btrfs_scrub_progress)) / 8];
+};
+#define BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_ALWAYS 0
+#define BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_AVOID 1
+struct btrfs_ioctl_dev_replace_start_params {
+  __u64 srcdevid;
+  __u64 cont_reading_from_srcdev_mode;
+  __u8 srcdev_name[BTRFS_DEVICE_PATH_NAME_MAX + 1];
+  __u8 tgtdev_name[BTRFS_DEVICE_PATH_NAME_MAX + 1];
+};
+#define BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED 0
+#define BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED 1
+#define BTRFS_IOCTL_DEV_REPLACE_STATE_FINISHED 2
+#define BTRFS_IOCTL_DEV_REPLACE_STATE_CANCELED 3
+#define BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED 4
+struct btrfs_ioctl_dev_replace_status_params {
+  __u64 replace_state;
+  __u64 progress_1000;
+  __u64 time_started;
+  __u64 time_stopped;
+  __u64 num_write_errors;
+  __u64 num_uncorrectable_read_errors;
+};
+#define BTRFS_IOCTL_DEV_REPLACE_CMD_START 0
+#define BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS 1
+#define BTRFS_IOCTL_DEV_REPLACE_CMD_CANCEL 2
+#define BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR 0
+#define BTRFS_IOCTL_DEV_REPLACE_RESULT_NOT_STARTED 1
+#define BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED 2
+#define BTRFS_IOCTL_DEV_REPLACE_RESULT_SCRUB_INPROGRESS 3
+struct btrfs_ioctl_dev_replace_args {
+  __u64 cmd;
+  __u64 result;
+  union {
+    struct btrfs_ioctl_dev_replace_start_params start;
+    struct btrfs_ioctl_dev_replace_status_params status;
+  };
+  __u64 spare[64];
+};
+struct btrfs_ioctl_dev_info_args {
+  __u64 devid;
+  __u8 uuid[BTRFS_UUID_SIZE];
+  __u64 bytes_used;
+  __u64 total_bytes;
+  __u64 unused[379];
+  __u8 path[BTRFS_DEVICE_PATH_NAME_MAX];
+};
+#define BTRFS_FS_INFO_FLAG_CSUM_INFO (1 << 0)
+#define BTRFS_FS_INFO_FLAG_GENERATION (1 << 1)
+#define BTRFS_FS_INFO_FLAG_METADATA_UUID (1 << 2)
+struct btrfs_ioctl_fs_info_args {
+  __u64 max_id;
+  __u64 num_devices;
+  __u8 fsid[BTRFS_FSID_SIZE];
+  __u32 nodesize;
+  __u32 sectorsize;
+  __u32 clone_alignment;
+  __u16 csum_type;
+  __u16 csum_size;
+  __u64 flags;
+  __u64 generation;
+  __u8 metadata_uuid[BTRFS_FSID_SIZE];
+  __u8 reserved[944];
+};
+#define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE (1ULL << 0)
+#define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID (1ULL << 1)
+#define BTRFS_FEATURE_COMPAT_RO_VERITY (1ULL << 2)
+#define BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF (1ULL << 0)
+#define BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL (1ULL << 1)
+#define BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS (1ULL << 2)
+#define BTRFS_FEATURE_INCOMPAT_COMPRESS_LZO (1ULL << 3)
+#define BTRFS_FEATURE_INCOMPAT_COMPRESS_ZSTD (1ULL << 4)
+#define BTRFS_FEATURE_INCOMPAT_BIG_METADATA (1ULL << 5)
+#define BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF (1ULL << 6)
+#define BTRFS_FEATURE_INCOMPAT_RAID56 (1ULL << 7)
+#define BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA (1ULL << 8)
+#define BTRFS_FEATURE_INCOMPAT_NO_HOLES (1ULL << 9)
+#define BTRFS_FEATURE_INCOMPAT_METADATA_UUID (1ULL << 10)
+#define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11)
+#define BTRFS_FEATURE_INCOMPAT_ZONED (1ULL << 12)
+struct btrfs_ioctl_feature_flags {
+  __u64 compat_flags;
+  __u64 compat_ro_flags;
+  __u64 incompat_flags;
+};
+#define BTRFS_BALANCE_CTL_PAUSE 1
+#define BTRFS_BALANCE_CTL_CANCEL 2
+struct btrfs_balance_args {
+  __u64 profiles;
+  union {
+    __u64 usage;
+    struct {
+      __u32 usage_min;
+      __u32 usage_max;
+    };
+  };
+  __u64 devid;
+  __u64 pstart;
+  __u64 pend;
+  __u64 vstart;
+  __u64 vend;
+  __u64 target;
+  __u64 flags;
+  union {
+    __u64 limit;
+    struct {
+      __u32 limit_min;
+      __u32 limit_max;
+    };
+  };
+  __u32 stripes_min;
+  __u32 stripes_max;
+  __u64 unused[6];
+} __attribute__((__packed__));
+struct btrfs_balance_progress {
+  __u64 expected;
+  __u64 considered;
+  __u64 completed;
+};
+#define BTRFS_BALANCE_DATA (1ULL << 0)
+#define BTRFS_BALANCE_SYSTEM (1ULL << 1)
+#define BTRFS_BALANCE_METADATA (1ULL << 2)
+#define BTRFS_BALANCE_TYPE_MASK (BTRFS_BALANCE_DATA | BTRFS_BALANCE_SYSTEM | BTRFS_BALANCE_METADATA)
+#define BTRFS_BALANCE_FORCE (1ULL << 3)
+#define BTRFS_BALANCE_RESUME (1ULL << 4)
+#define BTRFS_BALANCE_ARGS_PROFILES (1ULL << 0)
+#define BTRFS_BALANCE_ARGS_USAGE (1ULL << 1)
+#define BTRFS_BALANCE_ARGS_DEVID (1ULL << 2)
+#define BTRFS_BALANCE_ARGS_DRANGE (1ULL << 3)
+#define BTRFS_BALANCE_ARGS_VRANGE (1ULL << 4)
+#define BTRFS_BALANCE_ARGS_LIMIT (1ULL << 5)
+#define BTRFS_BALANCE_ARGS_LIMIT_RANGE (1ULL << 6)
+#define BTRFS_BALANCE_ARGS_STRIPES_RANGE (1ULL << 7)
+#define BTRFS_BALANCE_ARGS_USAGE_RANGE (1ULL << 10)
+#define BTRFS_BALANCE_ARGS_MASK (BTRFS_BALANCE_ARGS_PROFILES | BTRFS_BALANCE_ARGS_USAGE | BTRFS_BALANCE_ARGS_DEVID | BTRFS_BALANCE_ARGS_DRANGE | BTRFS_BALANCE_ARGS_VRANGE | BTRFS_BALANCE_ARGS_LIMIT | BTRFS_BALANCE_ARGS_LIMIT_RANGE | BTRFS_BALANCE_ARGS_STRIPES_RANGE | BTRFS_BALANCE_ARGS_USAGE_RANGE)
+#define BTRFS_BALANCE_ARGS_CONVERT (1ULL << 8)
+#define BTRFS_BALANCE_ARGS_SOFT (1ULL << 9)
+#define BTRFS_BALANCE_STATE_RUNNING (1ULL << 0)
+#define BTRFS_BALANCE_STATE_PAUSE_REQ (1ULL << 1)
+#define BTRFS_BALANCE_STATE_CANCEL_REQ (1ULL << 2)
+struct btrfs_ioctl_balance_args {
+  __u64 flags;
+  __u64 state;
+  struct btrfs_balance_args data;
+  struct btrfs_balance_args meta;
+  struct btrfs_balance_args sys;
+  struct btrfs_balance_progress stat;
+  __u64 unused[72];
+};
+#define BTRFS_INO_LOOKUP_PATH_MAX 4080
+struct btrfs_ioctl_ino_lookup_args {
+  __u64 treeid;
+  __u64 objectid;
+  char name[BTRFS_INO_LOOKUP_PATH_MAX];
+};
+#define BTRFS_INO_LOOKUP_USER_PATH_MAX (4080 - BTRFS_VOL_NAME_MAX - 1)
+struct btrfs_ioctl_ino_lookup_user_args {
+  __u64 dirid;
+  __u64 treeid;
+  char name[BTRFS_VOL_NAME_MAX + 1];
+  char path[BTRFS_INO_LOOKUP_USER_PATH_MAX];
+};
+struct btrfs_ioctl_search_key {
+  __u64 tree_id;
+  __u64 min_objectid;
+  __u64 max_objectid;
+  __u64 min_offset;
+  __u64 max_offset;
+  __u64 min_transid;
+  __u64 max_transid;
+  __u32 min_type;
+  __u32 max_type;
+  __u32 nr_items;
+  __u32 unused;
+  __u64 unused1;
+  __u64 unused2;
+  __u64 unused3;
+  __u64 unused4;
+};
+struct btrfs_ioctl_search_header {
+  __u64 transid;
+  __u64 objectid;
+  __u64 offset;
+  __u32 type;
+  __u32 len;
+};
+#define BTRFS_SEARCH_ARGS_BUFSIZE (4096 - sizeof(struct btrfs_ioctl_search_key))
+struct btrfs_ioctl_search_args {
+  struct btrfs_ioctl_search_key key;
+  char buf[BTRFS_SEARCH_ARGS_BUFSIZE];
+};
+struct btrfs_ioctl_search_args_v2 {
+  struct btrfs_ioctl_search_key key;
+  __u64 buf_size;
+  __u64 buf[0];
+};
+struct btrfs_ioctl_clone_range_args {
+  __s64 src_fd;
+  __u64 src_offset, src_length;
+  __u64 dest_offset;
+};
+#define BTRFS_DEFRAG_RANGE_COMPRESS 1
+#define BTRFS_DEFRAG_RANGE_START_IO 2
+struct btrfs_ioctl_defrag_range_args {
+  __u64 start;
+  __u64 len;
+  __u64 flags;
+  __u32 extent_thresh;
+  __u32 compress_type;
+  __u32 unused[4];
+};
+#define BTRFS_SAME_DATA_DIFFERS 1
+struct btrfs_ioctl_same_extent_info {
+  __s64 fd;
+  __u64 logical_offset;
+  __u64 bytes_deduped;
+  __s32 status;
+  __u32 reserved;
+};
+struct btrfs_ioctl_same_args {
+  __u64 logical_offset;
+  __u64 length;
+  __u16 dest_count;
+  __u16 reserved1;
+  __u32 reserved2;
+  struct btrfs_ioctl_same_extent_info info[0];
+};
+struct btrfs_ioctl_space_info {
+  __u64 flags;
+  __u64 total_bytes;
+  __u64 used_bytes;
+};
+struct btrfs_ioctl_space_args {
+  __u64 space_slots;
+  __u64 total_spaces;
+  struct btrfs_ioctl_space_info spaces[0];
+};
+struct btrfs_data_container {
+  __u32 bytes_left;
+  __u32 bytes_missing;
+  __u32 elem_cnt;
+  __u32 elem_missed;
+  __u64 val[0];
+};
+struct btrfs_ioctl_ino_path_args {
+  __u64 inum;
+  __u64 size;
+  __u64 reserved[4];
+  __u64 fspath;
+};
+struct btrfs_ioctl_logical_ino_args {
+  __u64 logical;
+  __u64 size;
+  __u64 reserved[3];
+  __u64 flags;
+  __u64 inodes;
+};
+#define BTRFS_LOGICAL_INO_ARGS_IGNORE_OFFSET (1ULL << 0)
+enum btrfs_dev_stat_values {
+  BTRFS_DEV_STAT_WRITE_ERRS,
+  BTRFS_DEV_STAT_READ_ERRS,
+  BTRFS_DEV_STAT_FLUSH_ERRS,
+  BTRFS_DEV_STAT_CORRUPTION_ERRS,
+  BTRFS_DEV_STAT_GENERATION_ERRS,
+  BTRFS_DEV_STAT_VALUES_MAX
+};
+#define BTRFS_DEV_STATS_RESET (1ULL << 0)
+struct btrfs_ioctl_get_dev_stats {
+  __u64 devid;
+  __u64 nr_items;
+  __u64 flags;
+  __u64 values[BTRFS_DEV_STAT_VALUES_MAX];
+  __u64 unused[128 - 2 - BTRFS_DEV_STAT_VALUES_MAX];
+};
+#define BTRFS_QUOTA_CTL_ENABLE 1
+#define BTRFS_QUOTA_CTL_DISABLE 2
+#define BTRFS_QUOTA_CTL_RESCAN__NOTUSED 3
+struct btrfs_ioctl_quota_ctl_args {
+  __u64 cmd;
+  __u64 status;
+};
+struct btrfs_ioctl_quota_rescan_args {
+  __u64 flags;
+  __u64 progress;
+  __u64 reserved[6];
+};
+struct btrfs_ioctl_qgroup_assign_args {
+  __u64 assign;
+  __u64 src;
+  __u64 dst;
+};
+struct btrfs_ioctl_qgroup_create_args {
+  __u64 create;
+  __u64 qgroupid;
+};
+struct btrfs_ioctl_timespec {
+  __u64 sec;
+  __u32 nsec;
+};
+struct btrfs_ioctl_received_subvol_args {
+  char uuid[BTRFS_UUID_SIZE];
+  __u64 stransid;
+  __u64 rtransid;
+  struct btrfs_ioctl_timespec stime;
+  struct btrfs_ioctl_timespec rtime;
+  __u64 flags;
+  __u64 reserved[16];
+};
+#define BTRFS_SEND_FLAG_NO_FILE_DATA 0x1
+#define BTRFS_SEND_FLAG_OMIT_STREAM_HEADER 0x2
+#define BTRFS_SEND_FLAG_OMIT_END_CMD 0x4
+#define BTRFS_SEND_FLAG_VERSION 0x8
+#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION)
+struct btrfs_ioctl_send_args {
+  __s64 send_fd;
+  __u64 clone_sources_count;
+  __u64 __user * clone_sources;
+  __u64 parent_root;
+  __u64 flags;
+  __u32 version;
+  __u8 reserved[28];
+};
+struct btrfs_ioctl_get_subvol_info_args {
+  __u64 treeid;
+  char name[BTRFS_VOL_NAME_MAX + 1];
+  __u64 parent_id;
+  __u64 dirid;
+  __u64 generation;
+  __u64 flags;
+  __u8 uuid[BTRFS_UUID_SIZE];
+  __u8 parent_uuid[BTRFS_UUID_SIZE];
+  __u8 received_uuid[BTRFS_UUID_SIZE];
+  __u64 ctransid;
+  __u64 otransid;
+  __u64 stransid;
+  __u64 rtransid;
+  struct btrfs_ioctl_timespec ctime;
+  struct btrfs_ioctl_timespec otime;
+  struct btrfs_ioctl_timespec stime;
+  struct btrfs_ioctl_timespec rtime;
+  __u64 reserved[8];
+};
+#define BTRFS_MAX_ROOTREF_BUFFER_NUM 255
+struct btrfs_ioctl_get_subvol_rootref_args {
+  __u64 min_treeid;
+  struct {
+    __u64 treeid;
+    __u64 dirid;
+  } rootref[BTRFS_MAX_ROOTREF_BUFFER_NUM];
+  __u8 num_items;
+  __u8 align[7];
+};
+enum btrfs_err_code {
+  BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET = 1,
+  BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET,
+  BTRFS_ERROR_DEV_RAID5_MIN_NOT_MET,
+  BTRFS_ERROR_DEV_RAID6_MIN_NOT_MET,
+  BTRFS_ERROR_DEV_TGT_REPLACE,
+  BTRFS_ERROR_DEV_MISSING_NOT_FOUND,
+  BTRFS_ERROR_DEV_ONLY_WRITABLE,
+  BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS,
+  BTRFS_ERROR_DEV_RAID1C3_MIN_NOT_MET,
+  BTRFS_ERROR_DEV_RAID1C4_MIN_NOT_MET,
+};
+#define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_RESIZE _IOW(BTRFS_IOCTL_MAGIC, 3, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_SCAN_DEV _IOW(BTRFS_IOCTL_MAGIC, 4, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_FORGET_DEV _IOW(BTRFS_IOCTL_MAGIC, 5, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_TRANS_START _IO(BTRFS_IOCTL_MAGIC, 6)
+#define BTRFS_IOC_TRANS_END _IO(BTRFS_IOCTL_MAGIC, 7)
+#define BTRFS_IOC_SYNC _IO(BTRFS_IOCTL_MAGIC, 8)
+#define BTRFS_IOC_CLONE _IOW(BTRFS_IOCTL_MAGIC, 9, int)
+#define BTRFS_IOC_ADD_DEV _IOW(BTRFS_IOCTL_MAGIC, 10, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_RM_DEV _IOW(BTRFS_IOCTL_MAGIC, 11, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_BALANCE _IOW(BTRFS_IOCTL_MAGIC, 12, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, struct btrfs_ioctl_clone_range_args)
+#define BTRFS_IOC_SUBVOL_CREATE _IOW(BTRFS_IOCTL_MAGIC, 14, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_SNAP_DESTROY _IOW(BTRFS_IOCTL_MAGIC, 15, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_DEFRAG_RANGE _IOW(BTRFS_IOCTL_MAGIC, 16, struct btrfs_ioctl_defrag_range_args)
+#define BTRFS_IOC_TREE_SEARCH _IOWR(BTRFS_IOCTL_MAGIC, 17, struct btrfs_ioctl_search_args)
+#define BTRFS_IOC_TREE_SEARCH_V2 _IOWR(BTRFS_IOCTL_MAGIC, 17, struct btrfs_ioctl_search_args_v2)
+#define BTRFS_IOC_INO_LOOKUP _IOWR(BTRFS_IOCTL_MAGIC, 18, struct btrfs_ioctl_ino_lookup_args)
+#define BTRFS_IOC_DEFAULT_SUBVOL _IOW(BTRFS_IOCTL_MAGIC, 19, __u64)
+#define BTRFS_IOC_SPACE_INFO _IOWR(BTRFS_IOCTL_MAGIC, 20, struct btrfs_ioctl_space_args)
+#define BTRFS_IOC_START_SYNC _IOR(BTRFS_IOCTL_MAGIC, 24, __u64)
+#define BTRFS_IOC_WAIT_SYNC _IOW(BTRFS_IOCTL_MAGIC, 22, __u64)
+#define BTRFS_IOC_SNAP_CREATE_V2 _IOW(BTRFS_IOCTL_MAGIC, 23, struct btrfs_ioctl_vol_args_v2)
+#define BTRFS_IOC_SUBVOL_CREATE_V2 _IOW(BTRFS_IOCTL_MAGIC, 24, struct btrfs_ioctl_vol_args_v2)
+#define BTRFS_IOC_SUBVOL_GETFLAGS _IOR(BTRFS_IOCTL_MAGIC, 25, __u64)
+#define BTRFS_IOC_SUBVOL_SETFLAGS _IOW(BTRFS_IOCTL_MAGIC, 26, __u64)
+#define BTRFS_IOC_SCRUB _IOWR(BTRFS_IOCTL_MAGIC, 27, struct btrfs_ioctl_scrub_args)
+#define BTRFS_IOC_SCRUB_CANCEL _IO(BTRFS_IOCTL_MAGIC, 28)
+#define BTRFS_IOC_SCRUB_PROGRESS _IOWR(BTRFS_IOCTL_MAGIC, 29, struct btrfs_ioctl_scrub_args)
+#define BTRFS_IOC_DEV_INFO _IOWR(BTRFS_IOCTL_MAGIC, 30, struct btrfs_ioctl_dev_info_args)
+#define BTRFS_IOC_FS_INFO _IOR(BTRFS_IOCTL_MAGIC, 31, struct btrfs_ioctl_fs_info_args)
+#define BTRFS_IOC_BALANCE_V2 _IOWR(BTRFS_IOCTL_MAGIC, 32, struct btrfs_ioctl_balance_args)
+#define BTRFS_IOC_BALANCE_CTL _IOW(BTRFS_IOCTL_MAGIC, 33, int)
+#define BTRFS_IOC_BALANCE_PROGRESS _IOR(BTRFS_IOCTL_MAGIC, 34, struct btrfs_ioctl_balance_args)
+#define BTRFS_IOC_INO_PATHS _IOWR(BTRFS_IOCTL_MAGIC, 35, struct btrfs_ioctl_ino_path_args)
+#define BTRFS_IOC_LOGICAL_INO _IOWR(BTRFS_IOCTL_MAGIC, 36, struct btrfs_ioctl_logical_ino_args)
+#define BTRFS_IOC_SET_RECEIVED_SUBVOL _IOWR(BTRFS_IOCTL_MAGIC, 37, struct btrfs_ioctl_received_subvol_args)
+#define BTRFS_IOC_SEND _IOW(BTRFS_IOCTL_MAGIC, 38, struct btrfs_ioctl_send_args)
+#define BTRFS_IOC_DEVICES_READY _IOR(BTRFS_IOCTL_MAGIC, 39, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_QUOTA_CTL _IOWR(BTRFS_IOCTL_MAGIC, 40, struct btrfs_ioctl_quota_ctl_args)
+#define BTRFS_IOC_QGROUP_ASSIGN _IOW(BTRFS_IOCTL_MAGIC, 41, struct btrfs_ioctl_qgroup_assign_args)
+#define BTRFS_IOC_QGROUP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 42, struct btrfs_ioctl_qgroup_create_args)
+#define BTRFS_IOC_QGROUP_LIMIT _IOR(BTRFS_IOCTL_MAGIC, 43, struct btrfs_ioctl_qgroup_limit_args)
+#define BTRFS_IOC_QUOTA_RESCAN _IOW(BTRFS_IOCTL_MAGIC, 44, struct btrfs_ioctl_quota_rescan_args)
+#define BTRFS_IOC_QUOTA_RESCAN_STATUS _IOR(BTRFS_IOCTL_MAGIC, 45, struct btrfs_ioctl_quota_rescan_args)
+#define BTRFS_IOC_QUOTA_RESCAN_WAIT _IO(BTRFS_IOCTL_MAGIC, 46)
+#define BTRFS_IOC_GET_FSLABEL FS_IOC_GETFSLABEL
+#define BTRFS_IOC_SET_FSLABEL FS_IOC_SETFSLABEL
+#define BTRFS_IOC_GET_DEV_STATS _IOWR(BTRFS_IOCTL_MAGIC, 52, struct btrfs_ioctl_get_dev_stats)
+#define BTRFS_IOC_DEV_REPLACE _IOWR(BTRFS_IOCTL_MAGIC, 53, struct btrfs_ioctl_dev_replace_args)
+#define BTRFS_IOC_FILE_EXTENT_SAME _IOWR(BTRFS_IOCTL_MAGIC, 54, struct btrfs_ioctl_same_args)
+#define BTRFS_IOC_GET_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57, struct btrfs_ioctl_feature_flags)
+#define BTRFS_IOC_SET_FEATURES _IOW(BTRFS_IOCTL_MAGIC, 57, struct btrfs_ioctl_feature_flags[2])
+#define BTRFS_IOC_GET_SUPPORTED_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57, struct btrfs_ioctl_feature_flags[3])
+#define BTRFS_IOC_RM_DEV_V2 _IOW(BTRFS_IOCTL_MAGIC, 58, struct btrfs_ioctl_vol_args_v2)
+#define BTRFS_IOC_LOGICAL_INO_V2 _IOWR(BTRFS_IOCTL_MAGIC, 59, struct btrfs_ioctl_logical_ino_args)
+#define BTRFS_IOC_GET_SUBVOL_INFO _IOR(BTRFS_IOCTL_MAGIC, 60, struct btrfs_ioctl_get_subvol_info_args)
+#define BTRFS_IOC_GET_SUBVOL_ROOTREF _IOWR(BTRFS_IOCTL_MAGIC, 61, struct btrfs_ioctl_get_subvol_rootref_args)
+#define BTRFS_IOC_INO_LOOKUP_USER _IOWR(BTRFS_IOCTL_MAGIC, 62, struct btrfs_ioctl_ino_lookup_user_args)
+#define BTRFS_IOC_SNAP_DESTROY_V2 _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2)
+#endif
diff --git a/i686-linux-musl/include/linux/btrfs_tree.h b/i686-linux-musl/include/linux/btrfs_tree.h
new file mode 100644
index 0000000..0476733
--- /dev/null
+++ b/i686-linux-musl/include/linux/btrfs_tree.h
@@ -0,0 +1,434 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _BTRFS_CTREE_H_
+#define _BTRFS_CTREE_H_
+#include <linux/btrfs.h>
+#include <linux/types.h>
+#include <stddef.h>
+#define BTRFS_ROOT_TREE_OBJECTID 1ULL
+#define BTRFS_EXTENT_TREE_OBJECTID 2ULL
+#define BTRFS_CHUNK_TREE_OBJECTID 3ULL
+#define BTRFS_DEV_TREE_OBJECTID 4ULL
+#define BTRFS_FS_TREE_OBJECTID 5ULL
+#define BTRFS_ROOT_TREE_DIR_OBJECTID 6ULL
+#define BTRFS_CSUM_TREE_OBJECTID 7ULL
+#define BTRFS_QUOTA_TREE_OBJECTID 8ULL
+#define BTRFS_UUID_TREE_OBJECTID 9ULL
+#define BTRFS_FREE_SPACE_TREE_OBJECTID 10ULL
+#define BTRFS_DEV_STATS_OBJECTID 0ULL
+#define BTRFS_BALANCE_OBJECTID - 4ULL
+#define BTRFS_ORPHAN_OBJECTID - 5ULL
+#define BTRFS_TREE_LOG_OBJECTID - 6ULL
+#define BTRFS_TREE_LOG_FIXUP_OBJECTID - 7ULL
+#define BTRFS_TREE_RELOC_OBJECTID - 8ULL
+#define BTRFS_DATA_RELOC_TREE_OBJECTID - 9ULL
+#define BTRFS_EXTENT_CSUM_OBJECTID - 10ULL
+#define BTRFS_FREE_SPACE_OBJECTID - 11ULL
+#define BTRFS_FREE_INO_OBJECTID - 12ULL
+#define BTRFS_MULTIPLE_OBJECTIDS - 255ULL
+#define BTRFS_FIRST_FREE_OBJECTID 256ULL
+#define BTRFS_LAST_FREE_OBJECTID - 256ULL
+#define BTRFS_FIRST_CHUNK_TREE_OBJECTID 256ULL
+#define BTRFS_DEV_ITEMS_OBJECTID 1ULL
+#define BTRFS_BTREE_INODE_OBJECTID 1
+#define BTRFS_EMPTY_SUBVOL_DIR_OBJECTID 2
+#define BTRFS_DEV_REPLACE_DEVID 0ULL
+#define BTRFS_INODE_ITEM_KEY 1
+#define BTRFS_INODE_REF_KEY 12
+#define BTRFS_INODE_EXTREF_KEY 13
+#define BTRFS_XATTR_ITEM_KEY 24
+#define BTRFS_VERITY_DESC_ITEM_KEY 36
+#define BTRFS_VERITY_MERKLE_ITEM_KEY 37
+#define BTRFS_ORPHAN_ITEM_KEY 48
+#define BTRFS_DIR_LOG_ITEM_KEY 60
+#define BTRFS_DIR_LOG_INDEX_KEY 72
+#define BTRFS_DIR_ITEM_KEY 84
+#define BTRFS_DIR_INDEX_KEY 96
+#define BTRFS_EXTENT_DATA_KEY 108
+#define BTRFS_EXTENT_CSUM_KEY 128
+#define BTRFS_ROOT_ITEM_KEY 132
+#define BTRFS_ROOT_BACKREF_KEY 144
+#define BTRFS_ROOT_REF_KEY 156
+#define BTRFS_EXTENT_ITEM_KEY 168
+#define BTRFS_METADATA_ITEM_KEY 169
+#define BTRFS_TREE_BLOCK_REF_KEY 176
+#define BTRFS_EXTENT_DATA_REF_KEY 178
+#define BTRFS_EXTENT_REF_V0_KEY 180
+#define BTRFS_SHARED_BLOCK_REF_KEY 182
+#define BTRFS_SHARED_DATA_REF_KEY 184
+#define BTRFS_BLOCK_GROUP_ITEM_KEY 192
+#define BTRFS_FREE_SPACE_INFO_KEY 198
+#define BTRFS_FREE_SPACE_EXTENT_KEY 199
+#define BTRFS_FREE_SPACE_BITMAP_KEY 200
+#define BTRFS_DEV_EXTENT_KEY 204
+#define BTRFS_DEV_ITEM_KEY 216
+#define BTRFS_CHUNK_ITEM_KEY 228
+#define BTRFS_QGROUP_STATUS_KEY 240
+#define BTRFS_QGROUP_INFO_KEY 242
+#define BTRFS_QGROUP_LIMIT_KEY 244
+#define BTRFS_QGROUP_RELATION_KEY 246
+#define BTRFS_BALANCE_ITEM_KEY 248
+#define BTRFS_TEMPORARY_ITEM_KEY 248
+#define BTRFS_DEV_STATS_KEY 249
+#define BTRFS_PERSISTENT_ITEM_KEY 249
+#define BTRFS_DEV_REPLACE_KEY 250
+#if BTRFS_UUID_SIZE != 16
+#error "UUID items require BTRFS_UUID_SIZE == 16!"
+#endif
+#define BTRFS_UUID_KEY_SUBVOL 251
+#define BTRFS_UUID_KEY_RECEIVED_SUBVOL 252
+#define BTRFS_STRING_ITEM_KEY 253
+#define BTRFS_MAX_METADATA_BLOCKSIZE 65536
+#define BTRFS_CSUM_SIZE 32
+enum btrfs_csum_type {
+  BTRFS_CSUM_TYPE_CRC32 = 0,
+  BTRFS_CSUM_TYPE_XXHASH = 1,
+  BTRFS_CSUM_TYPE_SHA256 = 2,
+  BTRFS_CSUM_TYPE_BLAKE2 = 3,
+};
+#define BTRFS_FT_UNKNOWN 0
+#define BTRFS_FT_REG_FILE 1
+#define BTRFS_FT_DIR 2
+#define BTRFS_FT_CHRDEV 3
+#define BTRFS_FT_BLKDEV 4
+#define BTRFS_FT_FIFO 5
+#define BTRFS_FT_SOCK 6
+#define BTRFS_FT_SYMLINK 7
+#define BTRFS_FT_XATTR 8
+#define BTRFS_FT_MAX 9
+struct btrfs_disk_key {
+  __le64 objectid;
+  __u8 type;
+  __le64 offset;
+} __attribute__((__packed__));
+struct btrfs_key {
+  __u64 objectid;
+  __u8 type;
+  __u64 offset;
+} __attribute__((__packed__));
+struct btrfs_dev_item {
+  __le64 devid;
+  __le64 total_bytes;
+  __le64 bytes_used;
+  __le32 io_align;
+  __le32 io_width;
+  __le32 sector_size;
+  __le64 type;
+  __le64 generation;
+  __le64 start_offset;
+  __le32 dev_group;
+  __u8 seek_speed;
+  __u8 bandwidth;
+  __u8 uuid[BTRFS_UUID_SIZE];
+  __u8 fsid[BTRFS_UUID_SIZE];
+} __attribute__((__packed__));
+struct btrfs_stripe {
+  __le64 devid;
+  __le64 offset;
+  __u8 dev_uuid[BTRFS_UUID_SIZE];
+} __attribute__((__packed__));
+struct btrfs_chunk {
+  __le64 length;
+  __le64 owner;
+  __le64 stripe_len;
+  __le64 type;
+  __le32 io_align;
+  __le32 io_width;
+  __le32 sector_size;
+  __le16 num_stripes;
+  __le16 sub_stripes;
+  struct btrfs_stripe stripe;
+} __attribute__((__packed__));
+#define BTRFS_FREE_SPACE_EXTENT 1
+#define BTRFS_FREE_SPACE_BITMAP 2
+struct btrfs_free_space_entry {
+  __le64 offset;
+  __le64 bytes;
+  __u8 type;
+} __attribute__((__packed__));
+struct btrfs_free_space_header {
+  struct btrfs_disk_key location;
+  __le64 generation;
+  __le64 num_entries;
+  __le64 num_bitmaps;
+} __attribute__((__packed__));
+#define BTRFS_HEADER_FLAG_WRITTEN (1ULL << 0)
+#define BTRFS_HEADER_FLAG_RELOC (1ULL << 1)
+#define BTRFS_SUPER_FLAG_ERROR (1ULL << 2)
+#define BTRFS_SUPER_FLAG_SEEDING (1ULL << 32)
+#define BTRFS_SUPER_FLAG_METADUMP (1ULL << 33)
+#define BTRFS_SUPER_FLAG_METADUMP_V2 (1ULL << 34)
+#define BTRFS_SUPER_FLAG_CHANGING_FSID (1ULL << 35)
+#define BTRFS_SUPER_FLAG_CHANGING_FSID_V2 (1ULL << 36)
+struct btrfs_extent_item {
+  __le64 refs;
+  __le64 generation;
+  __le64 flags;
+} __attribute__((__packed__));
+struct btrfs_extent_item_v0 {
+  __le32 refs;
+} __attribute__((__packed__));
+#define BTRFS_EXTENT_FLAG_DATA (1ULL << 0)
+#define BTRFS_EXTENT_FLAG_TREE_BLOCK (1ULL << 1)
+#define BTRFS_BLOCK_FLAG_FULL_BACKREF (1ULL << 8)
+#define BTRFS_EXTENT_FLAG_SUPER (1ULL << 48)
+struct btrfs_tree_block_info {
+  struct btrfs_disk_key key;
+  __u8 level;
+} __attribute__((__packed__));
+struct btrfs_extent_data_ref {
+  __le64 root;
+  __le64 objectid;
+  __le64 offset;
+  __le32 count;
+} __attribute__((__packed__));
+struct btrfs_shared_data_ref {
+  __le32 count;
+} __attribute__((__packed__));
+struct btrfs_extent_inline_ref {
+  __u8 type;
+  __le64 offset;
+} __attribute__((__packed__));
+struct btrfs_dev_extent {
+  __le64 chunk_tree;
+  __le64 chunk_objectid;
+  __le64 chunk_offset;
+  __le64 length;
+  __u8 chunk_tree_uuid[BTRFS_UUID_SIZE];
+} __attribute__((__packed__));
+struct btrfs_inode_ref {
+  __le64 index;
+  __le16 name_len;
+} __attribute__((__packed__));
+struct btrfs_inode_extref {
+  __le64 parent_objectid;
+  __le64 index;
+  __le16 name_len;
+  __u8 name[0];
+} __attribute__((__packed__));
+struct btrfs_timespec {
+  __le64 sec;
+  __le32 nsec;
+} __attribute__((__packed__));
+struct btrfs_inode_item {
+  __le64 generation;
+  __le64 transid;
+  __le64 size;
+  __le64 nbytes;
+  __le64 block_group;
+  __le32 nlink;
+  __le32 uid;
+  __le32 gid;
+  __le32 mode;
+  __le64 rdev;
+  __le64 flags;
+  __le64 sequence;
+  __le64 reserved[4];
+  struct btrfs_timespec atime;
+  struct btrfs_timespec ctime;
+  struct btrfs_timespec mtime;
+  struct btrfs_timespec otime;
+} __attribute__((__packed__));
+struct btrfs_dir_log_item {
+  __le64 end;
+} __attribute__((__packed__));
+struct btrfs_dir_item {
+  struct btrfs_disk_key location;
+  __le64 transid;
+  __le16 data_len;
+  __le16 name_len;
+  __u8 type;
+} __attribute__((__packed__));
+#define BTRFS_ROOT_SUBVOL_RDONLY (1ULL << 0)
+#define BTRFS_ROOT_SUBVOL_DEAD (1ULL << 48)
+struct btrfs_root_item {
+  struct btrfs_inode_item inode;
+  __le64 generation;
+  __le64 root_dirid;
+  __le64 bytenr;
+  __le64 byte_limit;
+  __le64 bytes_used;
+  __le64 last_snapshot;
+  __le64 flags;
+  __le32 refs;
+  struct btrfs_disk_key drop_progress;
+  __u8 drop_level;
+  __u8 level;
+  __le64 generation_v2;
+  __u8 uuid[BTRFS_UUID_SIZE];
+  __u8 parent_uuid[BTRFS_UUID_SIZE];
+  __u8 received_uuid[BTRFS_UUID_SIZE];
+  __le64 ctransid;
+  __le64 otransid;
+  __le64 stransid;
+  __le64 rtransid;
+  struct btrfs_timespec ctime;
+  struct btrfs_timespec otime;
+  struct btrfs_timespec stime;
+  struct btrfs_timespec rtime;
+  __le64 reserved[8];
+} __attribute__((__packed__));
+struct btrfs_root_ref {
+  __le64 dirid;
+  __le64 sequence;
+  __le16 name_len;
+} __attribute__((__packed__));
+struct btrfs_disk_balance_args {
+  __le64 profiles;
+  union {
+    __le64 usage;
+    struct {
+      __le32 usage_min;
+      __le32 usage_max;
+    };
+  };
+  __le64 devid;
+  __le64 pstart;
+  __le64 pend;
+  __le64 vstart;
+  __le64 vend;
+  __le64 target;
+  __le64 flags;
+  union {
+    __le64 limit;
+    struct {
+      __le32 limit_min;
+      __le32 limit_max;
+    };
+  };
+  __le32 stripes_min;
+  __le32 stripes_max;
+  __le64 unused[6];
+} __attribute__((__packed__));
+struct btrfs_balance_item {
+  __le64 flags;
+  struct btrfs_disk_balance_args data;
+  struct btrfs_disk_balance_args meta;
+  struct btrfs_disk_balance_args sys;
+  __le64 unused[4];
+} __attribute__((__packed__));
+enum {
+  BTRFS_FILE_EXTENT_INLINE = 0,
+  BTRFS_FILE_EXTENT_REG = 1,
+  BTRFS_FILE_EXTENT_PREALLOC = 2,
+  BTRFS_NR_FILE_EXTENT_TYPES = 3,
+};
+struct btrfs_file_extent_item {
+  __le64 generation;
+  __le64 ram_bytes;
+  __u8 compression;
+  __u8 encryption;
+  __le16 other_encoding;
+  __u8 type;
+  __le64 disk_bytenr;
+  __le64 disk_num_bytes;
+  __le64 offset;
+  __le64 num_bytes;
+} __attribute__((__packed__));
+struct btrfs_csum_item {
+  __u8 csum;
+} __attribute__((__packed__));
+struct btrfs_dev_stats_item {
+  __le64 values[BTRFS_DEV_STAT_VALUES_MAX];
+} __attribute__((__packed__));
+#define BTRFS_DEV_REPLACE_ITEM_CONT_READING_FROM_SRCDEV_MODE_ALWAYS 0
+#define BTRFS_DEV_REPLACE_ITEM_CONT_READING_FROM_SRCDEV_MODE_AVOID 1
+struct btrfs_dev_replace_item {
+  __le64 src_devid;
+  __le64 cursor_left;
+  __le64 cursor_right;
+  __le64 cont_reading_from_srcdev_mode;
+  __le64 replace_state;
+  __le64 time_started;
+  __le64 time_stopped;
+  __le64 num_write_errors;
+  __le64 num_uncorrectable_read_errors;
+} __attribute__((__packed__));
+#define BTRFS_BLOCK_GROUP_DATA (1ULL << 0)
+#define BTRFS_BLOCK_GROUP_SYSTEM (1ULL << 1)
+#define BTRFS_BLOCK_GROUP_METADATA (1ULL << 2)
+#define BTRFS_BLOCK_GROUP_RAID0 (1ULL << 3)
+#define BTRFS_BLOCK_GROUP_RAID1 (1ULL << 4)
+#define BTRFS_BLOCK_GROUP_DUP (1ULL << 5)
+#define BTRFS_BLOCK_GROUP_RAID10 (1ULL << 6)
+#define BTRFS_BLOCK_GROUP_RAID5 (1ULL << 7)
+#define BTRFS_BLOCK_GROUP_RAID6 (1ULL << 8)
+#define BTRFS_BLOCK_GROUP_RAID1C3 (1ULL << 9)
+#define BTRFS_BLOCK_GROUP_RAID1C4 (1ULL << 10)
+#define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | BTRFS_SPACE_INFO_GLOBAL_RSV)
+enum btrfs_raid_types {
+  BTRFS_RAID_RAID10,
+  BTRFS_RAID_RAID1,
+  BTRFS_RAID_DUP,
+  BTRFS_RAID_RAID0,
+  BTRFS_RAID_SINGLE,
+  BTRFS_RAID_RAID5,
+  BTRFS_RAID_RAID6,
+  BTRFS_RAID_RAID1C3,
+  BTRFS_RAID_RAID1C4,
+  BTRFS_NR_RAID_TYPES
+};
+#define BTRFS_BLOCK_GROUP_TYPE_MASK (BTRFS_BLOCK_GROUP_DATA | BTRFS_BLOCK_GROUP_SYSTEM | BTRFS_BLOCK_GROUP_METADATA)
+#define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID1C3 | BTRFS_BLOCK_GROUP_RAID1C4 | BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6 | BTRFS_BLOCK_GROUP_DUP | BTRFS_BLOCK_GROUP_RAID10)
+#define BTRFS_BLOCK_GROUP_RAID56_MASK (BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6)
+#define BTRFS_BLOCK_GROUP_RAID1_MASK (BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID1C3 | BTRFS_BLOCK_GROUP_RAID1C4)
+#define BTRFS_AVAIL_ALLOC_BIT_SINGLE (1ULL << 48)
+#define BTRFS_SPACE_INFO_GLOBAL_RSV (1ULL << 49)
+#define BTRFS_EXTENDED_PROFILE_MASK (BTRFS_BLOCK_GROUP_PROFILE_MASK | BTRFS_AVAIL_ALLOC_BIT_SINGLE)
+struct btrfs_block_group_item {
+  __le64 used;
+  __le64 chunk_objectid;
+  __le64 flags;
+} __attribute__((__packed__));
+struct btrfs_free_space_info {
+  __le32 extent_count;
+  __le32 flags;
+} __attribute__((__packed__));
+#define BTRFS_FREE_SPACE_USING_BITMAPS (1ULL << 0)
+#define BTRFS_QGROUP_LEVEL_SHIFT 48
+#define BTRFS_QGROUP_STATUS_FLAG_ON (1ULL << 0)
+#define BTRFS_QGROUP_STATUS_FLAG_RESCAN (1ULL << 1)
+#define BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT (1ULL << 2)
+#define BTRFS_QGROUP_STATUS_VERSION 1
+struct btrfs_qgroup_status_item {
+  __le64 version;
+  __le64 generation;
+  __le64 flags;
+  __le64 rescan;
+} __attribute__((__packed__));
+struct btrfs_qgroup_info_item {
+  __le64 generation;
+  __le64 rfer;
+  __le64 rfer_cmpr;
+  __le64 excl;
+  __le64 excl_cmpr;
+} __attribute__((__packed__));
+struct btrfs_qgroup_limit_item {
+  __le64 flags;
+  __le64 max_rfer;
+  __le64 max_excl;
+  __le64 rsv_rfer;
+  __le64 rsv_excl;
+} __attribute__((__packed__));
+struct btrfs_verity_descriptor_item {
+  __le64 size;
+  __le64 reserved[2];
+  __u8 encryption;
+} __attribute__((__packed__));
+#endif
diff --git a/i686-linux-musl/include/linux/byteorder/big_endian.h b/i686-linux-musl/include/linux/byteorder/big_endian.h
new file mode 100644
index 0000000..b6c978b
--- /dev/null
+++ b/i686-linux-musl/include/linux/byteorder/big_endian.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_BYTEORDER_BIG_ENDIAN_H
+#define _UAPI_LINUX_BYTEORDER_BIG_ENDIAN_H
+#ifndef __BIG_ENDIAN
+#define __BIG_ENDIAN 4321
+#endif
+#ifndef __BIG_ENDIAN_BITFIELD
+#define __BIG_ENDIAN_BITFIELD
+#endif
+#include <linux/stddef.h>
+#include <linux/types.h>
+#include <linux/swab.h>
+#define __constant_htonl(x) ((__force __be32) (__u32) (x))
+#define __constant_ntohl(x) ((__force __u32) (__be32) (x))
+#define __constant_htons(x) ((__force __be16) (__u16) (x))
+#define __constant_ntohs(x) ((__force __u16) (__be16) (x))
+#define __constant_cpu_to_le64(x) ((__force __le64) ___constant_swab64((x)))
+#define __constant_le64_to_cpu(x) ___constant_swab64((__force __u64) (__le64) (x))
+#define __constant_cpu_to_le32(x) ((__force __le32) ___constant_swab32((x)))
+#define __constant_le32_to_cpu(x) ___constant_swab32((__force __u32) (__le32) (x))
+#define __constant_cpu_to_le16(x) ((__force __le16) ___constant_swab16((x)))
+#define __constant_le16_to_cpu(x) ___constant_swab16((__force __u16) (__le16) (x))
+#define __constant_cpu_to_be64(x) ((__force __be64) (__u64) (x))
+#define __constant_be64_to_cpu(x) ((__force __u64) (__be64) (x))
+#define __constant_cpu_to_be32(x) ((__force __be32) (__u32) (x))
+#define __constant_be32_to_cpu(x) ((__force __u32) (__be32) (x))
+#define __constant_cpu_to_be16(x) ((__force __be16) (__u16) (x))
+#define __constant_be16_to_cpu(x) ((__force __u16) (__be16) (x))
+#define __cpu_to_le64(x) ((__force __le64) __swab64((x)))
+#define __le64_to_cpu(x) __swab64((__force __u64) (__le64) (x))
+#define __cpu_to_le32(x) ((__force __le32) __swab32((x)))
+#define __le32_to_cpu(x) __swab32((__force __u32) (__le32) (x))
+#define __cpu_to_le16(x) ((__force __le16) __swab16((x)))
+#define __le16_to_cpu(x) __swab16((__force __u16) (__le16) (x))
+#define __cpu_to_be64(x) ((__force __be64) (__u64) (x))
+#define __be64_to_cpu(x) ((__force __u64) (__be64) (x))
+#define __cpu_to_be32(x) ((__force __be32) (__u32) (x))
+#define __be32_to_cpu(x) ((__force __u32) (__be32) (x))
+#define __cpu_to_be16(x) ((__force __be16) (__u16) (x))
+#define __be16_to_cpu(x) ((__force __u16) (__be16) (x))
+#define __cpu_to_le64s(x) __swab64s((x))
+#define __le64_to_cpus(x) __swab64s((x))
+#define __cpu_to_le32s(x) __swab32s((x))
+#define __le32_to_cpus(x) __swab32s((x))
+#define __cpu_to_le16s(x) __swab16s((x))
+#define __le16_to_cpus(x) __swab16s((x))
+#define __cpu_to_be64s(x) do { (void) (x); } while(0)
+#define __be64_to_cpus(x) do { (void) (x); } while(0)
+#define __cpu_to_be32s(x) do { (void) (x); } while(0)
+#define __be32_to_cpus(x) do { (void) (x); } while(0)
+#define __cpu_to_be16s(x) do { (void) (x); } while(0)
+#define __be16_to_cpus(x) do { (void) (x); } while(0)
+#endif
diff --git a/i686-linux-musl/include/linux/byteorder/little_endian.h b/i686-linux-musl/include/linux/byteorder/little_endian.h
new file mode 100644
index 0000000..a272d4d
--- /dev/null
+++ b/i686-linux-musl/include/linux/byteorder/little_endian.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_BYTEORDER_LITTLE_ENDIAN_H
+#define _UAPI_LINUX_BYTEORDER_LITTLE_ENDIAN_H
+#ifndef __LITTLE_ENDIAN
+#define __LITTLE_ENDIAN 1234
+#endif
+#ifndef __LITTLE_ENDIAN_BITFIELD
+#define __LITTLE_ENDIAN_BITFIELD
+#endif
+#include <linux/stddef.h>
+#include <linux/types.h>
+#include <linux/swab.h>
+#define __constant_htonl(x) ((__force __be32) ___constant_swab32((x)))
+#define __constant_ntohl(x) ___constant_swab32((__force __be32) (x))
+#define __constant_htons(x) ((__force __be16) ___constant_swab16((x)))
+#define __constant_ntohs(x) ___constant_swab16((__force __be16) (x))
+#define __constant_cpu_to_le64(x) ((__force __le64) (__u64) (x))
+#define __constant_le64_to_cpu(x) ((__force __u64) (__le64) (x))
+#define __constant_cpu_to_le32(x) ((__force __le32) (__u32) (x))
+#define __constant_le32_to_cpu(x) ((__force __u32) (__le32) (x))
+#define __constant_cpu_to_le16(x) ((__force __le16) (__u16) (x))
+#define __constant_le16_to_cpu(x) ((__force __u16) (__le16) (x))
+#define __constant_cpu_to_be64(x) ((__force __be64) ___constant_swab64((x)))
+#define __constant_be64_to_cpu(x) ___constant_swab64((__force __u64) (__be64) (x))
+#define __constant_cpu_to_be32(x) ((__force __be32) ___constant_swab32((x)))
+#define __constant_be32_to_cpu(x) ___constant_swab32((__force __u32) (__be32) (x))
+#define __constant_cpu_to_be16(x) ((__force __be16) ___constant_swab16((x)))
+#define __constant_be16_to_cpu(x) ___constant_swab16((__force __u16) (__be16) (x))
+#define __cpu_to_le64(x) ((__force __le64) (__u64) (x))
+#define __le64_to_cpu(x) ((__force __u64) (__le64) (x))
+#define __cpu_to_le32(x) ((__force __le32) (__u32) (x))
+#define __le32_to_cpu(x) ((__force __u32) (__le32) (x))
+#define __cpu_to_le16(x) ((__force __le16) (__u16) (x))
+#define __le16_to_cpu(x) ((__force __u16) (__le16) (x))
+#define __cpu_to_be64(x) ((__force __be64) __swab64((x)))
+#define __be64_to_cpu(x) __swab64((__force __u64) (__be64) (x))
+#define __cpu_to_be32(x) ((__force __be32) __swab32((x)))
+#define __be32_to_cpu(x) __swab32((__force __u32) (__be32) (x))
+#define __cpu_to_be16(x) ((__force __be16) __swab16((x)))
+#define __be16_to_cpu(x) __swab16((__force __u16) (__be16) (x))
+#define __cpu_to_le64s(x) do { (void) (x); } while(0)
+#define __le64_to_cpus(x) do { (void) (x); } while(0)
+#define __cpu_to_le32s(x) do { (void) (x); } while(0)
+#define __le32_to_cpus(x) do { (void) (x); } while(0)
+#define __cpu_to_le16s(x) do { (void) (x); } while(0)
+#define __le16_to_cpus(x) do { (void) (x); } while(0)
+#define __cpu_to_be64s(x) __swab64s((x))
+#define __be64_to_cpus(x) __swab64s((x))
+#define __cpu_to_be32s(x) __swab32s((x))
+#define __be32_to_cpus(x) __swab32s((x))
+#define __cpu_to_be16s(x) __swab16s((x))
+#define __be16_to_cpus(x) __swab16s((x))
+#endif
diff --git a/i686-linux-musl/include/linux/caif/caif_socket.h b/i686-linux-musl/include/linux/caif/caif_socket.h
new file mode 100644
index 0000000..999d1b7
--- /dev/null
+++ b/i686-linux-musl/include/linux/caif/caif_socket.h
@@ -0,0 +1,84 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_CAIF_SOCKET_H
+#define _LINUX_CAIF_SOCKET_H
+#include <linux/types.h>
+#include <linux/socket.h>
+enum caif_link_selector {
+  CAIF_LINK_HIGH_BANDW,
+  CAIF_LINK_LOW_LATENCY
+};
+enum caif_channel_priority {
+  CAIF_PRIO_MIN = 0x01,
+  CAIF_PRIO_LOW = 0x04,
+  CAIF_PRIO_NORMAL = 0x0f,
+  CAIF_PRIO_HIGH = 0x14,
+  CAIF_PRIO_MAX = 0x1F
+};
+enum caif_protocol_type {
+  CAIFPROTO_AT,
+  CAIFPROTO_DATAGRAM,
+  CAIFPROTO_DATAGRAM_LOOP,
+  CAIFPROTO_UTIL,
+  CAIFPROTO_RFM,
+  CAIFPROTO_DEBUG,
+  _CAIFPROTO_MAX
+};
+#define CAIFPROTO_MAX _CAIFPROTO_MAX
+enum caif_at_type {
+  CAIF_ATTYPE_PLAIN = 2
+};
+enum caif_debug_type {
+  CAIF_DEBUG_TRACE_INTERACTIVE = 0,
+  CAIF_DEBUG_TRACE,
+  CAIF_DEBUG_INTERACTIVE,
+};
+enum caif_debug_service {
+  CAIF_RADIO_DEBUG_SERVICE = 1,
+  CAIF_APP_DEBUG_SERVICE
+};
+struct sockaddr_caif {
+  __kernel_sa_family_t family;
+  union {
+    struct {
+      __u8 type;
+    } at;
+    struct {
+      char service[16];
+    } util;
+    union {
+      __u32 connection_id;
+      __u8 nsapi;
+    } dgm;
+    struct {
+      __u32 connection_id;
+      char volume[16];
+    } rfm;
+    struct {
+      __u8 type;
+      __u8 service;
+    } dbg;
+  } u;
+};
+enum caif_socket_opts {
+  CAIFSO_LINK_SELECT = 127,
+  CAIFSO_REQ_PARAM = 128,
+  CAIFSO_RSP_PARAM = 129,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/caif/if_caif.h b/i686-linux-musl/include/linux/caif/if_caif.h
new file mode 100644
index 0000000..36dfe08
--- /dev/null
+++ b/i686-linux-musl/include/linux/caif/if_caif.h
@@ -0,0 +1,32 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef IF_CAIF_H_
+#define IF_CAIF_H_
+#include <linux/sockios.h>
+#include <linux/types.h>
+#include <linux/socket.h>
+enum ifla_caif {
+  __IFLA_CAIF_UNSPEC,
+  IFLA_CAIF_IPV4_CONNID,
+  IFLA_CAIF_IPV6_CONNID,
+  IFLA_CAIF_LOOPBACK,
+  __IFLA_CAIF_MAX
+};
+#define IFLA_CAIF_MAX (__IFLA_CAIF_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/can.h b/i686-linux-musl/include/linux/can.h
new file mode 100644
index 0000000..30eeca2
--- /dev/null
+++ b/i686-linux-musl/include/linux/can.h
@@ -0,0 +1,91 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_CAN_H
+#define _UAPI_CAN_H
+#include <linux/types.h>
+#include <linux/socket.h>
+#define CAN_EFF_FLAG 0x80000000U
+#define CAN_RTR_FLAG 0x40000000U
+#define CAN_ERR_FLAG 0x20000000U
+#define CAN_SFF_MASK 0x000007FFU
+#define CAN_EFF_MASK 0x1FFFFFFFU
+#define CAN_ERR_MASK 0x1FFFFFFFU
+typedef __u32 canid_t;
+#define CAN_SFF_ID_BITS 11
+#define CAN_EFF_ID_BITS 29
+typedef __u32 can_err_mask_t;
+#define CAN_MAX_DLC 8
+#define CAN_MAX_RAW_DLC 15
+#define CAN_MAX_DLEN 8
+#define CANFD_MAX_DLC 15
+#define CANFD_MAX_DLEN 64
+struct can_frame {
+  canid_t can_id;
+  union {
+    __u8 len;
+    __u8 can_dlc;
+  } __attribute__((packed));
+  __u8 __pad;
+  __u8 __res0;
+  __u8 len8_dlc;
+  __u8 data[CAN_MAX_DLEN] __attribute__((aligned(8)));
+};
+#define CANFD_BRS 0x01
+#define CANFD_ESI 0x02
+#define CANFD_FDF 0x04
+struct canfd_frame {
+  canid_t can_id;
+  __u8 len;
+  __u8 flags;
+  __u8 __res0;
+  __u8 __res1;
+  __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
+};
+#define CAN_MTU (sizeof(struct can_frame))
+#define CANFD_MTU (sizeof(struct canfd_frame))
+#define CAN_RAW 1
+#define CAN_BCM 2
+#define CAN_TP16 3
+#define CAN_TP20 4
+#define CAN_MCNET 5
+#define CAN_ISOTP 6
+#define CAN_J1939 7
+#define CAN_NPROTO 8
+#define SOL_CAN_BASE 100
+struct sockaddr_can {
+  __kernel_sa_family_t can_family;
+  int can_ifindex;
+  union {
+    struct {
+      canid_t rx_id, tx_id;
+    } tp;
+    struct {
+      __u64 name;
+      __u32 pgn;
+      __u8 addr;
+    } j1939;
+  } can_addr;
+};
+struct can_filter {
+  canid_t can_id;
+  canid_t can_mask;
+};
+#define CAN_INV_FILTER 0x20000000U
+#define CAN_RAW_FILTER_MAX 512
+#endif
diff --git a/i686-linux-musl/include/linux/can/bcm.h b/i686-linux-musl/include/linux/can/bcm.h
new file mode 100644
index 0000000..42e0782
--- /dev/null
+++ b/i686-linux-musl/include/linux/can/bcm.h
@@ -0,0 +1,62 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_CAN_BCM_H
+#define _UAPI_CAN_BCM_H
+#include <linux/types.h>
+#include <linux/can.h>
+struct bcm_timeval {
+  long tv_sec;
+  long tv_usec;
+};
+struct bcm_msg_head {
+  __u32 opcode;
+  __u32 flags;
+  __u32 count;
+  struct bcm_timeval ival1, ival2;
+  canid_t can_id;
+  __u32 nframes;
+  struct can_frame frames[0];
+};
+enum {
+  TX_SETUP = 1,
+  TX_DELETE,
+  TX_READ,
+  TX_SEND,
+  RX_SETUP,
+  RX_DELETE,
+  RX_READ,
+  TX_STATUS,
+  TX_EXPIRED,
+  RX_STATUS,
+  RX_TIMEOUT,
+  RX_CHANGED
+};
+#define SETTIMER 0x0001
+#define STARTTIMER 0x0002
+#define TX_COUNTEVT 0x0004
+#define TX_ANNOUNCE 0x0008
+#define TX_CP_CAN_ID 0x0010
+#define RX_FILTER_ID 0x0020
+#define RX_CHECK_DLC 0x0040
+#define RX_NO_AUTOTIMER 0x0080
+#define RX_ANNOUNCE_RESUME 0x0100
+#define TX_RESET_MULTI_IDX 0x0200
+#define RX_RTR_FRAME 0x0400
+#define CAN_FD_FRAME 0x0800
+#endif
diff --git a/i686-linux-musl/include/linux/can/error.h b/i686-linux-musl/include/linux/can/error.h
new file mode 100644
index 0000000..645373b
--- /dev/null
+++ b/i686-linux-musl/include/linux/can/error.h
@@ -0,0 +1,79 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_CAN_ERROR_H
+#define _UAPI_CAN_ERROR_H
+#define CAN_ERR_DLC 8
+#define CAN_ERR_TX_TIMEOUT 0x00000001U
+#define CAN_ERR_LOSTARB 0x00000002U
+#define CAN_ERR_CRTL 0x00000004U
+#define CAN_ERR_PROT 0x00000008U
+#define CAN_ERR_TRX 0x00000010U
+#define CAN_ERR_ACK 0x00000020U
+#define CAN_ERR_BUSOFF 0x00000040U
+#define CAN_ERR_BUSERROR 0x00000080U
+#define CAN_ERR_RESTARTED 0x00000100U
+#define CAN_ERR_LOSTARB_UNSPEC 0x00
+#define CAN_ERR_CRTL_UNSPEC 0x00
+#define CAN_ERR_CRTL_RX_OVERFLOW 0x01
+#define CAN_ERR_CRTL_TX_OVERFLOW 0x02
+#define CAN_ERR_CRTL_RX_WARNING 0x04
+#define CAN_ERR_CRTL_TX_WARNING 0x08
+#define CAN_ERR_CRTL_RX_PASSIVE 0x10
+#define CAN_ERR_CRTL_TX_PASSIVE 0x20
+#define CAN_ERR_CRTL_ACTIVE 0x40
+#define CAN_ERR_PROT_UNSPEC 0x00
+#define CAN_ERR_PROT_BIT 0x01
+#define CAN_ERR_PROT_FORM 0x02
+#define CAN_ERR_PROT_STUFF 0x04
+#define CAN_ERR_PROT_BIT0 0x08
+#define CAN_ERR_PROT_BIT1 0x10
+#define CAN_ERR_PROT_OVERLOAD 0x20
+#define CAN_ERR_PROT_ACTIVE 0x40
+#define CAN_ERR_PROT_TX 0x80
+#define CAN_ERR_PROT_LOC_UNSPEC 0x00
+#define CAN_ERR_PROT_LOC_SOF 0x03
+#define CAN_ERR_PROT_LOC_ID28_21 0x02
+#define CAN_ERR_PROT_LOC_ID20_18 0x06
+#define CAN_ERR_PROT_LOC_SRTR 0x04
+#define CAN_ERR_PROT_LOC_IDE 0x05
+#define CAN_ERR_PROT_LOC_ID17_13 0x07
+#define CAN_ERR_PROT_LOC_ID12_05 0x0F
+#define CAN_ERR_PROT_LOC_ID04_00 0x0E
+#define CAN_ERR_PROT_LOC_RTR 0x0C
+#define CAN_ERR_PROT_LOC_RES1 0x0D
+#define CAN_ERR_PROT_LOC_RES0 0x09
+#define CAN_ERR_PROT_LOC_DLC 0x0B
+#define CAN_ERR_PROT_LOC_DATA 0x0A
+#define CAN_ERR_PROT_LOC_CRC_SEQ 0x08
+#define CAN_ERR_PROT_LOC_CRC_DEL 0x18
+#define CAN_ERR_PROT_LOC_ACK 0x19
+#define CAN_ERR_PROT_LOC_ACK_DEL 0x1B
+#define CAN_ERR_PROT_LOC_EOF 0x1A
+#define CAN_ERR_PROT_LOC_INTERM 0x12
+#define CAN_ERR_TRX_UNSPEC 0x00
+#define CAN_ERR_TRX_CANH_NO_WIRE 0x04
+#define CAN_ERR_TRX_CANH_SHORT_TO_BAT 0x05
+#define CAN_ERR_TRX_CANH_SHORT_TO_VCC 0x06
+#define CAN_ERR_TRX_CANH_SHORT_TO_GND 0x07
+#define CAN_ERR_TRX_CANL_NO_WIRE 0x40
+#define CAN_ERR_TRX_CANL_SHORT_TO_BAT 0x50
+#define CAN_ERR_TRX_CANL_SHORT_TO_VCC 0x60
+#define CAN_ERR_TRX_CANL_SHORT_TO_GND 0x70
+#define CAN_ERR_TRX_CANL_SHORT_TO_CANH 0x80
+#endif
diff --git a/i686-linux-musl/include/linux/can/gw.h b/i686-linux-musl/include/linux/can/gw.h
new file mode 100644
index 0000000..f76bafb
--- /dev/null
+++ b/i686-linux-musl/include/linux/can/gw.h
@@ -0,0 +1,105 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_CAN_GW_H
+#define _UAPI_CAN_GW_H
+#include <linux/types.h>
+#include <linux/can.h>
+struct rtcanmsg {
+  __u8 can_family;
+  __u8 gwtype;
+  __u16 flags;
+};
+enum {
+  CGW_TYPE_UNSPEC,
+  CGW_TYPE_CAN_CAN,
+  __CGW_TYPE_MAX
+};
+#define CGW_TYPE_MAX (__CGW_TYPE_MAX - 1)
+enum {
+  CGW_UNSPEC,
+  CGW_MOD_AND,
+  CGW_MOD_OR,
+  CGW_MOD_XOR,
+  CGW_MOD_SET,
+  CGW_CS_XOR,
+  CGW_CS_CRC8,
+  CGW_HANDLED,
+  CGW_DROPPED,
+  CGW_SRC_IF,
+  CGW_DST_IF,
+  CGW_FILTER,
+  CGW_DELETED,
+  CGW_LIM_HOPS,
+  CGW_MOD_UID,
+  CGW_FDMOD_AND,
+  CGW_FDMOD_OR,
+  CGW_FDMOD_XOR,
+  CGW_FDMOD_SET,
+  __CGW_MAX
+};
+#define CGW_MAX (__CGW_MAX - 1)
+#define CGW_FLAGS_CAN_ECHO 0x01
+#define CGW_FLAGS_CAN_SRC_TSTAMP 0x02
+#define CGW_FLAGS_CAN_IIF_TX_OK 0x04
+#define CGW_FLAGS_CAN_FD 0x08
+#define CGW_MOD_FUNCS 4
+#define CGW_MOD_ID 0x01
+#define CGW_MOD_DLC 0x02
+#define CGW_MOD_LEN CGW_MOD_DLC
+#define CGW_MOD_DATA 0x04
+#define CGW_MOD_FLAGS 0x08
+#define CGW_FRAME_MODS 4
+#define MAX_MODFUNCTIONS (CGW_MOD_FUNCS * CGW_FRAME_MODS)
+struct cgw_frame_mod {
+  struct can_frame cf;
+  __u8 modtype;
+} __attribute__((packed));
+struct cgw_fdframe_mod {
+  struct canfd_frame cf;
+  __u8 modtype;
+} __attribute__((packed));
+#define CGW_MODATTR_LEN sizeof(struct cgw_frame_mod)
+#define CGW_FDMODATTR_LEN sizeof(struct cgw_fdframe_mod)
+struct cgw_csum_xor {
+  __s8 from_idx;
+  __s8 to_idx;
+  __s8 result_idx;
+  __u8 init_xor_val;
+} __attribute__((packed));
+struct cgw_csum_crc8 {
+  __s8 from_idx;
+  __s8 to_idx;
+  __s8 result_idx;
+  __u8 init_crc_val;
+  __u8 final_xor_val;
+  __u8 crctab[256];
+  __u8 profile;
+  __u8 profile_data[20];
+} __attribute__((packed));
+#define CGW_CS_XOR_LEN sizeof(struct cgw_csum_xor)
+#define CGW_CS_CRC8_LEN sizeof(struct cgw_csum_crc8)
+enum {
+  CGW_CRC8PRF_UNSPEC,
+  CGW_CRC8PRF_1U8,
+  CGW_CRC8PRF_16U8,
+  CGW_CRC8PRF_SFFID_XOR,
+  __CGW_CRC8PRF_MAX
+};
+#define CGW_CRC8PRF_MAX (__CGW_CRC8PRF_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/can/isotp.h b/i686-linux-musl/include/linux/can/isotp.h
new file mode 100644
index 0000000..dd5e4f5
--- /dev/null
+++ b/i686-linux-musl/include/linux/can/isotp.h
@@ -0,0 +1,69 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_CAN_ISOTP_H
+#define _UAPI_CAN_ISOTP_H
+#include <linux/types.h>
+#include <linux/can.h>
+#define SOL_CAN_ISOTP (SOL_CAN_BASE + CAN_ISOTP)
+#define CAN_ISOTP_OPTS 1
+#define CAN_ISOTP_RECV_FC 2
+#define CAN_ISOTP_TX_STMIN 3
+#define CAN_ISOTP_RX_STMIN 4
+#define CAN_ISOTP_LL_OPTS 5
+struct can_isotp_options {
+  __u32 flags;
+  __u32 frame_txtime;
+  __u8 ext_address;
+  __u8 txpad_content;
+  __u8 rxpad_content;
+  __u8 rx_ext_address;
+};
+struct can_isotp_fc_options {
+  __u8 bs;
+  __u8 stmin;
+  __u8 wftmax;
+};
+struct can_isotp_ll_options {
+  __u8 mtu;
+  __u8 tx_dl;
+  __u8 tx_flags;
+};
+#define CAN_ISOTP_LISTEN_MODE 0x001
+#define CAN_ISOTP_EXTEND_ADDR 0x002
+#define CAN_ISOTP_TX_PADDING 0x004
+#define CAN_ISOTP_RX_PADDING 0x008
+#define CAN_ISOTP_CHK_PAD_LEN 0x010
+#define CAN_ISOTP_CHK_PAD_DATA 0x020
+#define CAN_ISOTP_HALF_DUPLEX 0x040
+#define CAN_ISOTP_FORCE_TXSTMIN 0x080
+#define CAN_ISOTP_FORCE_RXSTMIN 0x100
+#define CAN_ISOTP_RX_EXT_ADDR 0x200
+#define CAN_ISOTP_WAIT_TX_DONE 0x400
+#define CAN_ISOTP_SF_BROADCAST 0x800
+#define CAN_ISOTP_DEFAULT_FLAGS 0
+#define CAN_ISOTP_DEFAULT_EXT_ADDRESS 0x00
+#define CAN_ISOTP_DEFAULT_PAD_CONTENT 0xCC
+#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 0
+#define CAN_ISOTP_DEFAULT_RECV_BS 0
+#define CAN_ISOTP_DEFAULT_RECV_STMIN 0x00
+#define CAN_ISOTP_DEFAULT_RECV_WFTMAX 0
+#define CAN_ISOTP_DEFAULT_LL_MTU CAN_MTU
+#define CAN_ISOTP_DEFAULT_LL_TX_DL CAN_MAX_DLEN
+#define CAN_ISOTP_DEFAULT_LL_TX_FLAGS 0
+#endif
diff --git a/i686-linux-musl/include/linux/can/j1939.h b/i686-linux-musl/include/linux/can/j1939.h
new file mode 100644
index 0000000..42dbf15
--- /dev/null
+++ b/i686-linux-musl/include/linux/can/j1939.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_CAN_J1939_H_
+#define _UAPI_CAN_J1939_H_
+#include <linux/types.h>
+#include <linux/socket.h>
+#include <linux/can.h>
+#define J1939_MAX_UNICAST_ADDR 0xfd
+#define J1939_IDLE_ADDR 0xfe
+#define J1939_NO_ADDR 0xff
+#define J1939_NO_NAME 0
+#define J1939_PGN_REQUEST 0x0ea00
+#define J1939_PGN_ADDRESS_CLAIMED 0x0ee00
+#define J1939_PGN_ADDRESS_COMMANDED 0x0fed8
+#define J1939_PGN_PDU1_MAX 0x3ff00
+#define J1939_PGN_MAX 0x3ffff
+#define J1939_NO_PGN 0x40000
+typedef __u32 pgn_t;
+typedef __u8 priority_t;
+typedef __u64 name_t;
+#define SOL_CAN_J1939 (SOL_CAN_BASE + CAN_J1939)
+enum {
+  SO_J1939_FILTER = 1,
+  SO_J1939_PROMISC = 2,
+  SO_J1939_SEND_PRIO = 3,
+  SO_J1939_ERRQUEUE = 4,
+};
+enum {
+  SCM_J1939_DEST_ADDR = 1,
+  SCM_J1939_DEST_NAME = 2,
+  SCM_J1939_PRIO = 3,
+  SCM_J1939_ERRQUEUE = 4,
+};
+enum {
+  J1939_NLA_PAD,
+  J1939_NLA_BYTES_ACKED,
+  J1939_NLA_TOTAL_SIZE,
+  J1939_NLA_PGN,
+  J1939_NLA_SRC_NAME,
+  J1939_NLA_DEST_NAME,
+  J1939_NLA_SRC_ADDR,
+  J1939_NLA_DEST_ADDR,
+};
+enum {
+  J1939_EE_INFO_NONE,
+  J1939_EE_INFO_TX_ABORT,
+  J1939_EE_INFO_RX_RTS,
+  J1939_EE_INFO_RX_DPO,
+  J1939_EE_INFO_RX_ABORT,
+};
+struct j1939_filter {
+  name_t name;
+  name_t name_mask;
+  pgn_t pgn;
+  pgn_t pgn_mask;
+  __u8 addr;
+  __u8 addr_mask;
+};
+#define J1939_FILTER_MAX 512
+#endif
diff --git a/i686-linux-musl/include/linux/can/netlink.h b/i686-linux-musl/include/linux/can/netlink.h
new file mode 100644
index 0000000..5ea6346
--- /dev/null
+++ b/i686-linux-musl/include/linux/can/netlink.h
@@ -0,0 +1,118 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_CAN_NETLINK_H
+#define _UAPI_CAN_NETLINK_H
+#include <linux/types.h>
+struct can_bittiming {
+  __u32 bitrate;
+  __u32 sample_point;
+  __u32 tq;
+  __u32 prop_seg;
+  __u32 phase_seg1;
+  __u32 phase_seg2;
+  __u32 sjw;
+  __u32 brp;
+};
+struct can_bittiming_const {
+  char name[16];
+  __u32 tseg1_min;
+  __u32 tseg1_max;
+  __u32 tseg2_min;
+  __u32 tseg2_max;
+  __u32 sjw_max;
+  __u32 brp_min;
+  __u32 brp_max;
+  __u32 brp_inc;
+};
+struct can_clock {
+  __u32 freq;
+};
+enum can_state {
+  CAN_STATE_ERROR_ACTIVE = 0,
+  CAN_STATE_ERROR_WARNING,
+  CAN_STATE_ERROR_PASSIVE,
+  CAN_STATE_BUS_OFF,
+  CAN_STATE_STOPPED,
+  CAN_STATE_SLEEPING,
+  CAN_STATE_MAX
+};
+struct can_berr_counter {
+  __u16 txerr;
+  __u16 rxerr;
+};
+struct can_ctrlmode {
+  __u32 mask;
+  __u32 flags;
+};
+#define CAN_CTRLMODE_LOOPBACK 0x01
+#define CAN_CTRLMODE_LISTENONLY 0x02
+#define CAN_CTRLMODE_3_SAMPLES 0x04
+#define CAN_CTRLMODE_ONE_SHOT 0x08
+#define CAN_CTRLMODE_BERR_REPORTING 0x10
+#define CAN_CTRLMODE_FD 0x20
+#define CAN_CTRLMODE_PRESUME_ACK 0x40
+#define CAN_CTRLMODE_FD_NON_ISO 0x80
+#define CAN_CTRLMODE_CC_LEN8_DLC 0x100
+#define CAN_CTRLMODE_TDC_AUTO 0x200
+#define CAN_CTRLMODE_TDC_MANUAL 0x400
+struct can_device_stats {
+  __u32 bus_error;
+  __u32 error_warning;
+  __u32 error_passive;
+  __u32 bus_off;
+  __u32 arbitration_lost;
+  __u32 restarts;
+};
+enum {
+  IFLA_CAN_UNSPEC,
+  IFLA_CAN_BITTIMING,
+  IFLA_CAN_BITTIMING_CONST,
+  IFLA_CAN_CLOCK,
+  IFLA_CAN_STATE,
+  IFLA_CAN_CTRLMODE,
+  IFLA_CAN_RESTART_MS,
+  IFLA_CAN_RESTART,
+  IFLA_CAN_BERR_COUNTER,
+  IFLA_CAN_DATA_BITTIMING,
+  IFLA_CAN_DATA_BITTIMING_CONST,
+  IFLA_CAN_TERMINATION,
+  IFLA_CAN_TERMINATION_CONST,
+  IFLA_CAN_BITRATE_CONST,
+  IFLA_CAN_DATA_BITRATE_CONST,
+  IFLA_CAN_BITRATE_MAX,
+  IFLA_CAN_TDC,
+  __IFLA_CAN_MAX,
+  IFLA_CAN_MAX = __IFLA_CAN_MAX - 1
+};
+enum {
+  IFLA_CAN_TDC_UNSPEC,
+  IFLA_CAN_TDC_TDCV_MIN,
+  IFLA_CAN_TDC_TDCV_MAX,
+  IFLA_CAN_TDC_TDCO_MIN,
+  IFLA_CAN_TDC_TDCO_MAX,
+  IFLA_CAN_TDC_TDCF_MIN,
+  IFLA_CAN_TDC_TDCF_MAX,
+  IFLA_CAN_TDC_TDCV,
+  IFLA_CAN_TDC_TDCO,
+  IFLA_CAN_TDC_TDCF,
+  __IFLA_CAN_TDC,
+  IFLA_CAN_TDC_MAX = __IFLA_CAN_TDC - 1
+};
+#define CAN_TERMINATION_DISABLED 0
+#endif
diff --git a/i686-linux-musl/include/linux/can/raw.h b/i686-linux-musl/include/linux/can/raw.h
new file mode 100644
index 0000000..a3bddb7
--- /dev/null
+++ b/i686-linux-musl/include/linux/can/raw.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_CAN_RAW_H
+#define _UAPI_CAN_RAW_H
+#include <linux/can.h>
+#define SOL_CAN_RAW (SOL_CAN_BASE + CAN_RAW)
+enum {
+  SCM_CAN_RAW_ERRQUEUE = 1,
+};
+enum {
+  CAN_RAW_FILTER = 1,
+  CAN_RAW_ERR_FILTER,
+  CAN_RAW_LOOPBACK,
+  CAN_RAW_RECV_OWN_MSGS,
+  CAN_RAW_FD_FRAMES,
+  CAN_RAW_JOIN_FILTERS,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/can/vxcan.h b/i686-linux-musl/include/linux/can/vxcan.h
new file mode 100644
index 0000000..950b645
--- /dev/null
+++ b/i686-linux-musl/include/linux/can/vxcan.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_CAN_VXCAN_H
+#define _UAPI_CAN_VXCAN_H
+enum {
+  VXCAN_INFO_UNSPEC,
+  VXCAN_INFO_PEER,
+  __VXCAN_INFO_MAX
+#define VXCAN_INFO_MAX (__VXCAN_INFO_MAX - 1)
+};
+#endif
diff --git a/i686-linux-musl/include/linux/capability.h b/i686-linux-musl/include/linux/capability.h
new file mode 100644
index 0000000..958e6ab
--- /dev/null
+++ b/i686-linux-musl/include/linux/capability.h
@@ -0,0 +1,115 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_CAPABILITY_H
+#define _UAPI_LINUX_CAPABILITY_H
+#include <linux/types.h>
+#define _LINUX_CAPABILITY_VERSION_1 0x19980330
+#define _LINUX_CAPABILITY_U32S_1 1
+#define _LINUX_CAPABILITY_VERSION_2 0x20071026
+#define _LINUX_CAPABILITY_U32S_2 2
+#define _LINUX_CAPABILITY_VERSION_3 0x20080522
+#define _LINUX_CAPABILITY_U32S_3 2
+typedef struct __user_cap_header_struct {
+  __u32 version;
+  int pid;
+} __user * cap_user_header_t;
+typedef struct __user_cap_data_struct {
+  __u32 effective;
+  __u32 permitted;
+  __u32 inheritable;
+} __user * cap_user_data_t;
+#define VFS_CAP_REVISION_MASK 0xFF000000
+#define VFS_CAP_REVISION_SHIFT 24
+#define VFS_CAP_FLAGS_MASK ~VFS_CAP_REVISION_MASK
+#define VFS_CAP_FLAGS_EFFECTIVE 0x000001
+#define VFS_CAP_REVISION_1 0x01000000
+#define VFS_CAP_U32_1 1
+#define XATTR_CAPS_SZ_1 (sizeof(__le32) * (1 + 2 * VFS_CAP_U32_1))
+#define VFS_CAP_REVISION_2 0x02000000
+#define VFS_CAP_U32_2 2
+#define XATTR_CAPS_SZ_2 (sizeof(__le32) * (1 + 2 * VFS_CAP_U32_2))
+#define VFS_CAP_REVISION_3 0x03000000
+#define VFS_CAP_U32_3 2
+#define XATTR_CAPS_SZ_3 (sizeof(__le32) * (2 + 2 * VFS_CAP_U32_3))
+#define XATTR_CAPS_SZ XATTR_CAPS_SZ_3
+#define VFS_CAP_U32 VFS_CAP_U32_3
+#define VFS_CAP_REVISION VFS_CAP_REVISION_3
+struct vfs_cap_data {
+  __le32 magic_etc;
+  struct {
+    __le32 permitted;
+    __le32 inheritable;
+  } data[VFS_CAP_U32];
+};
+struct vfs_ns_cap_data {
+  __le32 magic_etc;
+  struct {
+    __le32 permitted;
+    __le32 inheritable;
+  } data[VFS_CAP_U32];
+  __le32 rootid;
+};
+#define _LINUX_CAPABILITY_VERSION _LINUX_CAPABILITY_VERSION_1
+#define _LINUX_CAPABILITY_U32S _LINUX_CAPABILITY_U32S_1
+#define CAP_CHOWN 0
+#define CAP_DAC_OVERRIDE 1
+#define CAP_DAC_READ_SEARCH 2
+#define CAP_FOWNER 3
+#define CAP_FSETID 4
+#define CAP_KILL 5
+#define CAP_SETGID 6
+#define CAP_SETUID 7
+#define CAP_SETPCAP 8
+#define CAP_LINUX_IMMUTABLE 9
+#define CAP_NET_BIND_SERVICE 10
+#define CAP_NET_BROADCAST 11
+#define CAP_NET_ADMIN 12
+#define CAP_NET_RAW 13
+#define CAP_IPC_LOCK 14
+#define CAP_IPC_OWNER 15
+#define CAP_SYS_MODULE 16
+#define CAP_SYS_RAWIO 17
+#define CAP_SYS_CHROOT 18
+#define CAP_SYS_PTRACE 19
+#define CAP_SYS_PACCT 20
+#define CAP_SYS_ADMIN 21
+#define CAP_SYS_BOOT 22
+#define CAP_SYS_NICE 23
+#define CAP_SYS_RESOURCE 24
+#define CAP_SYS_TIME 25
+#define CAP_SYS_TTY_CONFIG 26
+#define CAP_MKNOD 27
+#define CAP_LEASE 28
+#define CAP_AUDIT_WRITE 29
+#define CAP_AUDIT_CONTROL 30
+#define CAP_SETFCAP 31
+#define CAP_MAC_OVERRIDE 32
+#define CAP_MAC_ADMIN 33
+#define CAP_SYSLOG 34
+#define CAP_WAKE_ALARM 35
+#define CAP_BLOCK_SUSPEND 36
+#define CAP_AUDIT_READ 37
+#define CAP_PERFMON 38
+#define CAP_BPF 39
+#define CAP_CHECKPOINT_RESTORE 40
+#define CAP_LAST_CAP CAP_CHECKPOINT_RESTORE
+#define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
+#define CAP_TO_INDEX(x) ((x) >> 5)
+#define CAP_TO_MASK(x) (1 << ((x) & 31))
+#endif
diff --git a/i686-linux-musl/include/linux/capi.h b/i686-linux-musl/include/linux/capi.h
new file mode 100644
index 0000000..de2a839
--- /dev/null
+++ b/i686-linux-musl/include/linux/capi.h
@@ -0,0 +1,75 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_CAPI_H__
+#define __LINUX_CAPI_H__
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#include <linux/kernelcapi.h>
+typedef struct capi_register_params {
+  __u32 level3cnt;
+  __u32 datablkcnt;
+  __u32 datablklen;
+} capi_register_params;
+#define CAPI_REGISTER _IOW('C', 0x01, struct capi_register_params)
+#define CAPI_MANUFACTURER_LEN 64
+#define CAPI_GET_MANUFACTURER _IOWR('C', 0x06, int)
+typedef struct capi_version {
+  __u32 majorversion;
+  __u32 minorversion;
+  __u32 majormanuversion;
+  __u32 minormanuversion;
+} capi_version;
+#define CAPI_GET_VERSION _IOWR('C', 0x07, struct capi_version)
+#define CAPI_SERIAL_LEN 8
+#define CAPI_GET_SERIAL _IOWR('C', 0x08, int)
+typedef struct capi_profile {
+  __u16 ncontroller;
+  __u16 nbchannel;
+  __u32 goptions;
+  __u32 support1;
+  __u32 support2;
+  __u32 support3;
+  __u32 reserved[6];
+  __u32 manu[5];
+} capi_profile;
+#define CAPI_GET_PROFILE _IOWR('C', 0x09, struct capi_profile)
+typedef struct capi_manufacturer_cmd {
+  unsigned long cmd;
+  void __user * data;
+} capi_manufacturer_cmd;
+#define CAPI_MANUFACTURER_CMD _IOWR('C', 0x20, struct capi_manufacturer_cmd)
+#define CAPI_GET_ERRCODE _IOR('C', 0x21, __u16)
+#define CAPI_INSTALLED _IOR('C', 0x22, __u16)
+typedef union capi_ioctl_struct {
+  __u32 contr;
+  capi_register_params rparams;
+  __u8 manufacturer[CAPI_MANUFACTURER_LEN];
+  capi_version version;
+  __u8 serial[CAPI_SERIAL_LEN];
+  capi_profile profile;
+  capi_manufacturer_cmd cmd;
+  __u16 errcode;
+} capi_ioctl_struct;
+#define CAPIFLAG_HIGHJACKING 0x0001
+#define CAPI_GET_FLAGS _IOR('C', 0x23, unsigned)
+#define CAPI_SET_FLAGS _IOR('C', 0x24, unsigned)
+#define CAPI_CLR_FLAGS _IOR('C', 0x25, unsigned)
+#define CAPI_NCCI_OPENCOUNT _IOR('C', 0x26, unsigned)
+#define CAPI_NCCI_GETUNIT _IOR('C', 0x27, unsigned)
+#endif
diff --git a/i686-linux-musl/include/linux/cciss_defs.h b/i686-linux-musl/include/linux/cciss_defs.h
new file mode 100644
index 0000000..99d8e56
--- /dev/null
+++ b/i686-linux-musl/include/linux/cciss_defs.h
@@ -0,0 +1,122 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef CCISS_DEFS_H
+#define CCISS_DEFS_H
+#include <linux/types.h>
+#define SENSEINFOBYTES 32
+#define CMD_SUCCESS 0x0000
+#define CMD_TARGET_STATUS 0x0001
+#define CMD_DATA_UNDERRUN 0x0002
+#define CMD_DATA_OVERRUN 0x0003
+#define CMD_INVALID 0x0004
+#define CMD_PROTOCOL_ERR 0x0005
+#define CMD_HARDWARE_ERR 0x0006
+#define CMD_CONNECTION_LOST 0x0007
+#define CMD_ABORTED 0x0008
+#define CMD_ABORT_FAILED 0x0009
+#define CMD_UNSOLICITED_ABORT 0x000A
+#define CMD_TIMEOUT 0x000B
+#define CMD_UNABORTABLE 0x000C
+#define XFER_NONE 0x00
+#define XFER_WRITE 0x01
+#define XFER_READ 0x02
+#define XFER_RSVD 0x03
+#define ATTR_UNTAGGED 0x00
+#define ATTR_SIMPLE 0x04
+#define ATTR_HEADOFQUEUE 0x05
+#define ATTR_ORDERED 0x06
+#define ATTR_ACA 0x07
+#define TYPE_CMD 0x00
+#define TYPE_MSG 0x01
+#define BYTE __u8
+#define WORD __u16
+#define HWORD __u16
+#define DWORD __u32
+#define CISS_MAX_LUN 1024
+#define LEVEL2LUN 1
+#define LEVEL3LUN 0
+#pragma pack(1)
+typedef union _SCSI3Addr_struct {
+  struct {
+    BYTE Dev;
+    BYTE Bus : 6;
+    BYTE Mode : 2;
+  } PeripDev;
+  struct {
+    BYTE DevLSB;
+    BYTE DevMSB : 6;
+    BYTE Mode : 2;
+  } LogDev;
+  struct {
+    BYTE Dev : 5;
+    BYTE Bus : 3;
+    BYTE Targ : 6;
+    BYTE Mode : 2;
+  } LogUnit;
+} SCSI3Addr_struct;
+typedef struct _PhysDevAddr_struct {
+  DWORD TargetId : 24;
+  DWORD Bus : 6;
+  DWORD Mode : 2;
+  SCSI3Addr_struct Target[2];
+} PhysDevAddr_struct;
+typedef struct _LogDevAddr_struct {
+  DWORD VolId : 30;
+  DWORD Mode : 2;
+  BYTE reserved[4];
+} LogDevAddr_struct;
+typedef union _LUNAddr_struct {
+  BYTE LunAddrBytes[8];
+  SCSI3Addr_struct SCSI3Lun[4];
+  PhysDevAddr_struct PhysDev;
+  LogDevAddr_struct LogDev;
+} LUNAddr_struct;
+typedef struct _RequestBlock_struct {
+  BYTE CDBLen;
+  struct {
+    BYTE Type : 3;
+    BYTE Attribute : 3;
+    BYTE Direction : 2;
+  } Type;
+  HWORD Timeout;
+  BYTE CDB[16];
+} RequestBlock_struct;
+typedef union _MoreErrInfo_struct {
+  struct {
+    BYTE Reserved[3];
+    BYTE Type;
+    DWORD ErrorInfo;
+  } Common_Info;
+  struct {
+    BYTE Reserved[2];
+    BYTE offense_size;
+    BYTE offense_num;
+    DWORD offense_value;
+  } Invalid_Cmd;
+} MoreErrInfo_struct;
+typedef struct _ErrorInfo_struct {
+  BYTE ScsiStatus;
+  BYTE SenseLen;
+  HWORD CommandStatus;
+  DWORD ResidualCnt;
+  MoreErrInfo_struct MoreErrInfo;
+  BYTE SenseInfo[SENSEINFOBYTES];
+} ErrorInfo_struct;
+#pragma pack()
+#endif
diff --git a/i686-linux-musl/include/linux/cciss_ioctl.h b/i686-linux-musl/include/linux/cciss_ioctl.h
new file mode 100644
index 0000000..3e9bb3b
--- /dev/null
+++ b/i686-linux-musl/include/linux/cciss_ioctl.h
@@ -0,0 +1,82 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPICCISS_IOCTLH
+#define _UAPICCISS_IOCTLH
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#include <linux/cciss_defs.h>
+#define CCISS_IOC_MAGIC 'B'
+typedef struct _cciss_pci_info_struct {
+  unsigned char bus;
+  unsigned char dev_fn;
+  unsigned short domain;
+  __u32 board_id;
+} cciss_pci_info_struct;
+typedef struct _cciss_coalint_struct {
+  __u32 delay;
+  __u32 count;
+} cciss_coalint_struct;
+typedef char NodeName_type[16];
+typedef __u32 Heartbeat_type;
+#define CISS_PARSCSIU2 0x0001
+#define CISS_PARCSCIU3 0x0002
+#define CISS_FIBRE1G 0x0100
+#define CISS_FIBRE2G 0x0200
+typedef __u32 BusTypes_type;
+typedef char FirmwareVer_type[4];
+typedef __u32 DriverVer_type;
+#define MAX_KMALLOC_SIZE 128000
+typedef struct _IOCTL_Command_struct {
+  LUNAddr_struct LUN_info;
+  RequestBlock_struct Request;
+  ErrorInfo_struct error_info;
+  WORD buf_size;
+  BYTE __user * buf;
+} IOCTL_Command_struct;
+typedef struct _BIG_IOCTL_Command_struct {
+  LUNAddr_struct LUN_info;
+  RequestBlock_struct Request;
+  ErrorInfo_struct error_info;
+  DWORD malloc_size;
+  DWORD buf_size;
+  BYTE __user * buf;
+} BIG_IOCTL_Command_struct;
+typedef struct _LogvolInfo_struct {
+  __u32 LunID;
+  int num_opens;
+  int num_parts;
+} LogvolInfo_struct;
+#define CCISS_GETPCIINFO _IOR(CCISS_IOC_MAGIC, 1, cciss_pci_info_struct)
+#define CCISS_GETINTINFO _IOR(CCISS_IOC_MAGIC, 2, cciss_coalint_struct)
+#define CCISS_SETINTINFO _IOW(CCISS_IOC_MAGIC, 3, cciss_coalint_struct)
+#define CCISS_GETNODENAME _IOR(CCISS_IOC_MAGIC, 4, NodeName_type)
+#define CCISS_SETNODENAME _IOW(CCISS_IOC_MAGIC, 5, NodeName_type)
+#define CCISS_GETHEARTBEAT _IOR(CCISS_IOC_MAGIC, 6, Heartbeat_type)
+#define CCISS_GETBUSTYPES _IOR(CCISS_IOC_MAGIC, 7, BusTypes_type)
+#define CCISS_GETFIRMVER _IOR(CCISS_IOC_MAGIC, 8, FirmwareVer_type)
+#define CCISS_GETDRIVVER _IOR(CCISS_IOC_MAGIC, 9, DriverVer_type)
+#define CCISS_REVALIDVOLS _IO(CCISS_IOC_MAGIC, 10)
+#define CCISS_PASSTHRU _IOWR(CCISS_IOC_MAGIC, 11, IOCTL_Command_struct)
+#define CCISS_DEREGDISK _IO(CCISS_IOC_MAGIC, 12)
+#define CCISS_REGNEWDISK _IOW(CCISS_IOC_MAGIC, 13, int)
+#define CCISS_REGNEWD _IO(CCISS_IOC_MAGIC, 14)
+#define CCISS_RESCANDISK _IO(CCISS_IOC_MAGIC, 16)
+#define CCISS_GETLUNINFO _IOR(CCISS_IOC_MAGIC, 17, LogvolInfo_struct)
+#define CCISS_BIG_PASSTHRU _IOWR(CCISS_IOC_MAGIC, 18, BIG_IOCTL_Command_struct)
+#endif
diff --git a/i686-linux-musl/include/linux/ccs.h b/i686-linux-musl/include/linux/ccs.h
new file mode 100644
index 0000000..53c88af
--- /dev/null
+++ b/i686-linux-musl/include/linux/ccs.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_CCS_H__
+#define __UAPI_CCS_H__
+#include <linux/v4l2-controls.h>
+#define V4L2_CID_CCS_ANALOGUE_GAIN_M0 (V4L2_CID_USER_CCS_BASE + 1)
+#define V4L2_CID_CCS_ANALOGUE_GAIN_C0 (V4L2_CID_USER_CCS_BASE + 2)
+#define V4L2_CID_CCS_ANALOGUE_GAIN_M1 (V4L2_CID_USER_CCS_BASE + 3)
+#define V4L2_CID_CCS_ANALOGUE_GAIN_C1 (V4L2_CID_USER_CCS_BASE + 4)
+#define V4L2_CID_CCS_ANALOGUE_LINEAR_GAIN (V4L2_CID_USER_CCS_BASE + 5)
+#define V4L2_CID_CCS_ANALOGUE_EXPONENTIAL_GAIN (V4L2_CID_USER_CCS_BASE + 6)
+#define V4L2_CID_CCS_SHADING_CORRECTION (V4L2_CID_USER_CCS_BASE + 8)
+#define V4L2_CID_CCS_LUMINANCE_CORRECTION_LEVEL (V4L2_CID_USER_CCS_BASE + 9)
+#endif
diff --git a/i686-linux-musl/include/linux/cdrom.h b/i686-linux-musl/include/linux/cdrom.h
new file mode 100644
index 0000000..0fe0727
--- /dev/null
+++ b/i686-linux-musl/include/linux/cdrom.h
@@ -0,0 +1,663 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_CDROM_H
+#define _UAPI_LINUX_CDROM_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+#define EDRIVE_CANT_DO_THIS EOPNOTSUPP
+#define CDROMPAUSE 0x5301
+#define CDROMRESUME 0x5302
+#define CDROMPLAYMSF 0x5303
+#define CDROMPLAYTRKIND 0x5304
+#define CDROMREADTOCHDR 0x5305
+#define CDROMREADTOCENTRY 0x5306
+#define CDROMSTOP 0x5307
+#define CDROMSTART 0x5308
+#define CDROMEJECT 0x5309
+#define CDROMVOLCTRL 0x530a
+#define CDROMSUBCHNL 0x530b
+#define CDROMREADMODE2 0x530c
+#define CDROMREADMODE1 0x530d
+#define CDROMREADAUDIO 0x530e
+#define CDROMEJECT_SW 0x530f
+#define CDROMMULTISESSION 0x5310
+#define CDROM_GET_MCN 0x5311
+#define CDROM_GET_UPC CDROM_GET_MCN
+#define CDROMRESET 0x5312
+#define CDROMVOLREAD 0x5313
+#define CDROMREADRAW 0x5314
+#define CDROMREADCOOKED 0x5315
+#define CDROMSEEK 0x5316
+#define CDROMPLAYBLK 0x5317
+#define CDROMREADALL 0x5318
+#define CDROMGETSPINDOWN 0x531d
+#define CDROMSETSPINDOWN 0x531e
+#define CDROMCLOSETRAY 0x5319
+#define CDROM_SET_OPTIONS 0x5320
+#define CDROM_CLEAR_OPTIONS 0x5321
+#define CDROM_SELECT_SPEED 0x5322
+#define CDROM_SELECT_DISC 0x5323
+#define CDROM_MEDIA_CHANGED 0x5325
+#define CDROM_DRIVE_STATUS 0x5326
+#define CDROM_DISC_STATUS 0x5327
+#define CDROM_CHANGER_NSLOTS 0x5328
+#define CDROM_LOCKDOOR 0x5329
+#define CDROM_DEBUG 0x5330
+#define CDROM_GET_CAPABILITY 0x5331
+#define CDROMAUDIOBUFSIZ 0x5382
+#define DVD_READ_STRUCT 0x5390
+#define DVD_WRITE_STRUCT 0x5391
+#define DVD_AUTH 0x5392
+#define CDROM_SEND_PACKET 0x5393
+#define CDROM_NEXT_WRITABLE 0x5394
+#define CDROM_LAST_WRITTEN 0x5395
+#define CDROM_TIMED_MEDIA_CHANGE 0x5396
+struct cdrom_msf0 {
+  __u8 minute;
+  __u8 second;
+  __u8 frame;
+};
+union cdrom_addr {
+  struct cdrom_msf0 msf;
+  int lba;
+};
+struct cdrom_msf {
+  __u8 cdmsf_min0;
+  __u8 cdmsf_sec0;
+  __u8 cdmsf_frame0;
+  __u8 cdmsf_min1;
+  __u8 cdmsf_sec1;
+  __u8 cdmsf_frame1;
+};
+struct cdrom_ti {
+  __u8 cdti_trk0;
+  __u8 cdti_ind0;
+  __u8 cdti_trk1;
+  __u8 cdti_ind1;
+};
+struct cdrom_tochdr {
+  __u8 cdth_trk0;
+  __u8 cdth_trk1;
+};
+struct cdrom_volctrl {
+  __u8 channel0;
+  __u8 channel1;
+  __u8 channel2;
+  __u8 channel3;
+};
+struct cdrom_subchnl {
+  __u8 cdsc_format;
+  __u8 cdsc_audiostatus;
+  __u8 cdsc_adr : 4;
+  __u8 cdsc_ctrl : 4;
+  __u8 cdsc_trk;
+  __u8 cdsc_ind;
+  union cdrom_addr cdsc_absaddr;
+  union cdrom_addr cdsc_reladdr;
+};
+struct cdrom_tocentry {
+  __u8 cdte_track;
+  __u8 cdte_adr : 4;
+  __u8 cdte_ctrl : 4;
+  __u8 cdte_format;
+  union cdrom_addr cdte_addr;
+  __u8 cdte_datamode;
+};
+struct cdrom_read {
+  int cdread_lba;
+  char * cdread_bufaddr;
+  int cdread_buflen;
+};
+struct cdrom_read_audio {
+  union cdrom_addr addr;
+  __u8 addr_format;
+  int nframes;
+  __u8 __user * buf;
+};
+struct cdrom_multisession {
+  union cdrom_addr addr;
+  __u8 xa_flag;
+  __u8 addr_format;
+};
+struct cdrom_mcn {
+  __u8 medium_catalog_number[14];
+};
+struct cdrom_blk {
+  unsigned from;
+  unsigned short len;
+};
+#define CDROM_PACKET_SIZE 12
+#define CGC_DATA_UNKNOWN 0
+#define CGC_DATA_WRITE 1
+#define CGC_DATA_READ 2
+#define CGC_DATA_NONE 3
+struct cdrom_generic_command {
+  unsigned char cmd[CDROM_PACKET_SIZE];
+  unsigned char __user * buffer;
+  unsigned int buflen;
+  int stat;
+  struct request_sense __user * sense;
+  unsigned char data_direction;
+  int quiet;
+  int timeout;
+  union {
+    void __user * reserved[1];
+    void __user * unused;
+  };
+};
+struct cdrom_timed_media_change_info {
+  __s64 last_media_change;
+  __u64 media_flags;
+};
+#define MEDIA_CHANGED_FLAG 0x1
+#define CD_MINS 74
+#define CD_SECS 60
+#define CD_FRAMES 75
+#define CD_SYNC_SIZE 12
+#define CD_MSF_OFFSET 150
+#define CD_CHUNK_SIZE 24
+#define CD_NUM_OF_CHUNKS 98
+#define CD_FRAMESIZE_SUB 96
+#define CD_HEAD_SIZE 4
+#define CD_SUBHEAD_SIZE 8
+#define CD_EDC_SIZE 4
+#define CD_ZERO_SIZE 8
+#define CD_ECC_SIZE 276
+#define CD_FRAMESIZE 2048
+#define CD_FRAMESIZE_RAW 2352
+#define CD_FRAMESIZE_RAWER 2646
+#define CD_FRAMESIZE_RAW1 (CD_FRAMESIZE_RAW - CD_SYNC_SIZE)
+#define CD_FRAMESIZE_RAW0 (CD_FRAMESIZE_RAW - CD_SYNC_SIZE - CD_HEAD_SIZE)
+#define CD_XA_HEAD (CD_HEAD_SIZE + CD_SUBHEAD_SIZE)
+#define CD_XA_TAIL (CD_EDC_SIZE + CD_ECC_SIZE)
+#define CD_XA_SYNC_HEAD (CD_SYNC_SIZE + CD_XA_HEAD)
+#define CDROM_LBA 0x01
+#define CDROM_MSF 0x02
+#define CDROM_DATA_TRACK 0x04
+#define CDROM_LEADOUT 0xAA
+#define CDROM_AUDIO_INVALID 0x00
+#define CDROM_AUDIO_PLAY 0x11
+#define CDROM_AUDIO_PAUSED 0x12
+#define CDROM_AUDIO_COMPLETED 0x13
+#define CDROM_AUDIO_ERROR 0x14
+#define CDROM_AUDIO_NO_STATUS 0x15
+#define CDC_CLOSE_TRAY 0x1
+#define CDC_OPEN_TRAY 0x2
+#define CDC_LOCK 0x4
+#define CDC_SELECT_SPEED 0x8
+#define CDC_SELECT_DISC 0x10
+#define CDC_MULTI_SESSION 0x20
+#define CDC_MCN 0x40
+#define CDC_MEDIA_CHANGED 0x80
+#define CDC_PLAY_AUDIO 0x100
+#define CDC_RESET 0x200
+#define CDC_DRIVE_STATUS 0x800
+#define CDC_GENERIC_PACKET 0x1000
+#define CDC_CD_R 0x2000
+#define CDC_CD_RW 0x4000
+#define CDC_DVD 0x8000
+#define CDC_DVD_R 0x10000
+#define CDC_DVD_RAM 0x20000
+#define CDC_MO_DRIVE 0x40000
+#define CDC_MRW 0x80000
+#define CDC_MRW_W 0x100000
+#define CDC_RAM 0x200000
+#define CDS_NO_INFO 0
+#define CDS_NO_DISC 1
+#define CDS_TRAY_OPEN 2
+#define CDS_DRIVE_NOT_READY 3
+#define CDS_DISC_OK 4
+#define CDS_AUDIO 100
+#define CDS_DATA_1 101
+#define CDS_DATA_2 102
+#define CDS_XA_2_1 103
+#define CDS_XA_2_2 104
+#define CDS_MIXED 105
+#define CDO_AUTO_CLOSE 0x1
+#define CDO_AUTO_EJECT 0x2
+#define CDO_USE_FFLAGS 0x4
+#define CDO_LOCK 0x8
+#define CDO_CHECK_TYPE 0x10
+#define CDSL_NONE (INT_MAX - 1)
+#define CDSL_CURRENT INT_MAX
+#define CD_PART_MAX 64
+#define CD_PART_MASK (CD_PART_MAX - 1)
+#define GPCMD_BLANK 0xa1
+#define GPCMD_CLOSE_TRACK 0x5b
+#define GPCMD_FLUSH_CACHE 0x35
+#define GPCMD_FORMAT_UNIT 0x04
+#define GPCMD_GET_CONFIGURATION 0x46
+#define GPCMD_GET_EVENT_STATUS_NOTIFICATION 0x4a
+#define GPCMD_GET_PERFORMANCE 0xac
+#define GPCMD_INQUIRY 0x12
+#define GPCMD_LOAD_UNLOAD 0xa6
+#define GPCMD_MECHANISM_STATUS 0xbd
+#define GPCMD_MODE_SELECT_10 0x55
+#define GPCMD_MODE_SENSE_10 0x5a
+#define GPCMD_PAUSE_RESUME 0x4b
+#define GPCMD_PLAY_AUDIO_10 0x45
+#define GPCMD_PLAY_AUDIO_MSF 0x47
+#define GPCMD_PLAY_AUDIO_TI 0x48
+#define GPCMD_PLAY_CD 0xbc
+#define GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1e
+#define GPCMD_READ_10 0x28
+#define GPCMD_READ_12 0xa8
+#define GPCMD_READ_BUFFER 0x3c
+#define GPCMD_READ_BUFFER_CAPACITY 0x5c
+#define GPCMD_READ_CDVD_CAPACITY 0x25
+#define GPCMD_READ_CD 0xbe
+#define GPCMD_READ_CD_MSF 0xb9
+#define GPCMD_READ_DISC_INFO 0x51
+#define GPCMD_READ_DVD_STRUCTURE 0xad
+#define GPCMD_READ_FORMAT_CAPACITIES 0x23
+#define GPCMD_READ_HEADER 0x44
+#define GPCMD_READ_TRACK_RZONE_INFO 0x52
+#define GPCMD_READ_SUBCHANNEL 0x42
+#define GPCMD_READ_TOC_PMA_ATIP 0x43
+#define GPCMD_REPAIR_RZONE_TRACK 0x58
+#define GPCMD_REPORT_KEY 0xa4
+#define GPCMD_REQUEST_SENSE 0x03
+#define GPCMD_RESERVE_RZONE_TRACK 0x53
+#define GPCMD_SEND_CUE_SHEET 0x5d
+#define GPCMD_SCAN 0xba
+#define GPCMD_SEEK 0x2b
+#define GPCMD_SEND_DVD_STRUCTURE 0xbf
+#define GPCMD_SEND_EVENT 0xa2
+#define GPCMD_SEND_KEY 0xa3
+#define GPCMD_SEND_OPC 0x54
+#define GPCMD_SET_READ_AHEAD 0xa7
+#define GPCMD_SET_STREAMING 0xb6
+#define GPCMD_START_STOP_UNIT 0x1b
+#define GPCMD_STOP_PLAY_SCAN 0x4e
+#define GPCMD_TEST_UNIT_READY 0x00
+#define GPCMD_VERIFY_10 0x2f
+#define GPCMD_WRITE_10 0x2a
+#define GPCMD_WRITE_12 0xaa
+#define GPCMD_WRITE_AND_VERIFY_10 0x2e
+#define GPCMD_WRITE_BUFFER 0x3b
+#define GPCMD_SET_SPEED 0xbb
+#define GPCMD_PLAYAUDIO_TI 0x48
+#define GPCMD_GET_MEDIA_STATUS 0xda
+#define GPMODE_VENDOR_PAGE 0x00
+#define GPMODE_R_W_ERROR_PAGE 0x01
+#define GPMODE_WRITE_PARMS_PAGE 0x05
+#define GPMODE_WCACHING_PAGE 0x08
+#define GPMODE_AUDIO_CTL_PAGE 0x0e
+#define GPMODE_POWER_PAGE 0x1a
+#define GPMODE_FAULT_FAIL_PAGE 0x1c
+#define GPMODE_TO_PROTECT_PAGE 0x1d
+#define GPMODE_CAPABILITIES_PAGE 0x2a
+#define GPMODE_ALL_PAGES 0x3f
+#define GPMODE_CDROM_PAGE 0x0d
+#define DVD_STRUCT_PHYSICAL 0x00
+#define DVD_STRUCT_COPYRIGHT 0x01
+#define DVD_STRUCT_DISCKEY 0x02
+#define DVD_STRUCT_BCA 0x03
+#define DVD_STRUCT_MANUFACT 0x04
+struct dvd_layer {
+  __u8 book_version : 4;
+  __u8 book_type : 4;
+  __u8 min_rate : 4;
+  __u8 disc_size : 4;
+  __u8 layer_type : 4;
+  __u8 track_path : 1;
+  __u8 nlayers : 2;
+  __u8 track_density : 4;
+  __u8 linear_density : 4;
+  __u8 bca : 1;
+  __u32 start_sector;
+  __u32 end_sector;
+  __u32 end_sector_l0;
+};
+#define DVD_LAYERS 4
+struct dvd_physical {
+  __u8 type;
+  __u8 layer_num;
+  struct dvd_layer layer[DVD_LAYERS];
+};
+struct dvd_copyright {
+  __u8 type;
+  __u8 layer_num;
+  __u8 cpst;
+  __u8 rmi;
+};
+struct dvd_disckey {
+  __u8 type;
+  unsigned agid : 2;
+  __u8 value[2048];
+};
+struct dvd_bca {
+  __u8 type;
+  int len;
+  __u8 value[188];
+};
+struct dvd_manufact {
+  __u8 type;
+  __u8 layer_num;
+  int len;
+  __u8 value[2048];
+};
+typedef union {
+  __u8 type;
+  struct dvd_physical physical;
+  struct dvd_copyright copyright;
+  struct dvd_disckey disckey;
+  struct dvd_bca bca;
+  struct dvd_manufact manufact;
+} dvd_struct;
+#define DVD_LU_SEND_AGID 0
+#define DVD_HOST_SEND_CHALLENGE 1
+#define DVD_LU_SEND_KEY1 2
+#define DVD_LU_SEND_CHALLENGE 3
+#define DVD_HOST_SEND_KEY2 4
+#define DVD_AUTH_ESTABLISHED 5
+#define DVD_AUTH_FAILURE 6
+#define DVD_LU_SEND_TITLE_KEY 7
+#define DVD_LU_SEND_ASF 8
+#define DVD_INVALIDATE_AGID 9
+#define DVD_LU_SEND_RPC_STATE 10
+#define DVD_HOST_SEND_RPC_STATE 11
+typedef __u8 dvd_key[5];
+typedef __u8 dvd_challenge[10];
+struct dvd_lu_send_agid {
+  __u8 type;
+  unsigned agid : 2;
+};
+struct dvd_host_send_challenge {
+  __u8 type;
+  unsigned agid : 2;
+  dvd_challenge chal;
+};
+struct dvd_send_key {
+  __u8 type;
+  unsigned agid : 2;
+  dvd_key key;
+};
+struct dvd_lu_send_challenge {
+  __u8 type;
+  unsigned agid : 2;
+  dvd_challenge chal;
+};
+#define DVD_CPM_NO_COPYRIGHT 0
+#define DVD_CPM_COPYRIGHTED 1
+#define DVD_CP_SEC_NONE 0
+#define DVD_CP_SEC_EXIST 1
+#define DVD_CGMS_UNRESTRICTED 0
+#define DVD_CGMS_SINGLE 2
+#define DVD_CGMS_RESTRICTED 3
+struct dvd_lu_send_title_key {
+  __u8 type;
+  unsigned agid : 2;
+  dvd_key title_key;
+  int lba;
+  unsigned cpm : 1;
+  unsigned cp_sec : 1;
+  unsigned cgms : 2;
+};
+struct dvd_lu_send_asf {
+  __u8 type;
+  unsigned agid : 2;
+  unsigned asf : 1;
+};
+struct dvd_host_send_rpcstate {
+  __u8 type;
+  __u8 pdrc;
+};
+struct dvd_lu_send_rpcstate {
+  __u8 type : 2;
+  __u8 vra : 3;
+  __u8 ucca : 3;
+  __u8 region_mask;
+  __u8 rpc_scheme;
+};
+typedef union {
+  __u8 type;
+  struct dvd_lu_send_agid lsa;
+  struct dvd_host_send_challenge hsc;
+  struct dvd_send_key lsk;
+  struct dvd_lu_send_challenge lsc;
+  struct dvd_send_key hsk;
+  struct dvd_lu_send_title_key lstk;
+  struct dvd_lu_send_asf lsasf;
+  struct dvd_host_send_rpcstate hrpcs;
+  struct dvd_lu_send_rpcstate lrpcs;
+} dvd_authinfo;
+struct request_sense {
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 valid : 1;
+  __u8 error_code : 7;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 error_code : 7;
+  __u8 valid : 1;
+#endif
+  __u8 segment_number;
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 reserved1 : 2;
+  __u8 ili : 1;
+  __u8 reserved2 : 1;
+  __u8 sense_key : 4;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 sense_key : 4;
+  __u8 reserved2 : 1;
+  __u8 ili : 1;
+  __u8 reserved1 : 2;
+#endif
+  __u8 information[4];
+  __u8 add_sense_len;
+  __u8 command_info[4];
+  __u8 asc;
+  __u8 ascq;
+  __u8 fruc;
+  __u8 sks[3];
+  __u8 asb[46];
+};
+#define CDF_RWRT 0x0020
+#define CDF_HWDM 0x0024
+#define CDF_MRW 0x0028
+#define CDM_MRW_NOTMRW 0
+#define CDM_MRW_BGFORMAT_INACTIVE 1
+#define CDM_MRW_BGFORMAT_ACTIVE 2
+#define CDM_MRW_BGFORMAT_COMPLETE 3
+#define MRW_LBA_DMA 0
+#define MRW_LBA_GAA 1
+#define MRW_MODE_PC_PRE1 0x2c
+#define MRW_MODE_PC 0x03
+struct mrw_feature_desc {
+  __be16 feature_code;
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 reserved1 : 2;
+  __u8 feature_version : 4;
+  __u8 persistent : 1;
+  __u8 curr : 1;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 curr : 1;
+  __u8 persistent : 1;
+  __u8 feature_version : 4;
+  __u8 reserved1 : 2;
+#endif
+  __u8 add_len;
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 reserved2 : 7;
+  __u8 write : 1;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 write : 1;
+  __u8 reserved2 : 7;
+#endif
+  __u8 reserved3;
+  __u8 reserved4;
+  __u8 reserved5;
+};
+struct rwrt_feature_desc {
+  __be16 feature_code;
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 reserved1 : 2;
+  __u8 feature_version : 4;
+  __u8 persistent : 1;
+  __u8 curr : 1;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 curr : 1;
+  __u8 persistent : 1;
+  __u8 feature_version : 4;
+  __u8 reserved1 : 2;
+#endif
+  __u8 add_len;
+  __u32 last_lba;
+  __u32 block_size;
+  __u16 blocking;
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 reserved2 : 7;
+  __u8 page_present : 1;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 page_present : 1;
+  __u8 reserved2 : 7;
+#endif
+  __u8 reserved3;
+};
+typedef struct {
+  __be16 disc_information_length;
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 reserved1 : 3;
+  __u8 erasable : 1;
+  __u8 border_status : 2;
+  __u8 disc_status : 2;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 disc_status : 2;
+  __u8 border_status : 2;
+  __u8 erasable : 1;
+  __u8 reserved1 : 3;
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif
+  __u8 n_first_track;
+  __u8 n_sessions_lsb;
+  __u8 first_track_lsb;
+  __u8 last_track_lsb;
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 did_v : 1;
+  __u8 dbc_v : 1;
+  __u8 uru : 1;
+  __u8 reserved2 : 2;
+  __u8 dbit : 1;
+  __u8 mrw_status : 2;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 mrw_status : 2;
+  __u8 dbit : 1;
+  __u8 reserved2 : 2;
+  __u8 uru : 1;
+  __u8 dbc_v : 1;
+  __u8 did_v : 1;
+#endif
+  __u8 disc_type;
+  __u8 n_sessions_msb;
+  __u8 first_track_msb;
+  __u8 last_track_msb;
+  __u32 disc_id;
+  __u32 lead_in;
+  __u32 lead_out;
+  __u8 disc_bar_code[8];
+  __u8 reserved3;
+  __u8 n_opc;
+} disc_information;
+typedef struct {
+  __be16 track_information_length;
+  __u8 track_lsb;
+  __u8 session_lsb;
+  __u8 reserved1;
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 reserved2 : 2;
+  __u8 damage : 1;
+  __u8 copy : 1;
+  __u8 track_mode : 4;
+  __u8 rt : 1;
+  __u8 blank : 1;
+  __u8 packet : 1;
+  __u8 fp : 1;
+  __u8 data_mode : 4;
+  __u8 reserved3 : 6;
+  __u8 lra_v : 1;
+  __u8 nwa_v : 1;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 track_mode : 4;
+  __u8 copy : 1;
+  __u8 damage : 1;
+  __u8 reserved2 : 2;
+  __u8 data_mode : 4;
+  __u8 fp : 1;
+  __u8 packet : 1;
+  __u8 blank : 1;
+  __u8 rt : 1;
+  __u8 nwa_v : 1;
+  __u8 lra_v : 1;
+  __u8 reserved3 : 6;
+#endif
+  __be32 track_start;
+  __be32 next_writable;
+  __be32 free_blocks;
+  __be32 fixed_packet_size;
+  __be32 track_size;
+  __be32 last_rec_address;
+} track_information;
+struct feature_header {
+  __u32 data_len;
+  __u8 reserved1;
+  __u8 reserved2;
+  __u16 curr_profile;
+};
+struct mode_page_header {
+  __be16 mode_data_length;
+  __u8 medium_type;
+  __u8 reserved1;
+  __u8 reserved2;
+  __u8 reserved3;
+  __be16 desc_length;
+};
+struct rm_feature_desc {
+  __be16 feature_code;
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 reserved1 : 2;
+  __u8 feature_version : 4;
+  __u8 persistent : 1;
+  __u8 curr : 1;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 curr : 1;
+  __u8 persistent : 1;
+  __u8 feature_version : 4;
+  __u8 reserved1 : 2;
+#endif
+  __u8 add_len;
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 mech_type : 3;
+  __u8 load : 1;
+  __u8 eject : 1;
+  __u8 pvnt_jmpr : 1;
+  __u8 dbml : 1;
+  __u8 lock : 1;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 lock : 1;
+  __u8 dbml : 1;
+  __u8 pvnt_jmpr : 1;
+  __u8 eject : 1;
+  __u8 load : 1;
+  __u8 mech_type : 3;
+#endif
+  __u8 reserved2;
+  __u8 reserved3;
+  __u8 reserved4;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/cec-funcs.h b/i686-linux-musl/include/linux/cec-funcs.h
new file mode 100644
index 0000000..650dc19
--- /dev/null
+++ b/i686-linux-musl/include/linux/cec-funcs.h
@@ -0,0 +1,94 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _CEC_UAPI_FUNCS_H
+#define _CEC_UAPI_FUNCS_H
+#include <linux/cec.h>
+struct cec_op_arib_data {
+  __u16 transport_id;
+  __u16 service_id;
+  __u16 orig_network_id;
+};
+struct cec_op_atsc_data {
+  __u16 transport_id;
+  __u16 program_number;
+};
+struct cec_op_dvb_data {
+  __u16 transport_id;
+  __u16 service_id;
+  __u16 orig_network_id;
+};
+struct cec_op_channel_data {
+  __u8 channel_number_fmt;
+  __u16 major;
+  __u16 minor;
+};
+struct cec_op_digital_service_id {
+  __u8 service_id_method;
+  __u8 dig_bcast_system;
+  union {
+    struct cec_op_arib_data arib;
+    struct cec_op_atsc_data atsc;
+    struct cec_op_dvb_data dvb;
+    struct cec_op_channel_data channel;
+  };
+};
+struct cec_op_record_src {
+  __u8 type;
+  union {
+    struct cec_op_digital_service_id digital;
+    struct {
+      __u8 ana_bcast_type;
+      __u16 ana_freq;
+      __u8 bcast_system;
+    } analog;
+    struct {
+      __u8 plug;
+    } ext_plug;
+    struct {
+      __u16 phys_addr;
+    } ext_phys_addr;
+  };
+};
+struct cec_op_tuner_device_info {
+  __u8 rec_flag;
+  __u8 tuner_display_info;
+  __u8 is_analog;
+  union {
+    struct cec_op_digital_service_id digital;
+    struct {
+      __u8 ana_bcast_type;
+      __u16 ana_freq;
+      __u8 bcast_system;
+    } analog;
+  };
+};
+struct cec_op_ui_command {
+  __u8 ui_cmd;
+  __u8 has_opt_arg;
+  union {
+    struct cec_op_channel_data channel_identifier;
+    __u8 ui_broadcast_type;
+    __u8 ui_sound_presentation_control;
+    __u8 play_mode;
+    __u8 ui_function_media;
+    __u8 ui_function_select_av_input;
+    __u8 ui_function_select_audio_input;
+  };
+};
+#endif
diff --git a/i686-linux-musl/include/linux/cec.h b/i686-linux-musl/include/linux/cec.h
new file mode 100644
index 0000000..b90dc49
--- /dev/null
+++ b/i686-linux-musl/include/linux/cec.h
@@ -0,0 +1,620 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _CEC_UAPI_H
+#define _CEC_UAPI_H
+#include <linux/types.h>
+#include <linux/string.h>
+#define CEC_MAX_MSG_SIZE 16
+struct cec_msg {
+  __u64 tx_ts;
+  __u64 rx_ts;
+  __u32 len;
+  __u32 timeout;
+  __u32 sequence;
+  __u32 flags;
+  __u8 msg[CEC_MAX_MSG_SIZE];
+  __u8 reply;
+  __u8 rx_status;
+  __u8 tx_status;
+  __u8 tx_arb_lost_cnt;
+  __u8 tx_nack_cnt;
+  __u8 tx_low_drive_cnt;
+  __u8 tx_error_cnt;
+};
+#define CEC_MSG_FL_REPLY_TO_FOLLOWERS (1 << 0)
+#define CEC_MSG_FL_RAW (1 << 1)
+#define CEC_TX_STATUS_OK (1 << 0)
+#define CEC_TX_STATUS_ARB_LOST (1 << 1)
+#define CEC_TX_STATUS_NACK (1 << 2)
+#define CEC_TX_STATUS_LOW_DRIVE (1 << 3)
+#define CEC_TX_STATUS_ERROR (1 << 4)
+#define CEC_TX_STATUS_MAX_RETRIES (1 << 5)
+#define CEC_TX_STATUS_ABORTED (1 << 6)
+#define CEC_TX_STATUS_TIMEOUT (1 << 7)
+#define CEC_RX_STATUS_OK (1 << 0)
+#define CEC_RX_STATUS_TIMEOUT (1 << 1)
+#define CEC_RX_STATUS_FEATURE_ABORT (1 << 2)
+#define CEC_RX_STATUS_ABORTED (1 << 3)
+#define CEC_LOG_ADDR_INVALID 0xff
+#define CEC_PHYS_ADDR_INVALID 0xffff
+#define CEC_MAX_LOG_ADDRS 4
+#define CEC_LOG_ADDR_TV 0
+#define CEC_LOG_ADDR_RECORD_1 1
+#define CEC_LOG_ADDR_RECORD_2 2
+#define CEC_LOG_ADDR_TUNER_1 3
+#define CEC_LOG_ADDR_PLAYBACK_1 4
+#define CEC_LOG_ADDR_AUDIOSYSTEM 5
+#define CEC_LOG_ADDR_TUNER_2 6
+#define CEC_LOG_ADDR_TUNER_3 7
+#define CEC_LOG_ADDR_PLAYBACK_2 8
+#define CEC_LOG_ADDR_RECORD_3 9
+#define CEC_LOG_ADDR_TUNER_4 10
+#define CEC_LOG_ADDR_PLAYBACK_3 11
+#define CEC_LOG_ADDR_BACKUP_1 12
+#define CEC_LOG_ADDR_BACKUP_2 13
+#define CEC_LOG_ADDR_SPECIFIC 14
+#define CEC_LOG_ADDR_UNREGISTERED 15
+#define CEC_LOG_ADDR_BROADCAST 15
+#define CEC_LOG_ADDR_TYPE_TV 0
+#define CEC_LOG_ADDR_TYPE_RECORD 1
+#define CEC_LOG_ADDR_TYPE_TUNER 2
+#define CEC_LOG_ADDR_TYPE_PLAYBACK 3
+#define CEC_LOG_ADDR_TYPE_AUDIOSYSTEM 4
+#define CEC_LOG_ADDR_TYPE_SPECIFIC 5
+#define CEC_LOG_ADDR_TYPE_UNREGISTERED 6
+#define CEC_LOG_ADDR_MASK_TV (1 << CEC_LOG_ADDR_TV)
+#define CEC_LOG_ADDR_MASK_RECORD ((1 << CEC_LOG_ADDR_RECORD_1) | (1 << CEC_LOG_ADDR_RECORD_2) | (1 << CEC_LOG_ADDR_RECORD_3))
+#define CEC_LOG_ADDR_MASK_TUNER ((1 << CEC_LOG_ADDR_TUNER_1) | (1 << CEC_LOG_ADDR_TUNER_2) | (1 << CEC_LOG_ADDR_TUNER_3) | (1 << CEC_LOG_ADDR_TUNER_4))
+#define CEC_LOG_ADDR_MASK_PLAYBACK ((1 << CEC_LOG_ADDR_PLAYBACK_1) | (1 << CEC_LOG_ADDR_PLAYBACK_2) | (1 << CEC_LOG_ADDR_PLAYBACK_3))
+#define CEC_LOG_ADDR_MASK_AUDIOSYSTEM (1 << CEC_LOG_ADDR_AUDIOSYSTEM)
+#define CEC_LOG_ADDR_MASK_BACKUP ((1 << CEC_LOG_ADDR_BACKUP_1) | (1 << CEC_LOG_ADDR_BACKUP_2))
+#define CEC_LOG_ADDR_MASK_SPECIFIC (1 << CEC_LOG_ADDR_SPECIFIC)
+#define CEC_LOG_ADDR_MASK_UNREGISTERED (1 << CEC_LOG_ADDR_UNREGISTERED)
+#define CEC_VENDOR_ID_NONE 0xffffffff
+#define CEC_MODE_NO_INITIATOR (0x0 << 0)
+#define CEC_MODE_INITIATOR (0x1 << 0)
+#define CEC_MODE_EXCL_INITIATOR (0x2 << 0)
+#define CEC_MODE_INITIATOR_MSK 0x0f
+#define CEC_MODE_NO_FOLLOWER (0x0 << 4)
+#define CEC_MODE_FOLLOWER (0x1 << 4)
+#define CEC_MODE_EXCL_FOLLOWER (0x2 << 4)
+#define CEC_MODE_EXCL_FOLLOWER_PASSTHRU (0x3 << 4)
+#define CEC_MODE_MONITOR_PIN (0xd << 4)
+#define CEC_MODE_MONITOR (0xe << 4)
+#define CEC_MODE_MONITOR_ALL (0xf << 4)
+#define CEC_MODE_FOLLOWER_MSK 0xf0
+#define CEC_CAP_PHYS_ADDR (1 << 0)
+#define CEC_CAP_LOG_ADDRS (1 << 1)
+#define CEC_CAP_TRANSMIT (1 << 2)
+#define CEC_CAP_PASSTHROUGH (1 << 3)
+#define CEC_CAP_RC (1 << 4)
+#define CEC_CAP_MONITOR_ALL (1 << 5)
+#define CEC_CAP_NEEDS_HPD (1 << 6)
+#define CEC_CAP_MONITOR_PIN (1 << 7)
+#define CEC_CAP_CONNECTOR_INFO (1 << 8)
+struct cec_caps {
+  char driver[32];
+  char name[32];
+  __u32 available_log_addrs;
+  __u32 capabilities;
+  __u32 version;
+};
+struct cec_log_addrs {
+  __u8 log_addr[CEC_MAX_LOG_ADDRS];
+  __u16 log_addr_mask;
+  __u8 cec_version;
+  __u8 num_log_addrs;
+  __u32 vendor_id;
+  __u32 flags;
+  char osd_name[15];
+  __u8 primary_device_type[CEC_MAX_LOG_ADDRS];
+  __u8 log_addr_type[CEC_MAX_LOG_ADDRS];
+  __u8 all_device_types[CEC_MAX_LOG_ADDRS];
+  __u8 features[CEC_MAX_LOG_ADDRS][12];
+};
+#define CEC_LOG_ADDRS_FL_ALLOW_UNREG_FALLBACK (1 << 0)
+#define CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU (1 << 1)
+#define CEC_LOG_ADDRS_FL_CDC_ONLY (1 << 2)
+struct cec_drm_connector_info {
+  __u32 card_no;
+  __u32 connector_id;
+};
+#define CEC_CONNECTOR_TYPE_NO_CONNECTOR 0
+#define CEC_CONNECTOR_TYPE_DRM 1
+struct cec_connector_info {
+  __u32 type;
+  union {
+    struct cec_drm_connector_info drm;
+    __u32 raw[16];
+  };
+};
+#define CEC_EVENT_STATE_CHANGE 1
+#define CEC_EVENT_LOST_MSGS 2
+#define CEC_EVENT_PIN_CEC_LOW 3
+#define CEC_EVENT_PIN_CEC_HIGH 4
+#define CEC_EVENT_PIN_HPD_LOW 5
+#define CEC_EVENT_PIN_HPD_HIGH 6
+#define CEC_EVENT_PIN_5V_LOW 7
+#define CEC_EVENT_PIN_5V_HIGH 8
+#define CEC_EVENT_FL_INITIAL_STATE (1 << 0)
+#define CEC_EVENT_FL_DROPPED_EVENTS (1 << 1)
+struct cec_event_state_change {
+  __u16 phys_addr;
+  __u16 log_addr_mask;
+  __u16 have_conn_info;
+};
+struct cec_event_lost_msgs {
+  __u32 lost_msgs;
+};
+struct cec_event {
+  __u64 ts;
+  __u32 event;
+  __u32 flags;
+  union {
+    struct cec_event_state_change state_change;
+    struct cec_event_lost_msgs lost_msgs;
+    __u32 raw[16];
+  };
+};
+#define CEC_ADAP_G_CAPS _IOWR('a', 0, struct cec_caps)
+#define CEC_ADAP_G_PHYS_ADDR _IOR('a', 1, __u16)
+#define CEC_ADAP_S_PHYS_ADDR _IOW('a', 2, __u16)
+#define CEC_ADAP_G_LOG_ADDRS _IOR('a', 3, struct cec_log_addrs)
+#define CEC_ADAP_S_LOG_ADDRS _IOWR('a', 4, struct cec_log_addrs)
+#define CEC_TRANSMIT _IOWR('a', 5, struct cec_msg)
+#define CEC_RECEIVE _IOWR('a', 6, struct cec_msg)
+#define CEC_DQEVENT _IOWR('a', 7, struct cec_event)
+#define CEC_G_MODE _IOR('a', 8, __u32)
+#define CEC_S_MODE _IOW('a', 9, __u32)
+#define CEC_ADAP_G_CONNECTOR_INFO _IOR('a', 10, struct cec_connector_info)
+#define CEC_MSG_ACTIVE_SOURCE 0x82
+#define CEC_MSG_IMAGE_VIEW_ON 0x04
+#define CEC_MSG_TEXT_VIEW_ON 0x0d
+#define CEC_MSG_INACTIVE_SOURCE 0x9d
+#define CEC_MSG_REQUEST_ACTIVE_SOURCE 0x85
+#define CEC_MSG_ROUTING_CHANGE 0x80
+#define CEC_MSG_ROUTING_INFORMATION 0x81
+#define CEC_MSG_SET_STREAM_PATH 0x86
+#define CEC_MSG_STANDBY 0x36
+#define CEC_MSG_RECORD_OFF 0x0b
+#define CEC_MSG_RECORD_ON 0x09
+#define CEC_OP_RECORD_SRC_OWN 1
+#define CEC_OP_RECORD_SRC_DIGITAL 2
+#define CEC_OP_RECORD_SRC_ANALOG 3
+#define CEC_OP_RECORD_SRC_EXT_PLUG 4
+#define CEC_OP_RECORD_SRC_EXT_PHYS_ADDR 5
+#define CEC_OP_SERVICE_ID_METHOD_BY_DIG_ID 0
+#define CEC_OP_SERVICE_ID_METHOD_BY_CHANNEL 1
+#define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ARIB_GEN 0x00
+#define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ATSC_GEN 0x01
+#define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_DVB_GEN 0x02
+#define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ARIB_BS 0x08
+#define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ARIB_CS 0x09
+#define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ARIB_T 0x0a
+#define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ATSC_CABLE 0x10
+#define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ATSC_SAT 0x11
+#define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ATSC_T 0x12
+#define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_DVB_C 0x18
+#define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_DVB_S 0x19
+#define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_DVB_S2 0x1a
+#define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_DVB_T 0x1b
+#define CEC_OP_ANA_BCAST_TYPE_CABLE 0
+#define CEC_OP_ANA_BCAST_TYPE_SATELLITE 1
+#define CEC_OP_ANA_BCAST_TYPE_TERRESTRIAL 2
+#define CEC_OP_BCAST_SYSTEM_PAL_BG 0x00
+#define CEC_OP_BCAST_SYSTEM_SECAM_LQ 0x01
+#define CEC_OP_BCAST_SYSTEM_PAL_M 0x02
+#define CEC_OP_BCAST_SYSTEM_NTSC_M 0x03
+#define CEC_OP_BCAST_SYSTEM_PAL_I 0x04
+#define CEC_OP_BCAST_SYSTEM_SECAM_DK 0x05
+#define CEC_OP_BCAST_SYSTEM_SECAM_BG 0x06
+#define CEC_OP_BCAST_SYSTEM_SECAM_L 0x07
+#define CEC_OP_BCAST_SYSTEM_PAL_DK 0x08
+#define CEC_OP_BCAST_SYSTEM_OTHER 0x1f
+#define CEC_OP_CHANNEL_NUMBER_FMT_1_PART 0x01
+#define CEC_OP_CHANNEL_NUMBER_FMT_2_PART 0x02
+#define CEC_MSG_RECORD_STATUS 0x0a
+#define CEC_OP_RECORD_STATUS_CUR_SRC 0x01
+#define CEC_OP_RECORD_STATUS_DIG_SERVICE 0x02
+#define CEC_OP_RECORD_STATUS_ANA_SERVICE 0x03
+#define CEC_OP_RECORD_STATUS_EXT_INPUT 0x04
+#define CEC_OP_RECORD_STATUS_NO_DIG_SERVICE 0x05
+#define CEC_OP_RECORD_STATUS_NO_ANA_SERVICE 0x06
+#define CEC_OP_RECORD_STATUS_NO_SERVICE 0x07
+#define CEC_OP_RECORD_STATUS_INVALID_EXT_PLUG 0x09
+#define CEC_OP_RECORD_STATUS_INVALID_EXT_PHYS_ADDR 0x0a
+#define CEC_OP_RECORD_STATUS_UNSUP_CA 0x0b
+#define CEC_OP_RECORD_STATUS_NO_CA_ENTITLEMENTS 0x0c
+#define CEC_OP_RECORD_STATUS_CANT_COPY_SRC 0x0d
+#define CEC_OP_RECORD_STATUS_NO_MORE_COPIES 0x0e
+#define CEC_OP_RECORD_STATUS_NO_MEDIA 0x10
+#define CEC_OP_RECORD_STATUS_PLAYING 0x11
+#define CEC_OP_RECORD_STATUS_ALREADY_RECORDING 0x12
+#define CEC_OP_RECORD_STATUS_MEDIA_PROT 0x13
+#define CEC_OP_RECORD_STATUS_NO_SIGNAL 0x14
+#define CEC_OP_RECORD_STATUS_MEDIA_PROBLEM 0x15
+#define CEC_OP_RECORD_STATUS_NO_SPACE 0x16
+#define CEC_OP_RECORD_STATUS_PARENTAL_LOCK 0x17
+#define CEC_OP_RECORD_STATUS_TERMINATED_OK 0x1a
+#define CEC_OP_RECORD_STATUS_ALREADY_TERM 0x1b
+#define CEC_OP_RECORD_STATUS_OTHER 0x1f
+#define CEC_MSG_RECORD_TV_SCREEN 0x0f
+#define CEC_MSG_CLEAR_ANALOGUE_TIMER 0x33
+#define CEC_OP_REC_SEQ_SUNDAY 0x01
+#define CEC_OP_REC_SEQ_MONDAY 0x02
+#define CEC_OP_REC_SEQ_TUESDAY 0x04
+#define CEC_OP_REC_SEQ_WEDNESDAY 0x08
+#define CEC_OP_REC_SEQ_THURSDAY 0x10
+#define CEC_OP_REC_SEQ_FRIDAY 0x20
+#define CEC_OP_REC_SEQ_SATURDAY 0x40
+#define CEC_OP_REC_SEQ_ONCE_ONLY 0x00
+#define CEC_MSG_CLEAR_DIGITAL_TIMER 0x99
+#define CEC_MSG_CLEAR_EXT_TIMER 0xa1
+#define CEC_OP_EXT_SRC_PLUG 0x04
+#define CEC_OP_EXT_SRC_PHYS_ADDR 0x05
+#define CEC_MSG_SET_ANALOGUE_TIMER 0x34
+#define CEC_MSG_SET_DIGITAL_TIMER 0x97
+#define CEC_MSG_SET_EXT_TIMER 0xa2
+#define CEC_MSG_SET_TIMER_PROGRAM_TITLE 0x67
+#define CEC_MSG_TIMER_CLEARED_STATUS 0x43
+#define CEC_OP_TIMER_CLR_STAT_RECORDING 0x00
+#define CEC_OP_TIMER_CLR_STAT_NO_MATCHING 0x01
+#define CEC_OP_TIMER_CLR_STAT_NO_INFO 0x02
+#define CEC_OP_TIMER_CLR_STAT_CLEARED 0x80
+#define CEC_MSG_TIMER_STATUS 0x35
+#define CEC_OP_TIMER_OVERLAP_WARNING_NO_OVERLAP 0
+#define CEC_OP_TIMER_OVERLAP_WARNING_OVERLAP 1
+#define CEC_OP_MEDIA_INFO_UNPROT_MEDIA 0
+#define CEC_OP_MEDIA_INFO_PROT_MEDIA 1
+#define CEC_OP_MEDIA_INFO_NO_MEDIA 2
+#define CEC_OP_PROG_IND_NOT_PROGRAMMED 0
+#define CEC_OP_PROG_IND_PROGRAMMED 1
+#define CEC_OP_PROG_INFO_ENOUGH_SPACE 0x08
+#define CEC_OP_PROG_INFO_NOT_ENOUGH_SPACE 0x09
+#define CEC_OP_PROG_INFO_MIGHT_NOT_BE_ENOUGH_SPACE 0x0b
+#define CEC_OP_PROG_INFO_NONE_AVAILABLE 0x0a
+#define CEC_OP_PROG_ERROR_NO_FREE_TIMER 0x01
+#define CEC_OP_PROG_ERROR_DATE_OUT_OF_RANGE 0x02
+#define CEC_OP_PROG_ERROR_REC_SEQ_ERROR 0x03
+#define CEC_OP_PROG_ERROR_INV_EXT_PLUG 0x04
+#define CEC_OP_PROG_ERROR_INV_EXT_PHYS_ADDR 0x05
+#define CEC_OP_PROG_ERROR_CA_UNSUPP 0x06
+#define CEC_OP_PROG_ERROR_INSUF_CA_ENTITLEMENTS 0x07
+#define CEC_OP_PROG_ERROR_RESOLUTION_UNSUPP 0x08
+#define CEC_OP_PROG_ERROR_PARENTAL_LOCK 0x09
+#define CEC_OP_PROG_ERROR_CLOCK_FAILURE 0x0a
+#define CEC_OP_PROG_ERROR_DUPLICATE 0x0e
+#define CEC_MSG_CEC_VERSION 0x9e
+#define CEC_OP_CEC_VERSION_1_3A 4
+#define CEC_OP_CEC_VERSION_1_4 5
+#define CEC_OP_CEC_VERSION_2_0 6
+#define CEC_MSG_GET_CEC_VERSION 0x9f
+#define CEC_MSG_GIVE_PHYSICAL_ADDR 0x83
+#define CEC_MSG_GET_MENU_LANGUAGE 0x91
+#define CEC_MSG_REPORT_PHYSICAL_ADDR 0x84
+#define CEC_OP_PRIM_DEVTYPE_TV 0
+#define CEC_OP_PRIM_DEVTYPE_RECORD 1
+#define CEC_OP_PRIM_DEVTYPE_TUNER 3
+#define CEC_OP_PRIM_DEVTYPE_PLAYBACK 4
+#define CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM 5
+#define CEC_OP_PRIM_DEVTYPE_SWITCH 6
+#define CEC_OP_PRIM_DEVTYPE_PROCESSOR 7
+#define CEC_MSG_SET_MENU_LANGUAGE 0x32
+#define CEC_MSG_REPORT_FEATURES 0xa6
+#define CEC_OP_ALL_DEVTYPE_TV 0x80
+#define CEC_OP_ALL_DEVTYPE_RECORD 0x40
+#define CEC_OP_ALL_DEVTYPE_TUNER 0x20
+#define CEC_OP_ALL_DEVTYPE_PLAYBACK 0x10
+#define CEC_OP_ALL_DEVTYPE_AUDIOSYSTEM 0x08
+#define CEC_OP_ALL_DEVTYPE_SWITCH 0x04
+#define CEC_OP_FEAT_EXT 0x80
+#define CEC_OP_FEAT_RC_TV_PROFILE_NONE 0x00
+#define CEC_OP_FEAT_RC_TV_PROFILE_1 0x02
+#define CEC_OP_FEAT_RC_TV_PROFILE_2 0x06
+#define CEC_OP_FEAT_RC_TV_PROFILE_3 0x0a
+#define CEC_OP_FEAT_RC_TV_PROFILE_4 0x0e
+#define CEC_OP_FEAT_RC_SRC_HAS_DEV_ROOT_MENU 0x50
+#define CEC_OP_FEAT_RC_SRC_HAS_DEV_SETUP_MENU 0x48
+#define CEC_OP_FEAT_RC_SRC_HAS_CONTENTS_MENU 0x44
+#define CEC_OP_FEAT_RC_SRC_HAS_MEDIA_TOP_MENU 0x42
+#define CEC_OP_FEAT_RC_SRC_HAS_MEDIA_CONTEXT_MENU 0x41
+#define CEC_OP_FEAT_DEV_HAS_RECORD_TV_SCREEN 0x40
+#define CEC_OP_FEAT_DEV_HAS_SET_OSD_STRING 0x20
+#define CEC_OP_FEAT_DEV_HAS_DECK_CONTROL 0x10
+#define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_RATE 0x08
+#define CEC_OP_FEAT_DEV_SINK_HAS_ARC_TX 0x04
+#define CEC_OP_FEAT_DEV_SOURCE_HAS_ARC_RX 0x02
+#define CEC_MSG_GIVE_FEATURES 0xa5
+#define CEC_MSG_DECK_CONTROL 0x42
+#define CEC_OP_DECK_CTL_MODE_SKIP_FWD 1
+#define CEC_OP_DECK_CTL_MODE_SKIP_REV 2
+#define CEC_OP_DECK_CTL_MODE_STOP 3
+#define CEC_OP_DECK_CTL_MODE_EJECT 4
+#define CEC_MSG_DECK_STATUS 0x1b
+#define CEC_OP_DECK_INFO_PLAY 0x11
+#define CEC_OP_DECK_INFO_RECORD 0x12
+#define CEC_OP_DECK_INFO_PLAY_REV 0x13
+#define CEC_OP_DECK_INFO_STILL 0x14
+#define CEC_OP_DECK_INFO_SLOW 0x15
+#define CEC_OP_DECK_INFO_SLOW_REV 0x16
+#define CEC_OP_DECK_INFO_FAST_FWD 0x17
+#define CEC_OP_DECK_INFO_FAST_REV 0x18
+#define CEC_OP_DECK_INFO_NO_MEDIA 0x19
+#define CEC_OP_DECK_INFO_STOP 0x1a
+#define CEC_OP_DECK_INFO_SKIP_FWD 0x1b
+#define CEC_OP_DECK_INFO_SKIP_REV 0x1c
+#define CEC_OP_DECK_INFO_INDEX_SEARCH_FWD 0x1d
+#define CEC_OP_DECK_INFO_INDEX_SEARCH_REV 0x1e
+#define CEC_OP_DECK_INFO_OTHER 0x1f
+#define CEC_MSG_GIVE_DECK_STATUS 0x1a
+#define CEC_OP_STATUS_REQ_ON 1
+#define CEC_OP_STATUS_REQ_OFF 2
+#define CEC_OP_STATUS_REQ_ONCE 3
+#define CEC_MSG_PLAY 0x41
+#define CEC_OP_PLAY_MODE_PLAY_FWD 0x24
+#define CEC_OP_PLAY_MODE_PLAY_REV 0x20
+#define CEC_OP_PLAY_MODE_PLAY_STILL 0x25
+#define CEC_OP_PLAY_MODE_PLAY_FAST_FWD_MIN 0x05
+#define CEC_OP_PLAY_MODE_PLAY_FAST_FWD_MED 0x06
+#define CEC_OP_PLAY_MODE_PLAY_FAST_FWD_MAX 0x07
+#define CEC_OP_PLAY_MODE_PLAY_FAST_REV_MIN 0x09
+#define CEC_OP_PLAY_MODE_PLAY_FAST_REV_MED 0x0a
+#define CEC_OP_PLAY_MODE_PLAY_FAST_REV_MAX 0x0b
+#define CEC_OP_PLAY_MODE_PLAY_SLOW_FWD_MIN 0x15
+#define CEC_OP_PLAY_MODE_PLAY_SLOW_FWD_MED 0x16
+#define CEC_OP_PLAY_MODE_PLAY_SLOW_FWD_MAX 0x17
+#define CEC_OP_PLAY_MODE_PLAY_SLOW_REV_MIN 0x19
+#define CEC_OP_PLAY_MODE_PLAY_SLOW_REV_MED 0x1a
+#define CEC_OP_PLAY_MODE_PLAY_SLOW_REV_MAX 0x1b
+#define CEC_MSG_GIVE_TUNER_DEVICE_STATUS 0x08
+#define CEC_MSG_SELECT_ANALOGUE_SERVICE 0x92
+#define CEC_MSG_SELECT_DIGITAL_SERVICE 0x93
+#define CEC_MSG_TUNER_DEVICE_STATUS 0x07
+#define CEC_OP_REC_FLAG_NOT_USED 0
+#define CEC_OP_REC_FLAG_USED 1
+#define CEC_OP_TUNER_DISPLAY_INFO_DIGITAL 0
+#define CEC_OP_TUNER_DISPLAY_INFO_NONE 1
+#define CEC_OP_TUNER_DISPLAY_INFO_ANALOGUE 2
+#define CEC_MSG_TUNER_STEP_DECREMENT 0x06
+#define CEC_MSG_TUNER_STEP_INCREMENT 0x05
+#define CEC_MSG_DEVICE_VENDOR_ID 0x87
+#define CEC_MSG_GIVE_DEVICE_VENDOR_ID 0x8c
+#define CEC_MSG_VENDOR_COMMAND 0x89
+#define CEC_MSG_VENDOR_COMMAND_WITH_ID 0xa0
+#define CEC_MSG_VENDOR_REMOTE_BUTTON_DOWN 0x8a
+#define CEC_MSG_VENDOR_REMOTE_BUTTON_UP 0x8b
+#define CEC_MSG_SET_OSD_STRING 0x64
+#define CEC_OP_DISP_CTL_DEFAULT 0x00
+#define CEC_OP_DISP_CTL_UNTIL_CLEARED 0x40
+#define CEC_OP_DISP_CTL_CLEAR 0x80
+#define CEC_MSG_GIVE_OSD_NAME 0x46
+#define CEC_MSG_SET_OSD_NAME 0x47
+#define CEC_MSG_MENU_REQUEST 0x8d
+#define CEC_OP_MENU_REQUEST_ACTIVATE 0x00
+#define CEC_OP_MENU_REQUEST_DEACTIVATE 0x01
+#define CEC_OP_MENU_REQUEST_QUERY 0x02
+#define CEC_MSG_MENU_STATUS 0x8e
+#define CEC_OP_MENU_STATE_ACTIVATED 0x00
+#define CEC_OP_MENU_STATE_DEACTIVATED 0x01
+#define CEC_MSG_USER_CONTROL_PRESSED 0x44
+#define CEC_OP_UI_CMD_SELECT 0x00
+#define CEC_OP_UI_CMD_UP 0x01
+#define CEC_OP_UI_CMD_DOWN 0x02
+#define CEC_OP_UI_CMD_LEFT 0x03
+#define CEC_OP_UI_CMD_RIGHT 0x04
+#define CEC_OP_UI_CMD_RIGHT_UP 0x05
+#define CEC_OP_UI_CMD_RIGHT_DOWN 0x06
+#define CEC_OP_UI_CMD_LEFT_UP 0x07
+#define CEC_OP_UI_CMD_LEFT_DOWN 0x08
+#define CEC_OP_UI_CMD_DEVICE_ROOT_MENU 0x09
+#define CEC_OP_UI_CMD_DEVICE_SETUP_MENU 0x0a
+#define CEC_OP_UI_CMD_CONTENTS_MENU 0x0b
+#define CEC_OP_UI_CMD_FAVORITE_MENU 0x0c
+#define CEC_OP_UI_CMD_BACK 0x0d
+#define CEC_OP_UI_CMD_MEDIA_TOP_MENU 0x10
+#define CEC_OP_UI_CMD_MEDIA_CONTEXT_SENSITIVE_MENU 0x11
+#define CEC_OP_UI_CMD_NUMBER_ENTRY_MODE 0x1d
+#define CEC_OP_UI_CMD_NUMBER_11 0x1e
+#define CEC_OP_UI_CMD_NUMBER_12 0x1f
+#define CEC_OP_UI_CMD_NUMBER_0_OR_NUMBER_10 0x20
+#define CEC_OP_UI_CMD_NUMBER_1 0x21
+#define CEC_OP_UI_CMD_NUMBER_2 0x22
+#define CEC_OP_UI_CMD_NUMBER_3 0x23
+#define CEC_OP_UI_CMD_NUMBER_4 0x24
+#define CEC_OP_UI_CMD_NUMBER_5 0x25
+#define CEC_OP_UI_CMD_NUMBER_6 0x26
+#define CEC_OP_UI_CMD_NUMBER_7 0x27
+#define CEC_OP_UI_CMD_NUMBER_8 0x28
+#define CEC_OP_UI_CMD_NUMBER_9 0x29
+#define CEC_OP_UI_CMD_DOT 0x2a
+#define CEC_OP_UI_CMD_ENTER 0x2b
+#define CEC_OP_UI_CMD_CLEAR 0x2c
+#define CEC_OP_UI_CMD_NEXT_FAVORITE 0x2f
+#define CEC_OP_UI_CMD_CHANNEL_UP 0x30
+#define CEC_OP_UI_CMD_CHANNEL_DOWN 0x31
+#define CEC_OP_UI_CMD_PREVIOUS_CHANNEL 0x32
+#define CEC_OP_UI_CMD_SOUND_SELECT 0x33
+#define CEC_OP_UI_CMD_INPUT_SELECT 0x34
+#define CEC_OP_UI_CMD_DISPLAY_INFORMATION 0x35
+#define CEC_OP_UI_CMD_HELP 0x36
+#define CEC_OP_UI_CMD_PAGE_UP 0x37
+#define CEC_OP_UI_CMD_PAGE_DOWN 0x38
+#define CEC_OP_UI_CMD_POWER 0x40
+#define CEC_OP_UI_CMD_VOLUME_UP 0x41
+#define CEC_OP_UI_CMD_VOLUME_DOWN 0x42
+#define CEC_OP_UI_CMD_MUTE 0x43
+#define CEC_OP_UI_CMD_PLAY 0x44
+#define CEC_OP_UI_CMD_STOP 0x45
+#define CEC_OP_UI_CMD_PAUSE 0x46
+#define CEC_OP_UI_CMD_RECORD 0x47
+#define CEC_OP_UI_CMD_REWIND 0x48
+#define CEC_OP_UI_CMD_FAST_FORWARD 0x49
+#define CEC_OP_UI_CMD_EJECT 0x4a
+#define CEC_OP_UI_CMD_SKIP_FORWARD 0x4b
+#define CEC_OP_UI_CMD_SKIP_BACKWARD 0x4c
+#define CEC_OP_UI_CMD_STOP_RECORD 0x4d
+#define CEC_OP_UI_CMD_PAUSE_RECORD 0x4e
+#define CEC_OP_UI_CMD_ANGLE 0x50
+#define CEC_OP_UI_CMD_SUB_PICTURE 0x51
+#define CEC_OP_UI_CMD_VIDEO_ON_DEMAND 0x52
+#define CEC_OP_UI_CMD_ELECTRONIC_PROGRAM_GUIDE 0x53
+#define CEC_OP_UI_CMD_TIMER_PROGRAMMING 0x54
+#define CEC_OP_UI_CMD_INITIAL_CONFIGURATION 0x55
+#define CEC_OP_UI_CMD_SELECT_BROADCAST_TYPE 0x56
+#define CEC_OP_UI_CMD_SELECT_SOUND_PRESENTATION 0x57
+#define CEC_OP_UI_CMD_AUDIO_DESCRIPTION 0x58
+#define CEC_OP_UI_CMD_INTERNET 0x59
+#define CEC_OP_UI_CMD_3D_MODE 0x5a
+#define CEC_OP_UI_CMD_PLAY_FUNCTION 0x60
+#define CEC_OP_UI_CMD_PAUSE_PLAY_FUNCTION 0x61
+#define CEC_OP_UI_CMD_RECORD_FUNCTION 0x62
+#define CEC_OP_UI_CMD_PAUSE_RECORD_FUNCTION 0x63
+#define CEC_OP_UI_CMD_STOP_FUNCTION 0x64
+#define CEC_OP_UI_CMD_MUTE_FUNCTION 0x65
+#define CEC_OP_UI_CMD_RESTORE_VOLUME_FUNCTION 0x66
+#define CEC_OP_UI_CMD_TUNE_FUNCTION 0x67
+#define CEC_OP_UI_CMD_SELECT_MEDIA_FUNCTION 0x68
+#define CEC_OP_UI_CMD_SELECT_AV_INPUT_FUNCTION 0x69
+#define CEC_OP_UI_CMD_SELECT_AUDIO_INPUT_FUNCTION 0x6a
+#define CEC_OP_UI_CMD_POWER_TOGGLE_FUNCTION 0x6b
+#define CEC_OP_UI_CMD_POWER_OFF_FUNCTION 0x6c
+#define CEC_OP_UI_CMD_POWER_ON_FUNCTION 0x6d
+#define CEC_OP_UI_CMD_F1_BLUE 0x71
+#define CEC_OP_UI_CMD_F2_RED 0x72
+#define CEC_OP_UI_CMD_F3_GREEN 0x73
+#define CEC_OP_UI_CMD_F4_YELLOW 0x74
+#define CEC_OP_UI_CMD_F5 0x75
+#define CEC_OP_UI_CMD_DATA 0x76
+#define CEC_OP_UI_BCAST_TYPE_TOGGLE_ALL 0x00
+#define CEC_OP_UI_BCAST_TYPE_TOGGLE_DIG_ANA 0x01
+#define CEC_OP_UI_BCAST_TYPE_ANALOGUE 0x10
+#define CEC_OP_UI_BCAST_TYPE_ANALOGUE_T 0x20
+#define CEC_OP_UI_BCAST_TYPE_ANALOGUE_CABLE 0x30
+#define CEC_OP_UI_BCAST_TYPE_ANALOGUE_SAT 0x40
+#define CEC_OP_UI_BCAST_TYPE_DIGITAL 0x50
+#define CEC_OP_UI_BCAST_TYPE_DIGITAL_T 0x60
+#define CEC_OP_UI_BCAST_TYPE_DIGITAL_CABLE 0x70
+#define CEC_OP_UI_BCAST_TYPE_DIGITAL_SAT 0x80
+#define CEC_OP_UI_BCAST_TYPE_DIGITAL_COM_SAT 0x90
+#define CEC_OP_UI_BCAST_TYPE_DIGITAL_COM_SAT2 0x91
+#define CEC_OP_UI_BCAST_TYPE_IP 0xa0
+#define CEC_OP_UI_SND_PRES_CTL_DUAL_MONO 0x10
+#define CEC_OP_UI_SND_PRES_CTL_KARAOKE 0x20
+#define CEC_OP_UI_SND_PRES_CTL_DOWNMIX 0x80
+#define CEC_OP_UI_SND_PRES_CTL_REVERB 0x90
+#define CEC_OP_UI_SND_PRES_CTL_EQUALIZER 0xa0
+#define CEC_OP_UI_SND_PRES_CTL_BASS_UP 0xb1
+#define CEC_OP_UI_SND_PRES_CTL_BASS_NEUTRAL 0xb2
+#define CEC_OP_UI_SND_PRES_CTL_BASS_DOWN 0xb3
+#define CEC_OP_UI_SND_PRES_CTL_TREBLE_UP 0xc1
+#define CEC_OP_UI_SND_PRES_CTL_TREBLE_NEUTRAL 0xc2
+#define CEC_OP_UI_SND_PRES_CTL_TREBLE_DOWN 0xc3
+#define CEC_MSG_USER_CONTROL_RELEASED 0x45
+#define CEC_MSG_GIVE_DEVICE_POWER_STATUS 0x8f
+#define CEC_MSG_REPORT_POWER_STATUS 0x90
+#define CEC_OP_POWER_STATUS_ON 0
+#define CEC_OP_POWER_STATUS_STANDBY 1
+#define CEC_OP_POWER_STATUS_TO_ON 2
+#define CEC_OP_POWER_STATUS_TO_STANDBY 3
+#define CEC_MSG_FEATURE_ABORT 0x00
+#define CEC_OP_ABORT_UNRECOGNIZED_OP 0
+#define CEC_OP_ABORT_INCORRECT_MODE 1
+#define CEC_OP_ABORT_NO_SOURCE 2
+#define CEC_OP_ABORT_INVALID_OP 3
+#define CEC_OP_ABORT_REFUSED 4
+#define CEC_OP_ABORT_UNDETERMINED 5
+#define CEC_MSG_ABORT 0xff
+#define CEC_MSG_GIVE_AUDIO_STATUS 0x71
+#define CEC_MSG_GIVE_SYSTEM_AUDIO_MODE_STATUS 0x7d
+#define CEC_MSG_REPORT_AUDIO_STATUS 0x7a
+#define CEC_OP_AUD_MUTE_STATUS_OFF 0
+#define CEC_OP_AUD_MUTE_STATUS_ON 1
+#define CEC_MSG_REPORT_SHORT_AUDIO_DESCRIPTOR 0xa3
+#define CEC_MSG_REQUEST_SHORT_AUDIO_DESCRIPTOR 0xa4
+#define CEC_MSG_SET_SYSTEM_AUDIO_MODE 0x72
+#define CEC_OP_SYS_AUD_STATUS_OFF 0
+#define CEC_OP_SYS_AUD_STATUS_ON 1
+#define CEC_MSG_SYSTEM_AUDIO_MODE_REQUEST 0x70
+#define CEC_MSG_SYSTEM_AUDIO_MODE_STATUS 0x7e
+#define CEC_OP_AUD_FMT_ID_CEA861 0
+#define CEC_OP_AUD_FMT_ID_CEA861_CXT 1
+#define CEC_MSG_SET_AUDIO_RATE 0x9a
+#define CEC_OP_AUD_RATE_OFF 0
+#define CEC_OP_AUD_RATE_WIDE_STD 1
+#define CEC_OP_AUD_RATE_WIDE_FAST 2
+#define CEC_OP_AUD_RATE_WIDE_SLOW 3
+#define CEC_OP_AUD_RATE_NARROW_STD 4
+#define CEC_OP_AUD_RATE_NARROW_FAST 5
+#define CEC_OP_AUD_RATE_NARROW_SLOW 6
+#define CEC_MSG_INITIATE_ARC 0xc0
+#define CEC_MSG_REPORT_ARC_INITIATED 0xc1
+#define CEC_MSG_REPORT_ARC_TERMINATED 0xc2
+#define CEC_MSG_REQUEST_ARC_INITIATION 0xc3
+#define CEC_MSG_REQUEST_ARC_TERMINATION 0xc4
+#define CEC_MSG_TERMINATE_ARC 0xc5
+#define CEC_MSG_REQUEST_CURRENT_LATENCY 0xa7
+#define CEC_MSG_REPORT_CURRENT_LATENCY 0xa8
+#define CEC_OP_LOW_LATENCY_MODE_OFF 0
+#define CEC_OP_LOW_LATENCY_MODE_ON 1
+#define CEC_OP_AUD_OUT_COMPENSATED_NA 0
+#define CEC_OP_AUD_OUT_COMPENSATED_DELAY 1
+#define CEC_OP_AUD_OUT_COMPENSATED_NO_DELAY 2
+#define CEC_OP_AUD_OUT_COMPENSATED_PARTIAL_DELAY 3
+#define CEC_MSG_CDC_MESSAGE 0xf8
+#define CEC_MSG_CDC_HEC_INQUIRE_STATE 0x00
+#define CEC_MSG_CDC_HEC_REPORT_STATE 0x01
+#define CEC_OP_HEC_FUNC_STATE_NOT_SUPPORTED 0
+#define CEC_OP_HEC_FUNC_STATE_INACTIVE 1
+#define CEC_OP_HEC_FUNC_STATE_ACTIVE 2
+#define CEC_OP_HEC_FUNC_STATE_ACTIVATION_FIELD 3
+#define CEC_OP_HOST_FUNC_STATE_NOT_SUPPORTED 0
+#define CEC_OP_HOST_FUNC_STATE_INACTIVE 1
+#define CEC_OP_HOST_FUNC_STATE_ACTIVE 2
+#define CEC_OP_ENC_FUNC_STATE_EXT_CON_NOT_SUPPORTED 0
+#define CEC_OP_ENC_FUNC_STATE_EXT_CON_INACTIVE 1
+#define CEC_OP_ENC_FUNC_STATE_EXT_CON_ACTIVE 2
+#define CEC_OP_CDC_ERROR_CODE_NONE 0
+#define CEC_OP_CDC_ERROR_CODE_CAP_UNSUPPORTED 1
+#define CEC_OP_CDC_ERROR_CODE_WRONG_STATE 2
+#define CEC_OP_CDC_ERROR_CODE_OTHER 3
+#define CEC_OP_HEC_SUPPORT_NO 0
+#define CEC_OP_HEC_SUPPORT_YES 1
+#define CEC_OP_HEC_ACTIVATION_ON 0
+#define CEC_OP_HEC_ACTIVATION_OFF 1
+#define CEC_MSG_CDC_HEC_SET_STATE_ADJACENT 0x02
+#define CEC_MSG_CDC_HEC_SET_STATE 0x03
+#define CEC_OP_HEC_SET_STATE_DEACTIVATE 0
+#define CEC_OP_HEC_SET_STATE_ACTIVATE 1
+#define CEC_MSG_CDC_HEC_REQUEST_DEACTIVATION 0x04
+#define CEC_MSG_CDC_HEC_NOTIFY_ALIVE 0x05
+#define CEC_MSG_CDC_HEC_DISCOVER 0x06
+#define CEC_MSG_CDC_HPD_SET_STATE 0x10
+#define CEC_OP_HPD_STATE_CP_EDID_DISABLE 0
+#define CEC_OP_HPD_STATE_CP_EDID_ENABLE 1
+#define CEC_OP_HPD_STATE_CP_EDID_DISABLE_ENABLE 2
+#define CEC_OP_HPD_STATE_EDID_DISABLE 3
+#define CEC_OP_HPD_STATE_EDID_ENABLE 4
+#define CEC_OP_HPD_STATE_EDID_DISABLE_ENABLE 5
+#define CEC_MSG_CDC_HPD_REPORT_STATE 0x11
+#define CEC_OP_HPD_ERROR_NONE 0
+#define CEC_OP_HPD_ERROR_INITIATOR_NOT_CAPABLE 1
+#define CEC_OP_HPD_ERROR_INITIATOR_WRONG_STATE 2
+#define CEC_OP_HPD_ERROR_OTHER 3
+#define CEC_OP_HPD_ERROR_NONE_NO_VIDEO 4
+#endif
diff --git a/i686-linux-musl/include/linux/cfm_bridge.h b/i686-linux-musl/include/linux/cfm_bridge.h
new file mode 100644
index 0000000..de9d023
--- /dev/null
+++ b/i686-linux-musl/include/linux/cfm_bridge.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_CFM_BRIDGE_H_
+#define _UAPI_LINUX_CFM_BRIDGE_H_
+#include <linux/types.h>
+#include <linux/if_ether.h>
+#define ETHER_HEADER_LENGTH (6 + 6 + 4 + 2)
+#define CFM_MAID_LENGTH 48
+#define CFM_CCM_PDU_LENGTH 75
+#define CFM_PORT_STATUS_TLV_LENGTH 4
+#define CFM_IF_STATUS_TLV_LENGTH 4
+#define CFM_IF_STATUS_TLV_TYPE 4
+#define CFM_PORT_STATUS_TLV_TYPE 2
+#define CFM_ENDE_TLV_TYPE 0
+#define CFM_CCM_MAX_FRAME_LENGTH (ETHER_HEADER_LENGTH + CFM_CCM_PDU_LENGTH + CFM_PORT_STATUS_TLV_LENGTH + CFM_IF_STATUS_TLV_LENGTH)
+#define CFM_FRAME_PRIO 7
+#define CFM_CCM_TLV_OFFSET 70
+#define CFM_CCM_PDU_MAID_OFFSET 10
+#define CFM_CCM_PDU_MEPID_OFFSET 8
+#define CFM_CCM_PDU_SEQNR_OFFSET 4
+#define CFM_CCM_PDU_TLV_OFFSET 74
+#define CFM_CCM_ITU_RESERVED_SIZE 16
+struct br_cfm_common_hdr {
+  __u8 mdlevel_version;
+  __u8 opcode;
+  __u8 flags;
+  __u8 tlv_offset;
+};
+enum br_cfm_opcodes {
+  BR_CFM_OPCODE_CCM = 0x1,
+};
+enum br_cfm_domain {
+  BR_CFM_PORT,
+  BR_CFM_VLAN,
+};
+enum br_cfm_mep_direction {
+  BR_CFM_MEP_DIRECTION_DOWN,
+  BR_CFM_MEP_DIRECTION_UP,
+};
+enum br_cfm_ccm_interval {
+  BR_CFM_CCM_INTERVAL_NONE,
+  BR_CFM_CCM_INTERVAL_3_3_MS,
+  BR_CFM_CCM_INTERVAL_10_MS,
+  BR_CFM_CCM_INTERVAL_100_MS,
+  BR_CFM_CCM_INTERVAL_1_SEC,
+  BR_CFM_CCM_INTERVAL_10_SEC,
+  BR_CFM_CCM_INTERVAL_1_MIN,
+  BR_CFM_CCM_INTERVAL_10_MIN,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/cgroupstats.h b/i686-linux-musl/include/linux/cgroupstats.h
new file mode 100644
index 0000000..3d6a037
--- /dev/null
+++ b/i686-linux-musl/include/linux/cgroupstats.h
@@ -0,0 +1,49 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_CGROUPSTATS_H
+#define _LINUX_CGROUPSTATS_H
+#include <linux/types.h>
+#include <linux/taskstats.h>
+struct cgroupstats {
+  __u64 nr_sleeping;
+  __u64 nr_running;
+  __u64 nr_stopped;
+  __u64 nr_uninterruptible;
+  __u64 nr_io_wait;
+};
+enum {
+  CGROUPSTATS_CMD_UNSPEC = __TASKSTATS_CMD_MAX,
+  CGROUPSTATS_CMD_GET,
+  CGROUPSTATS_CMD_NEW,
+  __CGROUPSTATS_CMD_MAX,
+};
+#define CGROUPSTATS_CMD_MAX (__CGROUPSTATS_CMD_MAX - 1)
+enum {
+  CGROUPSTATS_TYPE_UNSPEC = 0,
+  CGROUPSTATS_TYPE_CGROUP_STATS,
+  __CGROUPSTATS_TYPE_MAX,
+};
+#define CGROUPSTATS_TYPE_MAX (__CGROUPSTATS_TYPE_MAX - 1)
+enum {
+  CGROUPSTATS_CMD_ATTR_UNSPEC = 0,
+  CGROUPSTATS_CMD_ATTR_FD,
+  __CGROUPSTATS_CMD_ATTR_MAX,
+};
+#define CGROUPSTATS_CMD_ATTR_MAX (__CGROUPSTATS_CMD_ATTR_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/chio.h b/i686-linux-musl/include/linux/chio.h
new file mode 100644
index 0000000..725e760
--- /dev/null
+++ b/i686-linux-musl/include/linux/chio.h
@@ -0,0 +1,121 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_CHIO_H
+#define _UAPI_LINUX_CHIO_H
+#define CHET_MT 0
+#define CHET_ST 1
+#define CHET_IE 2
+#define CHET_DT 3
+#define CHET_V1 4
+#define CHET_V2 5
+#define CHET_V3 6
+#define CHET_V4 7
+struct changer_params {
+  int cp_curpicker;
+  int cp_npickers;
+  int cp_nslots;
+  int cp_nportals;
+  int cp_ndrives;
+};
+struct changer_vendor_params {
+  int cvp_n1;
+  char cvp_label1[16];
+  int cvp_n2;
+  char cvp_label2[16];
+  int cvp_n3;
+  char cvp_label3[16];
+  int cvp_n4;
+  char cvp_label4[16];
+  int reserved[8];
+};
+struct changer_move {
+  int cm_fromtype;
+  int cm_fromunit;
+  int cm_totype;
+  int cm_tounit;
+  int cm_flags;
+};
+#define CM_INVERT 1
+struct changer_exchange {
+  int ce_srctype;
+  int ce_srcunit;
+  int ce_fdsttype;
+  int ce_fdstunit;
+  int ce_sdsttype;
+  int ce_sdstunit;
+  int ce_flags;
+};
+#define CE_INVERT1 1
+#define CE_INVERT2 2
+struct changer_position {
+  int cp_type;
+  int cp_unit;
+  int cp_flags;
+};
+#define CP_INVERT 1
+struct changer_element_status {
+  int ces_type;
+  unsigned char __user * ces_data;
+};
+#define CESTATUS_FULL 0x01
+#define CESTATUS_IMPEXP 0x02
+#define CESTATUS_EXCEPT 0x04
+#define CESTATUS_ACCESS 0x08
+#define CESTATUS_EXENAB 0x10
+#define CESTATUS_INENAB 0x20
+struct changer_get_element {
+  int cge_type;
+  int cge_unit;
+  int cge_status;
+  int cge_errno;
+  int cge_srctype;
+  int cge_srcunit;
+  int cge_id;
+  int cge_lun;
+  char cge_pvoltag[36];
+  char cge_avoltag[36];
+  int cge_flags;
+};
+#define CGE_ERRNO 0x01
+#define CGE_INVERT 0x02
+#define CGE_SRC 0x04
+#define CGE_IDLUN 0x08
+#define CGE_PVOLTAG 0x10
+#define CGE_AVOLTAG 0x20
+struct changer_set_voltag {
+  int csv_type;
+  int csv_unit;
+  char csv_voltag[36];
+  int csv_flags;
+};
+#define CSV_PVOLTAG 0x01
+#define CSV_AVOLTAG 0x02
+#define CSV_CLEARTAG 0x04
+#define CHIOMOVE _IOW('c', 1, struct changer_move)
+#define CHIOEXCHANGE _IOW('c', 2, struct changer_exchange)
+#define CHIOPOSITION _IOW('c', 3, struct changer_position)
+#define CHIOGPICKER _IOR('c', 4, int)
+#define CHIOSPICKER _IOW('c', 5, int)
+#define CHIOGPARAMS _IOR('c', 6, struct changer_params)
+#define CHIOGSTATUS _IOW('c', 8, struct changer_element_status)
+#define CHIOGELEM _IOW('c', 16, struct changer_get_element)
+#define CHIOINITELEM _IO('c', 17)
+#define CHIOSVOLTAG _IOW('c', 18, struct changer_set_voltag)
+#define CHIOGVPARAMS _IOR('c', 19, struct changer_vendor_params)
+#endif
diff --git a/i686-linux-musl/include/linux/cifs/cifs_mount.h b/i686-linux-musl/include/linux/cifs/cifs_mount.h
new file mode 100644
index 0000000..33f6fd6
--- /dev/null
+++ b/i686-linux-musl/include/linux/cifs/cifs_mount.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _CIFS_MOUNT_H
+#define _CIFS_MOUNT_H
+#define CIFS_MAX_DOMAINNAME_LEN 256
+#define CIFS_MAX_USERNAME_LEN 256
+#define CIFS_MAX_PASSWORD_LEN 512
+#define CIFS_MAX_SHARE_LEN 256
+#define CIFS_NI_MAXHOST 1024
+#endif
diff --git a/i686-linux-musl/include/linux/cifs/cifs_netlink.h b/i686-linux-musl/include/linux/cifs/cifs_netlink.h
new file mode 100644
index 0000000..7286cfa
--- /dev/null
+++ b/i686-linux-musl/include/linux/cifs/cifs_netlink.h
@@ -0,0 +1,65 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPILINUX_CIFS_NETLINK_H
+#define _UAPILINUX_CIFS_NETLINK_H
+#define CIFS_GENL_NAME "cifs"
+#define CIFS_GENL_VERSION 0x1
+#define CIFS_GENL_MCGRP_SWN_NAME "cifs_mcgrp_swn"
+enum cifs_genl_multicast_groups {
+  CIFS_GENL_MCGRP_SWN,
+};
+enum cifs_genl_attributes {
+  CIFS_GENL_ATTR_UNSPEC,
+  CIFS_GENL_ATTR_SWN_REGISTRATION_ID,
+  CIFS_GENL_ATTR_SWN_NET_NAME,
+  CIFS_GENL_ATTR_SWN_SHARE_NAME,
+  CIFS_GENL_ATTR_SWN_IP,
+  CIFS_GENL_ATTR_SWN_NET_NAME_NOTIFY,
+  CIFS_GENL_ATTR_SWN_SHARE_NAME_NOTIFY,
+  CIFS_GENL_ATTR_SWN_IP_NOTIFY,
+  CIFS_GENL_ATTR_SWN_KRB_AUTH,
+  CIFS_GENL_ATTR_SWN_USER_NAME,
+  CIFS_GENL_ATTR_SWN_PASSWORD,
+  CIFS_GENL_ATTR_SWN_DOMAIN_NAME,
+  CIFS_GENL_ATTR_SWN_NOTIFICATION_TYPE,
+  CIFS_GENL_ATTR_SWN_RESOURCE_STATE,
+  CIFS_GENL_ATTR_SWN_RESOURCE_NAME,
+  __CIFS_GENL_ATTR_MAX,
+};
+#define CIFS_GENL_ATTR_MAX (__CIFS_GENL_ATTR_MAX - 1)
+enum cifs_genl_commands {
+  CIFS_GENL_CMD_UNSPEC,
+  CIFS_GENL_CMD_SWN_REGISTER,
+  CIFS_GENL_CMD_SWN_UNREGISTER,
+  CIFS_GENL_CMD_SWN_NOTIFY,
+  __CIFS_GENL_CMD_MAX
+};
+#define CIFS_GENL_CMD_MAX (__CIFS_GENL_CMD_MAX - 1)
+enum cifs_swn_notification_type {
+  CIFS_SWN_NOTIFICATION_RESOURCE_CHANGE = 0x01,
+  CIFS_SWN_NOTIFICATION_CLIENT_MOVE = 0x02,
+  CIFS_SWN_NOTIFICATION_SHARE_MOVE = 0x03,
+  CIFS_SWN_NOTIFICATION_IP_CHANGE = 0x04,
+};
+enum cifs_swn_resource_state {
+  CIFS_SWN_RESOURCE_STATE_UNKNOWN = 0x00,
+  CIFS_SWN_RESOURCE_STATE_AVAILABLE = 0x01,
+  CIFS_SWN_RESOURCE_STATE_UNAVAILABLE = 0xFF
+};
+#endif
diff --git a/i686-linux-musl/include/linux/close_range.h b/i686-linux-musl/include/linux/close_range.h
new file mode 100644
index 0000000..279e4bb
--- /dev/null
+++ b/i686-linux-musl/include/linux/close_range.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_CLOSE_RANGE_H
+#define _UAPI_LINUX_CLOSE_RANGE_H
+#define CLOSE_RANGE_UNSHARE (1U << 1)
+#define CLOSE_RANGE_CLOEXEC (1U << 2)
+#endif
diff --git a/i686-linux-musl/include/linux/cm4000_cs.h b/i686-linux-musl/include/linux/cm4000_cs.h
new file mode 100644
index 0000000..41b7aa7
--- /dev/null
+++ b/i686-linux-musl/include/linux/cm4000_cs.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_CM4000_H_
+#define _UAPI_CM4000_H_
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define MAX_ATR 33
+#define CM4000_MAX_DEV 4
+typedef struct atreq {
+  __s32 atr_len;
+  unsigned char atr[64];
+  __s32 power_act;
+  unsigned char bIFSD;
+  unsigned char bIFSC;
+} atreq_t;
+typedef struct ptsreq {
+  __u32 protocol;
+  unsigned char flags;
+  unsigned char pts1;
+  unsigned char pts2;
+  unsigned char pts3;
+} ptsreq_t;
+#define CM_IOC_MAGIC 'c'
+#define CM_IOC_MAXNR 255
+#define CM_IOCGSTATUS _IOR(CM_IOC_MAGIC, 0, unsigned char *)
+#define CM_IOCGATR _IOWR(CM_IOC_MAGIC, 1, atreq_t *)
+#define CM_IOCSPTS _IOW(CM_IOC_MAGIC, 2, ptsreq_t *)
+#define CM_IOCSRDR _IO(CM_IOC_MAGIC, 3)
+#define CM_IOCARDOFF _IO(CM_IOC_MAGIC, 4)
+#define CM_IOSDBGLVL _IOW(CM_IOC_MAGIC, 250, int *)
+#define CM_CARD_INSERTED 0x01
+#define CM_CARD_POWERED 0x02
+#define CM_ATR_PRESENT 0x04
+#define CM_ATR_VALID 0x08
+#define CM_STATE_VALID 0x0f
+#define CM_NO_READER 0x10
+#define CM_BAD_CARD 0x20
+#endif
diff --git a/i686-linux-musl/include/linux/cn_proc.h b/i686-linux-musl/include/linux/cn_proc.h
new file mode 100644
index 0000000..411b725
--- /dev/null
+++ b/i686-linux-musl/include/linux/cn_proc.h
@@ -0,0 +1,97 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPICN_PROC_H
+#define _UAPICN_PROC_H
+#include <linux/types.h>
+enum proc_cn_mcast_op {
+  PROC_CN_MCAST_LISTEN = 1,
+  PROC_CN_MCAST_IGNORE = 2
+};
+struct proc_event {
+  enum what {
+    PROC_EVENT_NONE = 0x00000000,
+    PROC_EVENT_FORK = 0x00000001,
+    PROC_EVENT_EXEC = 0x00000002,
+    PROC_EVENT_UID = 0x00000004,
+    PROC_EVENT_GID = 0x00000040,
+    PROC_EVENT_SID = 0x00000080,
+    PROC_EVENT_PTRACE = 0x00000100,
+    PROC_EVENT_COMM = 0x00000200,
+    PROC_EVENT_COREDUMP = 0x40000000,
+    PROC_EVENT_EXIT = 0x80000000
+  } what;
+  __u32 cpu;
+  __u64 __attribute__((aligned(8))) timestamp_ns;
+  union {
+    struct {
+      __u32 err;
+    } ack;
+    struct fork_proc_event {
+      __kernel_pid_t parent_pid;
+      __kernel_pid_t parent_tgid;
+      __kernel_pid_t child_pid;
+      __kernel_pid_t child_tgid;
+    } fork;
+    struct exec_proc_event {
+      __kernel_pid_t process_pid;
+      __kernel_pid_t process_tgid;
+    } exec;
+    struct id_proc_event {
+      __kernel_pid_t process_pid;
+      __kernel_pid_t process_tgid;
+      union {
+        __u32 ruid;
+        __u32 rgid;
+      } r;
+      union {
+        __u32 euid;
+        __u32 egid;
+      } e;
+    } id;
+    struct sid_proc_event {
+      __kernel_pid_t process_pid;
+      __kernel_pid_t process_tgid;
+    } sid;
+    struct ptrace_proc_event {
+      __kernel_pid_t process_pid;
+      __kernel_pid_t process_tgid;
+      __kernel_pid_t tracer_pid;
+      __kernel_pid_t tracer_tgid;
+    } ptrace;
+    struct comm_proc_event {
+      __kernel_pid_t process_pid;
+      __kernel_pid_t process_tgid;
+      char comm[16];
+    } comm;
+    struct coredump_proc_event {
+      __kernel_pid_t process_pid;
+      __kernel_pid_t process_tgid;
+      __kernel_pid_t parent_pid;
+      __kernel_pid_t parent_tgid;
+    } coredump;
+    struct exit_proc_event {
+      __kernel_pid_t process_pid;
+      __kernel_pid_t process_tgid;
+      __u32 exit_code, exit_signal;
+      __kernel_pid_t parent_pid;
+      __kernel_pid_t parent_tgid;
+    } exit;
+  } event_data;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/coda.h b/i686-linux-musl/include/linux/coda.h
new file mode 100644
index 0000000..aad1b97
--- /dev/null
+++ b/i686-linux-musl/include/linux/coda.h
@@ -0,0 +1,526 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_CODA_HEADER_
+#define _UAPI_CODA_HEADER_
+#if defined(__NetBSD__) || (defined(DJGPP) || defined(__CYGWIN32__)) && !defined(KERNEL)
+#include <sys/types.h>
+#endif
+#ifndef CODA_MAXSYMLINKS
+#define CODA_MAXSYMLINKS 10
+#endif
+#if defined(DJGPP) || defined(__CYGWIN32__)
+#ifdef KERNEL
+typedef unsigned long u_long;
+typedef unsigned int u_int;
+typedef unsigned short u_short;
+typedef u_long ino_t;
+typedef u_long dev_t;
+typedef void * caddr_t;
+#ifdef DOS
+typedef unsigned __int64 u_quad_t;
+#else
+typedef unsigned long long u_quad_t;
+#endif
+#define inline
+#else
+#include <sys/time.h>
+typedef unsigned long long u_quad_t;
+#endif
+#endif
+#ifdef __linux__
+#include <linux/time.h>
+#define cdev_t u_quad_t
+#if !defined(_UQUAD_T_) && (!defined(__GLIBC__) || __GLIBC__ < 2)
+#define _UQUAD_T_ 1
+typedef unsigned long long u_quad_t;
+#endif
+#else
+#define cdev_t dev_t
+#endif
+#ifndef __BIT_TYPES_DEFINED__
+#define __BIT_TYPES_DEFINED__
+typedef signed char int8_t;
+typedef unsigned char u_int8_t;
+typedef short int16_t;
+typedef unsigned short u_int16_t;
+typedef int int32_t;
+typedef unsigned int u_int32_t;
+#endif
+#define CODA_MAXNAMLEN 255
+#define CODA_MAXPATHLEN 1024
+#define CODA_MAXSYMLINK 10
+#define C_O_READ 0x001
+#define C_O_WRITE 0x002
+#define C_O_TRUNC 0x010
+#define C_O_EXCL 0x100
+#define C_O_CREAT 0x200
+#define C_M_READ 00400
+#define C_M_WRITE 00200
+#define C_A_C_OK 8
+#define C_A_R_OK 4
+#define C_A_W_OK 2
+#define C_A_X_OK 1
+#define C_A_F_OK 0
+#ifndef _VENUS_DIRENT_T_
+#define _VENUS_DIRENT_T_ 1
+struct venus_dirent {
+  u_int32_t d_fileno;
+  u_int16_t d_reclen;
+  u_int8_t d_type;
+  u_int8_t d_namlen;
+  char d_name[CODA_MAXNAMLEN + 1];
+};
+#undef DIRSIZ
+#define DIRSIZ(dp) ((sizeof(struct venus_dirent) - (CODA_MAXNAMLEN + 1)) + (((dp)->d_namlen + 1 + 3) & ~3))
+#define CDT_UNKNOWN 0
+#define CDT_FIFO 1
+#define CDT_CHR 2
+#define CDT_DIR 4
+#define CDT_BLK 6
+#define CDT_REG 8
+#define CDT_LNK 10
+#define CDT_SOCK 12
+#define CDT_WHT 14
+#define IFTOCDT(mode) (((mode) & 0170000) >> 12)
+#define CDTTOIF(dirtype) ((dirtype) << 12)
+#endif
+#ifndef _VUID_T_
+#define _VUID_T_
+typedef u_int32_t vuid_t;
+typedef u_int32_t vgid_t;
+#endif
+struct CodaFid {
+  u_int32_t opaque[4];
+};
+#define coda_f2i(fid) (fid ? (fid->opaque[3] ^ (fid->opaque[2] << 10) ^ (fid->opaque[1] << 20) ^ fid->opaque[0]) : 0)
+#ifndef _VENUS_VATTR_T_
+#define _VENUS_VATTR_T_
+enum coda_vtype {
+  C_VNON,
+  C_VREG,
+  C_VDIR,
+  C_VBLK,
+  C_VCHR,
+  C_VLNK,
+  C_VSOCK,
+  C_VFIFO,
+  C_VBAD
+};
+struct coda_timespec {
+  int64_t tv_sec;
+  long tv_nsec;
+};
+struct coda_vattr {
+  long va_type;
+  u_short va_mode;
+  short va_nlink;
+  vuid_t va_uid;
+  vgid_t va_gid;
+  long va_fileid;
+  u_quad_t va_size;
+  long va_blocksize;
+  struct coda_timespec va_atime;
+  struct coda_timespec va_mtime;
+  struct coda_timespec va_ctime;
+  u_long va_gen;
+  u_long va_flags;
+  cdev_t va_rdev;
+  u_quad_t va_bytes;
+  u_quad_t va_filerev;
+};
+#endif
+struct coda_statfs {
+  int32_t f_blocks;
+  int32_t f_bfree;
+  int32_t f_bavail;
+  int32_t f_files;
+  int32_t f_ffree;
+};
+#define CODA_ROOT 2
+#define CODA_OPEN_BY_FD 3
+#define CODA_OPEN 4
+#define CODA_CLOSE 5
+#define CODA_IOCTL 6
+#define CODA_GETATTR 7
+#define CODA_SETATTR 8
+#define CODA_ACCESS 9
+#define CODA_LOOKUP 10
+#define CODA_CREATE 11
+#define CODA_REMOVE 12
+#define CODA_LINK 13
+#define CODA_RENAME 14
+#define CODA_MKDIR 15
+#define CODA_RMDIR 16
+#define CODA_SYMLINK 18
+#define CODA_READLINK 19
+#define CODA_FSYNC 20
+#define CODA_VGET 22
+#define CODA_SIGNAL 23
+#define CODA_REPLACE 24
+#define CODA_FLUSH 25
+#define CODA_PURGEUSER 26
+#define CODA_ZAPFILE 27
+#define CODA_ZAPDIR 28
+#define CODA_PURGEFID 30
+#define CODA_OPEN_BY_PATH 31
+#define CODA_RESOLVE 32
+#define CODA_REINTEGRATE 33
+#define CODA_STATFS 34
+#define CODA_STORE 35
+#define CODA_RELEASE 36
+#define CODA_ACCESS_INTENT 37
+#define CODA_NCALLS 38
+#define DOWNCALL(opcode) (opcode >= CODA_REPLACE && opcode <= CODA_PURGEFID)
+#define VC_MAXDATASIZE 8192
+#define VC_MAXMSGSIZE sizeof(union inputArgs) + sizeof(union outputArgs) + VC_MAXDATASIZE
+#define CIOC_KERNEL_VERSION _IOWR('c', 10, size_t)
+#define CODA_KERNEL_VERSION 5
+struct coda_in_hdr {
+  u_int32_t opcode;
+  u_int32_t unique;
+  __kernel_pid_t pid;
+  __kernel_pid_t pgid;
+  vuid_t uid;
+};
+struct coda_out_hdr {
+  u_int32_t opcode;
+  u_int32_t unique;
+  u_int32_t result;
+};
+struct coda_root_out {
+  struct coda_out_hdr oh;
+  struct CodaFid VFid;
+};
+struct coda_root_in {
+  struct coda_in_hdr in;
+};
+struct coda_open_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int flags;
+};
+struct coda_open_out {
+  struct coda_out_hdr oh;
+  cdev_t dev;
+  ino_t inode;
+};
+struct coda_store_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int flags;
+};
+struct coda_store_out {
+  struct coda_out_hdr out;
+};
+struct coda_release_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int flags;
+};
+struct coda_release_out {
+  struct coda_out_hdr out;
+};
+struct coda_close_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int flags;
+};
+struct coda_close_out {
+  struct coda_out_hdr out;
+};
+struct coda_ioctl_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int cmd;
+  int len;
+  int rwflag;
+  char * data;
+};
+struct coda_ioctl_out {
+  struct coda_out_hdr oh;
+  int len;
+  caddr_t data;
+};
+struct coda_getattr_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+};
+struct coda_getattr_out {
+  struct coda_out_hdr oh;
+  struct coda_vattr attr;
+};
+struct coda_setattr_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  struct coda_vattr attr;
+};
+struct coda_setattr_out {
+  struct coda_out_hdr out;
+};
+struct coda_access_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int flags;
+};
+struct coda_access_out {
+  struct coda_out_hdr out;
+};
+#define CLU_CASE_SENSITIVE 0x01
+#define CLU_CASE_INSENSITIVE 0x02
+struct coda_lookup_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int name;
+  int flags;
+};
+struct coda_lookup_out {
+  struct coda_out_hdr oh;
+  struct CodaFid VFid;
+  int vtype;
+};
+struct coda_create_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  struct coda_vattr attr;
+  int excl;
+  int mode;
+  int name;
+};
+struct coda_create_out {
+  struct coda_out_hdr oh;
+  struct CodaFid VFid;
+  struct coda_vattr attr;
+};
+struct coda_remove_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int name;
+};
+struct coda_remove_out {
+  struct coda_out_hdr out;
+};
+struct coda_link_in {
+  struct coda_in_hdr ih;
+  struct CodaFid sourceFid;
+  struct CodaFid destFid;
+  int tname;
+};
+struct coda_link_out {
+  struct coda_out_hdr out;
+};
+struct coda_rename_in {
+  struct coda_in_hdr ih;
+  struct CodaFid sourceFid;
+  int srcname;
+  struct CodaFid destFid;
+  int destname;
+};
+struct coda_rename_out {
+  struct coda_out_hdr out;
+};
+struct coda_mkdir_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  struct coda_vattr attr;
+  int name;
+};
+struct coda_mkdir_out {
+  struct coda_out_hdr oh;
+  struct CodaFid VFid;
+  struct coda_vattr attr;
+};
+struct coda_rmdir_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int name;
+};
+struct coda_rmdir_out {
+  struct coda_out_hdr out;
+};
+struct coda_symlink_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int srcname;
+  struct coda_vattr attr;
+  int tname;
+};
+struct coda_symlink_out {
+  struct coda_out_hdr out;
+};
+struct coda_readlink_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+};
+struct coda_readlink_out {
+  struct coda_out_hdr oh;
+  int count;
+  caddr_t data;
+};
+struct coda_fsync_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+};
+struct coda_fsync_out {
+  struct coda_out_hdr out;
+};
+struct coda_vget_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+};
+struct coda_vget_out {
+  struct coda_out_hdr oh;
+  struct CodaFid VFid;
+  int vtype;
+};
+struct coda_purgeuser_out {
+  struct coda_out_hdr oh;
+  vuid_t uid;
+};
+struct coda_zapfile_out {
+  struct coda_out_hdr oh;
+  struct CodaFid CodaFid;
+};
+struct coda_zapdir_out {
+  struct coda_out_hdr oh;
+  struct CodaFid CodaFid;
+};
+struct coda_purgefid_out {
+  struct coda_out_hdr oh;
+  struct CodaFid CodaFid;
+};
+struct coda_replace_out {
+  struct coda_out_hdr oh;
+  struct CodaFid NewFid;
+  struct CodaFid OldFid;
+};
+struct coda_open_by_fd_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int flags;
+};
+struct coda_open_by_fd_out {
+  struct coda_out_hdr oh;
+  int fd;
+};
+struct coda_open_by_path_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int flags;
+};
+struct coda_open_by_path_out {
+  struct coda_out_hdr oh;
+  int path;
+};
+struct coda_statfs_in {
+  struct coda_in_hdr in;
+};
+struct coda_statfs_out {
+  struct coda_out_hdr oh;
+  struct coda_statfs stat;
+};
+#define CODA_ACCESS_TYPE_READ 1
+#define CODA_ACCESS_TYPE_WRITE 2
+#define CODA_ACCESS_TYPE_MMAP 3
+#define CODA_ACCESS_TYPE_READ_FINISH 4
+#define CODA_ACCESS_TYPE_WRITE_FINISH 5
+struct coda_access_intent_in {
+  struct coda_in_hdr ih;
+  struct CodaFid VFid;
+  int count;
+  int pos;
+  int type;
+};
+struct coda_access_intent_out {
+  struct coda_out_hdr out;
+};
+#define CODA_NOCACHE 0x80000000
+union inputArgs {
+  struct coda_in_hdr ih;
+  struct coda_open_in coda_open;
+  struct coda_store_in coda_store;
+  struct coda_release_in coda_release;
+  struct coda_close_in coda_close;
+  struct coda_ioctl_in coda_ioctl;
+  struct coda_getattr_in coda_getattr;
+  struct coda_setattr_in coda_setattr;
+  struct coda_access_in coda_access;
+  struct coda_lookup_in coda_lookup;
+  struct coda_create_in coda_create;
+  struct coda_remove_in coda_remove;
+  struct coda_link_in coda_link;
+  struct coda_rename_in coda_rename;
+  struct coda_mkdir_in coda_mkdir;
+  struct coda_rmdir_in coda_rmdir;
+  struct coda_symlink_in coda_symlink;
+  struct coda_readlink_in coda_readlink;
+  struct coda_fsync_in coda_fsync;
+  struct coda_vget_in coda_vget;
+  struct coda_open_by_fd_in coda_open_by_fd;
+  struct coda_open_by_path_in coda_open_by_path;
+  struct coda_statfs_in coda_statfs;
+  struct coda_access_intent_in coda_access_intent;
+};
+union outputArgs {
+  struct coda_out_hdr oh;
+  struct coda_root_out coda_root;
+  struct coda_open_out coda_open;
+  struct coda_ioctl_out coda_ioctl;
+  struct coda_getattr_out coda_getattr;
+  struct coda_lookup_out coda_lookup;
+  struct coda_create_out coda_create;
+  struct coda_mkdir_out coda_mkdir;
+  struct coda_readlink_out coda_readlink;
+  struct coda_vget_out coda_vget;
+  struct coda_purgeuser_out coda_purgeuser;
+  struct coda_zapfile_out coda_zapfile;
+  struct coda_zapdir_out coda_zapdir;
+  struct coda_purgefid_out coda_purgefid;
+  struct coda_replace_out coda_replace;
+  struct coda_open_by_fd_out coda_open_by_fd;
+  struct coda_open_by_path_out coda_open_by_path;
+  struct coda_statfs_out coda_statfs;
+};
+union coda_downcalls {
+  struct coda_purgeuser_out purgeuser;
+  struct coda_zapfile_out zapfile;
+  struct coda_zapdir_out zapdir;
+  struct coda_purgefid_out purgefid;
+  struct coda_replace_out replace;
+};
+#define PIOCPARM_MASK 0x0000ffff
+struct ViceIoctl {
+  void __user * in;
+  void __user * out;
+  u_short in_size;
+  u_short out_size;
+};
+struct PioctlData {
+  const char __user * path;
+  int follow;
+  struct ViceIoctl vi;
+};
+#define CODA_CONTROL ".CONTROL"
+#define CODA_CONTROLLEN 8
+#define CTL_INO - 1
+#define CODA_MOUNT_VERSION 1
+struct coda_mount_data {
+  int version;
+  int fd;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/coff.h b/i686-linux-musl/include/linux/coff.h
new file mode 100644
index 0000000..8f93b61
--- /dev/null
+++ b/i686-linux-musl/include/linux/coff.h
@@ -0,0 +1,198 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_COFF_H
+#define _UAPI_LINUX_COFF_H
+#define E_SYMNMLEN 8
+#define E_FILNMLEN 14
+#define E_DIMNUM 4
+#define COFF_SHORT_L(ps) ((short) (((unsigned short) ((unsigned char) ps[1]) << 8) | ((unsigned short) ((unsigned char) ps[0]))))
+#define COFF_LONG_L(ps) (((long) (((unsigned long) ((unsigned char) ps[3]) << 24) | ((unsigned long) ((unsigned char) ps[2]) << 16) | ((unsigned long) ((unsigned char) ps[1]) << 8) | ((unsigned long) ((unsigned char) ps[0])))))
+#define COFF_SHORT_H(ps) ((short) (((unsigned short) ((unsigned char) ps[0]) << 8) | ((unsigned short) ((unsigned char) ps[1]))))
+#define COFF_LONG_H(ps) (((long) (((unsigned long) ((unsigned char) ps[0]) << 24) | ((unsigned long) ((unsigned char) ps[1]) << 16) | ((unsigned long) ((unsigned char) ps[2]) << 8) | ((unsigned long) ((unsigned char) ps[3])))))
+#define COFF_LONG(v) COFF_LONG_L(v)
+#define COFF_SHORT(v) COFF_SHORT_L(v)
+struct COFF_filehdr {
+  char f_magic[2];
+  char f_nscns[2];
+  char f_timdat[4];
+  char f_symptr[4];
+  char f_nsyms[4];
+  char f_opthdr[2];
+  char f_flags[2];
+};
+#define COFF_F_RELFLG 0000001
+#define COFF_F_EXEC 0000002
+#define COFF_F_LNNO 0000004
+#define COFF_F_LSYMS 0000010
+#define COFF_F_MINMAL 0000020
+#define COFF_F_UPDATE 0000040
+#define COFF_F_SWABD 0000100
+#define COFF_F_AR16WR 0000200
+#define COFF_F_AR32WR 0000400
+#define COFF_F_AR32W 0001000
+#define COFF_F_PATCH 0002000
+#define COFF_F_NODF 0002000
+#define COFF_I386MAGIC 0x14c
+#define COFF_I386BADMAG(x) (COFF_SHORT((x).f_magic) != COFF_I386MAGIC)
+#define COFF_FILHDR struct COFF_filehdr
+#define COFF_FILHSZ sizeof(COFF_FILHDR)
+typedef struct {
+  char magic[2];
+  char vstamp[2];
+  char tsize[4];
+  char dsize[4];
+  char bsize[4];
+  char entry[4];
+  char text_start[4];
+  char data_start[4];
+} COFF_AOUTHDR;
+#define COFF_AOUTSZ (sizeof(COFF_AOUTHDR))
+#define COFF_STMAGIC 0401
+#define COFF_OMAGIC 0404
+#define COFF_JMAGIC 0407
+#define COFF_DMAGIC 0410
+#define COFF_ZMAGIC 0413
+#define COFF_SHMAGIC 0443
+struct COFF_scnhdr {
+  char s_name[8];
+  char s_paddr[4];
+  char s_vaddr[4];
+  char s_size[4];
+  char s_scnptr[4];
+  char s_relptr[4];
+  char s_lnnoptr[4];
+  char s_nreloc[2];
+  char s_nlnno[2];
+  char s_flags[4];
+};
+#define COFF_SCNHDR struct COFF_scnhdr
+#define COFF_SCNHSZ sizeof(COFF_SCNHDR)
+#define COFF_TEXT ".text"
+#define COFF_DATA ".data"
+#define COFF_BSS ".bss"
+#define COFF_COMMENT ".comment"
+#define COFF_LIB ".lib"
+#define COFF_SECT_TEXT 0
+#define COFF_SECT_DATA 1
+#define COFF_SECT_BSS 2
+#define COFF_SECT_REQD 3
+#define COFF_STYP_REG 0x00
+#define COFF_STYP_DSECT 0x01
+#define COFF_STYP_NOLOAD 0x02
+#define COFF_STYP_GROUP 0x04
+#define COFF_STYP_PAD 0x08
+#define COFF_STYP_COPY 0x10
+#define COFF_STYP_TEXT 0x20
+#define COFF_STYP_DATA 0x40
+#define COFF_STYP_BSS 0x80
+#define COFF_STYP_INFO 0x200
+#define COFF_STYP_OVER 0x400
+#define COFF_STYP_LIB 0x800
+struct COFF_slib {
+  char sl_entsz[4];
+  char sl_pathndx[4];
+};
+#define COFF_SLIBHD struct COFF_slib
+#define COFF_SLIBSZ sizeof(COFF_SLIBHD)
+struct COFF_lineno {
+  union {
+    char l_symndx[4];
+    char l_paddr[4];
+  } l_addr;
+  char l_lnno[2];
+};
+#define COFF_LINENO struct COFF_lineno
+#define COFF_LINESZ 6
+#define COFF_E_SYMNMLEN 8
+#define COFF_E_FILNMLEN 14
+#define COFF_E_DIMNUM 4
+struct COFF_syment {
+  union {
+    char e_name[E_SYMNMLEN];
+    struct {
+      char e_zeroes[4];
+      char e_offset[4];
+    } e;
+  } e;
+  char e_value[4];
+  char e_scnum[2];
+  char e_type[2];
+  char e_sclass[1];
+  char e_numaux[1];
+};
+#define COFF_N_BTMASK (0xf)
+#define COFF_N_TMASK (0x30)
+#define COFF_N_BTSHFT (4)
+#define COFF_N_TSHIFT (2)
+union COFF_auxent {
+  struct {
+    char x_tagndx[4];
+    union {
+      struct {
+        char x_lnno[2];
+        char x_size[2];
+      } x_lnsz;
+      char x_fsize[4];
+    } x_misc;
+    union {
+      struct {
+        char x_lnnoptr[4];
+        char x_endndx[4];
+      } x_fcn;
+      struct {
+        char x_dimen[E_DIMNUM][2];
+      } x_ary;
+    } x_fcnary;
+    char x_tvndx[2];
+  } x_sym;
+  union {
+    char x_fname[E_FILNMLEN];
+    struct {
+      char x_zeroes[4];
+      char x_offset[4];
+    } x_n;
+  } x_file;
+  struct {
+    char x_scnlen[4];
+    char x_nreloc[2];
+    char x_nlinno[2];
+  } x_scn;
+  struct {
+    char x_tvfill[4];
+    char x_tvlen[2];
+    char x_tvran[2][2];
+  } x_tv;
+};
+#define COFF_SYMENT struct COFF_syment
+#define COFF_SYMESZ 18
+#define COFF_AUXENT union COFF_auxent
+#define COFF_AUXESZ 18
+#define COFF_ETEXT "etext"
+struct COFF_reloc {
+  char r_vaddr[4];
+  char r_symndx[4];
+  char r_type[2];
+};
+#define COFF_RELOC struct COFF_reloc
+#define COFF_RELSZ 10
+#define COFF_DEF_DATA_SECTION_ALIGNMENT 4
+#define COFF_DEF_BSS_SECTION_ALIGNMENT 4
+#define COFF_DEF_TEXT_SECTION_ALIGNMENT 4
+#define COFF_DEF_SECTION_ALIGNMENT 4
+#endif
diff --git a/i686-linux-musl/include/linux/compiler.h b/i686-linux-musl/include/linux/compiler.h
new file mode 100644
index 0000000..8e89655
--- /dev/null
+++ b/i686-linux-musl/include/linux/compiler.h
@@ -0,0 +1,18 @@
+#ifndef _UAPI_LINUX_COMPILER_H
+#define _UAPI_LINUX_COMPILER_H
+
+/*
+ * This file is not currently in the Linux kernel tree.
+ * Upstream uapi headers refer to <linux/compiler.h> but there is
+ * no such uapi file. We've sent this upstream, and are optimistically
+ * adding it to bionic in the meantime. This should be replaced by
+ * a scrubbed header from external/kernel-headers when possible.
+ *
+ * An alternative to this file is to check in a symbolic link to the
+ * non-uapi <linux/compiler.h>. That's fine for building bionic too.
+ */
+
+#define __user
+#define __force
+
+#endif /* _UAPI_LINUX_COMPILER_H */
diff --git a/i686-linux-musl/include/linux/compiler_types.h b/i686-linux-musl/include/linux/compiler_types.h
new file mode 100644
index 0000000..94f4fbe
--- /dev/null
+++ b/i686-linux-musl/include/linux/compiler_types.h
@@ -0,0 +1,5 @@
+/*
+ * The compiler.h file has been split into compiler.h and compiler_types.h.
+ * However, to compile bionic we only need the compiler.h.
+ */
+#include <linux/compiler.h>
diff --git a/i686-linux-musl/include/linux/connector.h b/i686-linux-musl/include/linux/connector.h
new file mode 100644
index 0000000..adf3a7f
--- /dev/null
+++ b/i686-linux-musl/include/linux/connector.h
@@ -0,0 +1,55 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__CONNECTOR_H
+#define _UAPI__CONNECTOR_H
+#include <linux/types.h>
+#define CN_IDX_PROC 0x1
+#define CN_VAL_PROC 0x1
+#define CN_IDX_CIFS 0x2
+#define CN_VAL_CIFS 0x1
+#define CN_W1_IDX 0x3
+#define CN_W1_VAL 0x1
+#define CN_IDX_V86D 0x4
+#define CN_VAL_V86D_UVESAFB 0x1
+#define CN_IDX_BB 0x5
+#define CN_DST_IDX 0x6
+#define CN_DST_VAL 0x1
+#define CN_IDX_DM 0x7
+#define CN_VAL_DM_USERSPACE_LOG 0x1
+#define CN_IDX_DRBD 0x8
+#define CN_VAL_DRBD 0x1
+#define CN_KVP_IDX 0x9
+#define CN_KVP_VAL 0x1
+#define CN_VSS_IDX 0xA
+#define CN_VSS_VAL 0x1
+#define CN_NETLINK_USERS 11
+#define CONNECTOR_MAX_MSG_SIZE 16384
+struct cb_id {
+  __u32 idx;
+  __u32 val;
+};
+struct cn_msg {
+  struct cb_id id;
+  __u32 seq;
+  __u32 ack;
+  __u16 len;
+  __u16 flags;
+  __u8 data[0];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/const.h b/i686-linux-musl/include/linux/const.h
new file mode 100644
index 0000000..c62a702
--- /dev/null
+++ b/i686-linux-musl/include/linux/const.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_CONST_H
+#define _UAPI_LINUX_CONST_H
+#ifdef __ASSEMBLY__
+#define _AC(X,Y) X
+#define _AT(T,X) X
+#else
+#define __AC(X,Y) (X ##Y)
+#define _AC(X,Y) __AC(X, Y)
+#define _AT(T,X) ((T) (X))
+#endif
+#define _UL(x) (_AC(x, UL))
+#define _ULL(x) (_AC(x, ULL))
+#define _BITUL(x) (_UL(1) << (x))
+#define _BITULL(x) (_ULL(1) << (x))
+#define __ALIGN_KERNEL(x,a) __ALIGN_KERNEL_MASK(x, (typeof(x)) (a) - 1)
+#define __ALIGN_KERNEL_MASK(x,mask) (((x) + (mask)) & ~(mask))
+#define __KERNEL_DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
+#endif
diff --git a/i686-linux-musl/include/linux/coresight-stm.h b/i686-linux-musl/include/linux/coresight-stm.h
new file mode 100644
index 0000000..86d80ca
--- /dev/null
+++ b/i686-linux-musl/include/linux/coresight-stm.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_CORESIGHT_STM_H_
+#define __UAPI_CORESIGHT_STM_H_
+#include <linux/const.h>
+#define STM_FLAG_TIMESTAMPED _BITUL(3)
+#define STM_FLAG_MARKED _BITUL(4)
+#define STM_FLAG_GUARANTEED _BITUL(7)
+enum {
+  STM_OPTION_GUARANTEED = 0,
+  STM_OPTION_INVARIANT,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/counter.h b/i686-linux-musl/include/linux/counter.h
new file mode 100644
index 0000000..091e33d
--- /dev/null
+++ b/i686-linux-musl/include/linux/counter.h
@@ -0,0 +1,93 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_COUNTER_H_
+#define _UAPI_COUNTER_H_
+#include <linux/ioctl.h>
+#include <linux/types.h>
+enum counter_component_type {
+  COUNTER_COMPONENT_NONE,
+  COUNTER_COMPONENT_SIGNAL,
+  COUNTER_COMPONENT_COUNT,
+  COUNTER_COMPONENT_FUNCTION,
+  COUNTER_COMPONENT_SYNAPSE_ACTION,
+  COUNTER_COMPONENT_EXTENSION,
+};
+enum counter_scope {
+  COUNTER_SCOPE_DEVICE,
+  COUNTER_SCOPE_SIGNAL,
+  COUNTER_SCOPE_COUNT,
+};
+struct counter_component {
+  __u8 type;
+  __u8 scope;
+  __u8 parent;
+  __u8 id;
+};
+enum counter_event_type {
+  COUNTER_EVENT_OVERFLOW,
+  COUNTER_EVENT_UNDERFLOW,
+  COUNTER_EVENT_OVERFLOW_UNDERFLOW,
+  COUNTER_EVENT_THRESHOLD,
+  COUNTER_EVENT_INDEX,
+};
+struct counter_watch {
+  struct counter_component component;
+  __u8 event;
+  __u8 channel;
+};
+#define COUNTER_ADD_WATCH_IOCTL _IOW(0x3E, 0x00, struct counter_watch)
+#define COUNTER_ENABLE_EVENTS_IOCTL _IO(0x3E, 0x01)
+#define COUNTER_DISABLE_EVENTS_IOCTL _IO(0x3E, 0x02)
+struct counter_event {
+  __aligned_u64 timestamp;
+  __aligned_u64 value;
+  struct counter_watch watch;
+  __u8 status;
+};
+enum counter_count_direction {
+  COUNTER_COUNT_DIRECTION_FORWARD,
+  COUNTER_COUNT_DIRECTION_BACKWARD,
+};
+enum counter_count_mode {
+  COUNTER_COUNT_MODE_NORMAL,
+  COUNTER_COUNT_MODE_RANGE_LIMIT,
+  COUNTER_COUNT_MODE_NON_RECYCLE,
+  COUNTER_COUNT_MODE_MODULO_N,
+};
+enum counter_function {
+  COUNTER_FUNCTION_INCREASE,
+  COUNTER_FUNCTION_DECREASE,
+  COUNTER_FUNCTION_PULSE_DIRECTION,
+  COUNTER_FUNCTION_QUADRATURE_X1_A,
+  COUNTER_FUNCTION_QUADRATURE_X1_B,
+  COUNTER_FUNCTION_QUADRATURE_X2_A,
+  COUNTER_FUNCTION_QUADRATURE_X2_B,
+  COUNTER_FUNCTION_QUADRATURE_X4,
+};
+enum counter_signal_level {
+  COUNTER_SIGNAL_LEVEL_LOW,
+  COUNTER_SIGNAL_LEVEL_HIGH,
+};
+enum counter_synapse_action {
+  COUNTER_SYNAPSE_ACTION_NONE,
+  COUNTER_SYNAPSE_ACTION_RISING_EDGE,
+  COUNTER_SYNAPSE_ACTION_FALLING_EDGE,
+  COUNTER_SYNAPSE_ACTION_BOTH_EDGES,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/cramfs_fs.h b/i686-linux-musl/include/linux/cramfs_fs.h
new file mode 100644
index 0000000..8872914
--- /dev/null
+++ b/i686-linux-musl/include/linux/cramfs_fs.h
@@ -0,0 +1,63 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__CRAMFS_H
+#define _UAPI__CRAMFS_H
+#include <linux/types.h>
+#include <linux/magic.h>
+#define CRAMFS_SIGNATURE "Compressed ROMFS"
+#define CRAMFS_MODE_WIDTH 16
+#define CRAMFS_UID_WIDTH 16
+#define CRAMFS_SIZE_WIDTH 24
+#define CRAMFS_GID_WIDTH 8
+#define CRAMFS_NAMELEN_WIDTH 6
+#define CRAMFS_OFFSET_WIDTH 26
+#define CRAMFS_MAXPATHLEN (((1 << CRAMFS_NAMELEN_WIDTH) - 1) << 2)
+struct cramfs_inode {
+  __u32 mode : CRAMFS_MODE_WIDTH, uid : CRAMFS_UID_WIDTH;
+  __u32 size : CRAMFS_SIZE_WIDTH, gid : CRAMFS_GID_WIDTH;
+  __u32 namelen : CRAMFS_NAMELEN_WIDTH, offset : CRAMFS_OFFSET_WIDTH;
+};
+struct cramfs_info {
+  __u32 crc;
+  __u32 edition;
+  __u32 blocks;
+  __u32 files;
+};
+struct cramfs_super {
+  __u32 magic;
+  __u32 size;
+  __u32 flags;
+  __u32 future;
+  __u8 signature[16];
+  struct cramfs_info fsid;
+  __u8 name[16];
+  struct cramfs_inode root;
+};
+#define CRAMFS_FLAG_FSID_VERSION_2 0x00000001
+#define CRAMFS_FLAG_SORTED_DIRS 0x00000002
+#define CRAMFS_FLAG_HOLES 0x00000100
+#define CRAMFS_FLAG_WRONG_SIGNATURE 0x00000200
+#define CRAMFS_FLAG_SHIFTED_ROOT_OFFSET 0x00000400
+#define CRAMFS_FLAG_EXT_BLOCK_POINTERS 0x00000800
+#define CRAMFS_SUPPORTED_FLAGS (0x000000ff | CRAMFS_FLAG_HOLES | CRAMFS_FLAG_WRONG_SIGNATURE | CRAMFS_FLAG_SHIFTED_ROOT_OFFSET | CRAMFS_FLAG_EXT_BLOCK_POINTERS)
+#define CRAMFS_BLK_FLAG_UNCOMPRESSED (1 << 31)
+#define CRAMFS_BLK_FLAG_DIRECT_PTR (1 << 30)
+#define CRAMFS_BLK_FLAGS (CRAMFS_BLK_FLAG_UNCOMPRESSED | CRAMFS_BLK_FLAG_DIRECT_PTR)
+#define CRAMFS_BLK_DIRECT_PTR_SHIFT 2
+#endif
diff --git a/i686-linux-musl/include/linux/cryptouser.h b/i686-linux-musl/include/linux/cryptouser.h
new file mode 100644
index 0000000..1d145bd
--- /dev/null
+++ b/i686-linux-musl/include/linux/cryptouser.h
@@ -0,0 +1,173 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_CRYPTOUSER_H
+#define _UAPI_LINUX_CRYPTOUSER_H
+#include <linux/types.h>
+enum {
+  CRYPTO_MSG_BASE = 0x10,
+  CRYPTO_MSG_NEWALG = 0x10,
+  CRYPTO_MSG_DELALG,
+  CRYPTO_MSG_UPDATEALG,
+  CRYPTO_MSG_GETALG,
+  CRYPTO_MSG_DELRNG,
+  CRYPTO_MSG_GETSTAT,
+  __CRYPTO_MSG_MAX
+};
+#define CRYPTO_MSG_MAX (__CRYPTO_MSG_MAX - 1)
+#define CRYPTO_NR_MSGTYPES (CRYPTO_MSG_MAX + 1 - CRYPTO_MSG_BASE)
+#define CRYPTO_MAX_NAME 64
+enum crypto_attr_type_t {
+  CRYPTOCFGA_UNSPEC,
+  CRYPTOCFGA_PRIORITY_VAL,
+  CRYPTOCFGA_REPORT_LARVAL,
+  CRYPTOCFGA_REPORT_HASH,
+  CRYPTOCFGA_REPORT_BLKCIPHER,
+  CRYPTOCFGA_REPORT_AEAD,
+  CRYPTOCFGA_REPORT_COMPRESS,
+  CRYPTOCFGA_REPORT_RNG,
+  CRYPTOCFGA_REPORT_CIPHER,
+  CRYPTOCFGA_REPORT_AKCIPHER,
+  CRYPTOCFGA_REPORT_KPP,
+  CRYPTOCFGA_REPORT_ACOMP,
+  CRYPTOCFGA_STAT_LARVAL,
+  CRYPTOCFGA_STAT_HASH,
+  CRYPTOCFGA_STAT_BLKCIPHER,
+  CRYPTOCFGA_STAT_AEAD,
+  CRYPTOCFGA_STAT_COMPRESS,
+  CRYPTOCFGA_STAT_RNG,
+  CRYPTOCFGA_STAT_CIPHER,
+  CRYPTOCFGA_STAT_AKCIPHER,
+  CRYPTOCFGA_STAT_KPP,
+  CRYPTOCFGA_STAT_ACOMP,
+  __CRYPTOCFGA_MAX
+#define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1)
+};
+struct crypto_user_alg {
+  char cru_name[CRYPTO_MAX_NAME];
+  char cru_driver_name[CRYPTO_MAX_NAME];
+  char cru_module_name[CRYPTO_MAX_NAME];
+  __u32 cru_type;
+  __u32 cru_mask;
+  __u32 cru_refcnt;
+  __u32 cru_flags;
+};
+struct crypto_stat_aead {
+  char type[CRYPTO_MAX_NAME];
+  __u64 stat_encrypt_cnt;
+  __u64 stat_encrypt_tlen;
+  __u64 stat_decrypt_cnt;
+  __u64 stat_decrypt_tlen;
+  __u64 stat_err_cnt;
+};
+struct crypto_stat_akcipher {
+  char type[CRYPTO_MAX_NAME];
+  __u64 stat_encrypt_cnt;
+  __u64 stat_encrypt_tlen;
+  __u64 stat_decrypt_cnt;
+  __u64 stat_decrypt_tlen;
+  __u64 stat_verify_cnt;
+  __u64 stat_sign_cnt;
+  __u64 stat_err_cnt;
+};
+struct crypto_stat_cipher {
+  char type[CRYPTO_MAX_NAME];
+  __u64 stat_encrypt_cnt;
+  __u64 stat_encrypt_tlen;
+  __u64 stat_decrypt_cnt;
+  __u64 stat_decrypt_tlen;
+  __u64 stat_err_cnt;
+};
+struct crypto_stat_compress {
+  char type[CRYPTO_MAX_NAME];
+  __u64 stat_compress_cnt;
+  __u64 stat_compress_tlen;
+  __u64 stat_decompress_cnt;
+  __u64 stat_decompress_tlen;
+  __u64 stat_err_cnt;
+};
+struct crypto_stat_hash {
+  char type[CRYPTO_MAX_NAME];
+  __u64 stat_hash_cnt;
+  __u64 stat_hash_tlen;
+  __u64 stat_err_cnt;
+};
+struct crypto_stat_kpp {
+  char type[CRYPTO_MAX_NAME];
+  __u64 stat_setsecret_cnt;
+  __u64 stat_generate_public_key_cnt;
+  __u64 stat_compute_shared_secret_cnt;
+  __u64 stat_err_cnt;
+};
+struct crypto_stat_rng {
+  char type[CRYPTO_MAX_NAME];
+  __u64 stat_generate_cnt;
+  __u64 stat_generate_tlen;
+  __u64 stat_seed_cnt;
+  __u64 stat_err_cnt;
+};
+struct crypto_stat_larval {
+  char type[CRYPTO_MAX_NAME];
+};
+struct crypto_report_larval {
+  char type[CRYPTO_MAX_NAME];
+};
+struct crypto_report_hash {
+  char type[CRYPTO_MAX_NAME];
+  unsigned int blocksize;
+  unsigned int digestsize;
+};
+struct crypto_report_cipher {
+  char type[CRYPTO_MAX_NAME];
+  unsigned int blocksize;
+  unsigned int min_keysize;
+  unsigned int max_keysize;
+};
+struct crypto_report_blkcipher {
+  char type[CRYPTO_MAX_NAME];
+  char geniv[CRYPTO_MAX_NAME];
+  unsigned int blocksize;
+  unsigned int min_keysize;
+  unsigned int max_keysize;
+  unsigned int ivsize;
+};
+struct crypto_report_aead {
+  char type[CRYPTO_MAX_NAME];
+  char geniv[CRYPTO_MAX_NAME];
+  unsigned int blocksize;
+  unsigned int maxauthsize;
+  unsigned int ivsize;
+};
+struct crypto_report_comp {
+  char type[CRYPTO_MAX_NAME];
+};
+struct crypto_report_rng {
+  char type[CRYPTO_MAX_NAME];
+  unsigned int seedsize;
+};
+struct crypto_report_akcipher {
+  char type[CRYPTO_MAX_NAME];
+};
+struct crypto_report_kpp {
+  char type[CRYPTO_MAX_NAME];
+};
+struct crypto_report_acomp {
+  char type[CRYPTO_MAX_NAME];
+};
+#define CRYPTO_REPORT_MAXSIZE (sizeof(struct crypto_user_alg) + sizeof(struct crypto_report_blkcipher))
+#endif
diff --git a/i686-linux-musl/include/linux/cuda.h b/i686-linux-musl/include/linux/cuda.h
new file mode 100644
index 0000000..64393db
--- /dev/null
+++ b/i686-linux-musl/include/linux/cuda.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_CUDA_H
+#define _UAPI_LINUX_CUDA_H
+#define CUDA_WARM_START 0
+#define CUDA_AUTOPOLL 1
+#define CUDA_GET_6805_ADDR 2
+#define CUDA_GET_TIME 3
+#define CUDA_GET_PRAM 7
+#define CUDA_SET_6805_ADDR 8
+#define CUDA_SET_TIME 9
+#define CUDA_POWERDOWN 0xa
+#define CUDA_POWERUP_TIME 0xb
+#define CUDA_SET_PRAM 0xc
+#define CUDA_MS_RESET 0xd
+#define CUDA_SEND_DFAC 0xe
+#define CUDA_RESET_SYSTEM 0x11
+#define CUDA_SET_IPL 0x12
+#define CUDA_SET_AUTO_RATE 0x14
+#define CUDA_GET_AUTO_RATE 0x16
+#define CUDA_SET_DEVICE_LIST 0x19
+#define CUDA_GET_DEVICE_LIST 0x1a
+#define CUDA_GET_SET_IIC 0x22
+#endif
diff --git a/i686-linux-musl/include/linux/cxl_mem.h b/i686-linux-musl/include/linux/cxl_mem.h
new file mode 100644
index 0000000..15e9e29
--- /dev/null
+++ b/i686-linux-musl/include/linux/cxl_mem.h
@@ -0,0 +1,71 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_CXL_MEM_H_
+#define _UAPI_CXL_MEM_H_
+#include <linux/types.h>
+#define CXL_MEM_QUERY_COMMANDS _IOR(0xCE, 1, struct cxl_mem_query_commands)
+#define CXL_MEM_SEND_COMMAND _IOWR(0xCE, 2, struct cxl_send_command)
+#define CXL_CMDS ___C(INVALID, "Invalid Command"), ___C(IDENTIFY, "Identify Command"), ___C(RAW, "Raw device command"), ___C(GET_SUPPORTED_LOGS, "Get Supported Logs"), ___C(GET_FW_INFO, "Get FW Info"), ___C(GET_PARTITION_INFO, "Get Partition Information"), ___C(GET_LSA, "Get Label Storage Area"), ___C(GET_HEALTH_INFO, "Get Health Info"), ___C(GET_LOG, "Get Log"), ___C(SET_PARTITION_INFO, "Set Partition Information"), ___C(SET_LSA, "Set Label Storage Area"), ___C(GET_ALERT_CONFIG, "Get Alert Configuration"), ___C(SET_ALERT_CONFIG, "Set Alert Configuration"), ___C(GET_SHUTDOWN_STATE, "Get Shutdown State"), ___C(SET_SHUTDOWN_STATE, "Set Shutdown State"), ___C(GET_POISON, "Get Poison List"), ___C(INJECT_POISON, "Inject Poison"), ___C(CLEAR_POISON, "Clear Poison"), ___C(GET_SCAN_MEDIA_CAPS, "Get Scan Media Capabilities"), ___C(SCAN_MEDIA, "Scan Media"), ___C(GET_SCAN_MEDIA, "Get Scan Media Results"), ___C(MAX, "invalid / last command")
+#define ___C(a,b) CXL_MEM_COMMAND_ID_ ##a
+enum {
+  CXL_CMDS
+};
+#undef ___C
+#define ___C(a,b) { b }
+static const struct {
+  const char * name;
+} cxl_command_names[] __attribute__((__unused__)) = {
+  CXL_CMDS
+};
+#undef ___C
+struct cxl_command_info {
+  __u32 id;
+  __u32 flags;
+#define CXL_MEM_COMMAND_FLAG_MASK GENMASK(0, 0)
+  __s32 size_in;
+  __s32 size_out;
+};
+struct cxl_mem_query_commands {
+  __u32 n_commands;
+  __u32 rsvd;
+  struct cxl_command_info __user commands[];
+};
+struct cxl_send_command {
+  __u32 id;
+  __u32 flags;
+  union {
+    struct {
+      __u16 opcode;
+      __u16 rsvd;
+    } raw;
+    __u32 rsvd;
+  };
+  __u32 retval;
+  struct {
+    __s32 size;
+    __u32 rsvd;
+    __u64 payload;
+  } in;
+  struct {
+    __s32 size;
+    __u32 rsvd;
+    __u64 payload;
+  } out;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/cycx_cfm.h b/i686-linux-musl/include/linux/cycx_cfm.h
new file mode 100644
index 0000000..052de53
--- /dev/null
+++ b/i686-linux-musl/include/linux/cycx_cfm.h
@@ -0,0 +1,63 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _CYCX_CFM_H
+#define _CYCX_CFM_H
+#define CFM_VERSION 2
+#define CFM_SIGNATURE "CFM - Cyclades CYCX Firmware Module"
+#define CFM_IMAGE_SIZE 0x20000
+#define CFM_DESCR_LEN 256
+#define CFM_MAX_CYCX 1
+#define CFM_LOAD_BUFSZ 0x400
+#define GEN_POWER_ON 0x1280
+#define GEN_SET_SEG 0x1401
+#define GEN_BOOT_DAT 0x1402
+#define GEN_START 0x1403
+#define GEN_DEFPAR 0x1404
+#define CYCX_2X 2
+#define CYCX_8X 8
+#define CYCX_16X 16
+#define CFID_X25_2X 5200
+struct cycx_fw_info {
+  unsigned short codeid;
+  unsigned short version;
+  unsigned short adapter[CFM_MAX_CYCX];
+  unsigned long memsize;
+  unsigned short reserved[2];
+  unsigned short startoffs;
+  unsigned short winoffs;
+  unsigned short codeoffs;
+  unsigned long codesize;
+  unsigned short dataoffs;
+  unsigned long datasize;
+};
+struct cycx_firmware {
+  char signature[80];
+  unsigned short version;
+  unsigned short checksum;
+  unsigned short reserved[6];
+  char descr[CFM_DESCR_LEN];
+  struct cycx_fw_info info;
+  unsigned char image[0];
+};
+struct cycx_fw_header {
+  unsigned long reset_size;
+  unsigned long data_size;
+  unsigned long code_size;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/dcbnl.h b/i686-linux-musl/include/linux/dcbnl.h
new file mode 100644
index 0000000..d1f2eba
--- /dev/null
+++ b/i686-linux-musl/include/linux/dcbnl.h
@@ -0,0 +1,348 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_DCBNL_H__
+#define __LINUX_DCBNL_H__
+#include <linux/types.h>
+#define IEEE_8021QAZ_MAX_TCS 8
+#define IEEE_8021QAZ_TSA_STRICT 0
+#define IEEE_8021QAZ_TSA_CB_SHAPER 1
+#define IEEE_8021QAZ_TSA_ETS 2
+#define IEEE_8021QAZ_TSA_VENDOR 255
+struct ieee_ets {
+  __u8 willing;
+  __u8 ets_cap;
+  __u8 cbs;
+  __u8 tc_tx_bw[IEEE_8021QAZ_MAX_TCS];
+  __u8 tc_rx_bw[IEEE_8021QAZ_MAX_TCS];
+  __u8 tc_tsa[IEEE_8021QAZ_MAX_TCS];
+  __u8 prio_tc[IEEE_8021QAZ_MAX_TCS];
+  __u8 tc_reco_bw[IEEE_8021QAZ_MAX_TCS];
+  __u8 tc_reco_tsa[IEEE_8021QAZ_MAX_TCS];
+  __u8 reco_prio_tc[IEEE_8021QAZ_MAX_TCS];
+};
+struct ieee_maxrate {
+  __u64 tc_maxrate[IEEE_8021QAZ_MAX_TCS];
+};
+enum dcbnl_cndd_states {
+  DCB_CNDD_RESET = 0,
+  DCB_CNDD_EDGE,
+  DCB_CNDD_INTERIOR,
+  DCB_CNDD_INTERIOR_READY,
+};
+struct ieee_qcn {
+  __u8 rpg_enable[IEEE_8021QAZ_MAX_TCS];
+  __u32 rppp_max_rps[IEEE_8021QAZ_MAX_TCS];
+  __u32 rpg_time_reset[IEEE_8021QAZ_MAX_TCS];
+  __u32 rpg_byte_reset[IEEE_8021QAZ_MAX_TCS];
+  __u32 rpg_threshold[IEEE_8021QAZ_MAX_TCS];
+  __u32 rpg_max_rate[IEEE_8021QAZ_MAX_TCS];
+  __u32 rpg_ai_rate[IEEE_8021QAZ_MAX_TCS];
+  __u32 rpg_hai_rate[IEEE_8021QAZ_MAX_TCS];
+  __u32 rpg_gd[IEEE_8021QAZ_MAX_TCS];
+  __u32 rpg_min_dec_fac[IEEE_8021QAZ_MAX_TCS];
+  __u32 rpg_min_rate[IEEE_8021QAZ_MAX_TCS];
+  __u32 cndd_state_machine[IEEE_8021QAZ_MAX_TCS];
+};
+struct ieee_qcn_stats {
+  __u64 rppp_rp_centiseconds[IEEE_8021QAZ_MAX_TCS];
+  __u32 rppp_created_rps[IEEE_8021QAZ_MAX_TCS];
+};
+struct ieee_pfc {
+  __u8 pfc_cap;
+  __u8 pfc_en;
+  __u8 mbc;
+  __u16 delay;
+  __u64 requests[IEEE_8021QAZ_MAX_TCS];
+  __u64 indications[IEEE_8021QAZ_MAX_TCS];
+};
+#define IEEE_8021Q_MAX_PRIORITIES 8
+#define DCBX_MAX_BUFFERS 8
+struct dcbnl_buffer {
+  __u8 prio2buffer[IEEE_8021Q_MAX_PRIORITIES];
+  __u32 buffer_size[DCBX_MAX_BUFFERS];
+  __u32 total_size;
+};
+#define CEE_DCBX_MAX_PGS 8
+#define CEE_DCBX_MAX_PRIO 8
+struct cee_pg {
+  __u8 willing;
+  __u8 error;
+  __u8 pg_en;
+  __u8 tcs_supported;
+  __u8 pg_bw[CEE_DCBX_MAX_PGS];
+  __u8 prio_pg[CEE_DCBX_MAX_PGS];
+};
+struct cee_pfc {
+  __u8 willing;
+  __u8 error;
+  __u8 pfc_en;
+  __u8 tcs_supported;
+};
+#define IEEE_8021QAZ_APP_SEL_ETHERTYPE 1
+#define IEEE_8021QAZ_APP_SEL_STREAM 2
+#define IEEE_8021QAZ_APP_SEL_DGRAM 3
+#define IEEE_8021QAZ_APP_SEL_ANY 4
+#define IEEE_8021QAZ_APP_SEL_DSCP 5
+struct dcb_app {
+  __u8 selector;
+  __u8 priority;
+  __u16 protocol;
+};
+struct dcb_peer_app_info {
+  __u8 willing;
+  __u8 error;
+};
+struct dcbmsg {
+  __u8 dcb_family;
+  __u8 cmd;
+  __u16 dcb_pad;
+};
+enum dcbnl_commands {
+  DCB_CMD_UNDEFINED,
+  DCB_CMD_GSTATE,
+  DCB_CMD_SSTATE,
+  DCB_CMD_PGTX_GCFG,
+  DCB_CMD_PGTX_SCFG,
+  DCB_CMD_PGRX_GCFG,
+  DCB_CMD_PGRX_SCFG,
+  DCB_CMD_PFC_GCFG,
+  DCB_CMD_PFC_SCFG,
+  DCB_CMD_SET_ALL,
+  DCB_CMD_GPERM_HWADDR,
+  DCB_CMD_GCAP,
+  DCB_CMD_GNUMTCS,
+  DCB_CMD_SNUMTCS,
+  DCB_CMD_PFC_GSTATE,
+  DCB_CMD_PFC_SSTATE,
+  DCB_CMD_BCN_GCFG,
+  DCB_CMD_BCN_SCFG,
+  DCB_CMD_GAPP,
+  DCB_CMD_SAPP,
+  DCB_CMD_IEEE_SET,
+  DCB_CMD_IEEE_GET,
+  DCB_CMD_GDCBX,
+  DCB_CMD_SDCBX,
+  DCB_CMD_GFEATCFG,
+  DCB_CMD_SFEATCFG,
+  DCB_CMD_CEE_GET,
+  DCB_CMD_IEEE_DEL,
+  __DCB_CMD_ENUM_MAX,
+  DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1,
+};
+enum dcbnl_attrs {
+  DCB_ATTR_UNDEFINED,
+  DCB_ATTR_IFNAME,
+  DCB_ATTR_STATE,
+  DCB_ATTR_PFC_STATE,
+  DCB_ATTR_PFC_CFG,
+  DCB_ATTR_NUM_TC,
+  DCB_ATTR_PG_CFG,
+  DCB_ATTR_SET_ALL,
+  DCB_ATTR_PERM_HWADDR,
+  DCB_ATTR_CAP,
+  DCB_ATTR_NUMTCS,
+  DCB_ATTR_BCN,
+  DCB_ATTR_APP,
+  DCB_ATTR_IEEE,
+  DCB_ATTR_DCBX,
+  DCB_ATTR_FEATCFG,
+  DCB_ATTR_CEE,
+  __DCB_ATTR_ENUM_MAX,
+  DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1,
+};
+enum ieee_attrs {
+  DCB_ATTR_IEEE_UNSPEC,
+  DCB_ATTR_IEEE_ETS,
+  DCB_ATTR_IEEE_PFC,
+  DCB_ATTR_IEEE_APP_TABLE,
+  DCB_ATTR_IEEE_PEER_ETS,
+  DCB_ATTR_IEEE_PEER_PFC,
+  DCB_ATTR_IEEE_PEER_APP,
+  DCB_ATTR_IEEE_MAXRATE,
+  DCB_ATTR_IEEE_QCN,
+  DCB_ATTR_IEEE_QCN_STATS,
+  DCB_ATTR_DCB_BUFFER,
+  __DCB_ATTR_IEEE_MAX
+};
+#define DCB_ATTR_IEEE_MAX (__DCB_ATTR_IEEE_MAX - 1)
+enum ieee_attrs_app {
+  DCB_ATTR_IEEE_APP_UNSPEC,
+  DCB_ATTR_IEEE_APP,
+  __DCB_ATTR_IEEE_APP_MAX
+};
+#define DCB_ATTR_IEEE_APP_MAX (__DCB_ATTR_IEEE_APP_MAX - 1)
+enum cee_attrs {
+  DCB_ATTR_CEE_UNSPEC,
+  DCB_ATTR_CEE_PEER_PG,
+  DCB_ATTR_CEE_PEER_PFC,
+  DCB_ATTR_CEE_PEER_APP_TABLE,
+  DCB_ATTR_CEE_TX_PG,
+  DCB_ATTR_CEE_RX_PG,
+  DCB_ATTR_CEE_PFC,
+  DCB_ATTR_CEE_APP_TABLE,
+  DCB_ATTR_CEE_FEAT,
+  __DCB_ATTR_CEE_MAX
+};
+#define DCB_ATTR_CEE_MAX (__DCB_ATTR_CEE_MAX - 1)
+enum peer_app_attr {
+  DCB_ATTR_CEE_PEER_APP_UNSPEC,
+  DCB_ATTR_CEE_PEER_APP_INFO,
+  DCB_ATTR_CEE_PEER_APP,
+  __DCB_ATTR_CEE_PEER_APP_MAX
+};
+#define DCB_ATTR_CEE_PEER_APP_MAX (__DCB_ATTR_CEE_PEER_APP_MAX - 1)
+enum cee_attrs_app {
+  DCB_ATTR_CEE_APP_UNSPEC,
+  DCB_ATTR_CEE_APP,
+  __DCB_ATTR_CEE_APP_MAX
+};
+#define DCB_ATTR_CEE_APP_MAX (__DCB_ATTR_CEE_APP_MAX - 1)
+enum dcbnl_pfc_up_attrs {
+  DCB_PFC_UP_ATTR_UNDEFINED,
+  DCB_PFC_UP_ATTR_0,
+  DCB_PFC_UP_ATTR_1,
+  DCB_PFC_UP_ATTR_2,
+  DCB_PFC_UP_ATTR_3,
+  DCB_PFC_UP_ATTR_4,
+  DCB_PFC_UP_ATTR_5,
+  DCB_PFC_UP_ATTR_6,
+  DCB_PFC_UP_ATTR_7,
+  DCB_PFC_UP_ATTR_ALL,
+  __DCB_PFC_UP_ATTR_ENUM_MAX,
+  DCB_PFC_UP_ATTR_MAX = __DCB_PFC_UP_ATTR_ENUM_MAX - 1,
+};
+enum dcbnl_pg_attrs {
+  DCB_PG_ATTR_UNDEFINED,
+  DCB_PG_ATTR_TC_0,
+  DCB_PG_ATTR_TC_1,
+  DCB_PG_ATTR_TC_2,
+  DCB_PG_ATTR_TC_3,
+  DCB_PG_ATTR_TC_4,
+  DCB_PG_ATTR_TC_5,
+  DCB_PG_ATTR_TC_6,
+  DCB_PG_ATTR_TC_7,
+  DCB_PG_ATTR_TC_MAX,
+  DCB_PG_ATTR_TC_ALL,
+  DCB_PG_ATTR_BW_ID_0,
+  DCB_PG_ATTR_BW_ID_1,
+  DCB_PG_ATTR_BW_ID_2,
+  DCB_PG_ATTR_BW_ID_3,
+  DCB_PG_ATTR_BW_ID_4,
+  DCB_PG_ATTR_BW_ID_5,
+  DCB_PG_ATTR_BW_ID_6,
+  DCB_PG_ATTR_BW_ID_7,
+  DCB_PG_ATTR_BW_ID_MAX,
+  DCB_PG_ATTR_BW_ID_ALL,
+  __DCB_PG_ATTR_ENUM_MAX,
+  DCB_PG_ATTR_MAX = __DCB_PG_ATTR_ENUM_MAX - 1,
+};
+enum dcbnl_tc_attrs {
+  DCB_TC_ATTR_PARAM_UNDEFINED,
+  DCB_TC_ATTR_PARAM_PGID,
+  DCB_TC_ATTR_PARAM_UP_MAPPING,
+  DCB_TC_ATTR_PARAM_STRICT_PRIO,
+  DCB_TC_ATTR_PARAM_BW_PCT,
+  DCB_TC_ATTR_PARAM_ALL,
+  __DCB_TC_ATTR_PARAM_ENUM_MAX,
+  DCB_TC_ATTR_PARAM_MAX = __DCB_TC_ATTR_PARAM_ENUM_MAX - 1,
+};
+enum dcbnl_cap_attrs {
+  DCB_CAP_ATTR_UNDEFINED,
+  DCB_CAP_ATTR_ALL,
+  DCB_CAP_ATTR_PG,
+  DCB_CAP_ATTR_PFC,
+  DCB_CAP_ATTR_UP2TC,
+  DCB_CAP_ATTR_PG_TCS,
+  DCB_CAP_ATTR_PFC_TCS,
+  DCB_CAP_ATTR_GSP,
+  DCB_CAP_ATTR_BCN,
+  DCB_CAP_ATTR_DCBX,
+  __DCB_CAP_ATTR_ENUM_MAX,
+  DCB_CAP_ATTR_MAX = __DCB_CAP_ATTR_ENUM_MAX - 1,
+};
+#define DCB_CAP_DCBX_HOST 0x01
+#define DCB_CAP_DCBX_LLD_MANAGED 0x02
+#define DCB_CAP_DCBX_VER_CEE 0x04
+#define DCB_CAP_DCBX_VER_IEEE 0x08
+#define DCB_CAP_DCBX_STATIC 0x10
+enum dcbnl_numtcs_attrs {
+  DCB_NUMTCS_ATTR_UNDEFINED,
+  DCB_NUMTCS_ATTR_ALL,
+  DCB_NUMTCS_ATTR_PG,
+  DCB_NUMTCS_ATTR_PFC,
+  __DCB_NUMTCS_ATTR_ENUM_MAX,
+  DCB_NUMTCS_ATTR_MAX = __DCB_NUMTCS_ATTR_ENUM_MAX - 1,
+};
+enum dcbnl_bcn_attrs {
+  DCB_BCN_ATTR_UNDEFINED = 0,
+  DCB_BCN_ATTR_RP_0,
+  DCB_BCN_ATTR_RP_1,
+  DCB_BCN_ATTR_RP_2,
+  DCB_BCN_ATTR_RP_3,
+  DCB_BCN_ATTR_RP_4,
+  DCB_BCN_ATTR_RP_5,
+  DCB_BCN_ATTR_RP_6,
+  DCB_BCN_ATTR_RP_7,
+  DCB_BCN_ATTR_RP_ALL,
+  DCB_BCN_ATTR_BCNA_0,
+  DCB_BCN_ATTR_BCNA_1,
+  DCB_BCN_ATTR_ALPHA,
+  DCB_BCN_ATTR_BETA,
+  DCB_BCN_ATTR_GD,
+  DCB_BCN_ATTR_GI,
+  DCB_BCN_ATTR_TMAX,
+  DCB_BCN_ATTR_TD,
+  DCB_BCN_ATTR_RMIN,
+  DCB_BCN_ATTR_W,
+  DCB_BCN_ATTR_RD,
+  DCB_BCN_ATTR_RU,
+  DCB_BCN_ATTR_WRTT,
+  DCB_BCN_ATTR_RI,
+  DCB_BCN_ATTR_C,
+  DCB_BCN_ATTR_ALL,
+  __DCB_BCN_ATTR_ENUM_MAX,
+  DCB_BCN_ATTR_MAX = __DCB_BCN_ATTR_ENUM_MAX - 1,
+};
+enum dcb_general_attr_values {
+  DCB_ATTR_VALUE_UNDEFINED = 0xff
+};
+#define DCB_APP_IDTYPE_ETHTYPE 0x00
+#define DCB_APP_IDTYPE_PORTNUM 0x01
+enum dcbnl_app_attrs {
+  DCB_APP_ATTR_UNDEFINED,
+  DCB_APP_ATTR_IDTYPE,
+  DCB_APP_ATTR_ID,
+  DCB_APP_ATTR_PRIORITY,
+  __DCB_APP_ATTR_ENUM_MAX,
+  DCB_APP_ATTR_MAX = __DCB_APP_ATTR_ENUM_MAX - 1,
+};
+#define DCB_FEATCFG_ERROR 0x01
+#define DCB_FEATCFG_ENABLE 0x02
+#define DCB_FEATCFG_WILLING 0x04
+#define DCB_FEATCFG_ADVERTISE 0x08
+enum dcbnl_featcfg_attrs {
+  DCB_FEATCFG_ATTR_UNDEFINED,
+  DCB_FEATCFG_ATTR_ALL,
+  DCB_FEATCFG_ATTR_PG,
+  DCB_FEATCFG_ATTR_PFC,
+  DCB_FEATCFG_ATTR_APP,
+  __DCB_FEATCFG_ATTR_ENUM_MAX,
+  DCB_FEATCFG_ATTR_MAX = __DCB_FEATCFG_ATTR_ENUM_MAX - 1,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/dccp.h b/i686-linux-musl/include/linux/dccp.h
new file mode 100644
index 0000000..9ed840d
--- /dev/null
+++ b/i686-linux-musl/include/linux/dccp.h
@@ -0,0 +1,160 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_DCCP_H
+#define _UAPI_LINUX_DCCP_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+struct dccp_hdr {
+  __be16 dccph_sport, dccph_dport;
+  __u8 dccph_doff;
+#ifdef __LITTLE_ENDIAN_BITFIELD
+  __u8 dccph_cscov : 4, dccph_ccval : 4;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+  __u8 dccph_ccval : 4, dccph_cscov : 4;
+#else
+#error "Adjust your <asm/byteorder.h> defines"
+#endif
+  __sum16 dccph_checksum;
+#ifdef __LITTLE_ENDIAN_BITFIELD
+  __u8 dccph_x : 1, dccph_type : 4, dccph_reserved : 3;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+  __u8 dccph_reserved : 3, dccph_type : 4, dccph_x : 1;
+#else
+#error "Adjust your <asm/byteorder.h> defines"
+#endif
+  __u8 dccph_seq2;
+  __be16 dccph_seq;
+};
+struct dccp_hdr_ext {
+  __be32 dccph_seq_low;
+};
+struct dccp_hdr_request {
+  __be32 dccph_req_service;
+};
+struct dccp_hdr_ack_bits {
+  __be16 dccph_reserved1;
+  __be16 dccph_ack_nr_high;
+  __be32 dccph_ack_nr_low;
+};
+struct dccp_hdr_response {
+  struct dccp_hdr_ack_bits dccph_resp_ack;
+  __be32 dccph_resp_service;
+};
+struct dccp_hdr_reset {
+  struct dccp_hdr_ack_bits dccph_reset_ack;
+  __u8 dccph_reset_code, dccph_reset_data[3];
+};
+enum dccp_pkt_type {
+  DCCP_PKT_REQUEST = 0,
+  DCCP_PKT_RESPONSE,
+  DCCP_PKT_DATA,
+  DCCP_PKT_ACK,
+  DCCP_PKT_DATAACK,
+  DCCP_PKT_CLOSEREQ,
+  DCCP_PKT_CLOSE,
+  DCCP_PKT_RESET,
+  DCCP_PKT_SYNC,
+  DCCP_PKT_SYNCACK,
+  DCCP_PKT_INVALID,
+};
+#define DCCP_NR_PKT_TYPES DCCP_PKT_INVALID
+enum dccp_reset_codes {
+  DCCP_RESET_CODE_UNSPECIFIED = 0,
+  DCCP_RESET_CODE_CLOSED,
+  DCCP_RESET_CODE_ABORTED,
+  DCCP_RESET_CODE_NO_CONNECTION,
+  DCCP_RESET_CODE_PACKET_ERROR,
+  DCCP_RESET_CODE_OPTION_ERROR,
+  DCCP_RESET_CODE_MANDATORY_ERROR,
+  DCCP_RESET_CODE_CONNECTION_REFUSED,
+  DCCP_RESET_CODE_BAD_SERVICE_CODE,
+  DCCP_RESET_CODE_TOO_BUSY,
+  DCCP_RESET_CODE_BAD_INIT_COOKIE,
+  DCCP_RESET_CODE_AGGRESSION_PENALTY,
+  DCCP_MAX_RESET_CODES
+};
+enum {
+  DCCPO_PADDING = 0,
+  DCCPO_MANDATORY = 1,
+  DCCPO_MIN_RESERVED = 3,
+  DCCPO_MAX_RESERVED = 31,
+  DCCPO_CHANGE_L = 32,
+  DCCPO_CONFIRM_L = 33,
+  DCCPO_CHANGE_R = 34,
+  DCCPO_CONFIRM_R = 35,
+  DCCPO_NDP_COUNT = 37,
+  DCCPO_ACK_VECTOR_0 = 38,
+  DCCPO_ACK_VECTOR_1 = 39,
+  DCCPO_TIMESTAMP = 41,
+  DCCPO_TIMESTAMP_ECHO = 42,
+  DCCPO_ELAPSED_TIME = 43,
+  DCCPO_MAX = 45,
+  DCCPO_MIN_RX_CCID_SPECIFIC = 128,
+  DCCPO_MAX_RX_CCID_SPECIFIC = 191,
+  DCCPO_MIN_TX_CCID_SPECIFIC = 192,
+  DCCPO_MAX_TX_CCID_SPECIFIC = 255,
+};
+#define DCCP_SINGLE_OPT_MAXLEN 253
+enum {
+  DCCPC_CCID2 = 2,
+  DCCPC_CCID3 = 3,
+};
+enum dccp_feature_numbers {
+  DCCPF_RESERVED = 0,
+  DCCPF_CCID = 1,
+  DCCPF_SHORT_SEQNOS = 2,
+  DCCPF_SEQUENCE_WINDOW = 3,
+  DCCPF_ECN_INCAPABLE = 4,
+  DCCPF_ACK_RATIO = 5,
+  DCCPF_SEND_ACK_VECTOR = 6,
+  DCCPF_SEND_NDP_COUNT = 7,
+  DCCPF_MIN_CSUM_COVER = 8,
+  DCCPF_DATA_CHECKSUM = 9,
+  DCCPF_MIN_CCID_SPECIFIC = 128,
+  DCCPF_SEND_LEV_RATE = 192,
+  DCCPF_MAX_CCID_SPECIFIC = 255,
+};
+enum dccp_cmsg_type {
+  DCCP_SCM_PRIORITY = 1,
+  DCCP_SCM_QPOLICY_MAX = 0xFFFF,
+  DCCP_SCM_MAX
+};
+enum dccp_packet_dequeueing_policy {
+  DCCPQ_POLICY_SIMPLE,
+  DCCPQ_POLICY_PRIO,
+  DCCPQ_POLICY_MAX
+};
+#define DCCP_SOCKOPT_PACKET_SIZE 1
+#define DCCP_SOCKOPT_SERVICE 2
+#define DCCP_SOCKOPT_CHANGE_L 3
+#define DCCP_SOCKOPT_CHANGE_R 4
+#define DCCP_SOCKOPT_GET_CUR_MPS 5
+#define DCCP_SOCKOPT_SERVER_TIMEWAIT 6
+#define DCCP_SOCKOPT_SEND_CSCOV 10
+#define DCCP_SOCKOPT_RECV_CSCOV 11
+#define DCCP_SOCKOPT_AVAILABLE_CCIDS 12
+#define DCCP_SOCKOPT_CCID 13
+#define DCCP_SOCKOPT_TX_CCID 14
+#define DCCP_SOCKOPT_RX_CCID 15
+#define DCCP_SOCKOPT_QPOLICY_ID 16
+#define DCCP_SOCKOPT_QPOLICY_TXQLEN 17
+#define DCCP_SOCKOPT_CCID_RX_INFO 128
+#define DCCP_SOCKOPT_CCID_TX_INFO 192
+#define DCCP_SERVICE_LIST_MAX_LEN 32
+#endif
diff --git a/i686-linux-musl/include/linux/devlink.h b/i686-linux-musl/include/linux/devlink.h
new file mode 100644
index 0000000..a809306
--- /dev/null
+++ b/i686-linux-musl/include/linux/devlink.h
@@ -0,0 +1,433 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_DEVLINK_H_
+#define _UAPI_LINUX_DEVLINK_H_
+#include <linux/const.h>
+#define DEVLINK_GENL_NAME "devlink"
+#define DEVLINK_GENL_VERSION 0x1
+#define DEVLINK_GENL_MCGRP_CONFIG_NAME "config"
+enum devlink_command {
+  DEVLINK_CMD_UNSPEC,
+  DEVLINK_CMD_GET,
+  DEVLINK_CMD_SET,
+  DEVLINK_CMD_NEW,
+  DEVLINK_CMD_DEL,
+  DEVLINK_CMD_PORT_GET,
+  DEVLINK_CMD_PORT_SET,
+  DEVLINK_CMD_PORT_NEW,
+  DEVLINK_CMD_PORT_DEL,
+  DEVLINK_CMD_PORT_SPLIT,
+  DEVLINK_CMD_PORT_UNSPLIT,
+  DEVLINK_CMD_SB_GET,
+  DEVLINK_CMD_SB_SET,
+  DEVLINK_CMD_SB_NEW,
+  DEVLINK_CMD_SB_DEL,
+  DEVLINK_CMD_SB_POOL_GET,
+  DEVLINK_CMD_SB_POOL_SET,
+  DEVLINK_CMD_SB_POOL_NEW,
+  DEVLINK_CMD_SB_POOL_DEL,
+  DEVLINK_CMD_SB_PORT_POOL_GET,
+  DEVLINK_CMD_SB_PORT_POOL_SET,
+  DEVLINK_CMD_SB_PORT_POOL_NEW,
+  DEVLINK_CMD_SB_PORT_POOL_DEL,
+  DEVLINK_CMD_SB_TC_POOL_BIND_GET,
+  DEVLINK_CMD_SB_TC_POOL_BIND_SET,
+  DEVLINK_CMD_SB_TC_POOL_BIND_NEW,
+  DEVLINK_CMD_SB_TC_POOL_BIND_DEL,
+  DEVLINK_CMD_SB_OCC_SNAPSHOT,
+  DEVLINK_CMD_SB_OCC_MAX_CLEAR,
+  DEVLINK_CMD_ESWITCH_GET,
+#define DEVLINK_CMD_ESWITCH_MODE_GET DEVLINK_CMD_ESWITCH_GET
+  DEVLINK_CMD_ESWITCH_SET,
+#define DEVLINK_CMD_ESWITCH_MODE_SET DEVLINK_CMD_ESWITCH_SET
+  DEVLINK_CMD_DPIPE_TABLE_GET,
+  DEVLINK_CMD_DPIPE_ENTRIES_GET,
+  DEVLINK_CMD_DPIPE_HEADERS_GET,
+  DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET,
+  DEVLINK_CMD_RESOURCE_SET,
+  DEVLINK_CMD_RESOURCE_DUMP,
+  DEVLINK_CMD_RELOAD,
+  DEVLINK_CMD_PARAM_GET,
+  DEVLINK_CMD_PARAM_SET,
+  DEVLINK_CMD_PARAM_NEW,
+  DEVLINK_CMD_PARAM_DEL,
+  DEVLINK_CMD_REGION_GET,
+  DEVLINK_CMD_REGION_SET,
+  DEVLINK_CMD_REGION_NEW,
+  DEVLINK_CMD_REGION_DEL,
+  DEVLINK_CMD_REGION_READ,
+  DEVLINK_CMD_PORT_PARAM_GET,
+  DEVLINK_CMD_PORT_PARAM_SET,
+  DEVLINK_CMD_PORT_PARAM_NEW,
+  DEVLINK_CMD_PORT_PARAM_DEL,
+  DEVLINK_CMD_INFO_GET,
+  DEVLINK_CMD_HEALTH_REPORTER_GET,
+  DEVLINK_CMD_HEALTH_REPORTER_SET,
+  DEVLINK_CMD_HEALTH_REPORTER_RECOVER,
+  DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE,
+  DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET,
+  DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR,
+  DEVLINK_CMD_FLASH_UPDATE,
+  DEVLINK_CMD_FLASH_UPDATE_END,
+  DEVLINK_CMD_FLASH_UPDATE_STATUS,
+  DEVLINK_CMD_TRAP_GET,
+  DEVLINK_CMD_TRAP_SET,
+  DEVLINK_CMD_TRAP_NEW,
+  DEVLINK_CMD_TRAP_DEL,
+  DEVLINK_CMD_TRAP_GROUP_GET,
+  DEVLINK_CMD_TRAP_GROUP_SET,
+  DEVLINK_CMD_TRAP_GROUP_NEW,
+  DEVLINK_CMD_TRAP_GROUP_DEL,
+  DEVLINK_CMD_TRAP_POLICER_GET,
+  DEVLINK_CMD_TRAP_POLICER_SET,
+  DEVLINK_CMD_TRAP_POLICER_NEW,
+  DEVLINK_CMD_TRAP_POLICER_DEL,
+  DEVLINK_CMD_HEALTH_REPORTER_TEST,
+  DEVLINK_CMD_RATE_GET,
+  DEVLINK_CMD_RATE_SET,
+  DEVLINK_CMD_RATE_NEW,
+  DEVLINK_CMD_RATE_DEL,
+  __DEVLINK_CMD_MAX,
+  DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
+};
+enum devlink_port_type {
+  DEVLINK_PORT_TYPE_NOTSET,
+  DEVLINK_PORT_TYPE_AUTO,
+  DEVLINK_PORT_TYPE_ETH,
+  DEVLINK_PORT_TYPE_IB,
+};
+enum devlink_sb_pool_type {
+  DEVLINK_SB_POOL_TYPE_INGRESS,
+  DEVLINK_SB_POOL_TYPE_EGRESS,
+};
+enum devlink_sb_threshold_type {
+  DEVLINK_SB_THRESHOLD_TYPE_STATIC,
+  DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC,
+};
+#define DEVLINK_SB_THRESHOLD_TO_ALPHA_MAX 20
+enum devlink_eswitch_mode {
+  DEVLINK_ESWITCH_MODE_LEGACY,
+  DEVLINK_ESWITCH_MODE_SWITCHDEV,
+};
+enum devlink_eswitch_inline_mode {
+  DEVLINK_ESWITCH_INLINE_MODE_NONE,
+  DEVLINK_ESWITCH_INLINE_MODE_LINK,
+  DEVLINK_ESWITCH_INLINE_MODE_NETWORK,
+  DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT,
+};
+enum devlink_eswitch_encap_mode {
+  DEVLINK_ESWITCH_ENCAP_MODE_NONE,
+  DEVLINK_ESWITCH_ENCAP_MODE_BASIC,
+};
+enum devlink_port_flavour {
+  DEVLINK_PORT_FLAVOUR_PHYSICAL,
+  DEVLINK_PORT_FLAVOUR_CPU,
+  DEVLINK_PORT_FLAVOUR_DSA,
+  DEVLINK_PORT_FLAVOUR_PCI_PF,
+  DEVLINK_PORT_FLAVOUR_PCI_VF,
+  DEVLINK_PORT_FLAVOUR_VIRTUAL,
+  DEVLINK_PORT_FLAVOUR_UNUSED,
+  DEVLINK_PORT_FLAVOUR_PCI_SF,
+};
+enum devlink_rate_type {
+  DEVLINK_RATE_TYPE_LEAF,
+  DEVLINK_RATE_TYPE_NODE,
+};
+enum devlink_param_cmode {
+  DEVLINK_PARAM_CMODE_RUNTIME,
+  DEVLINK_PARAM_CMODE_DRIVERINIT,
+  DEVLINK_PARAM_CMODE_PERMANENT,
+  __DEVLINK_PARAM_CMODE_MAX,
+  DEVLINK_PARAM_CMODE_MAX = __DEVLINK_PARAM_CMODE_MAX - 1
+};
+enum devlink_param_fw_load_policy_value {
+  DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER,
+  DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH,
+  DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DISK,
+  DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_UNKNOWN,
+};
+enum devlink_param_reset_dev_on_drv_probe_value {
+  DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_UNKNOWN,
+  DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_ALWAYS,
+  DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_NEVER,
+  DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_DISK,
+};
+enum {
+  DEVLINK_ATTR_STATS_RX_PACKETS,
+  DEVLINK_ATTR_STATS_RX_BYTES,
+  DEVLINK_ATTR_STATS_RX_DROPPED,
+  __DEVLINK_ATTR_STATS_MAX,
+  DEVLINK_ATTR_STATS_MAX = __DEVLINK_ATTR_STATS_MAX - 1
+};
+enum {
+  DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT,
+  DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT,
+  __DEVLINK_FLASH_OVERWRITE_MAX_BIT,
+  DEVLINK_FLASH_OVERWRITE_MAX_BIT = __DEVLINK_FLASH_OVERWRITE_MAX_BIT - 1
+};
+#define DEVLINK_FLASH_OVERWRITE_SETTINGS _BITUL(DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT)
+#define DEVLINK_FLASH_OVERWRITE_IDENTIFIERS _BITUL(DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT)
+#define DEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS (_BITUL(__DEVLINK_FLASH_OVERWRITE_MAX_BIT) - 1)
+enum devlink_trap_action {
+  DEVLINK_TRAP_ACTION_DROP,
+  DEVLINK_TRAP_ACTION_TRAP,
+  DEVLINK_TRAP_ACTION_MIRROR,
+};
+enum devlink_trap_type {
+  DEVLINK_TRAP_TYPE_DROP,
+  DEVLINK_TRAP_TYPE_EXCEPTION,
+  DEVLINK_TRAP_TYPE_CONTROL,
+};
+enum {
+  DEVLINK_ATTR_TRAP_METADATA_TYPE_IN_PORT,
+  DEVLINK_ATTR_TRAP_METADATA_TYPE_FA_COOKIE,
+};
+enum devlink_reload_action {
+  DEVLINK_RELOAD_ACTION_UNSPEC,
+  DEVLINK_RELOAD_ACTION_DRIVER_REINIT,
+  DEVLINK_RELOAD_ACTION_FW_ACTIVATE,
+  __DEVLINK_RELOAD_ACTION_MAX,
+  DEVLINK_RELOAD_ACTION_MAX = __DEVLINK_RELOAD_ACTION_MAX - 1
+};
+enum devlink_reload_limit {
+  DEVLINK_RELOAD_LIMIT_UNSPEC,
+  DEVLINK_RELOAD_LIMIT_NO_RESET,
+  __DEVLINK_RELOAD_LIMIT_MAX,
+  DEVLINK_RELOAD_LIMIT_MAX = __DEVLINK_RELOAD_LIMIT_MAX - 1
+};
+#define DEVLINK_RELOAD_LIMITS_VALID_MASK (_BITUL(__DEVLINK_RELOAD_LIMIT_MAX) - 1)
+enum devlink_attr {
+  DEVLINK_ATTR_UNSPEC,
+  DEVLINK_ATTR_BUS_NAME,
+  DEVLINK_ATTR_DEV_NAME,
+  DEVLINK_ATTR_PORT_INDEX,
+  DEVLINK_ATTR_PORT_TYPE,
+  DEVLINK_ATTR_PORT_DESIRED_TYPE,
+  DEVLINK_ATTR_PORT_NETDEV_IFINDEX,
+  DEVLINK_ATTR_PORT_NETDEV_NAME,
+  DEVLINK_ATTR_PORT_IBDEV_NAME,
+  DEVLINK_ATTR_PORT_SPLIT_COUNT,
+  DEVLINK_ATTR_PORT_SPLIT_GROUP,
+  DEVLINK_ATTR_SB_INDEX,
+  DEVLINK_ATTR_SB_SIZE,
+  DEVLINK_ATTR_SB_INGRESS_POOL_COUNT,
+  DEVLINK_ATTR_SB_EGRESS_POOL_COUNT,
+  DEVLINK_ATTR_SB_INGRESS_TC_COUNT,
+  DEVLINK_ATTR_SB_EGRESS_TC_COUNT,
+  DEVLINK_ATTR_SB_POOL_INDEX,
+  DEVLINK_ATTR_SB_POOL_TYPE,
+  DEVLINK_ATTR_SB_POOL_SIZE,
+  DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE,
+  DEVLINK_ATTR_SB_THRESHOLD,
+  DEVLINK_ATTR_SB_TC_INDEX,
+  DEVLINK_ATTR_SB_OCC_CUR,
+  DEVLINK_ATTR_SB_OCC_MAX,
+  DEVLINK_ATTR_ESWITCH_MODE,
+  DEVLINK_ATTR_ESWITCH_INLINE_MODE,
+  DEVLINK_ATTR_DPIPE_TABLES,
+  DEVLINK_ATTR_DPIPE_TABLE,
+  DEVLINK_ATTR_DPIPE_TABLE_NAME,
+  DEVLINK_ATTR_DPIPE_TABLE_SIZE,
+  DEVLINK_ATTR_DPIPE_TABLE_MATCHES,
+  DEVLINK_ATTR_DPIPE_TABLE_ACTIONS,
+  DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED,
+  DEVLINK_ATTR_DPIPE_ENTRIES,
+  DEVLINK_ATTR_DPIPE_ENTRY,
+  DEVLINK_ATTR_DPIPE_ENTRY_INDEX,
+  DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES,
+  DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES,
+  DEVLINK_ATTR_DPIPE_ENTRY_COUNTER,
+  DEVLINK_ATTR_DPIPE_MATCH,
+  DEVLINK_ATTR_DPIPE_MATCH_VALUE,
+  DEVLINK_ATTR_DPIPE_MATCH_TYPE,
+  DEVLINK_ATTR_DPIPE_ACTION,
+  DEVLINK_ATTR_DPIPE_ACTION_VALUE,
+  DEVLINK_ATTR_DPIPE_ACTION_TYPE,
+  DEVLINK_ATTR_DPIPE_VALUE,
+  DEVLINK_ATTR_DPIPE_VALUE_MASK,
+  DEVLINK_ATTR_DPIPE_VALUE_MAPPING,
+  DEVLINK_ATTR_DPIPE_HEADERS,
+  DEVLINK_ATTR_DPIPE_HEADER,
+  DEVLINK_ATTR_DPIPE_HEADER_NAME,
+  DEVLINK_ATTR_DPIPE_HEADER_ID,
+  DEVLINK_ATTR_DPIPE_HEADER_FIELDS,
+  DEVLINK_ATTR_DPIPE_HEADER_GLOBAL,
+  DEVLINK_ATTR_DPIPE_HEADER_INDEX,
+  DEVLINK_ATTR_DPIPE_FIELD,
+  DEVLINK_ATTR_DPIPE_FIELD_NAME,
+  DEVLINK_ATTR_DPIPE_FIELD_ID,
+  DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH,
+  DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE,
+  DEVLINK_ATTR_PAD,
+  DEVLINK_ATTR_ESWITCH_ENCAP_MODE,
+  DEVLINK_ATTR_RESOURCE_LIST,
+  DEVLINK_ATTR_RESOURCE,
+  DEVLINK_ATTR_RESOURCE_NAME,
+  DEVLINK_ATTR_RESOURCE_ID,
+  DEVLINK_ATTR_RESOURCE_SIZE,
+  DEVLINK_ATTR_RESOURCE_SIZE_NEW,
+  DEVLINK_ATTR_RESOURCE_SIZE_VALID,
+  DEVLINK_ATTR_RESOURCE_SIZE_MIN,
+  DEVLINK_ATTR_RESOURCE_SIZE_MAX,
+  DEVLINK_ATTR_RESOURCE_SIZE_GRAN,
+  DEVLINK_ATTR_RESOURCE_UNIT,
+  DEVLINK_ATTR_RESOURCE_OCC,
+  DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID,
+  DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS,
+  DEVLINK_ATTR_PORT_FLAVOUR,
+  DEVLINK_ATTR_PORT_NUMBER,
+  DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER,
+  DEVLINK_ATTR_PARAM,
+  DEVLINK_ATTR_PARAM_NAME,
+  DEVLINK_ATTR_PARAM_GENERIC,
+  DEVLINK_ATTR_PARAM_TYPE,
+  DEVLINK_ATTR_PARAM_VALUES_LIST,
+  DEVLINK_ATTR_PARAM_VALUE,
+  DEVLINK_ATTR_PARAM_VALUE_DATA,
+  DEVLINK_ATTR_PARAM_VALUE_CMODE,
+  DEVLINK_ATTR_REGION_NAME,
+  DEVLINK_ATTR_REGION_SIZE,
+  DEVLINK_ATTR_REGION_SNAPSHOTS,
+  DEVLINK_ATTR_REGION_SNAPSHOT,
+  DEVLINK_ATTR_REGION_SNAPSHOT_ID,
+  DEVLINK_ATTR_REGION_CHUNKS,
+  DEVLINK_ATTR_REGION_CHUNK,
+  DEVLINK_ATTR_REGION_CHUNK_DATA,
+  DEVLINK_ATTR_REGION_CHUNK_ADDR,
+  DEVLINK_ATTR_REGION_CHUNK_LEN,
+  DEVLINK_ATTR_INFO_DRIVER_NAME,
+  DEVLINK_ATTR_INFO_SERIAL_NUMBER,
+  DEVLINK_ATTR_INFO_VERSION_FIXED,
+  DEVLINK_ATTR_INFO_VERSION_RUNNING,
+  DEVLINK_ATTR_INFO_VERSION_STORED,
+  DEVLINK_ATTR_INFO_VERSION_NAME,
+  DEVLINK_ATTR_INFO_VERSION_VALUE,
+  DEVLINK_ATTR_SB_POOL_CELL_SIZE,
+  DEVLINK_ATTR_FMSG,
+  DEVLINK_ATTR_FMSG_OBJ_NEST_START,
+  DEVLINK_ATTR_FMSG_PAIR_NEST_START,
+  DEVLINK_ATTR_FMSG_ARR_NEST_START,
+  DEVLINK_ATTR_FMSG_NEST_END,
+  DEVLINK_ATTR_FMSG_OBJ_NAME,
+  DEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE,
+  DEVLINK_ATTR_FMSG_OBJ_VALUE_DATA,
+  DEVLINK_ATTR_HEALTH_REPORTER,
+  DEVLINK_ATTR_HEALTH_REPORTER_NAME,
+  DEVLINK_ATTR_HEALTH_REPORTER_STATE,
+  DEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT,
+  DEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT,
+  DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS,
+  DEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD,
+  DEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER,
+  DEVLINK_ATTR_FLASH_UPDATE_FILE_NAME,
+  DEVLINK_ATTR_FLASH_UPDATE_COMPONENT,
+  DEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG,
+  DEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE,
+  DEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL,
+  DEVLINK_ATTR_PORT_PCI_PF_NUMBER,
+  DEVLINK_ATTR_PORT_PCI_VF_NUMBER,
+  DEVLINK_ATTR_STATS,
+  DEVLINK_ATTR_TRAP_NAME,
+  DEVLINK_ATTR_TRAP_ACTION,
+  DEVLINK_ATTR_TRAP_TYPE,
+  DEVLINK_ATTR_TRAP_GENERIC,
+  DEVLINK_ATTR_TRAP_METADATA,
+  DEVLINK_ATTR_TRAP_GROUP_NAME,
+  DEVLINK_ATTR_RELOAD_FAILED,
+  DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS,
+  DEVLINK_ATTR_NETNS_FD,
+  DEVLINK_ATTR_NETNS_PID,
+  DEVLINK_ATTR_NETNS_ID,
+  DEVLINK_ATTR_HEALTH_REPORTER_AUTO_DUMP,
+  DEVLINK_ATTR_TRAP_POLICER_ID,
+  DEVLINK_ATTR_TRAP_POLICER_RATE,
+  DEVLINK_ATTR_TRAP_POLICER_BURST,
+  DEVLINK_ATTR_PORT_FUNCTION,
+  DEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER,
+  DEVLINK_ATTR_PORT_LANES,
+  DEVLINK_ATTR_PORT_SPLITTABLE,
+  DEVLINK_ATTR_PORT_EXTERNAL,
+  DEVLINK_ATTR_PORT_CONTROLLER_NUMBER,
+  DEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT,
+  DEVLINK_ATTR_FLASH_UPDATE_OVERWRITE_MASK,
+  DEVLINK_ATTR_RELOAD_ACTION,
+  DEVLINK_ATTR_RELOAD_ACTIONS_PERFORMED,
+  DEVLINK_ATTR_RELOAD_LIMITS,
+  DEVLINK_ATTR_DEV_STATS,
+  DEVLINK_ATTR_RELOAD_STATS,
+  DEVLINK_ATTR_RELOAD_STATS_ENTRY,
+  DEVLINK_ATTR_RELOAD_STATS_LIMIT,
+  DEVLINK_ATTR_RELOAD_STATS_VALUE,
+  DEVLINK_ATTR_REMOTE_RELOAD_STATS,
+  DEVLINK_ATTR_RELOAD_ACTION_INFO,
+  DEVLINK_ATTR_RELOAD_ACTION_STATS,
+  DEVLINK_ATTR_PORT_PCI_SF_NUMBER,
+  DEVLINK_ATTR_RATE_TYPE,
+  DEVLINK_ATTR_RATE_TX_SHARE,
+  DEVLINK_ATTR_RATE_TX_MAX,
+  DEVLINK_ATTR_RATE_NODE_NAME,
+  DEVLINK_ATTR_RATE_PARENT_NODE_NAME,
+  DEVLINK_ATTR_REGION_MAX_SNAPSHOTS,
+  __DEVLINK_ATTR_MAX,
+  DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
+};
+enum devlink_dpipe_field_mapping_type {
+  DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE,
+  DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX,
+};
+enum devlink_dpipe_match_type {
+  DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT,
+};
+enum devlink_dpipe_action_type {
+  DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY,
+};
+enum devlink_dpipe_field_ethernet_id {
+  DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC,
+};
+enum devlink_dpipe_field_ipv4_id {
+  DEVLINK_DPIPE_FIELD_IPV4_DST_IP,
+};
+enum devlink_dpipe_field_ipv6_id {
+  DEVLINK_DPIPE_FIELD_IPV6_DST_IP,
+};
+enum devlink_dpipe_header_id {
+  DEVLINK_DPIPE_HEADER_ETHERNET,
+  DEVLINK_DPIPE_HEADER_IPV4,
+  DEVLINK_DPIPE_HEADER_IPV6,
+};
+enum devlink_resource_unit {
+  DEVLINK_RESOURCE_UNIT_ENTRY,
+};
+enum devlink_port_function_attr {
+  DEVLINK_PORT_FUNCTION_ATTR_UNSPEC,
+  DEVLINK_PORT_FUNCTION_ATTR_HW_ADDR,
+  DEVLINK_PORT_FN_ATTR_STATE,
+  DEVLINK_PORT_FN_ATTR_OPSTATE,
+  __DEVLINK_PORT_FUNCTION_ATTR_MAX,
+  DEVLINK_PORT_FUNCTION_ATTR_MAX = __DEVLINK_PORT_FUNCTION_ATTR_MAX - 1
+};
+enum devlink_port_fn_state {
+  DEVLINK_PORT_FN_STATE_INACTIVE,
+  DEVLINK_PORT_FN_STATE_ACTIVE,
+};
+enum devlink_port_fn_opstate {
+  DEVLINK_PORT_FN_OPSTATE_DETACHED,
+  DEVLINK_PORT_FN_OPSTATE_ATTACHED,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/dlm.h b/i686-linux-musl/include/linux/dlm.h
new file mode 100644
index 0000000..c75918f
--- /dev/null
+++ b/i686-linux-musl/include/linux/dlm.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__DLM_DOT_H__
+#define _UAPI__DLM_DOT_H__
+#include <linux/dlmconstants.h>
+#include <linux/types.h>
+typedef void dlm_lockspace_t;
+#define DLM_SBF_DEMOTED 0x01
+#define DLM_SBF_VALNOTVALID 0x02
+#define DLM_SBF_ALTMODE 0x04
+struct dlm_lksb {
+  int sb_status;
+  __u32 sb_lkid;
+  char sb_flags;
+  char * sb_lvbptr;
+};
+#define DLM_LSFL_TIMEWARN 0x00000002
+#define DLM_LSFL_FS 0x00000004
+#define DLM_LSFL_NEWEXCL 0x00000008
+#endif
diff --git a/i686-linux-musl/include/linux/dlm_device.h b/i686-linux-musl/include/linux/dlm_device.h
new file mode 100644
index 0000000..5e54d2e
--- /dev/null
+++ b/i686-linux-musl/include/linux/dlm_device.h
@@ -0,0 +1,87 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_DLM_DEVICE_H
+#define _LINUX_DLM_DEVICE_H
+#include <linux/dlm.h>
+#include <linux/types.h>
+#define DLM_USER_LVB_LEN 32
+#define DLM_DEVICE_VERSION_MAJOR 6
+#define DLM_DEVICE_VERSION_MINOR 0
+#define DLM_DEVICE_VERSION_PATCH 2
+struct dlm_lock_params {
+  __u8 mode;
+  __u8 namelen;
+  __u16 unused;
+  __u32 flags;
+  __u32 lkid;
+  __u32 parent;
+  __u64 xid;
+  __u64 timeout;
+  void __user * castparam;
+  void __user * castaddr;
+  void __user * bastparam;
+  void __user * bastaddr;
+  struct dlm_lksb __user * lksb;
+  char lvb[DLM_USER_LVB_LEN];
+  char name[];
+};
+struct dlm_lspace_params {
+  __u32 flags;
+  __u32 minor;
+  char name[];
+};
+struct dlm_purge_params {
+  __u32 nodeid;
+  __u32 pid;
+};
+struct dlm_write_request {
+  __u32 version[3];
+  __u8 cmd;
+  __u8 is64bit;
+  __u8 unused[2];
+  union {
+    struct dlm_lock_params lock;
+    struct dlm_lspace_params lspace;
+    struct dlm_purge_params purge;
+  } i;
+};
+struct dlm_device_version {
+  __u32 version[3];
+};
+struct dlm_lock_result {
+  __u32 version[3];
+  __u32 length;
+  void __user * user_astaddr;
+  void __user * user_astparam;
+  struct dlm_lksb __user * user_lksb;
+  struct dlm_lksb lksb;
+  __u8 bast_mode;
+  __u8 unused[3];
+  __u32 lvb_offset;
+};
+#define DLM_USER_LOCK 1
+#define DLM_USER_UNLOCK 2
+#define DLM_USER_QUERY 3
+#define DLM_USER_CREATE_LOCKSPACE 4
+#define DLM_USER_REMOVE_LOCKSPACE 5
+#define DLM_USER_PURGE 6
+#define DLM_USER_DEADLOCK 7
+#define DLM_USER_LSFLG_AUTOFREE 1
+#define DLM_USER_LSFLG_FORCEFREE 2
+#endif
diff --git a/i686-linux-musl/include/linux/dlm_netlink.h b/i686-linux-musl/include/linux/dlm_netlink.h
new file mode 100644
index 0000000..0c655fa
--- /dev/null
+++ b/i686-linux-musl/include/linux/dlm_netlink.h
@@ -0,0 +1,59 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _DLM_NETLINK_H
+#define _DLM_NETLINK_H
+#include <linux/types.h>
+#include <linux/dlmconstants.h>
+enum {
+  DLM_STATUS_WAITING = 1,
+  DLM_STATUS_GRANTED = 2,
+  DLM_STATUS_CONVERT = 3,
+};
+#define DLM_LOCK_DATA_VERSION 1
+struct dlm_lock_data {
+  __u16 version;
+  __u32 lockspace_id;
+  int nodeid;
+  int ownpid;
+  __u32 id;
+  __u32 remid;
+  __u64 xid;
+  __s8 status;
+  __s8 grmode;
+  __s8 rqmode;
+  unsigned long timestamp;
+  int resource_namelen;
+  char resource_name[DLM_RESNAME_MAXLEN];
+};
+enum {
+  DLM_CMD_UNSPEC = 0,
+  DLM_CMD_HELLO,
+  DLM_CMD_TIMEOUT,
+  __DLM_CMD_MAX,
+};
+#define DLM_CMD_MAX (__DLM_CMD_MAX - 1)
+enum {
+  DLM_TYPE_UNSPEC = 0,
+  DLM_TYPE_LOCK,
+  __DLM_TYPE_MAX,
+};
+#define DLM_TYPE_MAX (__DLM_TYPE_MAX - 1)
+#define DLM_GENL_VERSION 0x1
+#define DLM_GENL_NAME "DLM"
+#endif
diff --git a/i686-linux-musl/include/linux/dlm_plock.h b/i686-linux-musl/include/linux/dlm_plock.h
new file mode 100644
index 0000000..332397b
--- /dev/null
+++ b/i686-linux-musl/include/linux/dlm_plock.h
@@ -0,0 +1,47 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__DLM_PLOCK_DOT_H__
+#define _UAPI__DLM_PLOCK_DOT_H__
+#include <linux/types.h>
+#define DLM_PLOCK_MISC_NAME "dlm_plock"
+#define DLM_PLOCK_VERSION_MAJOR 1
+#define DLM_PLOCK_VERSION_MINOR 2
+#define DLM_PLOCK_VERSION_PATCH 0
+enum {
+  DLM_PLOCK_OP_LOCK = 1,
+  DLM_PLOCK_OP_UNLOCK,
+  DLM_PLOCK_OP_GET,
+};
+#define DLM_PLOCK_FL_CLOSE 1
+struct dlm_plock_info {
+  __u32 version[3];
+  __u8 optype;
+  __u8 ex;
+  __u8 wait;
+  __u8 flags;
+  __u32 pid;
+  __s32 nodeid;
+  __s32 rv;
+  __u32 fsid;
+  __u64 number;
+  __u64 start;
+  __u64 end;
+  __u64 owner;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/dlmconstants.h b/i686-linux-musl/include/linux/dlmconstants.h
new file mode 100644
index 0000000..e1b1cb5
--- /dev/null
+++ b/i686-linux-musl/include/linux/dlmconstants.h
@@ -0,0 +1,51 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __DLMCONSTANTS_DOT_H__
+#define __DLMCONSTANTS_DOT_H__
+#define DLM_LOCKSPACE_LEN 64
+#define DLM_RESNAME_MAXLEN 64
+#define DLM_LOCK_IV (- 1)
+#define DLM_LOCK_NL 0
+#define DLM_LOCK_CR 1
+#define DLM_LOCK_CW 2
+#define DLM_LOCK_PR 3
+#define DLM_LOCK_PW 4
+#define DLM_LOCK_EX 5
+#define DLM_LKF_NOQUEUE 0x00000001
+#define DLM_LKF_CANCEL 0x00000002
+#define DLM_LKF_CONVERT 0x00000004
+#define DLM_LKF_VALBLK 0x00000008
+#define DLM_LKF_QUECVT 0x00000010
+#define DLM_LKF_IVVALBLK 0x00000020
+#define DLM_LKF_CONVDEADLK 0x00000040
+#define DLM_LKF_PERSISTENT 0x00000080
+#define DLM_LKF_NODLCKWT 0x00000100
+#define DLM_LKF_NODLCKBLK 0x00000200
+#define DLM_LKF_EXPEDITE 0x00000400
+#define DLM_LKF_NOQUEUEBAST 0x00000800
+#define DLM_LKF_HEADQUE 0x00001000
+#define DLM_LKF_NOORDER 0x00002000
+#define DLM_LKF_ORPHAN 0x00004000
+#define DLM_LKF_ALTPR 0x00008000
+#define DLM_LKF_ALTCW 0x00010000
+#define DLM_LKF_FORCEUNLOCK 0x00020000
+#define DLM_LKF_TIMEOUT 0x00040000
+#define DLM_ECANCEL 0x10001
+#define DLM_EUNLOCK 0x10002
+#endif
diff --git a/i686-linux-musl/include/linux/dm-ioctl.h b/i686-linux-musl/include/linux/dm-ioctl.h
new file mode 100644
index 0000000..09f8a98
--- /dev/null
+++ b/i686-linux-musl/include/linux/dm-ioctl.h
@@ -0,0 +1,130 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_DM_IOCTL_V4_H
+#define _LINUX_DM_IOCTL_V4_H
+#include <linux/types.h>
+#define DM_DIR "mapper"
+#define DM_CONTROL_NODE "control"
+#define DM_MAX_TYPE_NAME 16
+#define DM_NAME_LEN 128
+#define DM_UUID_LEN 129
+struct dm_ioctl {
+  __u32 version[3];
+  __u32 data_size;
+  __u32 data_start;
+  __u32 target_count;
+  __s32 open_count;
+  __u32 flags;
+  __u32 event_nr;
+  __u32 padding;
+  __u64 dev;
+  char name[DM_NAME_LEN];
+  char uuid[DM_UUID_LEN];
+  char data[7];
+};
+struct dm_target_spec {
+  __u64 sector_start;
+  __u64 length;
+  __s32 status;
+  __u32 next;
+  char target_type[DM_MAX_TYPE_NAME];
+};
+struct dm_target_deps {
+  __u32 count;
+  __u32 padding;
+  __u64 dev[0];
+};
+struct dm_name_list {
+  __u64 dev;
+  __u32 next;
+  char name[0];
+};
+#define DM_NAME_LIST_FLAG_HAS_UUID 1
+#define DM_NAME_LIST_FLAG_DOESNT_HAVE_UUID 2
+struct dm_target_versions {
+  __u32 next;
+  __u32 version[3];
+  char name[0];
+};
+struct dm_target_msg {
+  __u64 sector;
+  char message[0];
+};
+enum {
+  DM_VERSION_CMD = 0,
+  DM_REMOVE_ALL_CMD,
+  DM_LIST_DEVICES_CMD,
+  DM_DEV_CREATE_CMD,
+  DM_DEV_REMOVE_CMD,
+  DM_DEV_RENAME_CMD,
+  DM_DEV_SUSPEND_CMD,
+  DM_DEV_STATUS_CMD,
+  DM_DEV_WAIT_CMD,
+  DM_TABLE_LOAD_CMD,
+  DM_TABLE_CLEAR_CMD,
+  DM_TABLE_DEPS_CMD,
+  DM_TABLE_STATUS_CMD,
+  DM_LIST_VERSIONS_CMD,
+  DM_TARGET_MSG_CMD,
+  DM_DEV_SET_GEOMETRY_CMD,
+  DM_DEV_ARM_POLL_CMD,
+  DM_GET_TARGET_VERSION_CMD,
+};
+#define DM_IOCTL 0xfd
+#define DM_VERSION _IOWR(DM_IOCTL, DM_VERSION_CMD, struct dm_ioctl)
+#define DM_REMOVE_ALL _IOWR(DM_IOCTL, DM_REMOVE_ALL_CMD, struct dm_ioctl)
+#define DM_LIST_DEVICES _IOWR(DM_IOCTL, DM_LIST_DEVICES_CMD, struct dm_ioctl)
+#define DM_DEV_CREATE _IOWR(DM_IOCTL, DM_DEV_CREATE_CMD, struct dm_ioctl)
+#define DM_DEV_REMOVE _IOWR(DM_IOCTL, DM_DEV_REMOVE_CMD, struct dm_ioctl)
+#define DM_DEV_RENAME _IOWR(DM_IOCTL, DM_DEV_RENAME_CMD, struct dm_ioctl)
+#define DM_DEV_SUSPEND _IOWR(DM_IOCTL, DM_DEV_SUSPEND_CMD, struct dm_ioctl)
+#define DM_DEV_STATUS _IOWR(DM_IOCTL, DM_DEV_STATUS_CMD, struct dm_ioctl)
+#define DM_DEV_WAIT _IOWR(DM_IOCTL, DM_DEV_WAIT_CMD, struct dm_ioctl)
+#define DM_DEV_ARM_POLL _IOWR(DM_IOCTL, DM_DEV_ARM_POLL_CMD, struct dm_ioctl)
+#define DM_TABLE_LOAD _IOWR(DM_IOCTL, DM_TABLE_LOAD_CMD, struct dm_ioctl)
+#define DM_TABLE_CLEAR _IOWR(DM_IOCTL, DM_TABLE_CLEAR_CMD, struct dm_ioctl)
+#define DM_TABLE_DEPS _IOWR(DM_IOCTL, DM_TABLE_DEPS_CMD, struct dm_ioctl)
+#define DM_TABLE_STATUS _IOWR(DM_IOCTL, DM_TABLE_STATUS_CMD, struct dm_ioctl)
+#define DM_LIST_VERSIONS _IOWR(DM_IOCTL, DM_LIST_VERSIONS_CMD, struct dm_ioctl)
+#define DM_GET_TARGET_VERSION _IOWR(DM_IOCTL, DM_GET_TARGET_VERSION_CMD, struct dm_ioctl)
+#define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl)
+#define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
+#define DM_VERSION_MAJOR 4
+#define DM_VERSION_MINOR 45
+#define DM_VERSION_PATCHLEVEL 0
+#define DM_VERSION_EXTRA "-ioctl(2021-03-22)"
+#define DM_READONLY_FLAG (1 << 0)
+#define DM_SUSPEND_FLAG (1 << 1)
+#define DM_PERSISTENT_DEV_FLAG (1 << 3)
+#define DM_STATUS_TABLE_FLAG (1 << 4)
+#define DM_ACTIVE_PRESENT_FLAG (1 << 5)
+#define DM_INACTIVE_PRESENT_FLAG (1 << 6)
+#define DM_BUFFER_FULL_FLAG (1 << 8)
+#define DM_SKIP_BDGET_FLAG (1 << 9)
+#define DM_SKIP_LOCKFS_FLAG (1 << 10)
+#define DM_NOFLUSH_FLAG (1 << 11)
+#define DM_QUERY_INACTIVE_TABLE_FLAG (1 << 12)
+#define DM_UEVENT_GENERATED_FLAG (1 << 13)
+#define DM_UUID_FLAG (1 << 14)
+#define DM_SECURE_DATA_FLAG (1 << 15)
+#define DM_DATA_OUT_FLAG (1 << 16)
+#define DM_DEFERRED_REMOVE (1 << 17)
+#define DM_INTERNAL_SUSPEND_FLAG (1 << 18)
+#define DM_IMA_MEASUREMENT_FLAG (1 << 19)
+#endif
diff --git a/i686-linux-musl/include/linux/dm-log-userspace.h b/i686-linux-musl/include/linux/dm-log-userspace.h
new file mode 100644
index 0000000..4f0671b
--- /dev/null
+++ b/i686-linux-musl/include/linux/dm-log-userspace.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __DM_LOG_USERSPACE_H__
+#define __DM_LOG_USERSPACE_H__
+#include <linux/types.h>
+#include <linux/dm-ioctl.h>
+#define DM_ULOG_CTR 1
+#define DM_ULOG_DTR 2
+#define DM_ULOG_PRESUSPEND 3
+#define DM_ULOG_POSTSUSPEND 4
+#define DM_ULOG_RESUME 5
+#define DM_ULOG_GET_REGION_SIZE 6
+#define DM_ULOG_IS_CLEAN 7
+#define DM_ULOG_IN_SYNC 8
+#define DM_ULOG_FLUSH 9
+#define DM_ULOG_MARK_REGION 10
+#define DM_ULOG_CLEAR_REGION 11
+#define DM_ULOG_GET_RESYNC_WORK 12
+#define DM_ULOG_SET_REGION_SYNC 13
+#define DM_ULOG_GET_SYNC_COUNT 14
+#define DM_ULOG_STATUS_INFO 15
+#define DM_ULOG_STATUS_TABLE 16
+#define DM_ULOG_IS_REMOTE_RECOVERING 17
+#define DM_ULOG_REQUEST_MASK 0xFF
+#define DM_ULOG_REQUEST_TYPE(request_type) (DM_ULOG_REQUEST_MASK & (request_type))
+#define DM_ULOG_REQUEST_VERSION 3
+struct dm_ulog_request {
+  __u64 luid;
+  char uuid[DM_UUID_LEN];
+  char padding[3];
+  __u32 version;
+  __s32 error;
+  __u32 seq;
+  __u32 request_type;
+  __u32 data_size;
+  char data[0];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/dm-user.h b/i686-linux-musl/include/linux/dm-user.h
new file mode 100644
index 0000000..39624c8
--- /dev/null
+++ b/i686-linux-musl/include/linux/dm-user.h
@@ -0,0 +1,65 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_DM_USER_H
+#define _LINUX_DM_USER_H
+#include <linux/types.h>
+#define DM_USER_REQ_MAP_READ 0
+#define DM_USER_REQ_MAP_WRITE 1
+#define DM_USER_REQ_MAP_FLUSH 2
+#define DM_USER_REQ_MAP_DISCARD 3
+#define DM_USER_REQ_MAP_SECURE_ERASE 4
+#define DM_USER_REQ_MAP_WRITE_SAME 5
+#define DM_USER_REQ_MAP_WRITE_ZEROES 6
+#define DM_USER_REQ_MAP_ZONE_OPEN 7
+#define DM_USER_REQ_MAP_ZONE_CLOSE 8
+#define DM_USER_REQ_MAP_ZONE_FINISH 9
+#define DM_USER_REQ_MAP_ZONE_APPEND 10
+#define DM_USER_REQ_MAP_ZONE_RESET 11
+#define DM_USER_REQ_MAP_ZONE_RESET_ALL 12
+#define DM_USER_REQ_MAP_FLAG_FAILFAST_DEV 0x00001
+#define DM_USER_REQ_MAP_FLAG_FAILFAST_TRANSPORT 0x00002
+#define DM_USER_REQ_MAP_FLAG_FAILFAST_DRIVER 0x00004
+#define DM_USER_REQ_MAP_FLAG_SYNC 0x00008
+#define DM_USER_REQ_MAP_FLAG_META 0x00010
+#define DM_USER_REQ_MAP_FLAG_PRIO 0x00020
+#define DM_USER_REQ_MAP_FLAG_NOMERGE 0x00040
+#define DM_USER_REQ_MAP_FLAG_IDLE 0x00080
+#define DM_USER_REQ_MAP_FLAG_INTEGRITY 0x00100
+#define DM_USER_REQ_MAP_FLAG_FUA 0x00200
+#define DM_USER_REQ_MAP_FLAG_PREFLUSH 0x00400
+#define DM_USER_REQ_MAP_FLAG_RAHEAD 0x00800
+#define DM_USER_REQ_MAP_FLAG_BACKGROUND 0x01000
+#define DM_USER_REQ_MAP_FLAG_NOWAIT 0x02000
+#define DM_USER_REQ_MAP_FLAG_CGROUP_PUNT 0x04000
+#define DM_USER_REQ_MAP_FLAG_NOUNMAP 0x08000
+#define DM_USER_REQ_MAP_FLAG_HIPRI 0x10000
+#define DM_USER_REQ_MAP_FLAG_DRV 0x20000
+#define DM_USER_REQ_MAP_FLAG_SWAP 0x40000
+#define DM_USER_RESP_SUCCESS 0
+#define DM_USER_RESP_ERROR 1
+#define DM_USER_RESP_UNSUPPORTED 2
+struct dm_user_message {
+  __u64 seq;
+  __u64 type;
+  __u64 flags;
+  __u64 sector;
+  __u64 len;
+  __u8 buf[];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/dma-buf.h b/i686-linux-musl/include/linux/dma-buf.h
new file mode 100644
index 0000000..221c20f
--- /dev/null
+++ b/i686-linux-musl/include/linux/dma-buf.h
@@ -0,0 +1,37 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _DMA_BUF_UAPI_H_
+#define _DMA_BUF_UAPI_H_
+#include <linux/types.h>
+struct dma_buf_sync {
+  __u64 flags;
+};
+#define DMA_BUF_SYNC_READ (1 << 0)
+#define DMA_BUF_SYNC_WRITE (2 << 0)
+#define DMA_BUF_SYNC_RW (DMA_BUF_SYNC_READ | DMA_BUF_SYNC_WRITE)
+#define DMA_BUF_SYNC_START (0 << 2)
+#define DMA_BUF_SYNC_END (1 << 2)
+#define DMA_BUF_SYNC_VALID_FLAGS_MASK (DMA_BUF_SYNC_RW | DMA_BUF_SYNC_END)
+#define DMA_BUF_NAME_LEN 32
+#define DMA_BUF_BASE 'b'
+#define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync)
+#define DMA_BUF_SET_NAME _IOW(DMA_BUF_BASE, 1, const char *)
+#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, u32)
+#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, u64)
+#endif
diff --git a/i686-linux-musl/include/linux/dma-heap.h b/i686-linux-musl/include/linux/dma-heap.h
new file mode 100644
index 0000000..a2746e3
--- /dev/null
+++ b/i686-linux-musl/include/linux/dma-heap.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_DMABUF_POOL_H
+#define _UAPI_LINUX_DMABUF_POOL_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define DMA_HEAP_VALID_FD_FLAGS (O_CLOEXEC | O_ACCMODE)
+#define DMA_HEAP_VALID_HEAP_FLAGS (0)
+struct dma_heap_allocation_data {
+  __u64 len;
+  __u32 fd;
+  __u32 fd_flags;
+  __u64 heap_flags;
+};
+#define DMA_HEAP_IOC_MAGIC 'H'
+#define DMA_HEAP_IOCTL_ALLOC _IOWR(DMA_HEAP_IOC_MAGIC, 0x0, struct dma_heap_allocation_data)
+#endif
diff --git a/i686-linux-musl/include/linux/dn.h b/i686-linux-musl/include/linux/dn.h
new file mode 100644
index 0000000..621f60f
--- /dev/null
+++ b/i686-linux-musl/include/linux/dn.h
@@ -0,0 +1,114 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_DN_H
+#define _LINUX_DN_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/if_ether.h>
+#define DNPROTO_NSP 2
+#define DNPROTO_ROU 3
+#define DNPROTO_NML 4
+#define DNPROTO_EVL 5
+#define DNPROTO_EVR 6
+#define DNPROTO_NSPT 7
+#define DN_ADDL 2
+#define DN_MAXADDL 2
+#define DN_MAXOPTL 16
+#define DN_MAXOBJL 16
+#define DN_MAXACCL 40
+#define DN_MAXALIASL 128
+#define DN_MAXNODEL 256
+#define DNBUFSIZE 65023
+#define SO_CONDATA 1
+#define SO_CONACCESS 2
+#define SO_PROXYUSR 3
+#define SO_LINKINFO 7
+#define DSO_CONDATA 1
+#define DSO_DISDATA 10
+#define DSO_CONACCESS 2
+#define DSO_ACCEPTMODE 4
+#define DSO_CONACCEPT 5
+#define DSO_CONREJECT 6
+#define DSO_LINKINFO 7
+#define DSO_STREAM 8
+#define DSO_SEQPACKET 9
+#define DSO_MAXWINDOW 11
+#define DSO_NODELAY 12
+#define DSO_CORK 13
+#define DSO_SERVICES 14
+#define DSO_INFO 15
+#define DSO_MAX 15
+#define LL_INACTIVE 0
+#define LL_CONNECTING 1
+#define LL_RUNNING 2
+#define LL_DISCONNECTING 3
+#define ACC_IMMED 0
+#define ACC_DEFER 1
+#define SDF_WILD 1
+#define SDF_PROXY 2
+#define SDF_UICPROXY 4
+struct dn_naddr {
+  __le16 a_len;
+  __u8 a_addr[DN_MAXADDL];
+};
+struct sockaddr_dn {
+  __u16 sdn_family;
+  __u8 sdn_flags;
+  __u8 sdn_objnum;
+  __le16 sdn_objnamel;
+  __u8 sdn_objname[DN_MAXOBJL];
+  struct dn_naddr sdn_add;
+};
+#define sdn_nodeaddrl sdn_add.a_len
+#define sdn_nodeaddr sdn_add.a_addr
+struct optdata_dn {
+  __le16 opt_status;
+#define opt_sts opt_status
+  __le16 opt_optl;
+  __u8 opt_data[16];
+};
+struct accessdata_dn {
+  __u8 acc_accl;
+  __u8 acc_acc[DN_MAXACCL];
+  __u8 acc_passl;
+  __u8 acc_pass[DN_MAXACCL];
+  __u8 acc_userl;
+  __u8 acc_user[DN_MAXACCL];
+};
+struct linkinfo_dn {
+  __u16 idn_segsize;
+  __u8 idn_linkstate;
+};
+union etheraddress {
+  __u8 dne_addr[ETH_ALEN];
+  struct {
+    __u8 dne_hiord[4];
+    __u8 dne_nodeaddr[2];
+  } dne_remote;
+};
+struct dn_addr {
+  __le16 dna_family;
+  union etheraddress dna_netaddr;
+};
+#define DECNET_IOCTL_BASE 0x89
+#define SIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, struct dn_naddr)
+#define SIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, struct dn_naddr)
+#define OSIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, int)
+#define OSIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, int)
+#endif
diff --git a/i686-linux-musl/include/linux/dns_resolver.h b/i686-linux-musl/include/linux/dns_resolver.h
new file mode 100644
index 0000000..21cb5c0
--- /dev/null
+++ b/i686-linux-musl/include/linux/dns_resolver.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_DNS_RESOLVER_H
+#define _UAPI_LINUX_DNS_RESOLVER_H
+#include <linux/types.h>
+enum dns_payload_content_type {
+  DNS_PAYLOAD_IS_SERVER_LIST = 0,
+};
+enum dns_payload_address_type {
+  DNS_ADDRESS_IS_IPV4 = 0,
+  DNS_ADDRESS_IS_IPV6 = 1,
+};
+enum dns_payload_protocol_type {
+  DNS_SERVER_PROTOCOL_UNSPECIFIED = 0,
+  DNS_SERVER_PROTOCOL_UDP = 1,
+  DNS_SERVER_PROTOCOL_TCP = 2,
+};
+enum dns_record_source {
+  DNS_RECORD_UNAVAILABLE = 0,
+  DNS_RECORD_FROM_CONFIG = 1,
+  DNS_RECORD_FROM_DNS_A = 2,
+  DNS_RECORD_FROM_DNS_AFSDB = 3,
+  DNS_RECORD_FROM_DNS_SRV = 4,
+  DNS_RECORD_FROM_NSS = 5,
+  NR__dns_record_source
+};
+enum dns_lookup_status {
+  DNS_LOOKUP_NOT_DONE = 0,
+  DNS_LOOKUP_GOOD = 1,
+  DNS_LOOKUP_GOOD_WITH_BAD = 2,
+  DNS_LOOKUP_BAD = 3,
+  DNS_LOOKUP_GOT_NOT_FOUND = 4,
+  DNS_LOOKUP_GOT_LOCAL_FAILURE = 5,
+  DNS_LOOKUP_GOT_TEMP_FAILURE = 6,
+  DNS_LOOKUP_GOT_NS_FAILURE = 7,
+  NR__dns_lookup_status
+};
+struct dns_payload_header {
+  __u8 zero;
+  __u8 content;
+  __u8 version;
+} __packed;
+struct dns_server_list_v1_header {
+  struct dns_payload_header hdr;
+  __u8 source;
+  __u8 status;
+  __u8 nr_servers;
+} __packed;
+struct dns_server_list_v1_server {
+  __u16 name_len;
+  __u16 priority;
+  __u16 weight;
+  __u16 port;
+  __u8 source;
+  __u8 status;
+  __u8 protocol;
+  __u8 nr_addrs;
+} __packed;
+struct dns_server_list_v1_address {
+  __u8 address_type;
+} __packed;
+#endif
diff --git a/i686-linux-musl/include/linux/dqblk_xfs.h b/i686-linux-musl/include/linux/dqblk_xfs.h
new file mode 100644
index 0000000..6164991
--- /dev/null
+++ b/i686-linux-musl/include/linux/dqblk_xfs.h
@@ -0,0 +1,138 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_DQBLK_XFS_H
+#define _LINUX_DQBLK_XFS_H
+#include <linux/types.h>
+#define XQM_CMD(x) (('X' << 8) + (x))
+#define XQM_COMMAND(x) (((x) & (0xff << 8)) == ('X' << 8))
+#define XQM_USRQUOTA 0
+#define XQM_GRPQUOTA 1
+#define XQM_PRJQUOTA 2
+#define XQM_MAXQUOTAS 3
+#define Q_XQUOTAON XQM_CMD(1)
+#define Q_XQUOTAOFF XQM_CMD(2)
+#define Q_XGETQUOTA XQM_CMD(3)
+#define Q_XSETQLIM XQM_CMD(4)
+#define Q_XGETQSTAT XQM_CMD(5)
+#define Q_XQUOTARM XQM_CMD(6)
+#define Q_XQUOTASYNC XQM_CMD(7)
+#define Q_XGETQSTATV XQM_CMD(8)
+#define Q_XGETNEXTQUOTA XQM_CMD(9)
+#define FS_DQUOT_VERSION 1
+typedef struct fs_disk_quota {
+  __s8 d_version;
+  __s8 d_flags;
+  __u16 d_fieldmask;
+  __u32 d_id;
+  __u64 d_blk_hardlimit;
+  __u64 d_blk_softlimit;
+  __u64 d_ino_hardlimit;
+  __u64 d_ino_softlimit;
+  __u64 d_bcount;
+  __u64 d_icount;
+  __s32 d_itimer;
+  __s32 d_btimer;
+  __u16 d_iwarns;
+  __u16 d_bwarns;
+  __s8 d_itimer_hi;
+  __s8 d_btimer_hi;
+  __s8 d_rtbtimer_hi;
+  __s8 d_padding2;
+  __u64 d_rtb_hardlimit;
+  __u64 d_rtb_softlimit;
+  __u64 d_rtbcount;
+  __s32 d_rtbtimer;
+  __u16 d_rtbwarns;
+  __s16 d_padding3;
+  char d_padding4[8];
+} fs_disk_quota_t;
+#define FS_DQ_ISOFT (1 << 0)
+#define FS_DQ_IHARD (1 << 1)
+#define FS_DQ_BSOFT (1 << 2)
+#define FS_DQ_BHARD (1 << 3)
+#define FS_DQ_RTBSOFT (1 << 4)
+#define FS_DQ_RTBHARD (1 << 5)
+#define FS_DQ_LIMIT_MASK (FS_DQ_ISOFT | FS_DQ_IHARD | FS_DQ_BSOFT | FS_DQ_BHARD | FS_DQ_RTBSOFT | FS_DQ_RTBHARD)
+#define FS_DQ_BTIMER (1 << 6)
+#define FS_DQ_ITIMER (1 << 7)
+#define FS_DQ_RTBTIMER (1 << 8)
+#define FS_DQ_TIMER_MASK (FS_DQ_BTIMER | FS_DQ_ITIMER | FS_DQ_RTBTIMER)
+#define FS_DQ_BWARNS (1 << 9)
+#define FS_DQ_IWARNS (1 << 10)
+#define FS_DQ_RTBWARNS (1 << 11)
+#define FS_DQ_WARNS_MASK (FS_DQ_BWARNS | FS_DQ_IWARNS | FS_DQ_RTBWARNS)
+#define FS_DQ_BCOUNT (1 << 12)
+#define FS_DQ_ICOUNT (1 << 13)
+#define FS_DQ_RTBCOUNT (1 << 14)
+#define FS_DQ_ACCT_MASK (FS_DQ_BCOUNT | FS_DQ_ICOUNT | FS_DQ_RTBCOUNT)
+#define FS_DQ_BIGTIME (1 << 15)
+#define FS_QUOTA_UDQ_ACCT (1 << 0)
+#define FS_QUOTA_UDQ_ENFD (1 << 1)
+#define FS_QUOTA_GDQ_ACCT (1 << 2)
+#define FS_QUOTA_GDQ_ENFD (1 << 3)
+#define FS_QUOTA_PDQ_ACCT (1 << 4)
+#define FS_QUOTA_PDQ_ENFD (1 << 5)
+#define FS_USER_QUOTA (1 << 0)
+#define FS_PROJ_QUOTA (1 << 1)
+#define FS_GROUP_QUOTA (1 << 2)
+#define FS_QSTAT_VERSION 1
+typedef struct fs_qfilestat {
+  __u64 qfs_ino;
+  __u64 qfs_nblks;
+  __u32 qfs_nextents;
+} fs_qfilestat_t;
+typedef struct fs_quota_stat {
+  __s8 qs_version;
+  __u16 qs_flags;
+  __s8 qs_pad;
+  fs_qfilestat_t qs_uquota;
+  fs_qfilestat_t qs_gquota;
+  __u32 qs_incoredqs;
+  __s32 qs_btimelimit;
+  __s32 qs_itimelimit;
+  __s32 qs_rtbtimelimit;
+  __u16 qs_bwarnlimit;
+  __u16 qs_iwarnlimit;
+} fs_quota_stat_t;
+#define FS_QSTATV_VERSION1 1
+struct fs_qfilestatv {
+  __u64 qfs_ino;
+  __u64 qfs_nblks;
+  __u32 qfs_nextents;
+  __u32 qfs_pad;
+};
+struct fs_quota_statv {
+  __s8 qs_version;
+  __u8 qs_pad1;
+  __u16 qs_flags;
+  __u32 qs_incoredqs;
+  struct fs_qfilestatv qs_uquota;
+  struct fs_qfilestatv qs_gquota;
+  struct fs_qfilestatv qs_pquota;
+  __s32 qs_btimelimit;
+  __s32 qs_itimelimit;
+  __s32 qs_rtbtimelimit;
+  __u16 qs_bwarnlimit;
+  __u16 qs_iwarnlimit;
+  __u16 qs_rtbwarnlimit;
+  __u16 qs_pad3;
+  __u32 qs_pad4;
+  __u64 qs_pad2[7];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/dvb/audio.h b/i686-linux-musl/include/linux/dvb/audio.h
new file mode 100644
index 0000000..0a527c1
--- /dev/null
+++ b/i686-linux-musl/include/linux/dvb/audio.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _DVBAUDIO_H_
+#define _DVBAUDIO_H_
+#include <linux/types.h>
+typedef enum {
+  AUDIO_SOURCE_DEMUX,
+  AUDIO_SOURCE_MEMORY
+} audio_stream_source_t;
+typedef enum {
+  AUDIO_STOPPED,
+  AUDIO_PLAYING,
+  AUDIO_PAUSED
+} audio_play_state_t;
+typedef enum {
+  AUDIO_STEREO,
+  AUDIO_MONO_LEFT,
+  AUDIO_MONO_RIGHT,
+  AUDIO_MONO,
+  AUDIO_STEREO_SWAPPED
+} audio_channel_select_t;
+typedef struct audio_mixer {
+  unsigned int volume_left;
+  unsigned int volume_right;
+} audio_mixer_t;
+typedef struct audio_status {
+  int AV_sync_state;
+  int mute_state;
+  audio_play_state_t play_state;
+  audio_stream_source_t stream_source;
+  audio_channel_select_t channel_select;
+  int bypass_mode;
+  audio_mixer_t mixer_state;
+} audio_status_t;
+#define AUDIO_CAP_DTS 1
+#define AUDIO_CAP_LPCM 2
+#define AUDIO_CAP_MP1 4
+#define AUDIO_CAP_MP2 8
+#define AUDIO_CAP_MP3 16
+#define AUDIO_CAP_AAC 32
+#define AUDIO_CAP_OGG 64
+#define AUDIO_CAP_SDDS 128
+#define AUDIO_CAP_AC3 256
+#define AUDIO_STOP _IO('o', 1)
+#define AUDIO_PLAY _IO('o', 2)
+#define AUDIO_PAUSE _IO('o', 3)
+#define AUDIO_CONTINUE _IO('o', 4)
+#define AUDIO_SELECT_SOURCE _IO('o', 5)
+#define AUDIO_SET_MUTE _IO('o', 6)
+#define AUDIO_SET_AV_SYNC _IO('o', 7)
+#define AUDIO_SET_BYPASS_MODE _IO('o', 8)
+#define AUDIO_CHANNEL_SELECT _IO('o', 9)
+#define AUDIO_GET_STATUS _IOR('o', 10, audio_status_t)
+#define AUDIO_GET_CAPABILITIES _IOR('o', 11, unsigned int)
+#define AUDIO_CLEAR_BUFFER _IO('o', 12)
+#define AUDIO_SET_ID _IO('o', 13)
+#define AUDIO_SET_MIXER _IOW('o', 14, audio_mixer_t)
+#define AUDIO_SET_STREAMTYPE _IO('o', 15)
+#define AUDIO_BILINGUAL_CHANNEL_SELECT _IO('o', 20)
+#endif
diff --git a/i686-linux-musl/include/linux/dvb/ca.h b/i686-linux-musl/include/linux/dvb/ca.h
new file mode 100644
index 0000000..fa977c7
--- /dev/null
+++ b/i686-linux-musl/include/linux/dvb/ca.h
@@ -0,0 +1,69 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _DVBCA_H_
+#define _DVBCA_H_
+struct ca_slot_info {
+  int num;
+  int type;
+#define CA_CI 1
+#define CA_CI_LINK 2
+#define CA_CI_PHYS 4
+#define CA_DESCR 8
+#define CA_SC 128
+  unsigned int flags;
+#define CA_CI_MODULE_PRESENT 1
+#define CA_CI_MODULE_READY 2
+};
+struct ca_descr_info {
+  unsigned int num;
+  unsigned int type;
+#define CA_ECD 1
+#define CA_NDS 2
+#define CA_DSS 4
+};
+struct ca_caps {
+  unsigned int slot_num;
+  unsigned int slot_type;
+  unsigned int descr_num;
+  unsigned int descr_type;
+};
+struct ca_msg {
+  unsigned int index;
+  unsigned int type;
+  unsigned int length;
+  unsigned char msg[256];
+};
+struct ca_descr {
+  unsigned int index;
+  unsigned int parity;
+  unsigned char cw[8];
+};
+#define CA_RESET _IO('o', 128)
+#define CA_GET_CAP _IOR('o', 129, struct ca_caps)
+#define CA_GET_SLOT_INFO _IOR('o', 130, struct ca_slot_info)
+#define CA_GET_DESCR_INFO _IOR('o', 131, struct ca_descr_info)
+#define CA_GET_MSG _IOR('o', 132, struct ca_msg)
+#define CA_SEND_MSG _IOW('o', 133, struct ca_msg)
+#define CA_SET_DESCR _IOW('o', 134, struct ca_descr)
+typedef struct ca_slot_info ca_slot_info_t;
+typedef struct ca_descr_info ca_descr_info_t;
+typedef struct ca_caps ca_caps_t;
+typedef struct ca_msg ca_msg_t;
+typedef struct ca_descr ca_descr_t;
+#endif
diff --git a/i686-linux-musl/include/linux/dvb/dmx.h b/i686-linux-musl/include/linux/dvb/dmx.h
new file mode 100644
index 0000000..e142e57
--- /dev/null
+++ b/i686-linux-musl/include/linux/dvb/dmx.h
@@ -0,0 +1,130 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_DVBDMX_H_
+#define _UAPI_DVBDMX_H_
+#include <linux/types.h>
+#include <time.h>
+#define DMX_FILTER_SIZE 16
+enum dmx_output {
+  DMX_OUT_DECODER,
+  DMX_OUT_TAP,
+  DMX_OUT_TS_TAP,
+  DMX_OUT_TSDEMUX_TAP
+};
+enum dmx_input {
+  DMX_IN_FRONTEND,
+  DMX_IN_DVR
+};
+enum dmx_ts_pes {
+  DMX_PES_AUDIO0,
+  DMX_PES_VIDEO0,
+  DMX_PES_TELETEXT0,
+  DMX_PES_SUBTITLE0,
+  DMX_PES_PCR0,
+  DMX_PES_AUDIO1,
+  DMX_PES_VIDEO1,
+  DMX_PES_TELETEXT1,
+  DMX_PES_SUBTITLE1,
+  DMX_PES_PCR1,
+  DMX_PES_AUDIO2,
+  DMX_PES_VIDEO2,
+  DMX_PES_TELETEXT2,
+  DMX_PES_SUBTITLE2,
+  DMX_PES_PCR2,
+  DMX_PES_AUDIO3,
+  DMX_PES_VIDEO3,
+  DMX_PES_TELETEXT3,
+  DMX_PES_SUBTITLE3,
+  DMX_PES_PCR3,
+  DMX_PES_OTHER
+};
+#define DMX_PES_AUDIO DMX_PES_AUDIO0
+#define DMX_PES_VIDEO DMX_PES_VIDEO0
+#define DMX_PES_TELETEXT DMX_PES_TELETEXT0
+#define DMX_PES_SUBTITLE DMX_PES_SUBTITLE0
+#define DMX_PES_PCR DMX_PES_PCR0
+struct dmx_filter {
+  __u8 filter[DMX_FILTER_SIZE];
+  __u8 mask[DMX_FILTER_SIZE];
+  __u8 mode[DMX_FILTER_SIZE];
+};
+struct dmx_sct_filter_params {
+  __u16 pid;
+  struct dmx_filter filter;
+  __u32 timeout;
+  __u32 flags;
+#define DMX_CHECK_CRC 1
+#define DMX_ONESHOT 2
+#define DMX_IMMEDIATE_START 4
+};
+struct dmx_pes_filter_params {
+  __u16 pid;
+  enum dmx_input input;
+  enum dmx_output output;
+  enum dmx_ts_pes pes_type;
+  __u32 flags;
+};
+struct dmx_stc {
+  unsigned int num;
+  unsigned int base;
+  __u64 stc;
+};
+enum dmx_buffer_flags {
+  DMX_BUFFER_FLAG_HAD_CRC32_DISCARD = 1 << 0,
+  DMX_BUFFER_FLAG_TEI = 1 << 1,
+  DMX_BUFFER_PKT_COUNTER_MISMATCH = 1 << 2,
+  DMX_BUFFER_FLAG_DISCONTINUITY_DETECTED = 1 << 3,
+  DMX_BUFFER_FLAG_DISCONTINUITY_INDICATOR = 1 << 4,
+};
+struct dmx_buffer {
+  __u32 index;
+  __u32 bytesused;
+  __u32 offset;
+  __u32 length;
+  __u32 flags;
+  __u32 count;
+};
+struct dmx_requestbuffers {
+  __u32 count;
+  __u32 size;
+};
+struct dmx_exportbuffer {
+  __u32 index;
+  __u32 flags;
+  __s32 fd;
+};
+#define DMX_START _IO('o', 41)
+#define DMX_STOP _IO('o', 42)
+#define DMX_SET_FILTER _IOW('o', 43, struct dmx_sct_filter_params)
+#define DMX_SET_PES_FILTER _IOW('o', 44, struct dmx_pes_filter_params)
+#define DMX_SET_BUFFER_SIZE _IO('o', 45)
+#define DMX_GET_PES_PIDS _IOR('o', 47, __u16[5])
+#define DMX_GET_STC _IOWR('o', 50, struct dmx_stc)
+#define DMX_ADD_PID _IOW('o', 51, __u16)
+#define DMX_REMOVE_PID _IOW('o', 52, __u16)
+typedef enum dmx_output dmx_output_t;
+typedef enum dmx_input dmx_input_t;
+typedef enum dmx_ts_pes dmx_pes_type_t;
+typedef struct dmx_filter dmx_filter_t;
+#define DMX_REQBUFS _IOWR('o', 60, struct dmx_requestbuffers)
+#define DMX_QUERYBUF _IOWR('o', 61, struct dmx_buffer)
+#define DMX_EXPBUF _IOWR('o', 62, struct dmx_exportbuffer)
+#define DMX_QBUF _IOWR('o', 63, struct dmx_buffer)
+#define DMX_DQBUF _IOWR('o', 64, struct dmx_buffer)
+#endif
diff --git a/i686-linux-musl/include/linux/dvb/frontend.h b/i686-linux-musl/include/linux/dvb/frontend.h
new file mode 100644
index 0000000..d060138
--- /dev/null
+++ b/i686-linux-musl/include/linux/dvb/frontend.h
@@ -0,0 +1,432 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _DVBFRONTEND_H_
+#define _DVBFRONTEND_H_
+#include <linux/types.h>
+enum fe_caps {
+  FE_IS_STUPID = 0,
+  FE_CAN_INVERSION_AUTO = 0x1,
+  FE_CAN_FEC_1_2 = 0x2,
+  FE_CAN_FEC_2_3 = 0x4,
+  FE_CAN_FEC_3_4 = 0x8,
+  FE_CAN_FEC_4_5 = 0x10,
+  FE_CAN_FEC_5_6 = 0x20,
+  FE_CAN_FEC_6_7 = 0x40,
+  FE_CAN_FEC_7_8 = 0x80,
+  FE_CAN_FEC_8_9 = 0x100,
+  FE_CAN_FEC_AUTO = 0x200,
+  FE_CAN_QPSK = 0x400,
+  FE_CAN_QAM_16 = 0x800,
+  FE_CAN_QAM_32 = 0x1000,
+  FE_CAN_QAM_64 = 0x2000,
+  FE_CAN_QAM_128 = 0x4000,
+  FE_CAN_QAM_256 = 0x8000,
+  FE_CAN_QAM_AUTO = 0x10000,
+  FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000,
+  FE_CAN_BANDWIDTH_AUTO = 0x40000,
+  FE_CAN_GUARD_INTERVAL_AUTO = 0x80000,
+  FE_CAN_HIERARCHY_AUTO = 0x100000,
+  FE_CAN_8VSB = 0x200000,
+  FE_CAN_16VSB = 0x400000,
+  FE_HAS_EXTENDED_CAPS = 0x800000,
+  FE_CAN_MULTISTREAM = 0x4000000,
+  FE_CAN_TURBO_FEC = 0x8000000,
+  FE_CAN_2G_MODULATION = 0x10000000,
+  FE_NEEDS_BENDING = 0x20000000,
+  FE_CAN_RECOVER = 0x40000000,
+  FE_CAN_MUTE_TS = 0x80000000
+};
+enum fe_type {
+  FE_QPSK,
+  FE_QAM,
+  FE_OFDM,
+  FE_ATSC
+};
+struct dvb_frontend_info {
+  char name[128];
+  enum fe_type type;
+  __u32 frequency_min;
+  __u32 frequency_max;
+  __u32 frequency_stepsize;
+  __u32 frequency_tolerance;
+  __u32 symbol_rate_min;
+  __u32 symbol_rate_max;
+  __u32 symbol_rate_tolerance;
+  __u32 notifier_delay;
+  enum fe_caps caps;
+};
+struct dvb_diseqc_master_cmd {
+  __u8 msg[6];
+  __u8 msg_len;
+};
+struct dvb_diseqc_slave_reply {
+  __u8 msg[4];
+  __u8 msg_len;
+  int timeout;
+};
+enum fe_sec_voltage {
+  SEC_VOLTAGE_13,
+  SEC_VOLTAGE_18,
+  SEC_VOLTAGE_OFF
+};
+enum fe_sec_tone_mode {
+  SEC_TONE_ON,
+  SEC_TONE_OFF
+};
+enum fe_sec_mini_cmd {
+  SEC_MINI_A,
+  SEC_MINI_B
+};
+enum fe_status {
+  FE_NONE = 0x00,
+  FE_HAS_SIGNAL = 0x01,
+  FE_HAS_CARRIER = 0x02,
+  FE_HAS_VITERBI = 0x04,
+  FE_HAS_SYNC = 0x08,
+  FE_HAS_LOCK = 0x10,
+  FE_TIMEDOUT = 0x20,
+  FE_REINIT = 0x40,
+};
+enum fe_spectral_inversion {
+  INVERSION_OFF,
+  INVERSION_ON,
+  INVERSION_AUTO
+};
+enum fe_code_rate {
+  FEC_NONE = 0,
+  FEC_1_2,
+  FEC_2_3,
+  FEC_3_4,
+  FEC_4_5,
+  FEC_5_6,
+  FEC_6_7,
+  FEC_7_8,
+  FEC_8_9,
+  FEC_AUTO,
+  FEC_3_5,
+  FEC_9_10,
+  FEC_2_5,
+};
+enum fe_modulation {
+  QPSK,
+  QAM_16,
+  QAM_32,
+  QAM_64,
+  QAM_128,
+  QAM_256,
+  QAM_AUTO,
+  VSB_8,
+  VSB_16,
+  PSK_8,
+  APSK_16,
+  APSK_32,
+  DQPSK,
+  QAM_4_NR,
+};
+enum fe_transmit_mode {
+  TRANSMISSION_MODE_2K,
+  TRANSMISSION_MODE_8K,
+  TRANSMISSION_MODE_AUTO,
+  TRANSMISSION_MODE_4K,
+  TRANSMISSION_MODE_1K,
+  TRANSMISSION_MODE_16K,
+  TRANSMISSION_MODE_32K,
+  TRANSMISSION_MODE_C1,
+  TRANSMISSION_MODE_C3780,
+};
+enum fe_guard_interval {
+  GUARD_INTERVAL_1_32,
+  GUARD_INTERVAL_1_16,
+  GUARD_INTERVAL_1_8,
+  GUARD_INTERVAL_1_4,
+  GUARD_INTERVAL_AUTO,
+  GUARD_INTERVAL_1_128,
+  GUARD_INTERVAL_19_128,
+  GUARD_INTERVAL_19_256,
+  GUARD_INTERVAL_PN420,
+  GUARD_INTERVAL_PN595,
+  GUARD_INTERVAL_PN945,
+};
+enum fe_hierarchy {
+  HIERARCHY_NONE,
+  HIERARCHY_1,
+  HIERARCHY_2,
+  HIERARCHY_4,
+  HIERARCHY_AUTO
+};
+enum fe_interleaving {
+  INTERLEAVING_NONE,
+  INTERLEAVING_AUTO,
+  INTERLEAVING_240,
+  INTERLEAVING_720,
+};
+#define DTV_UNDEFINED 0
+#define DTV_TUNE 1
+#define DTV_CLEAR 2
+#define DTV_FREQUENCY 3
+#define DTV_MODULATION 4
+#define DTV_BANDWIDTH_HZ 5
+#define DTV_INVERSION 6
+#define DTV_DISEQC_MASTER 7
+#define DTV_SYMBOL_RATE 8
+#define DTV_INNER_FEC 9
+#define DTV_VOLTAGE 10
+#define DTV_TONE 11
+#define DTV_PILOT 12
+#define DTV_ROLLOFF 13
+#define DTV_DISEQC_SLAVE_REPLY 14
+#define DTV_FE_CAPABILITY_COUNT 15
+#define DTV_FE_CAPABILITY 16
+#define DTV_DELIVERY_SYSTEM 17
+#define DTV_ISDBT_PARTIAL_RECEPTION 18
+#define DTV_ISDBT_SOUND_BROADCASTING 19
+#define DTV_ISDBT_SB_SUBCHANNEL_ID 20
+#define DTV_ISDBT_SB_SEGMENT_IDX 21
+#define DTV_ISDBT_SB_SEGMENT_COUNT 22
+#define DTV_ISDBT_LAYERA_FEC 23
+#define DTV_ISDBT_LAYERA_MODULATION 24
+#define DTV_ISDBT_LAYERA_SEGMENT_COUNT 25
+#define DTV_ISDBT_LAYERA_TIME_INTERLEAVING 26
+#define DTV_ISDBT_LAYERB_FEC 27
+#define DTV_ISDBT_LAYERB_MODULATION 28
+#define DTV_ISDBT_LAYERB_SEGMENT_COUNT 29
+#define DTV_ISDBT_LAYERB_TIME_INTERLEAVING 30
+#define DTV_ISDBT_LAYERC_FEC 31
+#define DTV_ISDBT_LAYERC_MODULATION 32
+#define DTV_ISDBT_LAYERC_SEGMENT_COUNT 33
+#define DTV_ISDBT_LAYERC_TIME_INTERLEAVING 34
+#define DTV_API_VERSION 35
+#define DTV_CODE_RATE_HP 36
+#define DTV_CODE_RATE_LP 37
+#define DTV_GUARD_INTERVAL 38
+#define DTV_TRANSMISSION_MODE 39
+#define DTV_HIERARCHY 40
+#define DTV_ISDBT_LAYER_ENABLED 41
+#define DTV_STREAM_ID 42
+#define DTV_ISDBS_TS_ID_LEGACY DTV_STREAM_ID
+#define DTV_DVBT2_PLP_ID_LEGACY 43
+#define DTV_ENUM_DELSYS 44
+#define DTV_ATSCMH_FIC_VER 45
+#define DTV_ATSCMH_PARADE_ID 46
+#define DTV_ATSCMH_NOG 47
+#define DTV_ATSCMH_TNOG 48
+#define DTV_ATSCMH_SGN 49
+#define DTV_ATSCMH_PRC 50
+#define DTV_ATSCMH_RS_FRAME_MODE 51
+#define DTV_ATSCMH_RS_FRAME_ENSEMBLE 52
+#define DTV_ATSCMH_RS_CODE_MODE_PRI 53
+#define DTV_ATSCMH_RS_CODE_MODE_SEC 54
+#define DTV_ATSCMH_SCCC_BLOCK_MODE 55
+#define DTV_ATSCMH_SCCC_CODE_MODE_A 56
+#define DTV_ATSCMH_SCCC_CODE_MODE_B 57
+#define DTV_ATSCMH_SCCC_CODE_MODE_C 58
+#define DTV_ATSCMH_SCCC_CODE_MODE_D 59
+#define DTV_INTERLEAVING 60
+#define DTV_LNA 61
+#define DTV_STAT_SIGNAL_STRENGTH 62
+#define DTV_STAT_CNR 63
+#define DTV_STAT_PRE_ERROR_BIT_COUNT 64
+#define DTV_STAT_PRE_TOTAL_BIT_COUNT 65
+#define DTV_STAT_POST_ERROR_BIT_COUNT 66
+#define DTV_STAT_POST_TOTAL_BIT_COUNT 67
+#define DTV_STAT_ERROR_BLOCK_COUNT 68
+#define DTV_STAT_TOTAL_BLOCK_COUNT 69
+#define DTV_SCRAMBLING_SEQUENCE_INDEX 70
+#define DTV_MAX_COMMAND DTV_SCRAMBLING_SEQUENCE_INDEX
+enum fe_pilot {
+  PILOT_ON,
+  PILOT_OFF,
+  PILOT_AUTO,
+};
+enum fe_rolloff {
+  ROLLOFF_35,
+  ROLLOFF_20,
+  ROLLOFF_25,
+  ROLLOFF_AUTO,
+};
+enum fe_delivery_system {
+  SYS_UNDEFINED,
+  SYS_DVBC_ANNEX_A,
+  SYS_DVBC_ANNEX_B,
+  SYS_DVBT,
+  SYS_DSS,
+  SYS_DVBS,
+  SYS_DVBS2,
+  SYS_DVBH,
+  SYS_ISDBT,
+  SYS_ISDBS,
+  SYS_ISDBC,
+  SYS_ATSC,
+  SYS_ATSCMH,
+  SYS_DTMB,
+  SYS_CMMB,
+  SYS_DAB,
+  SYS_DVBT2,
+  SYS_TURBO,
+  SYS_DVBC_ANNEX_C,
+};
+#define SYS_DVBC_ANNEX_AC SYS_DVBC_ANNEX_A
+#define SYS_DMBTH SYS_DTMB
+enum atscmh_sccc_block_mode {
+  ATSCMH_SCCC_BLK_SEP = 0,
+  ATSCMH_SCCC_BLK_COMB = 1,
+  ATSCMH_SCCC_BLK_RES = 2,
+};
+enum atscmh_sccc_code_mode {
+  ATSCMH_SCCC_CODE_HLF = 0,
+  ATSCMH_SCCC_CODE_QTR = 1,
+  ATSCMH_SCCC_CODE_RES = 2,
+};
+enum atscmh_rs_frame_ensemble {
+  ATSCMH_RSFRAME_ENS_PRI = 0,
+  ATSCMH_RSFRAME_ENS_SEC = 1,
+};
+enum atscmh_rs_frame_mode {
+  ATSCMH_RSFRAME_PRI_ONLY = 0,
+  ATSCMH_RSFRAME_PRI_SEC = 1,
+  ATSCMH_RSFRAME_RES = 2,
+};
+enum atscmh_rs_code_mode {
+  ATSCMH_RSCODE_211_187 = 0,
+  ATSCMH_RSCODE_223_187 = 1,
+  ATSCMH_RSCODE_235_187 = 2,
+  ATSCMH_RSCODE_RES = 3,
+};
+#define NO_STREAM_ID_FILTER (~0U)
+#define LNA_AUTO (~0U)
+enum fecap_scale_params {
+  FE_SCALE_NOT_AVAILABLE = 0,
+  FE_SCALE_DECIBEL,
+  FE_SCALE_RELATIVE,
+  FE_SCALE_COUNTER
+};
+struct dtv_stats {
+  __u8 scale;
+  union {
+    __u64 uvalue;
+    __s64 svalue;
+  };
+} __attribute__((packed));
+#define MAX_DTV_STATS 4
+struct dtv_fe_stats {
+  __u8 len;
+  struct dtv_stats stat[MAX_DTV_STATS];
+} __attribute__((packed));
+struct dtv_property {
+  __u32 cmd;
+  __u32 reserved[3];
+  union {
+    __u32 data;
+    struct dtv_fe_stats st;
+    struct {
+      __u8 data[32];
+      __u32 len;
+      __u32 reserved1[3];
+      void * reserved2;
+    } buffer;
+  } u;
+  int result;
+} __attribute__((packed));
+#define DTV_IOCTL_MAX_MSGS 64
+struct dtv_properties {
+  __u32 num;
+  struct dtv_property * props;
+};
+#define FE_TUNE_MODE_ONESHOT 0x01
+#define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info)
+#define FE_DISEQC_RESET_OVERLOAD _IO('o', 62)
+#define FE_DISEQC_SEND_MASTER_CMD _IOW('o', 63, struct dvb_diseqc_master_cmd)
+#define FE_DISEQC_RECV_SLAVE_REPLY _IOR('o', 64, struct dvb_diseqc_slave_reply)
+#define FE_DISEQC_SEND_BURST _IO('o', 65)
+#define FE_SET_TONE _IO('o', 66)
+#define FE_SET_VOLTAGE _IO('o', 67)
+#define FE_ENABLE_HIGH_LNB_VOLTAGE _IO('o', 68)
+#define FE_READ_STATUS _IOR('o', 69, fe_status_t)
+#define FE_READ_BER _IOR('o', 70, __u32)
+#define FE_READ_SIGNAL_STRENGTH _IOR('o', 71, __u16)
+#define FE_READ_SNR _IOR('o', 72, __u16)
+#define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, __u32)
+#define FE_SET_FRONTEND_TUNE_MODE _IO('o', 81)
+#define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event)
+#define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80)
+#define FE_SET_PROPERTY _IOW('o', 82, struct dtv_properties)
+#define FE_GET_PROPERTY _IOR('o', 83, struct dtv_properties)
+enum fe_bandwidth {
+  BANDWIDTH_8_MHZ,
+  BANDWIDTH_7_MHZ,
+  BANDWIDTH_6_MHZ,
+  BANDWIDTH_AUTO,
+  BANDWIDTH_5_MHZ,
+  BANDWIDTH_10_MHZ,
+  BANDWIDTH_1_712_MHZ,
+};
+typedef enum fe_sec_voltage fe_sec_voltage_t;
+typedef enum fe_caps fe_caps_t;
+typedef enum fe_type fe_type_t;
+typedef enum fe_sec_tone_mode fe_sec_tone_mode_t;
+typedef enum fe_sec_mini_cmd fe_sec_mini_cmd_t;
+typedef enum fe_status fe_status_t;
+typedef enum fe_spectral_inversion fe_spectral_inversion_t;
+typedef enum fe_code_rate fe_code_rate_t;
+typedef enum fe_modulation fe_modulation_t;
+typedef enum fe_transmit_mode fe_transmit_mode_t;
+typedef enum fe_bandwidth fe_bandwidth_t;
+typedef enum fe_guard_interval fe_guard_interval_t;
+typedef enum fe_hierarchy fe_hierarchy_t;
+typedef enum fe_pilot fe_pilot_t;
+typedef enum fe_rolloff fe_rolloff_t;
+typedef enum fe_delivery_system fe_delivery_system_t;
+struct dvb_qpsk_parameters {
+  __u32 symbol_rate;
+  fe_code_rate_t fec_inner;
+};
+struct dvb_qam_parameters {
+  __u32 symbol_rate;
+  fe_code_rate_t fec_inner;
+  fe_modulation_t modulation;
+};
+struct dvb_vsb_parameters {
+  fe_modulation_t modulation;
+};
+struct dvb_ofdm_parameters {
+  fe_bandwidth_t bandwidth;
+  fe_code_rate_t code_rate_HP;
+  fe_code_rate_t code_rate_LP;
+  fe_modulation_t constellation;
+  fe_transmit_mode_t transmission_mode;
+  fe_guard_interval_t guard_interval;
+  fe_hierarchy_t hierarchy_information;
+};
+struct dvb_frontend_parameters {
+  __u32 frequency;
+  fe_spectral_inversion_t inversion;
+  union {
+    struct dvb_qpsk_parameters qpsk;
+    struct dvb_qam_parameters qam;
+    struct dvb_ofdm_parameters ofdm;
+    struct dvb_vsb_parameters vsb;
+  } u;
+};
+struct dvb_frontend_event {
+  fe_status_t status;
+  struct dvb_frontend_parameters parameters;
+};
+#define FE_SET_FRONTEND _IOW('o', 76, struct dvb_frontend_parameters)
+#define FE_GET_FRONTEND _IOR('o', 77, struct dvb_frontend_parameters)
+#endif
diff --git a/i686-linux-musl/include/linux/dvb/net.h b/i686-linux-musl/include/linux/dvb/net.h
new file mode 100644
index 0000000..4809e64
--- /dev/null
+++ b/i686-linux-musl/include/linux/dvb/net.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _DVBNET_H_
+#define _DVBNET_H_
+#include <linux/types.h>
+struct dvb_net_if {
+  __u16 pid;
+  __u16 if_num;
+  __u8 feedtype;
+#define DVB_NET_FEEDTYPE_MPE 0
+#define DVB_NET_FEEDTYPE_ULE 1
+};
+#define NET_ADD_IF _IOWR('o', 52, struct dvb_net_if)
+#define NET_REMOVE_IF _IO('o', 53)
+#define NET_GET_IF _IOWR('o', 54, struct dvb_net_if)
+struct __dvb_net_if_old {
+  __u16 pid;
+  __u16 if_num;
+};
+#define __NET_ADD_IF_OLD _IOWR('o', 52, struct __dvb_net_if_old)
+#define __NET_GET_IF_OLD _IOWR('o', 54, struct __dvb_net_if_old)
+#endif
diff --git a/i686-linux-musl/include/linux/dvb/osd.h b/i686-linux-musl/include/linux/dvb/osd.h
new file mode 100644
index 0000000..84b268b
--- /dev/null
+++ b/i686-linux-musl/include/linux/dvb/osd.h
@@ -0,0 +1,84 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _DVBOSD_H_
+#define _DVBOSD_H_
+#include <linux/compiler.h>
+typedef enum {
+  OSD_Close = 1,
+  OSD_Open,
+  OSD_Show,
+  OSD_Hide,
+  OSD_Clear,
+  OSD_Fill,
+  OSD_SetColor,
+  OSD_SetPalette,
+  OSD_SetTrans,
+  OSD_SetPixel,
+  OSD_GetPixel,
+  OSD_SetRow,
+  OSD_SetBlock,
+  OSD_FillRow,
+  OSD_FillBlock,
+  OSD_Line,
+  OSD_Query,
+  OSD_Test,
+  OSD_Text,
+  OSD_SetWindow,
+  OSD_MoveWindow,
+  OSD_OpenRaw,
+} OSD_Command;
+typedef struct osd_cmd_s {
+  OSD_Command cmd;
+  int x0;
+  int y0;
+  int x1;
+  int y1;
+  int color;
+  void __user * data;
+} osd_cmd_t;
+typedef enum {
+  OSD_BITMAP1,
+  OSD_BITMAP2,
+  OSD_BITMAP4,
+  OSD_BITMAP8,
+  OSD_BITMAP1HR,
+  OSD_BITMAP2HR,
+  OSD_BITMAP4HR,
+  OSD_BITMAP8HR,
+  OSD_YCRCB422,
+  OSD_YCRCB444,
+  OSD_YCRCB444HR,
+  OSD_VIDEOTSIZE,
+  OSD_VIDEOHSIZE,
+  OSD_VIDEOQSIZE,
+  OSD_VIDEODSIZE,
+  OSD_VIDEOTHSIZE,
+  OSD_VIDEOTQSIZE,
+  OSD_VIDEOTDSIZE,
+  OSD_VIDEONSIZE,
+  OSD_CURSOR
+} osd_raw_window_t;
+typedef struct osd_cap_s {
+  int cmd;
+#define OSD_CAP_MEMSIZE 1
+  long val;
+} osd_cap_t;
+#define OSD_SEND_CMD _IOW('o', 160, osd_cmd_t)
+#define OSD_GET_CAPABILITY _IOR('o', 161, osd_cap_t)
+#endif
diff --git a/i686-linux-musl/include/linux/dvb/version.h b/i686-linux-musl/include/linux/dvb/version.h
new file mode 100644
index 0000000..47c8c74
--- /dev/null
+++ b/i686-linux-musl/include/linux/dvb/version.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _DVBVERSION_H_
+#define _DVBVERSION_H_
+#define DVB_API_VERSION 5
+#define DVB_API_VERSION_MINOR 11
+#endif
diff --git a/i686-linux-musl/include/linux/dvb/video.h b/i686-linux-musl/include/linux/dvb/video.h
new file mode 100644
index 0000000..6577e1f
--- /dev/null
+++ b/i686-linux-musl/include/linux/dvb/video.h
@@ -0,0 +1,129 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_DVBVIDEO_H_
+#define _UAPI_DVBVIDEO_H_
+#include <linux/types.h>
+#include <time.h>
+typedef enum {
+  VIDEO_FORMAT_4_3,
+  VIDEO_FORMAT_16_9,
+  VIDEO_FORMAT_221_1
+} video_format_t;
+typedef enum {
+  VIDEO_PAN_SCAN,
+  VIDEO_LETTER_BOX,
+  VIDEO_CENTER_CUT_OUT
+} video_displayformat_t;
+typedef struct {
+  int w;
+  int h;
+  video_format_t aspect_ratio;
+} video_size_t;
+typedef enum {
+  VIDEO_SOURCE_DEMUX,
+  VIDEO_SOURCE_MEMORY
+} video_stream_source_t;
+typedef enum {
+  VIDEO_STOPPED,
+  VIDEO_PLAYING,
+  VIDEO_FREEZED
+} video_play_state_t;
+#define VIDEO_CMD_PLAY (0)
+#define VIDEO_CMD_STOP (1)
+#define VIDEO_CMD_FREEZE (2)
+#define VIDEO_CMD_CONTINUE (3)
+#define VIDEO_CMD_FREEZE_TO_BLACK (1 << 0)
+#define VIDEO_CMD_STOP_TO_BLACK (1 << 0)
+#define VIDEO_CMD_STOP_IMMEDIATELY (1 << 1)
+#define VIDEO_PLAY_FMT_NONE (0)
+#define VIDEO_PLAY_FMT_GOP (1)
+struct video_command {
+  __u32 cmd;
+  __u32 flags;
+  union {
+    struct {
+      __u64 pts;
+    } stop;
+    struct {
+      __s32 speed;
+      __u32 format;
+    } play;
+    struct {
+      __u32 data[16];
+    } raw;
+  };
+};
+#define VIDEO_VSYNC_FIELD_UNKNOWN (0)
+#define VIDEO_VSYNC_FIELD_ODD (1)
+#define VIDEO_VSYNC_FIELD_EVEN (2)
+#define VIDEO_VSYNC_FIELD_PROGRESSIVE (3)
+struct video_event {
+  __s32 type;
+#define VIDEO_EVENT_SIZE_CHANGED 1
+#define VIDEO_EVENT_FRAME_RATE_CHANGED 2
+#define VIDEO_EVENT_DECODER_STOPPED 3
+#define VIDEO_EVENT_VSYNC 4
+  long timestamp;
+  union {
+    video_size_t size;
+    unsigned int frame_rate;
+    unsigned char vsync_field;
+  } u;
+};
+struct video_status {
+  int video_blank;
+  video_play_state_t play_state;
+  video_stream_source_t stream_source;
+  video_format_t video_format;
+  video_displayformat_t display_format;
+};
+struct video_still_picture {
+  char __user * iFrame;
+  __s32 size;
+};
+typedef __u16 video_attributes_t;
+#define VIDEO_CAP_MPEG1 1
+#define VIDEO_CAP_MPEG2 2
+#define VIDEO_CAP_SYS 4
+#define VIDEO_CAP_PROG 8
+#define VIDEO_CAP_SPU 16
+#define VIDEO_CAP_NAVI 32
+#define VIDEO_CAP_CSS 64
+#define VIDEO_STOP _IO('o', 21)
+#define VIDEO_PLAY _IO('o', 22)
+#define VIDEO_FREEZE _IO('o', 23)
+#define VIDEO_CONTINUE _IO('o', 24)
+#define VIDEO_SELECT_SOURCE _IO('o', 25)
+#define VIDEO_SET_BLANK _IO('o', 26)
+#define VIDEO_GET_STATUS _IOR('o', 27, struct video_status)
+#define VIDEO_GET_EVENT _IOR('o', 28, struct video_event)
+#define VIDEO_SET_DISPLAY_FORMAT _IO('o', 29)
+#define VIDEO_STILLPICTURE _IOW('o', 30, struct video_still_picture)
+#define VIDEO_FAST_FORWARD _IO('o', 31)
+#define VIDEO_SLOWMOTION _IO('o', 32)
+#define VIDEO_GET_CAPABILITIES _IOR('o', 33, unsigned int)
+#define VIDEO_CLEAR_BUFFER _IO('o', 34)
+#define VIDEO_SET_STREAMTYPE _IO('o', 36)
+#define VIDEO_SET_FORMAT _IO('o', 37)
+#define VIDEO_GET_SIZE _IOR('o', 55, video_size_t)
+#define VIDEO_GET_PTS _IOR('o', 57, __u64)
+#define VIDEO_GET_FRAME_COUNT _IOR('o', 58, __u64)
+#define VIDEO_COMMAND _IOWR('o', 59, struct video_command)
+#define VIDEO_TRY_COMMAND _IOWR('o', 60, struct video_command)
+#endif
diff --git a/i686-linux-musl/include/linux/edd.h b/i686-linux-musl/include/linux/edd.h
new file mode 100644
index 0000000..cc6e973
--- /dev/null
+++ b/i686-linux-musl/include/linux/edd.h
@@ -0,0 +1,165 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_EDD_H
+#define _UAPI_LINUX_EDD_H
+#include <linux/types.h>
+#define EDDNR 0x1e9
+#define EDDBUF 0xd00
+#define EDDMAXNR 6
+#define EDDEXTSIZE 8
+#define EDDPARMSIZE 74
+#define CHECKEXTENSIONSPRESENT 0x41
+#define GETDEVICEPARAMETERS 0x48
+#define LEGACYGETDEVICEPARAMETERS 0x08
+#define EDDMAGIC1 0x55AA
+#define EDDMAGIC2 0xAA55
+#define READ_SECTORS 0x02
+#define EDD_MBR_SIG_OFFSET 0x1B8
+#define EDD_MBR_SIG_BUF 0x290
+#define EDD_MBR_SIG_MAX 16
+#define EDD_MBR_SIG_NR_BUF 0x1ea
+#ifndef __ASSEMBLY__
+#define EDD_EXT_FIXED_DISK_ACCESS (1 << 0)
+#define EDD_EXT_DEVICE_LOCKING_AND_EJECTING (1 << 1)
+#define EDD_EXT_ENHANCED_DISK_DRIVE_SUPPORT (1 << 2)
+#define EDD_EXT_64BIT_EXTENSIONS (1 << 3)
+#define EDD_INFO_DMA_BOUNDARY_ERROR_TRANSPARENT (1 << 0)
+#define EDD_INFO_GEOMETRY_VALID (1 << 1)
+#define EDD_INFO_REMOVABLE (1 << 2)
+#define EDD_INFO_WRITE_VERIFY (1 << 3)
+#define EDD_INFO_MEDIA_CHANGE_NOTIFICATION (1 << 4)
+#define EDD_INFO_LOCKABLE (1 << 5)
+#define EDD_INFO_NO_MEDIA_PRESENT (1 << 6)
+#define EDD_INFO_USE_INT13_FN50 (1 << 7)
+struct edd_device_params {
+  __u16 length;
+  __u16 info_flags;
+  __u32 num_default_cylinders;
+  __u32 num_default_heads;
+  __u32 sectors_per_track;
+  __u64 number_of_sectors;
+  __u16 bytes_per_sector;
+  __u32 dpte_ptr;
+  __u16 key;
+  __u8 device_path_info_length;
+  __u8 reserved2;
+  __u16 reserved3;
+  __u8 host_bus_type[4];
+  __u8 interface_type[8];
+  union {
+    struct {
+      __u16 base_address;
+      __u16 reserved1;
+      __u32 reserved2;
+    } __attribute__((packed)) isa;
+    struct {
+      __u8 bus;
+      __u8 slot;
+      __u8 function;
+      __u8 channel;
+      __u32 reserved;
+    } __attribute__((packed)) pci;
+    struct {
+      __u64 reserved;
+    } __attribute__((packed)) ibnd;
+    struct {
+      __u64 reserved;
+    } __attribute__((packed)) xprs;
+    struct {
+      __u64 reserved;
+    } __attribute__((packed)) htpt;
+    struct {
+      __u64 reserved;
+    } __attribute__((packed)) unknown;
+  } interface_path;
+  union {
+    struct {
+      __u8 device;
+      __u8 reserved1;
+      __u16 reserved2;
+      __u32 reserved3;
+      __u64 reserved4;
+    } __attribute__((packed)) ata;
+    struct {
+      __u8 device;
+      __u8 lun;
+      __u8 reserved1;
+      __u8 reserved2;
+      __u32 reserved3;
+      __u64 reserved4;
+    } __attribute__((packed)) atapi;
+    struct {
+      __u16 id;
+      __u64 lun;
+      __u16 reserved1;
+      __u32 reserved2;
+    } __attribute__((packed)) scsi;
+    struct {
+      __u64 serial_number;
+      __u64 reserved;
+    } __attribute__((packed)) usb;
+    struct {
+      __u64 eui;
+      __u64 reserved;
+    } __attribute__((packed)) i1394;
+    struct {
+      __u64 wwid;
+      __u64 lun;
+    } __attribute__((packed)) fibre;
+    struct {
+      __u64 identity_tag;
+      __u64 reserved;
+    } __attribute__((packed)) i2o;
+    struct {
+      __u32 array_number;
+      __u32 reserved1;
+      __u64 reserved2;
+    } __attribute__((packed)) raid;
+    struct {
+      __u8 device;
+      __u8 reserved1;
+      __u16 reserved2;
+      __u32 reserved3;
+      __u64 reserved4;
+    } __attribute__((packed)) sata;
+    struct {
+      __u64 reserved1;
+      __u64 reserved2;
+    } __attribute__((packed)) unknown;
+  } device_path;
+  __u8 reserved4;
+  __u8 checksum;
+} __attribute__((packed));
+struct edd_info {
+  __u8 device;
+  __u8 version;
+  __u16 interface_support;
+  __u16 legacy_max_cylinder;
+  __u8 legacy_max_head;
+  __u8 legacy_sectors_per_track;
+  struct edd_device_params params;
+} __attribute__((packed));
+struct edd {
+  unsigned int mbr_signature[EDD_MBR_SIG_MAX];
+  struct edd_info edd_info[EDDMAXNR];
+  unsigned char mbr_signature_nr;
+  unsigned char edd_info_nr;
+};
+#endif
+#endif
diff --git a/i686-linux-musl/include/linux/efs_fs_sb.h b/i686-linux-musl/include/linux/efs_fs_sb.h
new file mode 100644
index 0000000..9b861c8
--- /dev/null
+++ b/i686-linux-musl/include/linux/efs_fs_sb.h
@@ -0,0 +1,61 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __EFS_FS_SB_H__
+#define __EFS_FS_SB_H__
+#include <linux/types.h>
+#include <linux/magic.h>
+#define EFS_MAGIC 0x072959
+#define EFS_NEWMAGIC 0x07295a
+#define IS_EFS_MAGIC(x) ((x == EFS_MAGIC) || (x == EFS_NEWMAGIC))
+#define EFS_SUPER 1
+#define EFS_ROOTINODE 2
+struct efs_super {
+  __be32 fs_size;
+  __be32 fs_firstcg;
+  __be32 fs_cgfsize;
+  __be16 fs_cgisize;
+  __be16 fs_sectors;
+  __be16 fs_heads;
+  __be16 fs_ncg;
+  __be16 fs_dirty;
+  __be32 fs_time;
+  __be32 fs_magic;
+  char fs_fname[6];
+  char fs_fpack[6];
+  __be32 fs_bmsize;
+  __be32 fs_tfree;
+  __be32 fs_tinode;
+  __be32 fs_bmblock;
+  __be32 fs_replsb;
+  __be32 fs_lastialloc;
+  char fs_spare[20];
+  __be32 fs_checksum;
+};
+struct efs_sb_info {
+  __u32 fs_magic;
+  __u32 fs_start;
+  __u32 first_block;
+  __u32 total_blocks;
+  __u32 group_size;
+  __u32 data_free;
+  __u32 inode_free;
+  __u16 inode_blocks;
+  __u16 total_groups;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/elf-em.h b/i686-linux-musl/include/linux/elf-em.h
new file mode 100644
index 0000000..d1ed1f6
--- /dev/null
+++ b/i686-linux-musl/include/linux/elf-em.h
@@ -0,0 +1,69 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_ELF_EM_H
+#define _LINUX_ELF_EM_H
+#define EM_NONE 0
+#define EM_M32 1
+#define EM_SPARC 2
+#define EM_386 3
+#define EM_68K 4
+#define EM_88K 5
+#define EM_486 6
+#define EM_860 7
+#define EM_MIPS 8
+#define EM_MIPS_RS3_LE 10
+#define EM_MIPS_RS4_BE 10
+#define EM_PARISC 15
+#define EM_SPARC32PLUS 18
+#define EM_PPC 20
+#define EM_PPC64 21
+#define EM_SPU 23
+#define EM_ARM 40
+#define EM_SH 42
+#define EM_SPARCV9 43
+#define EM_H8_300 46
+#define EM_IA_64 50
+#define EM_X86_64 62
+#define EM_S390 22
+#define EM_CRIS 76
+#define EM_M32R 88
+#define EM_MN10300 89
+#define EM_OPENRISC 92
+#define EM_ARCOMPACT 93
+#define EM_XTENSA 94
+#define EM_BLACKFIN 106
+#define EM_UNICORE 110
+#define EM_ALTERA_NIOS2 113
+#define EM_TI_C6000 140
+#define EM_HEXAGON 164
+#define EM_NDS32 167
+#define EM_AARCH64 183
+#define EM_TILEPRO 188
+#define EM_MICROBLAZE 189
+#define EM_TILEGX 191
+#define EM_ARCV2 195
+#define EM_RISCV 243
+#define EM_BPF 247
+#define EM_CSKY 252
+#define EM_FRV 0x5441
+#define EM_ALPHA 0x9026
+#define EM_CYGNUS_M32R 0x9041
+#define EM_S390_OLD 0xA390
+#define EM_CYGNUS_MN10300 0xbeef
+#endif
diff --git a/i686-linux-musl/include/linux/elf-fdpic.h b/i686-linux-musl/include/linux/elf-fdpic.h
new file mode 100644
index 0000000..4e81292
--- /dev/null
+++ b/i686-linux-musl/include/linux/elf-fdpic.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ELF_FDPIC_H
+#define _UAPI_LINUX_ELF_FDPIC_H
+#include <linux/elf.h>
+#define PT_GNU_STACK (PT_LOOS + 0x474e551)
+struct elf32_fdpic_loadseg {
+  Elf32_Addr addr;
+  Elf32_Addr p_vaddr;
+  Elf32_Word p_memsz;
+};
+struct elf32_fdpic_loadmap {
+  Elf32_Half version;
+  Elf32_Half nsegs;
+  struct elf32_fdpic_loadseg segs[];
+};
+#define ELF32_FDPIC_LOADMAP_VERSION 0x0000
+#endif
diff --git a/i686-linux-musl/include/linux/elf.h b/i686-linux-musl/include/linux/elf.h
new file mode 100644
index 0000000..7655f12
--- /dev/null
+++ b/i686-linux-musl/include/linux/elf.h
@@ -0,0 +1,382 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ELF_H
+#define _UAPI_LINUX_ELF_H
+#include <linux/types.h>
+#include <linux/elf-em.h>
+typedef __u32 Elf32_Addr;
+typedef __u16 Elf32_Half;
+typedef __u32 Elf32_Off;
+typedef __s32 Elf32_Sword;
+typedef __u32 Elf32_Word;
+typedef __u64 Elf64_Addr;
+typedef __u16 Elf64_Half;
+typedef __s16 Elf64_SHalf;
+typedef __u64 Elf64_Off;
+typedef __s32 Elf64_Sword;
+typedef __u32 Elf64_Word;
+typedef __u64 Elf64_Xword;
+typedef __s64 Elf64_Sxword;
+#define PT_NULL 0
+#define PT_LOAD 1
+#define PT_DYNAMIC 2
+#define PT_INTERP 3
+#define PT_NOTE 4
+#define PT_SHLIB 5
+#define PT_PHDR 6
+#define PT_TLS 7
+#define PT_LOOS 0x60000000
+#define PT_HIOS 0x6fffffff
+#define PT_LOPROC 0x70000000
+#define PT_HIPROC 0x7fffffff
+#define PT_GNU_EH_FRAME 0x6474e550
+#define PT_GNU_PROPERTY 0x6474e553
+#define PT_GNU_STACK (PT_LOOS + 0x474e551)
+#define PN_XNUM 0xffff
+#define ET_NONE 0
+#define ET_REL 1
+#define ET_EXEC 2
+#define ET_DYN 3
+#define ET_CORE 4
+#define ET_LOPROC 0xff00
+#define ET_HIPROC 0xffff
+#define DT_NULL 0
+#define DT_NEEDED 1
+#define DT_PLTRELSZ 2
+#define DT_PLTGOT 3
+#define DT_HASH 4
+#define DT_STRTAB 5
+#define DT_SYMTAB 6
+#define DT_RELA 7
+#define DT_RELASZ 8
+#define DT_RELAENT 9
+#define DT_STRSZ 10
+#define DT_SYMENT 11
+#define DT_INIT 12
+#define DT_FINI 13
+#define DT_SONAME 14
+#define DT_RPATH 15
+#define DT_SYMBOLIC 16
+#define DT_REL 17
+#define DT_RELSZ 18
+#define DT_RELENT 19
+#define DT_PLTREL 20
+#define DT_DEBUG 21
+#define DT_TEXTREL 22
+#define DT_JMPREL 23
+#define DT_ENCODING 32
+#define OLD_DT_LOOS 0x60000000
+#define DT_LOOS 0x6000000d
+#define DT_HIOS 0x6ffff000
+#define DT_VALRNGLO 0x6ffffd00
+#define DT_VALRNGHI 0x6ffffdff
+#define DT_ADDRRNGLO 0x6ffffe00
+#define DT_ADDRRNGHI 0x6ffffeff
+#define DT_VERSYM 0x6ffffff0
+#define DT_RELACOUNT 0x6ffffff9
+#define DT_RELCOUNT 0x6ffffffa
+#define DT_FLAGS_1 0x6ffffffb
+#define DT_VERDEF 0x6ffffffc
+#define DT_VERDEFNUM 0x6ffffffd
+#define DT_VERNEED 0x6ffffffe
+#define DT_VERNEEDNUM 0x6fffffff
+#define OLD_DT_HIOS 0x6fffffff
+#define DT_LOPROC 0x70000000
+#define DT_HIPROC 0x7fffffff
+#define STB_LOCAL 0
+#define STB_GLOBAL 1
+#define STB_WEAK 2
+#define STT_NOTYPE 0
+#define STT_OBJECT 1
+#define STT_FUNC 2
+#define STT_SECTION 3
+#define STT_FILE 4
+#define STT_COMMON 5
+#define STT_TLS 6
+#define ELF_ST_BIND(x) ((x) >> 4)
+#define ELF_ST_TYPE(x) (((unsigned int) x) & 0xf)
+#define ELF32_ST_BIND(x) ELF_ST_BIND(x)
+#define ELF32_ST_TYPE(x) ELF_ST_TYPE(x)
+#define ELF64_ST_BIND(x) ELF_ST_BIND(x)
+#define ELF64_ST_TYPE(x) ELF_ST_TYPE(x)
+typedef struct dynamic {
+  Elf32_Sword d_tag;
+  union {
+    Elf32_Sword d_val;
+    Elf32_Addr d_ptr;
+  } d_un;
+} Elf32_Dyn;
+typedef struct {
+  Elf64_Sxword d_tag;
+  union {
+    Elf64_Xword d_val;
+    Elf64_Addr d_ptr;
+  } d_un;
+} Elf64_Dyn;
+#define ELF32_R_SYM(x) ((x) >> 8)
+#define ELF32_R_TYPE(x) ((x) & 0xff)
+#define ELF64_R_SYM(i) ((i) >> 32)
+#define ELF64_R_TYPE(i) ((i) & 0xffffffff)
+typedef struct elf32_rel {
+  Elf32_Addr r_offset;
+  Elf32_Word r_info;
+} Elf32_Rel;
+typedef struct elf64_rel {
+  Elf64_Addr r_offset;
+  Elf64_Xword r_info;
+} Elf64_Rel;
+typedef struct elf32_rela {
+  Elf32_Addr r_offset;
+  Elf32_Word r_info;
+  Elf32_Sword r_addend;
+} Elf32_Rela;
+typedef struct elf64_rela {
+  Elf64_Addr r_offset;
+  Elf64_Xword r_info;
+  Elf64_Sxword r_addend;
+} Elf64_Rela;
+typedef struct elf32_sym {
+  Elf32_Word st_name;
+  Elf32_Addr st_value;
+  Elf32_Word st_size;
+  unsigned char st_info;
+  unsigned char st_other;
+  Elf32_Half st_shndx;
+} Elf32_Sym;
+typedef struct elf64_sym {
+  Elf64_Word st_name;
+  unsigned char st_info;
+  unsigned char st_other;
+  Elf64_Half st_shndx;
+  Elf64_Addr st_value;
+  Elf64_Xword st_size;
+} Elf64_Sym;
+#define EI_NIDENT 16
+typedef struct elf32_hdr {
+  unsigned char e_ident[EI_NIDENT];
+  Elf32_Half e_type;
+  Elf32_Half e_machine;
+  Elf32_Word e_version;
+  Elf32_Addr e_entry;
+  Elf32_Off e_phoff;
+  Elf32_Off e_shoff;
+  Elf32_Word e_flags;
+  Elf32_Half e_ehsize;
+  Elf32_Half e_phentsize;
+  Elf32_Half e_phnum;
+  Elf32_Half e_shentsize;
+  Elf32_Half e_shnum;
+  Elf32_Half e_shstrndx;
+} Elf32_Ehdr;
+typedef struct elf64_hdr {
+  unsigned char e_ident[EI_NIDENT];
+  Elf64_Half e_type;
+  Elf64_Half e_machine;
+  Elf64_Word e_version;
+  Elf64_Addr e_entry;
+  Elf64_Off e_phoff;
+  Elf64_Off e_shoff;
+  Elf64_Word e_flags;
+  Elf64_Half e_ehsize;
+  Elf64_Half e_phentsize;
+  Elf64_Half e_phnum;
+  Elf64_Half e_shentsize;
+  Elf64_Half e_shnum;
+  Elf64_Half e_shstrndx;
+} Elf64_Ehdr;
+#define PF_R 0x4
+#define PF_W 0x2
+#define PF_X 0x1
+typedef struct elf32_phdr {
+  Elf32_Word p_type;
+  Elf32_Off p_offset;
+  Elf32_Addr p_vaddr;
+  Elf32_Addr p_paddr;
+  Elf32_Word p_filesz;
+  Elf32_Word p_memsz;
+  Elf32_Word p_flags;
+  Elf32_Word p_align;
+} Elf32_Phdr;
+typedef struct elf64_phdr {
+  Elf64_Word p_type;
+  Elf64_Word p_flags;
+  Elf64_Off p_offset;
+  Elf64_Addr p_vaddr;
+  Elf64_Addr p_paddr;
+  Elf64_Xword p_filesz;
+  Elf64_Xword p_memsz;
+  Elf64_Xword p_align;
+} Elf64_Phdr;
+#define SHT_NULL 0
+#define SHT_PROGBITS 1
+#define SHT_SYMTAB 2
+#define SHT_STRTAB 3
+#define SHT_RELA 4
+#define SHT_HASH 5
+#define SHT_DYNAMIC 6
+#define SHT_NOTE 7
+#define SHT_NOBITS 8
+#define SHT_REL 9
+#define SHT_SHLIB 10
+#define SHT_DYNSYM 11
+#define SHT_NUM 12
+#define SHT_LOPROC 0x70000000
+#define SHT_HIPROC 0x7fffffff
+#define SHT_LOUSER 0x80000000
+#define SHT_HIUSER 0xffffffff
+#define SHF_WRITE 0x1
+#define SHF_ALLOC 0x2
+#define SHF_EXECINSTR 0x4
+#define SHF_RELA_LIVEPATCH 0x00100000
+#define SHF_RO_AFTER_INIT 0x00200000
+#define SHF_MASKPROC 0xf0000000
+#define SHN_UNDEF 0
+#define SHN_LORESERVE 0xff00
+#define SHN_LOPROC 0xff00
+#define SHN_HIPROC 0xff1f
+#define SHN_LIVEPATCH 0xff20
+#define SHN_ABS 0xfff1
+#define SHN_COMMON 0xfff2
+#define SHN_HIRESERVE 0xffff
+typedef struct elf32_shdr {
+  Elf32_Word sh_name;
+  Elf32_Word sh_type;
+  Elf32_Word sh_flags;
+  Elf32_Addr sh_addr;
+  Elf32_Off sh_offset;
+  Elf32_Word sh_size;
+  Elf32_Word sh_link;
+  Elf32_Word sh_info;
+  Elf32_Word sh_addralign;
+  Elf32_Word sh_entsize;
+} Elf32_Shdr;
+typedef struct elf64_shdr {
+  Elf64_Word sh_name;
+  Elf64_Word sh_type;
+  Elf64_Xword sh_flags;
+  Elf64_Addr sh_addr;
+  Elf64_Off sh_offset;
+  Elf64_Xword sh_size;
+  Elf64_Word sh_link;
+  Elf64_Word sh_info;
+  Elf64_Xword sh_addralign;
+  Elf64_Xword sh_entsize;
+} Elf64_Shdr;
+#define EI_MAG0 0
+#define EI_MAG1 1
+#define EI_MAG2 2
+#define EI_MAG3 3
+#define EI_CLASS 4
+#define EI_DATA 5
+#define EI_VERSION 6
+#define EI_OSABI 7
+#define EI_PAD 8
+#define ELFMAG0 0x7f
+#define ELFMAG1 'E'
+#define ELFMAG2 'L'
+#define ELFMAG3 'F'
+#define ELFMAG "\177ELF"
+#define SELFMAG 4
+#define ELFCLASSNONE 0
+#define ELFCLASS32 1
+#define ELFCLASS64 2
+#define ELFCLASSNUM 3
+#define ELFDATANONE 0
+#define ELFDATA2LSB 1
+#define ELFDATA2MSB 2
+#define EV_NONE 0
+#define EV_CURRENT 1
+#define EV_NUM 2
+#define ELFOSABI_NONE 0
+#define ELFOSABI_LINUX 3
+#ifndef ELF_OSABI
+#define ELF_OSABI ELFOSABI_NONE
+#endif
+#define NT_PRSTATUS 1
+#define NT_PRFPREG 2
+#define NT_PRPSINFO 3
+#define NT_TASKSTRUCT 4
+#define NT_AUXV 6
+#define NT_SIGINFO 0x53494749
+#define NT_FILE 0x46494c45
+#define NT_PRXFPREG 0x46e62b7f
+#define NT_PPC_VMX 0x100
+#define NT_PPC_SPE 0x101
+#define NT_PPC_VSX 0x102
+#define NT_PPC_TAR 0x103
+#define NT_PPC_PPR 0x104
+#define NT_PPC_DSCR 0x105
+#define NT_PPC_EBB 0x106
+#define NT_PPC_PMU 0x107
+#define NT_PPC_TM_CGPR 0x108
+#define NT_PPC_TM_CFPR 0x109
+#define NT_PPC_TM_CVMX 0x10a
+#define NT_PPC_TM_CVSX 0x10b
+#define NT_PPC_TM_SPR 0x10c
+#define NT_PPC_TM_CTAR 0x10d
+#define NT_PPC_TM_CPPR 0x10e
+#define NT_PPC_TM_CDSCR 0x10f
+#define NT_PPC_PKEY 0x110
+#define NT_386_TLS 0x200
+#define NT_386_IOPERM 0x201
+#define NT_X86_XSTATE 0x202
+#define NT_S390_HIGH_GPRS 0x300
+#define NT_S390_TIMER 0x301
+#define NT_S390_TODCMP 0x302
+#define NT_S390_TODPREG 0x303
+#define NT_S390_CTRS 0x304
+#define NT_S390_PREFIX 0x305
+#define NT_S390_LAST_BREAK 0x306
+#define NT_S390_SYSTEM_CALL 0x307
+#define NT_S390_TDB 0x308
+#define NT_S390_VXRS_LOW 0x309
+#define NT_S390_VXRS_HIGH 0x30a
+#define NT_S390_GS_CB 0x30b
+#define NT_S390_GS_BC 0x30c
+#define NT_S390_RI_CB 0x30d
+#define NT_ARM_VFP 0x400
+#define NT_ARM_TLS 0x401
+#define NT_ARM_HW_BREAK 0x402
+#define NT_ARM_HW_WATCH 0x403
+#define NT_ARM_SYSTEM_CALL 0x404
+#define NT_ARM_SVE 0x405
+#define NT_ARM_PAC_MASK 0x406
+#define NT_ARM_PACA_KEYS 0x407
+#define NT_ARM_PACG_KEYS 0x408
+#define NT_ARM_TAGGED_ADDR_CTRL 0x409
+#define NT_ARM_PAC_ENABLED_KEYS 0x40a
+#define NT_ARC_V2 0x600
+#define NT_VMCOREDD 0x700
+#define NT_MIPS_DSP 0x800
+#define NT_MIPS_FP_MODE 0x801
+#define NT_MIPS_MSA 0x802
+#define NT_GNU_PROPERTY_TYPE_0 5
+typedef struct elf32_note {
+  Elf32_Word n_namesz;
+  Elf32_Word n_descsz;
+  Elf32_Word n_type;
+} Elf32_Nhdr;
+typedef struct elf64_note {
+  Elf64_Word n_namesz;
+  Elf64_Word n_descsz;
+  Elf64_Word n_type;
+} Elf64_Nhdr;
+#define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000
+#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI (1U << 0)
+#endif
diff --git a/i686-linux-musl/include/linux/errno.h b/i686-linux-musl/include/linux/errno.h
new file mode 100644
index 0000000..01399c5
--- /dev/null
+++ b/i686-linux-musl/include/linux/errno.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm/errno.h>
diff --git a/i686-linux-musl/include/linux/errqueue.h b/i686-linux-musl/include/linux/errqueue.h
new file mode 100644
index 0000000..e93bad2
--- /dev/null
+++ b/i686-linux-musl/include/linux/errqueue.h
@@ -0,0 +1,64 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ERRQUEUE_H
+#define _UAPI_LINUX_ERRQUEUE_H
+#include <linux/types.h>
+#include <linux/time_types.h>
+struct sock_ee_data_rfc4884 {
+  __u16 len;
+  __u8 flags;
+  __u8 reserved;
+};
+struct sock_extended_err {
+  __u32 ee_errno;
+  __u8 ee_origin;
+  __u8 ee_type;
+  __u8 ee_code;
+  __u8 ee_pad;
+  __u32 ee_info;
+  union {
+    __u32 ee_data;
+    struct sock_ee_data_rfc4884 ee_rfc4884;
+  };
+};
+#define SO_EE_ORIGIN_NONE 0
+#define SO_EE_ORIGIN_LOCAL 1
+#define SO_EE_ORIGIN_ICMP 2
+#define SO_EE_ORIGIN_ICMP6 3
+#define SO_EE_ORIGIN_TXSTATUS 4
+#define SO_EE_ORIGIN_ZEROCOPY 5
+#define SO_EE_ORIGIN_TXTIME 6
+#define SO_EE_ORIGIN_TIMESTAMPING SO_EE_ORIGIN_TXSTATUS
+#define SO_EE_OFFENDER(ee) ((struct sockaddr *) ((ee) + 1))
+#define SO_EE_CODE_ZEROCOPY_COPIED 1
+#define SO_EE_CODE_TXTIME_INVALID_PARAM 1
+#define SO_EE_CODE_TXTIME_MISSED 2
+#define SO_EE_RFC4884_FLAG_INVALID 1
+struct scm_timestamping {
+  struct timespec ts[3];
+};
+struct scm_timestamping64 {
+  struct __kernel_timespec ts[3];
+};
+enum {
+  SCM_TSTAMP_SND,
+  SCM_TSTAMP_SCHED,
+  SCM_TSTAMP_ACK,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/erspan.h b/i686-linux-musl/include/linux/erspan.h
new file mode 100644
index 0000000..790a85e
--- /dev/null
+++ b/i686-linux-musl/include/linux/erspan.h
@@ -0,0 +1,43 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ERSPAN_H
+#define _UAPI_ERSPAN_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+struct erspan_md2 {
+  __be32 timestamp;
+  __be16 sgt;
+#ifdef __LITTLE_ENDIAN_BITFIELD
+  __u8 hwid_upper : 2, ft : 5, p : 1;
+  __u8 o : 1, gra : 2, dir : 1, hwid : 4;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+  __u8 p : 1, ft : 5, hwid_upper : 2;
+  __u8 hwid : 4, dir : 1, gra : 2, o : 1;
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif
+};
+struct erspan_metadata {
+  int version;
+  union {
+    __be32 index;
+    struct erspan_md2 md2;
+  } u;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/ethtool.h b/i686-linux-musl/include/linux/ethtool.h
new file mode 100644
index 0000000..baf417d
--- /dev/null
+++ b/i686-linux-musl/include/linux/ethtool.h
@@ -0,0 +1,906 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ETHTOOL_H
+#define _UAPI_LINUX_ETHTOOL_H
+#include <linux/const.h>
+#include <linux/types.h>
+#include <linux/if_ether.h>
+#include <limits.h>
+struct ethtool_cmd {
+  __u32 cmd;
+  __u32 supported;
+  __u32 advertising;
+  __u16 speed;
+  __u8 duplex;
+  __u8 port;
+  __u8 phy_address;
+  __u8 transceiver;
+  __u8 autoneg;
+  __u8 mdio_support;
+  __u32 maxtxpkt;
+  __u32 maxrxpkt;
+  __u16 speed_hi;
+  __u8 eth_tp_mdix;
+  __u8 eth_tp_mdix_ctrl;
+  __u32 lp_advertising;
+  __u32 reserved[2];
+};
+#define ETH_MDIO_SUPPORTS_C22 1
+#define ETH_MDIO_SUPPORTS_C45 2
+#define ETHTOOL_FWVERS_LEN 32
+#define ETHTOOL_BUSINFO_LEN 32
+#define ETHTOOL_EROMVERS_LEN 32
+struct ethtool_drvinfo {
+  __u32 cmd;
+  char driver[32];
+  char version[32];
+  char fw_version[ETHTOOL_FWVERS_LEN];
+  char bus_info[ETHTOOL_BUSINFO_LEN];
+  char erom_version[ETHTOOL_EROMVERS_LEN];
+  char reserved2[12];
+  __u32 n_priv_flags;
+  __u32 n_stats;
+  __u32 testinfo_len;
+  __u32 eedump_len;
+  __u32 regdump_len;
+};
+#define SOPASS_MAX 6
+struct ethtool_wolinfo {
+  __u32 cmd;
+  __u32 supported;
+  __u32 wolopts;
+  __u8 sopass[SOPASS_MAX];
+};
+struct ethtool_value {
+  __u32 cmd;
+  __u32 data;
+};
+#define PFC_STORM_PREVENTION_AUTO 0xffff
+#define PFC_STORM_PREVENTION_DISABLE 0
+enum tunable_id {
+  ETHTOOL_ID_UNSPEC,
+  ETHTOOL_RX_COPYBREAK,
+  ETHTOOL_TX_COPYBREAK,
+  ETHTOOL_PFC_PREVENTION_TOUT,
+  __ETHTOOL_TUNABLE_COUNT,
+};
+enum tunable_type_id {
+  ETHTOOL_TUNABLE_UNSPEC,
+  ETHTOOL_TUNABLE_U8,
+  ETHTOOL_TUNABLE_U16,
+  ETHTOOL_TUNABLE_U32,
+  ETHTOOL_TUNABLE_U64,
+  ETHTOOL_TUNABLE_STRING,
+  ETHTOOL_TUNABLE_S8,
+  ETHTOOL_TUNABLE_S16,
+  ETHTOOL_TUNABLE_S32,
+  ETHTOOL_TUNABLE_S64,
+};
+struct ethtool_tunable {
+  __u32 cmd;
+  __u32 id;
+  __u32 type_id;
+  __u32 len;
+  void * data[0];
+};
+#define DOWNSHIFT_DEV_DEFAULT_COUNT 0xff
+#define DOWNSHIFT_DEV_DISABLE 0
+#define ETHTOOL_PHY_FAST_LINK_DOWN_ON 0
+#define ETHTOOL_PHY_FAST_LINK_DOWN_OFF 0xff
+#define ETHTOOL_PHY_EDPD_DFLT_TX_MSECS 0xffff
+#define ETHTOOL_PHY_EDPD_NO_TX 0xfffe
+#define ETHTOOL_PHY_EDPD_DISABLE 0
+enum phy_tunable_id {
+  ETHTOOL_PHY_ID_UNSPEC,
+  ETHTOOL_PHY_DOWNSHIFT,
+  ETHTOOL_PHY_FAST_LINK_DOWN,
+  ETHTOOL_PHY_EDPD,
+  __ETHTOOL_PHY_TUNABLE_COUNT,
+};
+struct ethtool_regs {
+  __u32 cmd;
+  __u32 version;
+  __u32 len;
+  __u8 data[0];
+};
+struct ethtool_eeprom {
+  __u32 cmd;
+  __u32 magic;
+  __u32 offset;
+  __u32 len;
+  __u8 data[0];
+};
+struct ethtool_eee {
+  __u32 cmd;
+  __u32 supported;
+  __u32 advertised;
+  __u32 lp_advertised;
+  __u32 eee_active;
+  __u32 eee_enabled;
+  __u32 tx_lpi_enabled;
+  __u32 tx_lpi_timer;
+  __u32 reserved[2];
+};
+struct ethtool_modinfo {
+  __u32 cmd;
+  __u32 type;
+  __u32 eeprom_len;
+  __u32 reserved[8];
+};
+struct ethtool_coalesce {
+  __u32 cmd;
+  __u32 rx_coalesce_usecs;
+  __u32 rx_max_coalesced_frames;
+  __u32 rx_coalesce_usecs_irq;
+  __u32 rx_max_coalesced_frames_irq;
+  __u32 tx_coalesce_usecs;
+  __u32 tx_max_coalesced_frames;
+  __u32 tx_coalesce_usecs_irq;
+  __u32 tx_max_coalesced_frames_irq;
+  __u32 stats_block_coalesce_usecs;
+  __u32 use_adaptive_rx_coalesce;
+  __u32 use_adaptive_tx_coalesce;
+  __u32 pkt_rate_low;
+  __u32 rx_coalesce_usecs_low;
+  __u32 rx_max_coalesced_frames_low;
+  __u32 tx_coalesce_usecs_low;
+  __u32 tx_max_coalesced_frames_low;
+  __u32 pkt_rate_high;
+  __u32 rx_coalesce_usecs_high;
+  __u32 rx_max_coalesced_frames_high;
+  __u32 tx_coalesce_usecs_high;
+  __u32 tx_max_coalesced_frames_high;
+  __u32 rate_sample_interval;
+};
+struct ethtool_ringparam {
+  __u32 cmd;
+  __u32 rx_max_pending;
+  __u32 rx_mini_max_pending;
+  __u32 rx_jumbo_max_pending;
+  __u32 tx_max_pending;
+  __u32 rx_pending;
+  __u32 rx_mini_pending;
+  __u32 rx_jumbo_pending;
+  __u32 tx_pending;
+};
+struct ethtool_channels {
+  __u32 cmd;
+  __u32 max_rx;
+  __u32 max_tx;
+  __u32 max_other;
+  __u32 max_combined;
+  __u32 rx_count;
+  __u32 tx_count;
+  __u32 other_count;
+  __u32 combined_count;
+};
+struct ethtool_pauseparam {
+  __u32 cmd;
+  __u32 autoneg;
+  __u32 rx_pause;
+  __u32 tx_pause;
+};
+enum ethtool_link_ext_state {
+  ETHTOOL_LINK_EXT_STATE_AUTONEG,
+  ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE,
+  ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH,
+  ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY,
+  ETHTOOL_LINK_EXT_STATE_NO_CABLE,
+  ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE,
+  ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE,
+  ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE,
+  ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED,
+  ETHTOOL_LINK_EXT_STATE_OVERHEAT,
+  ETHTOOL_LINK_EXT_STATE_MODULE,
+};
+enum ethtool_link_ext_substate_autoneg {
+  ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED = 1,
+  ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED,
+  ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED,
+  ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE,
+  ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE,
+  ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD,
+};
+enum ethtool_link_ext_substate_link_training {
+  ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED = 1,
+  ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT,
+  ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY,
+  ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT,
+};
+enum ethtool_link_ext_substate_link_logical_mismatch {
+  ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK = 1,
+  ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK,
+  ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS,
+  ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED,
+  ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED,
+};
+enum ethtool_link_ext_substate_bad_signal_integrity {
+  ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS = 1,
+  ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE,
+  ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_REFERENCE_CLOCK_LOST,
+  ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_ALOS,
+};
+enum ethtool_link_ext_substate_cable_issue {
+  ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE = 1,
+  ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE,
+};
+enum ethtool_link_ext_substate_module {
+  ETHTOOL_LINK_EXT_SUBSTATE_MODULE_CMIS_NOT_READY = 1,
+};
+#define ETH_GSTRING_LEN 32
+enum ethtool_stringset {
+  ETH_SS_TEST = 0,
+  ETH_SS_STATS,
+  ETH_SS_PRIV_FLAGS,
+  ETH_SS_NTUPLE_FILTERS,
+  ETH_SS_FEATURES,
+  ETH_SS_RSS_HASH_FUNCS,
+  ETH_SS_TUNABLES,
+  ETH_SS_PHY_STATS,
+  ETH_SS_PHY_TUNABLES,
+  ETH_SS_LINK_MODES,
+  ETH_SS_MSG_CLASSES,
+  ETH_SS_WOL_MODES,
+  ETH_SS_SOF_TIMESTAMPING,
+  ETH_SS_TS_TX_TYPES,
+  ETH_SS_TS_RX_FILTERS,
+  ETH_SS_UDP_TUNNEL_TYPES,
+  ETH_SS_STATS_STD,
+  ETH_SS_STATS_ETH_PHY,
+  ETH_SS_STATS_ETH_MAC,
+  ETH_SS_STATS_ETH_CTRL,
+  ETH_SS_STATS_RMON,
+  ETH_SS_COUNT
+};
+enum ethtool_module_power_mode_policy {
+  ETHTOOL_MODULE_POWER_MODE_POLICY_HIGH = 1,
+  ETHTOOL_MODULE_POWER_MODE_POLICY_AUTO,
+};
+enum ethtool_module_power_mode {
+  ETHTOOL_MODULE_POWER_MODE_LOW = 1,
+  ETHTOOL_MODULE_POWER_MODE_HIGH,
+};
+struct ethtool_gstrings {
+  __u32 cmd;
+  __u32 string_set;
+  __u32 len;
+  __u8 data[0];
+};
+struct ethtool_sset_info {
+  __u32 cmd;
+  __u32 reserved;
+  __u64 sset_mask;
+  __u32 data[0];
+};
+enum ethtool_test_flags {
+  ETH_TEST_FL_OFFLINE = (1 << 0),
+  ETH_TEST_FL_FAILED = (1 << 1),
+  ETH_TEST_FL_EXTERNAL_LB = (1 << 2),
+  ETH_TEST_FL_EXTERNAL_LB_DONE = (1 << 3),
+};
+struct ethtool_test {
+  __u32 cmd;
+  __u32 flags;
+  __u32 reserved;
+  __u32 len;
+  __u64 data[0];
+};
+struct ethtool_stats {
+  __u32 cmd;
+  __u32 n_stats;
+  __u64 data[0];
+};
+struct ethtool_perm_addr {
+  __u32 cmd;
+  __u32 size;
+  __u8 data[0];
+};
+enum ethtool_flags {
+  ETH_FLAG_TXVLAN = (1 << 7),
+  ETH_FLAG_RXVLAN = (1 << 8),
+  ETH_FLAG_LRO = (1 << 15),
+  ETH_FLAG_NTUPLE = (1 << 27),
+  ETH_FLAG_RXHASH = (1 << 28),
+};
+struct ethtool_tcpip4_spec {
+  __be32 ip4src;
+  __be32 ip4dst;
+  __be16 psrc;
+  __be16 pdst;
+  __u8 tos;
+};
+struct ethtool_ah_espip4_spec {
+  __be32 ip4src;
+  __be32 ip4dst;
+  __be32 spi;
+  __u8 tos;
+};
+#define ETH_RX_NFC_IP4 1
+struct ethtool_usrip4_spec {
+  __be32 ip4src;
+  __be32 ip4dst;
+  __be32 l4_4_bytes;
+  __u8 tos;
+  __u8 ip_ver;
+  __u8 proto;
+};
+struct ethtool_tcpip6_spec {
+  __be32 ip6src[4];
+  __be32 ip6dst[4];
+  __be16 psrc;
+  __be16 pdst;
+  __u8 tclass;
+};
+struct ethtool_ah_espip6_spec {
+  __be32 ip6src[4];
+  __be32 ip6dst[4];
+  __be32 spi;
+  __u8 tclass;
+};
+struct ethtool_usrip6_spec {
+  __be32 ip6src[4];
+  __be32 ip6dst[4];
+  __be32 l4_4_bytes;
+  __u8 tclass;
+  __u8 l4_proto;
+};
+union ethtool_flow_union {
+  struct ethtool_tcpip4_spec tcp_ip4_spec;
+  struct ethtool_tcpip4_spec udp_ip4_spec;
+  struct ethtool_tcpip4_spec sctp_ip4_spec;
+  struct ethtool_ah_espip4_spec ah_ip4_spec;
+  struct ethtool_ah_espip4_spec esp_ip4_spec;
+  struct ethtool_usrip4_spec usr_ip4_spec;
+  struct ethtool_tcpip6_spec tcp_ip6_spec;
+  struct ethtool_tcpip6_spec udp_ip6_spec;
+  struct ethtool_tcpip6_spec sctp_ip6_spec;
+  struct ethtool_ah_espip6_spec ah_ip6_spec;
+  struct ethtool_ah_espip6_spec esp_ip6_spec;
+  struct ethtool_usrip6_spec usr_ip6_spec;
+  struct ethhdr ether_spec;
+  __u8 hdata[52];
+};
+struct ethtool_flow_ext {
+  __u8 padding[2];
+  unsigned char h_dest[ETH_ALEN];
+  __be16 vlan_etype;
+  __be16 vlan_tci;
+  __be32 data[2];
+};
+struct ethtool_rx_flow_spec {
+  __u32 flow_type;
+  union ethtool_flow_union h_u;
+  struct ethtool_flow_ext h_ext;
+  union ethtool_flow_union m_u;
+  struct ethtool_flow_ext m_ext;
+  __u64 ring_cookie;
+  __u32 location;
+};
+#define ETHTOOL_RX_FLOW_SPEC_RING 0x00000000FFFFFFFFLL
+#define ETHTOOL_RX_FLOW_SPEC_RING_VF 0x000000FF00000000LL
+#define ETHTOOL_RX_FLOW_SPEC_RING_VF_OFF 32
+struct ethtool_rxnfc {
+  __u32 cmd;
+  __u32 flow_type;
+  __u64 data;
+  struct ethtool_rx_flow_spec fs;
+  union {
+    __u32 rule_cnt;
+    __u32 rss_context;
+  };
+  __u32 rule_locs[0];
+};
+struct ethtool_rxfh_indir {
+  __u32 cmd;
+  __u32 size;
+  __u32 ring_index[0];
+};
+struct ethtool_rxfh {
+  __u32 cmd;
+  __u32 rss_context;
+  __u32 indir_size;
+  __u32 key_size;
+  __u8 hfunc;
+  __u8 rsvd8[3];
+  __u32 rsvd32;
+  __u32 rss_config[0];
+};
+#define ETH_RXFH_CONTEXT_ALLOC 0xffffffff
+#define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff
+struct ethtool_rx_ntuple_flow_spec {
+  __u32 flow_type;
+  union {
+    struct ethtool_tcpip4_spec tcp_ip4_spec;
+    struct ethtool_tcpip4_spec udp_ip4_spec;
+    struct ethtool_tcpip4_spec sctp_ip4_spec;
+    struct ethtool_ah_espip4_spec ah_ip4_spec;
+    struct ethtool_ah_espip4_spec esp_ip4_spec;
+    struct ethtool_usrip4_spec usr_ip4_spec;
+    struct ethhdr ether_spec;
+    __u8 hdata[72];
+  } h_u, m_u;
+  __u16 vlan_tag;
+  __u16 vlan_tag_mask;
+  __u64 data;
+  __u64 data_mask;
+  __s32 action;
+#define ETHTOOL_RXNTUPLE_ACTION_DROP (- 1)
+#define ETHTOOL_RXNTUPLE_ACTION_CLEAR (- 2)
+};
+struct ethtool_rx_ntuple {
+  __u32 cmd;
+  struct ethtool_rx_ntuple_flow_spec fs;
+};
+#define ETHTOOL_FLASH_MAX_FILENAME 128
+enum ethtool_flash_op_type {
+  ETHTOOL_FLASH_ALL_REGIONS = 0,
+};
+struct ethtool_flash {
+  __u32 cmd;
+  __u32 region;
+  char data[ETHTOOL_FLASH_MAX_FILENAME];
+};
+struct ethtool_dump {
+  __u32 cmd;
+  __u32 version;
+  __u32 flag;
+  __u32 len;
+  __u8 data[0];
+};
+#define ETH_FW_DUMP_DISABLE 0
+struct ethtool_get_features_block {
+  __u32 available;
+  __u32 requested;
+  __u32 active;
+  __u32 never_changed;
+};
+struct ethtool_gfeatures {
+  __u32 cmd;
+  __u32 size;
+  struct ethtool_get_features_block features[0];
+};
+struct ethtool_set_features_block {
+  __u32 valid;
+  __u32 requested;
+};
+struct ethtool_sfeatures {
+  __u32 cmd;
+  __u32 size;
+  struct ethtool_set_features_block features[0];
+};
+struct ethtool_ts_info {
+  __u32 cmd;
+  __u32 so_timestamping;
+  __s32 phc_index;
+  __u32 tx_types;
+  __u32 tx_reserved[3];
+  __u32 rx_filters;
+  __u32 rx_reserved[3];
+};
+enum ethtool_sfeatures_retval_bits {
+  ETHTOOL_F_UNSUPPORTED__BIT,
+  ETHTOOL_F_WISH__BIT,
+  ETHTOOL_F_COMPAT__BIT,
+};
+#define ETHTOOL_F_UNSUPPORTED (1 << ETHTOOL_F_UNSUPPORTED__BIT)
+#define ETHTOOL_F_WISH (1 << ETHTOOL_F_WISH__BIT)
+#define ETHTOOL_F_COMPAT (1 << ETHTOOL_F_COMPAT__BIT)
+#define MAX_NUM_QUEUE 4096
+struct ethtool_per_queue_op {
+  __u32 cmd;
+  __u32 sub_command;
+  __u32 queue_mask[__KERNEL_DIV_ROUND_UP(MAX_NUM_QUEUE, 32)];
+  char data[];
+};
+struct ethtool_fecparam {
+  __u32 cmd;
+  __u32 active_fec;
+  __u32 fec;
+  __u32 reserved;
+};
+enum ethtool_fec_config_bits {
+  ETHTOOL_FEC_NONE_BIT,
+  ETHTOOL_FEC_AUTO_BIT,
+  ETHTOOL_FEC_OFF_BIT,
+  ETHTOOL_FEC_RS_BIT,
+  ETHTOOL_FEC_BASER_BIT,
+  ETHTOOL_FEC_LLRS_BIT,
+};
+#define ETHTOOL_FEC_NONE (1 << ETHTOOL_FEC_NONE_BIT)
+#define ETHTOOL_FEC_AUTO (1 << ETHTOOL_FEC_AUTO_BIT)
+#define ETHTOOL_FEC_OFF (1 << ETHTOOL_FEC_OFF_BIT)
+#define ETHTOOL_FEC_RS (1 << ETHTOOL_FEC_RS_BIT)
+#define ETHTOOL_FEC_BASER (1 << ETHTOOL_FEC_BASER_BIT)
+#define ETHTOOL_FEC_LLRS (1 << ETHTOOL_FEC_LLRS_BIT)
+#define ETHTOOL_GSET 0x00000001
+#define ETHTOOL_SSET 0x00000002
+#define ETHTOOL_GDRVINFO 0x00000003
+#define ETHTOOL_GREGS 0x00000004
+#define ETHTOOL_GWOL 0x00000005
+#define ETHTOOL_SWOL 0x00000006
+#define ETHTOOL_GMSGLVL 0x00000007
+#define ETHTOOL_SMSGLVL 0x00000008
+#define ETHTOOL_NWAY_RST 0x00000009
+#define ETHTOOL_GLINK 0x0000000a
+#define ETHTOOL_GEEPROM 0x0000000b
+#define ETHTOOL_SEEPROM 0x0000000c
+#define ETHTOOL_GCOALESCE 0x0000000e
+#define ETHTOOL_SCOALESCE 0x0000000f
+#define ETHTOOL_GRINGPARAM 0x00000010
+#define ETHTOOL_SRINGPARAM 0x00000011
+#define ETHTOOL_GPAUSEPARAM 0x00000012
+#define ETHTOOL_SPAUSEPARAM 0x00000013
+#define ETHTOOL_GRXCSUM 0x00000014
+#define ETHTOOL_SRXCSUM 0x00000015
+#define ETHTOOL_GTXCSUM 0x00000016
+#define ETHTOOL_STXCSUM 0x00000017
+#define ETHTOOL_GSG 0x00000018
+#define ETHTOOL_SSG 0x00000019
+#define ETHTOOL_TEST 0x0000001a
+#define ETHTOOL_GSTRINGS 0x0000001b
+#define ETHTOOL_PHYS_ID 0x0000001c
+#define ETHTOOL_GSTATS 0x0000001d
+#define ETHTOOL_GTSO 0x0000001e
+#define ETHTOOL_STSO 0x0000001f
+#define ETHTOOL_GPERMADDR 0x00000020
+#define ETHTOOL_GUFO 0x00000021
+#define ETHTOOL_SUFO 0x00000022
+#define ETHTOOL_GGSO 0x00000023
+#define ETHTOOL_SGSO 0x00000024
+#define ETHTOOL_GFLAGS 0x00000025
+#define ETHTOOL_SFLAGS 0x00000026
+#define ETHTOOL_GPFLAGS 0x00000027
+#define ETHTOOL_SPFLAGS 0x00000028
+#define ETHTOOL_GRXFH 0x00000029
+#define ETHTOOL_SRXFH 0x0000002a
+#define ETHTOOL_GGRO 0x0000002b
+#define ETHTOOL_SGRO 0x0000002c
+#define ETHTOOL_GRXRINGS 0x0000002d
+#define ETHTOOL_GRXCLSRLCNT 0x0000002e
+#define ETHTOOL_GRXCLSRULE 0x0000002f
+#define ETHTOOL_GRXCLSRLALL 0x00000030
+#define ETHTOOL_SRXCLSRLDEL 0x00000031
+#define ETHTOOL_SRXCLSRLINS 0x00000032
+#define ETHTOOL_FLASHDEV 0x00000033
+#define ETHTOOL_RESET 0x00000034
+#define ETHTOOL_SRXNTUPLE 0x00000035
+#define ETHTOOL_GRXNTUPLE 0x00000036
+#define ETHTOOL_GSSET_INFO 0x00000037
+#define ETHTOOL_GRXFHINDIR 0x00000038
+#define ETHTOOL_SRXFHINDIR 0x00000039
+#define ETHTOOL_GFEATURES 0x0000003a
+#define ETHTOOL_SFEATURES 0x0000003b
+#define ETHTOOL_GCHANNELS 0x0000003c
+#define ETHTOOL_SCHANNELS 0x0000003d
+#define ETHTOOL_SET_DUMP 0x0000003e
+#define ETHTOOL_GET_DUMP_FLAG 0x0000003f
+#define ETHTOOL_GET_DUMP_DATA 0x00000040
+#define ETHTOOL_GET_TS_INFO 0x00000041
+#define ETHTOOL_GMODULEINFO 0x00000042
+#define ETHTOOL_GMODULEEEPROM 0x00000043
+#define ETHTOOL_GEEE 0x00000044
+#define ETHTOOL_SEEE 0x00000045
+#define ETHTOOL_GRSSH 0x00000046
+#define ETHTOOL_SRSSH 0x00000047
+#define ETHTOOL_GTUNABLE 0x00000048
+#define ETHTOOL_STUNABLE 0x00000049
+#define ETHTOOL_GPHYSTATS 0x0000004a
+#define ETHTOOL_PERQUEUE 0x0000004b
+#define ETHTOOL_GLINKSETTINGS 0x0000004c
+#define ETHTOOL_SLINKSETTINGS 0x0000004d
+#define ETHTOOL_PHY_GTUNABLE 0x0000004e
+#define ETHTOOL_PHY_STUNABLE 0x0000004f
+#define ETHTOOL_GFECPARAM 0x00000050
+#define ETHTOOL_SFECPARAM 0x00000051
+#define SPARC_ETH_GSET ETHTOOL_GSET
+#define SPARC_ETH_SSET ETHTOOL_SSET
+enum ethtool_link_mode_bit_indices {
+  ETHTOOL_LINK_MODE_10baseT_Half_BIT = 0,
+  ETHTOOL_LINK_MODE_10baseT_Full_BIT = 1,
+  ETHTOOL_LINK_MODE_100baseT_Half_BIT = 2,
+  ETHTOOL_LINK_MODE_100baseT_Full_BIT = 3,
+  ETHTOOL_LINK_MODE_1000baseT_Half_BIT = 4,
+  ETHTOOL_LINK_MODE_1000baseT_Full_BIT = 5,
+  ETHTOOL_LINK_MODE_Autoneg_BIT = 6,
+  ETHTOOL_LINK_MODE_TP_BIT = 7,
+  ETHTOOL_LINK_MODE_AUI_BIT = 8,
+  ETHTOOL_LINK_MODE_MII_BIT = 9,
+  ETHTOOL_LINK_MODE_FIBRE_BIT = 10,
+  ETHTOOL_LINK_MODE_BNC_BIT = 11,
+  ETHTOOL_LINK_MODE_10000baseT_Full_BIT = 12,
+  ETHTOOL_LINK_MODE_Pause_BIT = 13,
+  ETHTOOL_LINK_MODE_Asym_Pause_BIT = 14,
+  ETHTOOL_LINK_MODE_2500baseX_Full_BIT = 15,
+  ETHTOOL_LINK_MODE_Backplane_BIT = 16,
+  ETHTOOL_LINK_MODE_1000baseKX_Full_BIT = 17,
+  ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT = 18,
+  ETHTOOL_LINK_MODE_10000baseKR_Full_BIT = 19,
+  ETHTOOL_LINK_MODE_10000baseR_FEC_BIT = 20,
+  ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT = 21,
+  ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT = 22,
+  ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT = 23,
+  ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT = 24,
+  ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT = 25,
+  ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT = 26,
+  ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT = 27,
+  ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT = 28,
+  ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT = 29,
+  ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT = 30,
+  ETHTOOL_LINK_MODE_25000baseCR_Full_BIT = 31,
+  ETHTOOL_LINK_MODE_25000baseKR_Full_BIT = 32,
+  ETHTOOL_LINK_MODE_25000baseSR_Full_BIT = 33,
+  ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT = 34,
+  ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT = 35,
+  ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT = 36,
+  ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT = 37,
+  ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT = 38,
+  ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT = 39,
+  ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT = 40,
+  ETHTOOL_LINK_MODE_1000baseX_Full_BIT = 41,
+  ETHTOOL_LINK_MODE_10000baseCR_Full_BIT = 42,
+  ETHTOOL_LINK_MODE_10000baseSR_Full_BIT = 43,
+  ETHTOOL_LINK_MODE_10000baseLR_Full_BIT = 44,
+  ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT = 45,
+  ETHTOOL_LINK_MODE_10000baseER_Full_BIT = 46,
+  ETHTOOL_LINK_MODE_2500baseT_Full_BIT = 47,
+  ETHTOOL_LINK_MODE_5000baseT_Full_BIT = 48,
+  ETHTOOL_LINK_MODE_FEC_NONE_BIT = 49,
+  ETHTOOL_LINK_MODE_FEC_RS_BIT = 50,
+  ETHTOOL_LINK_MODE_FEC_BASER_BIT = 51,
+  ETHTOOL_LINK_MODE_50000baseKR_Full_BIT = 52,
+  ETHTOOL_LINK_MODE_50000baseSR_Full_BIT = 53,
+  ETHTOOL_LINK_MODE_50000baseCR_Full_BIT = 54,
+  ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT = 55,
+  ETHTOOL_LINK_MODE_50000baseDR_Full_BIT = 56,
+  ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT = 57,
+  ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT = 58,
+  ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT = 59,
+  ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT = 60,
+  ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT = 61,
+  ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT = 62,
+  ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT = 63,
+  ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT = 64,
+  ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT = 65,
+  ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT = 66,
+  ETHTOOL_LINK_MODE_100baseT1_Full_BIT = 67,
+  ETHTOOL_LINK_MODE_1000baseT1_Full_BIT = 68,
+  ETHTOOL_LINK_MODE_400000baseKR8_Full_BIT = 69,
+  ETHTOOL_LINK_MODE_400000baseSR8_Full_BIT = 70,
+  ETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT = 71,
+  ETHTOOL_LINK_MODE_400000baseDR8_Full_BIT = 72,
+  ETHTOOL_LINK_MODE_400000baseCR8_Full_BIT = 73,
+  ETHTOOL_LINK_MODE_FEC_LLRS_BIT = 74,
+  ETHTOOL_LINK_MODE_100000baseKR_Full_BIT = 75,
+  ETHTOOL_LINK_MODE_100000baseSR_Full_BIT = 76,
+  ETHTOOL_LINK_MODE_100000baseLR_ER_FR_Full_BIT = 77,
+  ETHTOOL_LINK_MODE_100000baseCR_Full_BIT = 78,
+  ETHTOOL_LINK_MODE_100000baseDR_Full_BIT = 79,
+  ETHTOOL_LINK_MODE_200000baseKR2_Full_BIT = 80,
+  ETHTOOL_LINK_MODE_200000baseSR2_Full_BIT = 81,
+  ETHTOOL_LINK_MODE_200000baseLR2_ER2_FR2_Full_BIT = 82,
+  ETHTOOL_LINK_MODE_200000baseDR2_Full_BIT = 83,
+  ETHTOOL_LINK_MODE_200000baseCR2_Full_BIT = 84,
+  ETHTOOL_LINK_MODE_400000baseKR4_Full_BIT = 85,
+  ETHTOOL_LINK_MODE_400000baseSR4_Full_BIT = 86,
+  ETHTOOL_LINK_MODE_400000baseLR4_ER4_FR4_Full_BIT = 87,
+  ETHTOOL_LINK_MODE_400000baseDR4_Full_BIT = 88,
+  ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT = 89,
+  ETHTOOL_LINK_MODE_100baseFX_Half_BIT = 90,
+  ETHTOOL_LINK_MODE_100baseFX_Full_BIT = 91,
+  __ETHTOOL_LINK_MODE_MASK_NBITS
+};
+#define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) (1UL << (ETHTOOL_LINK_MODE_ ##base_name ##_BIT))
+#define SUPPORTED_10baseT_Half __ETHTOOL_LINK_MODE_LEGACY_MASK(10baseT_Half)
+#define SUPPORTED_10baseT_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(10baseT_Full)
+#define SUPPORTED_100baseT_Half __ETHTOOL_LINK_MODE_LEGACY_MASK(100baseT_Half)
+#define SUPPORTED_100baseT_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(100baseT_Full)
+#define SUPPORTED_1000baseT_Half __ETHTOOL_LINK_MODE_LEGACY_MASK(1000baseT_Half)
+#define SUPPORTED_1000baseT_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(1000baseT_Full)
+#define SUPPORTED_Autoneg __ETHTOOL_LINK_MODE_LEGACY_MASK(Autoneg)
+#define SUPPORTED_TP __ETHTOOL_LINK_MODE_LEGACY_MASK(TP)
+#define SUPPORTED_AUI __ETHTOOL_LINK_MODE_LEGACY_MASK(AUI)
+#define SUPPORTED_MII __ETHTOOL_LINK_MODE_LEGACY_MASK(MII)
+#define SUPPORTED_FIBRE __ETHTOOL_LINK_MODE_LEGACY_MASK(FIBRE)
+#define SUPPORTED_BNC __ETHTOOL_LINK_MODE_LEGACY_MASK(BNC)
+#define SUPPORTED_10000baseT_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(10000baseT_Full)
+#define SUPPORTED_Pause __ETHTOOL_LINK_MODE_LEGACY_MASK(Pause)
+#define SUPPORTED_Asym_Pause __ETHTOOL_LINK_MODE_LEGACY_MASK(Asym_Pause)
+#define SUPPORTED_2500baseX_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(2500baseX_Full)
+#define SUPPORTED_Backplane __ETHTOOL_LINK_MODE_LEGACY_MASK(Backplane)
+#define SUPPORTED_1000baseKX_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(1000baseKX_Full)
+#define SUPPORTED_10000baseKX4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(10000baseKX4_Full)
+#define SUPPORTED_10000baseKR_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(10000baseKR_Full)
+#define SUPPORTED_10000baseR_FEC __ETHTOOL_LINK_MODE_LEGACY_MASK(10000baseR_FEC)
+#define SUPPORTED_20000baseMLD2_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(20000baseMLD2_Full)
+#define SUPPORTED_20000baseKR2_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(20000baseKR2_Full)
+#define SUPPORTED_40000baseKR4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(40000baseKR4_Full)
+#define SUPPORTED_40000baseCR4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(40000baseCR4_Full)
+#define SUPPORTED_40000baseSR4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(40000baseSR4_Full)
+#define SUPPORTED_40000baseLR4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(40000baseLR4_Full)
+#define SUPPORTED_56000baseKR4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(56000baseKR4_Full)
+#define SUPPORTED_56000baseCR4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(56000baseCR4_Full)
+#define SUPPORTED_56000baseSR4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(56000baseSR4_Full)
+#define SUPPORTED_56000baseLR4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(56000baseLR4_Full)
+#define ADVERTISED_10baseT_Half __ETHTOOL_LINK_MODE_LEGACY_MASK(10baseT_Half)
+#define ADVERTISED_10baseT_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(10baseT_Full)
+#define ADVERTISED_100baseT_Half __ETHTOOL_LINK_MODE_LEGACY_MASK(100baseT_Half)
+#define ADVERTISED_100baseT_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(100baseT_Full)
+#define ADVERTISED_1000baseT_Half __ETHTOOL_LINK_MODE_LEGACY_MASK(1000baseT_Half)
+#define ADVERTISED_1000baseT_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(1000baseT_Full)
+#define ADVERTISED_Autoneg __ETHTOOL_LINK_MODE_LEGACY_MASK(Autoneg)
+#define ADVERTISED_TP __ETHTOOL_LINK_MODE_LEGACY_MASK(TP)
+#define ADVERTISED_AUI __ETHTOOL_LINK_MODE_LEGACY_MASK(AUI)
+#define ADVERTISED_MII __ETHTOOL_LINK_MODE_LEGACY_MASK(MII)
+#define ADVERTISED_FIBRE __ETHTOOL_LINK_MODE_LEGACY_MASK(FIBRE)
+#define ADVERTISED_BNC __ETHTOOL_LINK_MODE_LEGACY_MASK(BNC)
+#define ADVERTISED_10000baseT_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(10000baseT_Full)
+#define ADVERTISED_Pause __ETHTOOL_LINK_MODE_LEGACY_MASK(Pause)
+#define ADVERTISED_Asym_Pause __ETHTOOL_LINK_MODE_LEGACY_MASK(Asym_Pause)
+#define ADVERTISED_2500baseX_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(2500baseX_Full)
+#define ADVERTISED_Backplane __ETHTOOL_LINK_MODE_LEGACY_MASK(Backplane)
+#define ADVERTISED_1000baseKX_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(1000baseKX_Full)
+#define ADVERTISED_10000baseKX4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(10000baseKX4_Full)
+#define ADVERTISED_10000baseKR_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(10000baseKR_Full)
+#define ADVERTISED_10000baseR_FEC __ETHTOOL_LINK_MODE_LEGACY_MASK(10000baseR_FEC)
+#define ADVERTISED_20000baseMLD2_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(20000baseMLD2_Full)
+#define ADVERTISED_20000baseKR2_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(20000baseKR2_Full)
+#define ADVERTISED_40000baseKR4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(40000baseKR4_Full)
+#define ADVERTISED_40000baseCR4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(40000baseCR4_Full)
+#define ADVERTISED_40000baseSR4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(40000baseSR4_Full)
+#define ADVERTISED_40000baseLR4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(40000baseLR4_Full)
+#define ADVERTISED_56000baseKR4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(56000baseKR4_Full)
+#define ADVERTISED_56000baseCR4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(56000baseCR4_Full)
+#define ADVERTISED_56000baseSR4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(56000baseSR4_Full)
+#define ADVERTISED_56000baseLR4_Full __ETHTOOL_LINK_MODE_LEGACY_MASK(56000baseLR4_Full)
+#define SPEED_10 10
+#define SPEED_100 100
+#define SPEED_1000 1000
+#define SPEED_2500 2500
+#define SPEED_5000 5000
+#define SPEED_10000 10000
+#define SPEED_14000 14000
+#define SPEED_20000 20000
+#define SPEED_25000 25000
+#define SPEED_40000 40000
+#define SPEED_50000 50000
+#define SPEED_56000 56000
+#define SPEED_100000 100000
+#define SPEED_200000 200000
+#define SPEED_400000 400000
+#define SPEED_UNKNOWN - 1
+#define DUPLEX_HALF 0x00
+#define DUPLEX_FULL 0x01
+#define DUPLEX_UNKNOWN 0xff
+#define MASTER_SLAVE_CFG_UNSUPPORTED 0
+#define MASTER_SLAVE_CFG_UNKNOWN 1
+#define MASTER_SLAVE_CFG_MASTER_PREFERRED 2
+#define MASTER_SLAVE_CFG_SLAVE_PREFERRED 3
+#define MASTER_SLAVE_CFG_MASTER_FORCE 4
+#define MASTER_SLAVE_CFG_SLAVE_FORCE 5
+#define MASTER_SLAVE_STATE_UNSUPPORTED 0
+#define MASTER_SLAVE_STATE_UNKNOWN 1
+#define MASTER_SLAVE_STATE_MASTER 2
+#define MASTER_SLAVE_STATE_SLAVE 3
+#define MASTER_SLAVE_STATE_ERR 4
+#define PORT_TP 0x00
+#define PORT_AUI 0x01
+#define PORT_MII 0x02
+#define PORT_FIBRE 0x03
+#define PORT_BNC 0x04
+#define PORT_DA 0x05
+#define PORT_NONE 0xef
+#define PORT_OTHER 0xff
+#define XCVR_INTERNAL 0x00
+#define XCVR_EXTERNAL 0x01
+#define XCVR_DUMMY1 0x02
+#define XCVR_DUMMY2 0x03
+#define XCVR_DUMMY3 0x04
+#define AUTONEG_DISABLE 0x00
+#define AUTONEG_ENABLE 0x01
+#define ETH_TP_MDI_INVALID 0x00
+#define ETH_TP_MDI 0x01
+#define ETH_TP_MDI_X 0x02
+#define ETH_TP_MDI_AUTO 0x03
+#define WAKE_PHY (1 << 0)
+#define WAKE_UCAST (1 << 1)
+#define WAKE_MCAST (1 << 2)
+#define WAKE_BCAST (1 << 3)
+#define WAKE_ARP (1 << 4)
+#define WAKE_MAGIC (1 << 5)
+#define WAKE_MAGICSECURE (1 << 6)
+#define WAKE_FILTER (1 << 7)
+#define WOL_MODE_COUNT 8
+#define TCP_V4_FLOW 0x01
+#define UDP_V4_FLOW 0x02
+#define SCTP_V4_FLOW 0x03
+#define AH_ESP_V4_FLOW 0x04
+#define TCP_V6_FLOW 0x05
+#define UDP_V6_FLOW 0x06
+#define SCTP_V6_FLOW 0x07
+#define AH_ESP_V6_FLOW 0x08
+#define AH_V4_FLOW 0x09
+#define ESP_V4_FLOW 0x0a
+#define AH_V6_FLOW 0x0b
+#define ESP_V6_FLOW 0x0c
+#define IPV4_USER_FLOW 0x0d
+#define IP_USER_FLOW IPV4_USER_FLOW
+#define IPV6_USER_FLOW 0x0e
+#define IPV4_FLOW 0x10
+#define IPV6_FLOW 0x11
+#define ETHER_FLOW 0x12
+#define FLOW_EXT 0x80000000
+#define FLOW_MAC_EXT 0x40000000
+#define FLOW_RSS 0x20000000
+#define RXH_L2DA (1 << 1)
+#define RXH_VLAN (1 << 2)
+#define RXH_L3_PROTO (1 << 3)
+#define RXH_IP_SRC (1 << 4)
+#define RXH_IP_DST (1 << 5)
+#define RXH_L4_B_0_1 (1 << 6)
+#define RXH_L4_B_2_3 (1 << 7)
+#define RXH_DISCARD (1 << 31)
+#define RX_CLS_FLOW_DISC 0xffffffffffffffffULL
+#define RX_CLS_FLOW_WAKE 0xfffffffffffffffeULL
+#define RX_CLS_LOC_SPECIAL 0x80000000
+#define RX_CLS_LOC_ANY 0xffffffff
+#define RX_CLS_LOC_FIRST 0xfffffffe
+#define RX_CLS_LOC_LAST 0xfffffffd
+#define ETH_MODULE_SFF_8079 0x1
+#define ETH_MODULE_SFF_8079_LEN 256
+#define ETH_MODULE_SFF_8472 0x2
+#define ETH_MODULE_SFF_8472_LEN 512
+#define ETH_MODULE_SFF_8636 0x3
+#define ETH_MODULE_SFF_8636_LEN 256
+#define ETH_MODULE_SFF_8436 0x4
+#define ETH_MODULE_SFF_8436_LEN 256
+#define ETH_MODULE_SFF_8636_MAX_LEN 640
+#define ETH_MODULE_SFF_8436_MAX_LEN 640
+enum ethtool_reset_flags {
+  ETH_RESET_MGMT = 1 << 0,
+  ETH_RESET_IRQ = 1 << 1,
+  ETH_RESET_DMA = 1 << 2,
+  ETH_RESET_FILTER = 1 << 3,
+  ETH_RESET_OFFLOAD = 1 << 4,
+  ETH_RESET_MAC = 1 << 5,
+  ETH_RESET_PHY = 1 << 6,
+  ETH_RESET_RAM = 1 << 7,
+  ETH_RESET_AP = 1 << 8,
+  ETH_RESET_DEDICATED = 0x0000ffff,
+  ETH_RESET_ALL = 0xffffffff,
+};
+#define ETH_RESET_SHARED_SHIFT 16
+struct ethtool_link_settings {
+  __u32 cmd;
+  __u32 speed;
+  __u8 duplex;
+  __u8 port;
+  __u8 phy_address;
+  __u8 autoneg;
+  __u8 mdio_support;
+  __u8 eth_tp_mdix;
+  __u8 eth_tp_mdix_ctrl;
+  __s8 link_mode_masks_nwords;
+  __u8 transceiver;
+  __u8 master_slave_cfg;
+  __u8 master_slave_state;
+  __u8 reserved1[1];
+  __u32 reserved[7];
+  __u32 link_mode_masks[0];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/ethtool_netlink.h b/i686-linux-musl/include/linux/ethtool_netlink.h
new file mode 100644
index 0000000..95d69b4
--- /dev/null
+++ b/i686-linux-musl/include/linux/ethtool_netlink.h
@@ -0,0 +1,606 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ETHTOOL_NETLINK_H_
+#define _UAPI_LINUX_ETHTOOL_NETLINK_H_
+#include <linux/ethtool.h>
+enum {
+  ETHTOOL_MSG_USER_NONE,
+  ETHTOOL_MSG_STRSET_GET,
+  ETHTOOL_MSG_LINKINFO_GET,
+  ETHTOOL_MSG_LINKINFO_SET,
+  ETHTOOL_MSG_LINKMODES_GET,
+  ETHTOOL_MSG_LINKMODES_SET,
+  ETHTOOL_MSG_LINKSTATE_GET,
+  ETHTOOL_MSG_DEBUG_GET,
+  ETHTOOL_MSG_DEBUG_SET,
+  ETHTOOL_MSG_WOL_GET,
+  ETHTOOL_MSG_WOL_SET,
+  ETHTOOL_MSG_FEATURES_GET,
+  ETHTOOL_MSG_FEATURES_SET,
+  ETHTOOL_MSG_PRIVFLAGS_GET,
+  ETHTOOL_MSG_PRIVFLAGS_SET,
+  ETHTOOL_MSG_RINGS_GET,
+  ETHTOOL_MSG_RINGS_SET,
+  ETHTOOL_MSG_CHANNELS_GET,
+  ETHTOOL_MSG_CHANNELS_SET,
+  ETHTOOL_MSG_COALESCE_GET,
+  ETHTOOL_MSG_COALESCE_SET,
+  ETHTOOL_MSG_PAUSE_GET,
+  ETHTOOL_MSG_PAUSE_SET,
+  ETHTOOL_MSG_EEE_GET,
+  ETHTOOL_MSG_EEE_SET,
+  ETHTOOL_MSG_TSINFO_GET,
+  ETHTOOL_MSG_CABLE_TEST_ACT,
+  ETHTOOL_MSG_CABLE_TEST_TDR_ACT,
+  ETHTOOL_MSG_TUNNEL_INFO_GET,
+  ETHTOOL_MSG_FEC_GET,
+  ETHTOOL_MSG_FEC_SET,
+  ETHTOOL_MSG_MODULE_EEPROM_GET,
+  ETHTOOL_MSG_STATS_GET,
+  ETHTOOL_MSG_PHC_VCLOCKS_GET,
+  ETHTOOL_MSG_MODULE_GET,
+  ETHTOOL_MSG_MODULE_SET,
+  __ETHTOOL_MSG_USER_CNT,
+  ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1
+};
+enum {
+  ETHTOOL_MSG_KERNEL_NONE,
+  ETHTOOL_MSG_STRSET_GET_REPLY,
+  ETHTOOL_MSG_LINKINFO_GET_REPLY,
+  ETHTOOL_MSG_LINKINFO_NTF,
+  ETHTOOL_MSG_LINKMODES_GET_REPLY,
+  ETHTOOL_MSG_LINKMODES_NTF,
+  ETHTOOL_MSG_LINKSTATE_GET_REPLY,
+  ETHTOOL_MSG_DEBUG_GET_REPLY,
+  ETHTOOL_MSG_DEBUG_NTF,
+  ETHTOOL_MSG_WOL_GET_REPLY,
+  ETHTOOL_MSG_WOL_NTF,
+  ETHTOOL_MSG_FEATURES_GET_REPLY,
+  ETHTOOL_MSG_FEATURES_SET_REPLY,
+  ETHTOOL_MSG_FEATURES_NTF,
+  ETHTOOL_MSG_PRIVFLAGS_GET_REPLY,
+  ETHTOOL_MSG_PRIVFLAGS_NTF,
+  ETHTOOL_MSG_RINGS_GET_REPLY,
+  ETHTOOL_MSG_RINGS_NTF,
+  ETHTOOL_MSG_CHANNELS_GET_REPLY,
+  ETHTOOL_MSG_CHANNELS_NTF,
+  ETHTOOL_MSG_COALESCE_GET_REPLY,
+  ETHTOOL_MSG_COALESCE_NTF,
+  ETHTOOL_MSG_PAUSE_GET_REPLY,
+  ETHTOOL_MSG_PAUSE_NTF,
+  ETHTOOL_MSG_EEE_GET_REPLY,
+  ETHTOOL_MSG_EEE_NTF,
+  ETHTOOL_MSG_TSINFO_GET_REPLY,
+  ETHTOOL_MSG_CABLE_TEST_NTF,
+  ETHTOOL_MSG_CABLE_TEST_TDR_NTF,
+  ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY,
+  ETHTOOL_MSG_FEC_GET_REPLY,
+  ETHTOOL_MSG_FEC_NTF,
+  ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY,
+  ETHTOOL_MSG_STATS_GET_REPLY,
+  ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY,
+  ETHTOOL_MSG_MODULE_GET_REPLY,
+  ETHTOOL_MSG_MODULE_NTF,
+  __ETHTOOL_MSG_KERNEL_CNT,
+  ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1
+};
+#define ETHTOOL_FLAG_COMPACT_BITSETS (1 << 0)
+#define ETHTOOL_FLAG_OMIT_REPLY (1 << 1)
+#define ETHTOOL_FLAG_STATS (1 << 2)
+#define ETHTOOL_FLAG_ALL (ETHTOOL_FLAG_COMPACT_BITSETS | ETHTOOL_FLAG_OMIT_REPLY | ETHTOOL_FLAG_STATS)
+enum {
+  ETHTOOL_A_HEADER_UNSPEC,
+  ETHTOOL_A_HEADER_DEV_INDEX,
+  ETHTOOL_A_HEADER_DEV_NAME,
+  ETHTOOL_A_HEADER_FLAGS,
+  __ETHTOOL_A_HEADER_CNT,
+  ETHTOOL_A_HEADER_MAX = __ETHTOOL_A_HEADER_CNT - 1
+};
+enum {
+  ETHTOOL_A_BITSET_BIT_UNSPEC,
+  ETHTOOL_A_BITSET_BIT_INDEX,
+  ETHTOOL_A_BITSET_BIT_NAME,
+  ETHTOOL_A_BITSET_BIT_VALUE,
+  __ETHTOOL_A_BITSET_BIT_CNT,
+  ETHTOOL_A_BITSET_BIT_MAX = __ETHTOOL_A_BITSET_BIT_CNT - 1
+};
+enum {
+  ETHTOOL_A_BITSET_BITS_UNSPEC,
+  ETHTOOL_A_BITSET_BITS_BIT,
+  __ETHTOOL_A_BITSET_BITS_CNT,
+  ETHTOOL_A_BITSET_BITS_MAX = __ETHTOOL_A_BITSET_BITS_CNT - 1
+};
+enum {
+  ETHTOOL_A_BITSET_UNSPEC,
+  ETHTOOL_A_BITSET_NOMASK,
+  ETHTOOL_A_BITSET_SIZE,
+  ETHTOOL_A_BITSET_BITS,
+  ETHTOOL_A_BITSET_VALUE,
+  ETHTOOL_A_BITSET_MASK,
+  __ETHTOOL_A_BITSET_CNT,
+  ETHTOOL_A_BITSET_MAX = __ETHTOOL_A_BITSET_CNT - 1
+};
+enum {
+  ETHTOOL_A_STRING_UNSPEC,
+  ETHTOOL_A_STRING_INDEX,
+  ETHTOOL_A_STRING_VALUE,
+  __ETHTOOL_A_STRING_CNT,
+  ETHTOOL_A_STRING_MAX = __ETHTOOL_A_STRING_CNT - 1
+};
+enum {
+  ETHTOOL_A_STRINGS_UNSPEC,
+  ETHTOOL_A_STRINGS_STRING,
+  __ETHTOOL_A_STRINGS_CNT,
+  ETHTOOL_A_STRINGS_MAX = __ETHTOOL_A_STRINGS_CNT - 1
+};
+enum {
+  ETHTOOL_A_STRINGSET_UNSPEC,
+  ETHTOOL_A_STRINGSET_ID,
+  ETHTOOL_A_STRINGSET_COUNT,
+  ETHTOOL_A_STRINGSET_STRINGS,
+  __ETHTOOL_A_STRINGSET_CNT,
+  ETHTOOL_A_STRINGSET_MAX = __ETHTOOL_A_STRINGSET_CNT - 1
+};
+enum {
+  ETHTOOL_A_STRINGSETS_UNSPEC,
+  ETHTOOL_A_STRINGSETS_STRINGSET,
+  __ETHTOOL_A_STRINGSETS_CNT,
+  ETHTOOL_A_STRINGSETS_MAX = __ETHTOOL_A_STRINGSETS_CNT - 1
+};
+enum {
+  ETHTOOL_A_STRSET_UNSPEC,
+  ETHTOOL_A_STRSET_HEADER,
+  ETHTOOL_A_STRSET_STRINGSETS,
+  ETHTOOL_A_STRSET_COUNTS_ONLY,
+  __ETHTOOL_A_STRSET_CNT,
+  ETHTOOL_A_STRSET_MAX = __ETHTOOL_A_STRSET_CNT - 1
+};
+enum {
+  ETHTOOL_A_LINKINFO_UNSPEC,
+  ETHTOOL_A_LINKINFO_HEADER,
+  ETHTOOL_A_LINKINFO_PORT,
+  ETHTOOL_A_LINKINFO_PHYADDR,
+  ETHTOOL_A_LINKINFO_TP_MDIX,
+  ETHTOOL_A_LINKINFO_TP_MDIX_CTRL,
+  ETHTOOL_A_LINKINFO_TRANSCEIVER,
+  __ETHTOOL_A_LINKINFO_CNT,
+  ETHTOOL_A_LINKINFO_MAX = __ETHTOOL_A_LINKINFO_CNT - 1
+};
+enum {
+  ETHTOOL_A_LINKMODES_UNSPEC,
+  ETHTOOL_A_LINKMODES_HEADER,
+  ETHTOOL_A_LINKMODES_AUTONEG,
+  ETHTOOL_A_LINKMODES_OURS,
+  ETHTOOL_A_LINKMODES_PEER,
+  ETHTOOL_A_LINKMODES_SPEED,
+  ETHTOOL_A_LINKMODES_DUPLEX,
+  ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG,
+  ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE,
+  ETHTOOL_A_LINKMODES_LANES,
+  __ETHTOOL_A_LINKMODES_CNT,
+  ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1
+};
+enum {
+  ETHTOOL_A_LINKSTATE_UNSPEC,
+  ETHTOOL_A_LINKSTATE_HEADER,
+  ETHTOOL_A_LINKSTATE_LINK,
+  ETHTOOL_A_LINKSTATE_SQI,
+  ETHTOOL_A_LINKSTATE_SQI_MAX,
+  ETHTOOL_A_LINKSTATE_EXT_STATE,
+  ETHTOOL_A_LINKSTATE_EXT_SUBSTATE,
+  __ETHTOOL_A_LINKSTATE_CNT,
+  ETHTOOL_A_LINKSTATE_MAX = __ETHTOOL_A_LINKSTATE_CNT - 1
+};
+enum {
+  ETHTOOL_A_DEBUG_UNSPEC,
+  ETHTOOL_A_DEBUG_HEADER,
+  ETHTOOL_A_DEBUG_MSGMASK,
+  __ETHTOOL_A_DEBUG_CNT,
+  ETHTOOL_A_DEBUG_MAX = __ETHTOOL_A_DEBUG_CNT - 1
+};
+enum {
+  ETHTOOL_A_WOL_UNSPEC,
+  ETHTOOL_A_WOL_HEADER,
+  ETHTOOL_A_WOL_MODES,
+  ETHTOOL_A_WOL_SOPASS,
+  __ETHTOOL_A_WOL_CNT,
+  ETHTOOL_A_WOL_MAX = __ETHTOOL_A_WOL_CNT - 1
+};
+enum {
+  ETHTOOL_A_FEATURES_UNSPEC,
+  ETHTOOL_A_FEATURES_HEADER,
+  ETHTOOL_A_FEATURES_HW,
+  ETHTOOL_A_FEATURES_WANTED,
+  ETHTOOL_A_FEATURES_ACTIVE,
+  ETHTOOL_A_FEATURES_NOCHANGE,
+  __ETHTOOL_A_FEATURES_CNT,
+  ETHTOOL_A_FEATURES_MAX = __ETHTOOL_A_FEATURES_CNT - 1
+};
+enum {
+  ETHTOOL_A_PRIVFLAGS_UNSPEC,
+  ETHTOOL_A_PRIVFLAGS_HEADER,
+  ETHTOOL_A_PRIVFLAGS_FLAGS,
+  __ETHTOOL_A_PRIVFLAGS_CNT,
+  ETHTOOL_A_PRIVFLAGS_MAX = __ETHTOOL_A_PRIVFLAGS_CNT - 1
+};
+enum {
+  ETHTOOL_A_RINGS_UNSPEC,
+  ETHTOOL_A_RINGS_HEADER,
+  ETHTOOL_A_RINGS_RX_MAX,
+  ETHTOOL_A_RINGS_RX_MINI_MAX,
+  ETHTOOL_A_RINGS_RX_JUMBO_MAX,
+  ETHTOOL_A_RINGS_TX_MAX,
+  ETHTOOL_A_RINGS_RX,
+  ETHTOOL_A_RINGS_RX_MINI,
+  ETHTOOL_A_RINGS_RX_JUMBO,
+  ETHTOOL_A_RINGS_TX,
+  __ETHTOOL_A_RINGS_CNT,
+  ETHTOOL_A_RINGS_MAX = (__ETHTOOL_A_RINGS_CNT - 1)
+};
+enum {
+  ETHTOOL_A_CHANNELS_UNSPEC,
+  ETHTOOL_A_CHANNELS_HEADER,
+  ETHTOOL_A_CHANNELS_RX_MAX,
+  ETHTOOL_A_CHANNELS_TX_MAX,
+  ETHTOOL_A_CHANNELS_OTHER_MAX,
+  ETHTOOL_A_CHANNELS_COMBINED_MAX,
+  ETHTOOL_A_CHANNELS_RX_COUNT,
+  ETHTOOL_A_CHANNELS_TX_COUNT,
+  ETHTOOL_A_CHANNELS_OTHER_COUNT,
+  ETHTOOL_A_CHANNELS_COMBINED_COUNT,
+  __ETHTOOL_A_CHANNELS_CNT,
+  ETHTOOL_A_CHANNELS_MAX = (__ETHTOOL_A_CHANNELS_CNT - 1)
+};
+enum {
+  ETHTOOL_A_COALESCE_UNSPEC,
+  ETHTOOL_A_COALESCE_HEADER,
+  ETHTOOL_A_COALESCE_RX_USECS,
+  ETHTOOL_A_COALESCE_RX_MAX_FRAMES,
+  ETHTOOL_A_COALESCE_RX_USECS_IRQ,
+  ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ,
+  ETHTOOL_A_COALESCE_TX_USECS,
+  ETHTOOL_A_COALESCE_TX_MAX_FRAMES,
+  ETHTOOL_A_COALESCE_TX_USECS_IRQ,
+  ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ,
+  ETHTOOL_A_COALESCE_STATS_BLOCK_USECS,
+  ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX,
+  ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX,
+  ETHTOOL_A_COALESCE_PKT_RATE_LOW,
+  ETHTOOL_A_COALESCE_RX_USECS_LOW,
+  ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW,
+  ETHTOOL_A_COALESCE_TX_USECS_LOW,
+  ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW,
+  ETHTOOL_A_COALESCE_PKT_RATE_HIGH,
+  ETHTOOL_A_COALESCE_RX_USECS_HIGH,
+  ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH,
+  ETHTOOL_A_COALESCE_TX_USECS_HIGH,
+  ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH,
+  ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL,
+  ETHTOOL_A_COALESCE_USE_CQE_MODE_TX,
+  ETHTOOL_A_COALESCE_USE_CQE_MODE_RX,
+  __ETHTOOL_A_COALESCE_CNT,
+  ETHTOOL_A_COALESCE_MAX = (__ETHTOOL_A_COALESCE_CNT - 1)
+};
+enum {
+  ETHTOOL_A_PAUSE_UNSPEC,
+  ETHTOOL_A_PAUSE_HEADER,
+  ETHTOOL_A_PAUSE_AUTONEG,
+  ETHTOOL_A_PAUSE_RX,
+  ETHTOOL_A_PAUSE_TX,
+  ETHTOOL_A_PAUSE_STATS,
+  __ETHTOOL_A_PAUSE_CNT,
+  ETHTOOL_A_PAUSE_MAX = (__ETHTOOL_A_PAUSE_CNT - 1)
+};
+enum {
+  ETHTOOL_A_PAUSE_STAT_UNSPEC,
+  ETHTOOL_A_PAUSE_STAT_PAD,
+  ETHTOOL_A_PAUSE_STAT_TX_FRAMES,
+  ETHTOOL_A_PAUSE_STAT_RX_FRAMES,
+  __ETHTOOL_A_PAUSE_STAT_CNT,
+  ETHTOOL_A_PAUSE_STAT_MAX = (__ETHTOOL_A_PAUSE_STAT_CNT - 1)
+};
+enum {
+  ETHTOOL_A_EEE_UNSPEC,
+  ETHTOOL_A_EEE_HEADER,
+  ETHTOOL_A_EEE_MODES_OURS,
+  ETHTOOL_A_EEE_MODES_PEER,
+  ETHTOOL_A_EEE_ACTIVE,
+  ETHTOOL_A_EEE_ENABLED,
+  ETHTOOL_A_EEE_TX_LPI_ENABLED,
+  ETHTOOL_A_EEE_TX_LPI_TIMER,
+  __ETHTOOL_A_EEE_CNT,
+  ETHTOOL_A_EEE_MAX = (__ETHTOOL_A_EEE_CNT - 1)
+};
+enum {
+  ETHTOOL_A_TSINFO_UNSPEC,
+  ETHTOOL_A_TSINFO_HEADER,
+  ETHTOOL_A_TSINFO_TIMESTAMPING,
+  ETHTOOL_A_TSINFO_TX_TYPES,
+  ETHTOOL_A_TSINFO_RX_FILTERS,
+  ETHTOOL_A_TSINFO_PHC_INDEX,
+  __ETHTOOL_A_TSINFO_CNT,
+  ETHTOOL_A_TSINFO_MAX = (__ETHTOOL_A_TSINFO_CNT - 1)
+};
+enum {
+  ETHTOOL_A_PHC_VCLOCKS_UNSPEC,
+  ETHTOOL_A_PHC_VCLOCKS_HEADER,
+  ETHTOOL_A_PHC_VCLOCKS_NUM,
+  ETHTOOL_A_PHC_VCLOCKS_INDEX,
+  __ETHTOOL_A_PHC_VCLOCKS_CNT,
+  ETHTOOL_A_PHC_VCLOCKS_MAX = (__ETHTOOL_A_PHC_VCLOCKS_CNT - 1)
+};
+enum {
+  ETHTOOL_A_CABLE_TEST_UNSPEC,
+  ETHTOOL_A_CABLE_TEST_HEADER,
+  __ETHTOOL_A_CABLE_TEST_CNT,
+  ETHTOOL_A_CABLE_TEST_MAX = __ETHTOOL_A_CABLE_TEST_CNT - 1
+};
+enum {
+  ETHTOOL_A_CABLE_RESULT_CODE_UNSPEC,
+  ETHTOOL_A_CABLE_RESULT_CODE_OK,
+  ETHTOOL_A_CABLE_RESULT_CODE_OPEN,
+  ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT,
+  ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT,
+};
+enum {
+  ETHTOOL_A_CABLE_PAIR_A,
+  ETHTOOL_A_CABLE_PAIR_B,
+  ETHTOOL_A_CABLE_PAIR_C,
+  ETHTOOL_A_CABLE_PAIR_D,
+};
+enum {
+  ETHTOOL_A_CABLE_RESULT_UNSPEC,
+  ETHTOOL_A_CABLE_RESULT_PAIR,
+  ETHTOOL_A_CABLE_RESULT_CODE,
+  __ETHTOOL_A_CABLE_RESULT_CNT,
+  ETHTOOL_A_CABLE_RESULT_MAX = (__ETHTOOL_A_CABLE_RESULT_CNT - 1)
+};
+enum {
+  ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC,
+  ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR,
+  ETHTOOL_A_CABLE_FAULT_LENGTH_CM,
+  __ETHTOOL_A_CABLE_FAULT_LENGTH_CNT,
+  ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = (__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT - 1)
+};
+enum {
+  ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC,
+  ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED,
+  ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED
+};
+enum {
+  ETHTOOL_A_CABLE_NEST_UNSPEC,
+  ETHTOOL_A_CABLE_NEST_RESULT,
+  ETHTOOL_A_CABLE_NEST_FAULT_LENGTH,
+  __ETHTOOL_A_CABLE_NEST_CNT,
+  ETHTOOL_A_CABLE_NEST_MAX = (__ETHTOOL_A_CABLE_NEST_CNT - 1)
+};
+enum {
+  ETHTOOL_A_CABLE_TEST_NTF_UNSPEC,
+  ETHTOOL_A_CABLE_TEST_NTF_HEADER,
+  ETHTOOL_A_CABLE_TEST_NTF_STATUS,
+  ETHTOOL_A_CABLE_TEST_NTF_NEST,
+  __ETHTOOL_A_CABLE_TEST_NTF_CNT,
+  ETHTOOL_A_CABLE_TEST_NTF_MAX = (__ETHTOOL_A_CABLE_TEST_NTF_CNT - 1)
+};
+enum {
+  ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC,
+  ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST,
+  ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST,
+  ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP,
+  ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR,
+  __ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT,
+  ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX = __ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT - 1
+};
+enum {
+  ETHTOOL_A_CABLE_TEST_TDR_UNSPEC,
+  ETHTOOL_A_CABLE_TEST_TDR_HEADER,
+  ETHTOOL_A_CABLE_TEST_TDR_CFG,
+  __ETHTOOL_A_CABLE_TEST_TDR_CNT,
+  ETHTOOL_A_CABLE_TEST_TDR_MAX = __ETHTOOL_A_CABLE_TEST_TDR_CNT - 1
+};
+enum {
+  ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC,
+  ETHTOOL_A_CABLE_AMPLITUDE_PAIR,
+  ETHTOOL_A_CABLE_AMPLITUDE_mV,
+  __ETHTOOL_A_CABLE_AMPLITUDE_CNT,
+  ETHTOOL_A_CABLE_AMPLITUDE_MAX = (__ETHTOOL_A_CABLE_AMPLITUDE_CNT - 1)
+};
+enum {
+  ETHTOOL_A_CABLE_PULSE_UNSPEC,
+  ETHTOOL_A_CABLE_PULSE_mV,
+  __ETHTOOL_A_CABLE_PULSE_CNT,
+  ETHTOOL_A_CABLE_PULSE_MAX = (__ETHTOOL_A_CABLE_PULSE_CNT - 1)
+};
+enum {
+  ETHTOOL_A_CABLE_STEP_UNSPEC,
+  ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE,
+  ETHTOOL_A_CABLE_STEP_LAST_DISTANCE,
+  ETHTOOL_A_CABLE_STEP_STEP_DISTANCE,
+  __ETHTOOL_A_CABLE_STEP_CNT,
+  ETHTOOL_A_CABLE_STEP_MAX = (__ETHTOOL_A_CABLE_STEP_CNT - 1)
+};
+enum {
+  ETHTOOL_A_CABLE_TDR_NEST_UNSPEC,
+  ETHTOOL_A_CABLE_TDR_NEST_STEP,
+  ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE,
+  ETHTOOL_A_CABLE_TDR_NEST_PULSE,
+  __ETHTOOL_A_CABLE_TDR_NEST_CNT,
+  ETHTOOL_A_CABLE_TDR_NEST_MAX = (__ETHTOOL_A_CABLE_TDR_NEST_CNT - 1)
+};
+enum {
+  ETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC,
+  ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER,
+  ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS,
+  ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST,
+  __ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT,
+  ETHTOOL_A_CABLE_TEST_TDR_NTF_MAX = __ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT - 1
+};
+enum {
+  ETHTOOL_UDP_TUNNEL_TYPE_VXLAN,
+  ETHTOOL_UDP_TUNNEL_TYPE_GENEVE,
+  ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE,
+  __ETHTOOL_UDP_TUNNEL_TYPE_CNT
+};
+enum {
+  ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC,
+  ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT,
+  ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE,
+  __ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT,
+  ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = (__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT - 1)
+};
+enum {
+  ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC,
+  ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE,
+  ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES,
+  ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY,
+  __ETHTOOL_A_TUNNEL_UDP_TABLE_CNT,
+  ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = (__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT - 1)
+};
+enum {
+  ETHTOOL_A_TUNNEL_UDP_UNSPEC,
+  ETHTOOL_A_TUNNEL_UDP_TABLE,
+  __ETHTOOL_A_TUNNEL_UDP_CNT,
+  ETHTOOL_A_TUNNEL_UDP_MAX = (__ETHTOOL_A_TUNNEL_UDP_CNT - 1)
+};
+enum {
+  ETHTOOL_A_TUNNEL_INFO_UNSPEC,
+  ETHTOOL_A_TUNNEL_INFO_HEADER,
+  ETHTOOL_A_TUNNEL_INFO_UDP_PORTS,
+  __ETHTOOL_A_TUNNEL_INFO_CNT,
+  ETHTOOL_A_TUNNEL_INFO_MAX = (__ETHTOOL_A_TUNNEL_INFO_CNT - 1)
+};
+enum {
+  ETHTOOL_A_FEC_UNSPEC,
+  ETHTOOL_A_FEC_HEADER,
+  ETHTOOL_A_FEC_MODES,
+  ETHTOOL_A_FEC_AUTO,
+  ETHTOOL_A_FEC_ACTIVE,
+  ETHTOOL_A_FEC_STATS,
+  __ETHTOOL_A_FEC_CNT,
+  ETHTOOL_A_FEC_MAX = (__ETHTOOL_A_FEC_CNT - 1)
+};
+enum {
+  ETHTOOL_A_FEC_STAT_UNSPEC,
+  ETHTOOL_A_FEC_STAT_PAD,
+  ETHTOOL_A_FEC_STAT_CORRECTED,
+  ETHTOOL_A_FEC_STAT_UNCORR,
+  ETHTOOL_A_FEC_STAT_CORR_BITS,
+  __ETHTOOL_A_FEC_STAT_CNT,
+  ETHTOOL_A_FEC_STAT_MAX = (__ETHTOOL_A_FEC_STAT_CNT - 1)
+};
+enum {
+  ETHTOOL_A_MODULE_EEPROM_UNSPEC,
+  ETHTOOL_A_MODULE_EEPROM_HEADER,
+  ETHTOOL_A_MODULE_EEPROM_OFFSET,
+  ETHTOOL_A_MODULE_EEPROM_LENGTH,
+  ETHTOOL_A_MODULE_EEPROM_PAGE,
+  ETHTOOL_A_MODULE_EEPROM_BANK,
+  ETHTOOL_A_MODULE_EEPROM_I2C_ADDRESS,
+  ETHTOOL_A_MODULE_EEPROM_DATA,
+  __ETHTOOL_A_MODULE_EEPROM_CNT,
+  ETHTOOL_A_MODULE_EEPROM_MAX = (__ETHTOOL_A_MODULE_EEPROM_CNT - 1)
+};
+enum {
+  ETHTOOL_A_STATS_UNSPEC,
+  ETHTOOL_A_STATS_PAD,
+  ETHTOOL_A_STATS_HEADER,
+  ETHTOOL_A_STATS_GROUPS,
+  ETHTOOL_A_STATS_GRP,
+  __ETHTOOL_A_STATS_CNT,
+  ETHTOOL_A_STATS_MAX = (__ETHTOOL_A_STATS_CNT - 1)
+};
+enum {
+  ETHTOOL_STATS_ETH_PHY,
+  ETHTOOL_STATS_ETH_MAC,
+  ETHTOOL_STATS_ETH_CTRL,
+  ETHTOOL_STATS_RMON,
+  __ETHTOOL_STATS_CNT
+};
+enum {
+  ETHTOOL_A_STATS_GRP_UNSPEC,
+  ETHTOOL_A_STATS_GRP_PAD,
+  ETHTOOL_A_STATS_GRP_ID,
+  ETHTOOL_A_STATS_GRP_SS_ID,
+  ETHTOOL_A_STATS_GRP_STAT,
+  ETHTOOL_A_STATS_GRP_HIST_RX,
+  ETHTOOL_A_STATS_GRP_HIST_TX,
+  ETHTOOL_A_STATS_GRP_HIST_BKT_LOW,
+  ETHTOOL_A_STATS_GRP_HIST_BKT_HI,
+  ETHTOOL_A_STATS_GRP_HIST_VAL,
+  __ETHTOOL_A_STATS_GRP_CNT,
+  ETHTOOL_A_STATS_GRP_MAX = (__ETHTOOL_A_STATS_CNT - 1)
+};
+enum {
+  ETHTOOL_A_STATS_ETH_PHY_5_SYM_ERR,
+  __ETHTOOL_A_STATS_ETH_PHY_CNT,
+  ETHTOOL_A_STATS_ETH_PHY_MAX = (__ETHTOOL_A_STATS_ETH_PHY_CNT - 1)
+};
+enum {
+  ETHTOOL_A_STATS_ETH_MAC_2_TX_PKT,
+  ETHTOOL_A_STATS_ETH_MAC_3_SINGLE_COL,
+  ETHTOOL_A_STATS_ETH_MAC_4_MULTI_COL,
+  ETHTOOL_A_STATS_ETH_MAC_5_RX_PKT,
+  ETHTOOL_A_STATS_ETH_MAC_6_FCS_ERR,
+  ETHTOOL_A_STATS_ETH_MAC_7_ALIGN_ERR,
+  ETHTOOL_A_STATS_ETH_MAC_8_TX_BYTES,
+  ETHTOOL_A_STATS_ETH_MAC_9_TX_DEFER,
+  ETHTOOL_A_STATS_ETH_MAC_10_LATE_COL,
+  ETHTOOL_A_STATS_ETH_MAC_11_XS_COL,
+  ETHTOOL_A_STATS_ETH_MAC_12_TX_INT_ERR,
+  ETHTOOL_A_STATS_ETH_MAC_13_CS_ERR,
+  ETHTOOL_A_STATS_ETH_MAC_14_RX_BYTES,
+  ETHTOOL_A_STATS_ETH_MAC_15_RX_INT_ERR,
+  ETHTOOL_A_STATS_ETH_MAC_18_TX_MCAST,
+  ETHTOOL_A_STATS_ETH_MAC_19_TX_BCAST,
+  ETHTOOL_A_STATS_ETH_MAC_20_XS_DEFER,
+  ETHTOOL_A_STATS_ETH_MAC_21_RX_MCAST,
+  ETHTOOL_A_STATS_ETH_MAC_22_RX_BCAST,
+  ETHTOOL_A_STATS_ETH_MAC_23_IR_LEN_ERR,
+  ETHTOOL_A_STATS_ETH_MAC_24_OOR_LEN,
+  ETHTOOL_A_STATS_ETH_MAC_25_TOO_LONG_ERR,
+  __ETHTOOL_A_STATS_ETH_MAC_CNT,
+  ETHTOOL_A_STATS_ETH_MAC_MAX = (__ETHTOOL_A_STATS_ETH_MAC_CNT - 1)
+};
+enum {
+  ETHTOOL_A_STATS_ETH_CTRL_3_TX,
+  ETHTOOL_A_STATS_ETH_CTRL_4_RX,
+  ETHTOOL_A_STATS_ETH_CTRL_5_RX_UNSUP,
+  __ETHTOOL_A_STATS_ETH_CTRL_CNT,
+  ETHTOOL_A_STATS_ETH_CTRL_MAX = (__ETHTOOL_A_STATS_ETH_CTRL_CNT - 1)
+};
+enum {
+  ETHTOOL_A_STATS_RMON_UNDERSIZE,
+  ETHTOOL_A_STATS_RMON_OVERSIZE,
+  ETHTOOL_A_STATS_RMON_FRAG,
+  ETHTOOL_A_STATS_RMON_JABBER,
+  __ETHTOOL_A_STATS_RMON_CNT,
+  ETHTOOL_A_STATS_RMON_MAX = (__ETHTOOL_A_STATS_RMON_CNT - 1)
+};
+enum {
+  ETHTOOL_A_MODULE_UNSPEC,
+  ETHTOOL_A_MODULE_HEADER,
+  ETHTOOL_A_MODULE_POWER_MODE_POLICY,
+  ETHTOOL_A_MODULE_POWER_MODE,
+  __ETHTOOL_A_MODULE_CNT,
+  ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
+};
+#define ETHTOOL_GENL_NAME "ethtool"
+#define ETHTOOL_GENL_VERSION 1
+#define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
+#endif
diff --git a/i686-linux-musl/include/linux/eventpoll.h b/i686-linux-musl/include/linux/eventpoll.h
new file mode 100644
index 0000000..d2601e5
--- /dev/null
+++ b/i686-linux-musl/include/linux/eventpoll.h
@@ -0,0 +1,49 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_EVENTPOLL_H
+#define _UAPI_LINUX_EVENTPOLL_H
+#include <bits/epoll_event.h>
+#include <linux/fcntl.h>
+#include <linux/types.h>
+#define EPOLL_CLOEXEC O_CLOEXEC
+#define EPOLL_CTL_ADD 1
+#define EPOLL_CTL_DEL 2
+#define EPOLL_CTL_MOD 3
+#define EPOLLIN (__force __poll_t) 0x00000001
+#define EPOLLPRI (__force __poll_t) 0x00000002
+#define EPOLLOUT (__force __poll_t) 0x00000004
+#define EPOLLERR (__force __poll_t) 0x00000008
+#define EPOLLHUP (__force __poll_t) 0x00000010
+#define EPOLLNVAL (__force __poll_t) 0x00000020
+#define EPOLLRDNORM (__force __poll_t) 0x00000040
+#define EPOLLRDBAND (__force __poll_t) 0x00000080
+#define EPOLLWRNORM (__force __poll_t) 0x00000100
+#define EPOLLWRBAND (__force __poll_t) 0x00000200
+#define EPOLLMSG (__force __poll_t) 0x00000400
+#define EPOLLRDHUP (__force __poll_t) 0x00002000
+#define EPOLLEXCLUSIVE ((__force __poll_t) (1U << 28))
+#define EPOLLWAKEUP ((__force __poll_t) (1U << 29))
+#define EPOLLONESHOT ((__force __poll_t) (1U << 30))
+#define EPOLLET ((__force __poll_t) (1U << 31))
+#ifdef __x86_64__
+#define EPOLL_PACKED __attribute__((packed))
+#else
+#define EPOLL_PACKED
+#endif
+#endif
diff --git a/i686-linux-musl/include/linux/f2fs.h b/i686-linux-musl/include/linux/f2fs.h
new file mode 100644
index 0000000..76da8f6
--- /dev/null
+++ b/i686-linux-musl/include/linux/f2fs.h
@@ -0,0 +1,85 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_F2FS_H
+#define _UAPI_LINUX_F2FS_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define F2FS_IOCTL_MAGIC 0xf5
+#define F2FS_IOC_START_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 1)
+#define F2FS_IOC_COMMIT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 2)
+#define F2FS_IOC_START_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 3)
+#define F2FS_IOC_RELEASE_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 4)
+#define F2FS_IOC_ABORT_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
+#define F2FS_IOC_GARBAGE_COLLECT _IOW(F2FS_IOCTL_MAGIC, 6, __u32)
+#define F2FS_IOC_WRITE_CHECKPOINT _IO(F2FS_IOCTL_MAGIC, 7)
+#define F2FS_IOC_DEFRAGMENT _IOWR(F2FS_IOCTL_MAGIC, 8, struct f2fs_defragment)
+#define F2FS_IOC_MOVE_RANGE _IOWR(F2FS_IOCTL_MAGIC, 9, struct f2fs_move_range)
+#define F2FS_IOC_FLUSH_DEVICE _IOW(F2FS_IOCTL_MAGIC, 10, struct f2fs_flush_device)
+#define F2FS_IOC_GARBAGE_COLLECT_RANGE _IOW(F2FS_IOCTL_MAGIC, 11, struct f2fs_gc_range)
+#define F2FS_IOC_GET_FEATURES _IOR(F2FS_IOCTL_MAGIC, 12, __u32)
+#define F2FS_IOC_SET_PIN_FILE _IOW(F2FS_IOCTL_MAGIC, 13, __u32)
+#define F2FS_IOC_GET_PIN_FILE _IOR(F2FS_IOCTL_MAGIC, 14, __u32)
+#define F2FS_IOC_PRECACHE_EXTENTS _IO(F2FS_IOCTL_MAGIC, 15)
+#define F2FS_IOC_RESIZE_FS _IOW(F2FS_IOCTL_MAGIC, 16, __u64)
+#define F2FS_IOC_GET_COMPRESS_BLOCKS _IOR(F2FS_IOCTL_MAGIC, 17, __u64)
+#define F2FS_IOC_RELEASE_COMPRESS_BLOCKS _IOR(F2FS_IOCTL_MAGIC, 18, __u64)
+#define F2FS_IOC_RESERVE_COMPRESS_BLOCKS _IOR(F2FS_IOCTL_MAGIC, 19, __u64)
+#define F2FS_IOC_SEC_TRIM_FILE _IOW(F2FS_IOCTL_MAGIC, 20, struct f2fs_sectrim_range)
+#define F2FS_IOC_GET_COMPRESS_OPTION _IOR(F2FS_IOCTL_MAGIC, 21, struct f2fs_comp_option)
+#define F2FS_IOC_SET_COMPRESS_OPTION _IOW(F2FS_IOCTL_MAGIC, 22, struct f2fs_comp_option)
+#define F2FS_IOC_DECOMPRESS_FILE _IO(F2FS_IOCTL_MAGIC, 23)
+#define F2FS_IOC_COMPRESS_FILE _IO(F2FS_IOCTL_MAGIC, 24)
+#define F2FS_IOC_SHUTDOWN _IOR('X', 125, __u32)
+#define F2FS_GOING_DOWN_FULLSYNC 0x0
+#define F2FS_GOING_DOWN_METASYNC 0x1
+#define F2FS_GOING_DOWN_NOSYNC 0x2
+#define F2FS_GOING_DOWN_METAFLUSH 0x3
+#define F2FS_GOING_DOWN_NEED_FSCK 0x4
+#define F2FS_TRIM_FILE_DISCARD 0x1
+#define F2FS_TRIM_FILE_ZEROOUT 0x2
+#define F2FS_TRIM_FILE_MASK 0x3
+struct f2fs_gc_range {
+  __u32 sync;
+  __u64 start;
+  __u64 len;
+};
+struct f2fs_defragment {
+  __u64 start;
+  __u64 len;
+};
+struct f2fs_move_range {
+  __u32 dst_fd;
+  __u64 pos_in;
+  __u64 pos_out;
+  __u64 len;
+};
+struct f2fs_flush_device {
+  __u32 dev_num;
+  __u32 segments;
+};
+struct f2fs_sectrim_range {
+  __u64 start;
+  __u64 len;
+  __u64 flags;
+};
+struct f2fs_comp_option {
+  __u8 algorithm;
+  __u8 log_cluster_size;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/fadvise.h b/i686-linux-musl/include/linux/fadvise.h
new file mode 100644
index 0000000..21d884c
--- /dev/null
+++ b/i686-linux-musl/include/linux/fadvise.h
@@ -0,0 +1,32 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef FADVISE_H_INCLUDED
+#define FADVISE_H_INCLUDED
+#define POSIX_FADV_NORMAL 0
+#define POSIX_FADV_RANDOM 1
+#define POSIX_FADV_SEQUENTIAL 2
+#define POSIX_FADV_WILLNEED 3
+#ifdef __s390x__
+#define POSIX_FADV_DONTNEED 6
+#define POSIX_FADV_NOREUSE 7
+#else
+#define POSIX_FADV_DONTNEED 4
+#define POSIX_FADV_NOREUSE 5
+#endif
+#endif
diff --git a/i686-linux-musl/include/linux/falloc.h b/i686-linux-musl/include/linux/falloc.h
new file mode 100644
index 0000000..7015b03
--- /dev/null
+++ b/i686-linux-musl/include/linux/falloc.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_FALLOC_H_
+#define _UAPI_FALLOC_H_
+#define FALLOC_FL_KEEP_SIZE 0x01
+#define FALLOC_FL_PUNCH_HOLE 0x02
+#define FALLOC_FL_NO_HIDE_STALE 0x04
+#define FALLOC_FL_COLLAPSE_RANGE 0x08
+#define FALLOC_FL_ZERO_RANGE 0x10
+#define FALLOC_FL_INSERT_RANGE 0x20
+#define FALLOC_FL_UNSHARE_RANGE 0x40
+#endif
diff --git a/i686-linux-musl/include/linux/fanotify.h b/i686-linux-musl/include/linux/fanotify.h
new file mode 100644
index 0000000..b9a9364
--- /dev/null
+++ b/i686-linux-musl/include/linux/fanotify.h
@@ -0,0 +1,121 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_FANOTIFY_H
+#define _UAPI_LINUX_FANOTIFY_H
+#include <linux/types.h>
+#define FAN_ACCESS 0x00000001
+#define FAN_MODIFY 0x00000002
+#define FAN_ATTRIB 0x00000004
+#define FAN_CLOSE_WRITE 0x00000008
+#define FAN_CLOSE_NOWRITE 0x00000010
+#define FAN_OPEN 0x00000020
+#define FAN_MOVED_FROM 0x00000040
+#define FAN_MOVED_TO 0x00000080
+#define FAN_CREATE 0x00000100
+#define FAN_DELETE 0x00000200
+#define FAN_DELETE_SELF 0x00000400
+#define FAN_MOVE_SELF 0x00000800
+#define FAN_OPEN_EXEC 0x00001000
+#define FAN_Q_OVERFLOW 0x00004000
+#define FAN_FS_ERROR 0x00008000
+#define FAN_OPEN_PERM 0x00010000
+#define FAN_ACCESS_PERM 0x00020000
+#define FAN_OPEN_EXEC_PERM 0x00040000
+#define FAN_EVENT_ON_CHILD 0x08000000
+#define FAN_ONDIR 0x40000000
+#define FAN_CLOSE (FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE)
+#define FAN_MOVE (FAN_MOVED_FROM | FAN_MOVED_TO)
+#define FAN_CLOEXEC 0x00000001
+#define FAN_NONBLOCK 0x00000002
+#define FAN_CLASS_NOTIF 0x00000000
+#define FAN_CLASS_CONTENT 0x00000004
+#define FAN_CLASS_PRE_CONTENT 0x00000008
+#define FAN_ALL_CLASS_BITS (FAN_CLASS_NOTIF | FAN_CLASS_CONTENT | FAN_CLASS_PRE_CONTENT)
+#define FAN_UNLIMITED_QUEUE 0x00000010
+#define FAN_UNLIMITED_MARKS 0x00000020
+#define FAN_ENABLE_AUDIT 0x00000040
+#define FAN_REPORT_PIDFD 0x00000080
+#define FAN_REPORT_TID 0x00000100
+#define FAN_REPORT_FID 0x00000200
+#define FAN_REPORT_DIR_FID 0x00000400
+#define FAN_REPORT_NAME 0x00000800
+#define FAN_REPORT_DFID_NAME (FAN_REPORT_DIR_FID | FAN_REPORT_NAME)
+#define FAN_ALL_INIT_FLAGS (FAN_CLOEXEC | FAN_NONBLOCK | FAN_ALL_CLASS_BITS | FAN_UNLIMITED_QUEUE | FAN_UNLIMITED_MARKS)
+#define FAN_MARK_ADD 0x00000001
+#define FAN_MARK_REMOVE 0x00000002
+#define FAN_MARK_DONT_FOLLOW 0x00000004
+#define FAN_MARK_ONLYDIR 0x00000008
+#define FAN_MARK_IGNORED_MASK 0x00000020
+#define FAN_MARK_IGNORED_SURV_MODIFY 0x00000040
+#define FAN_MARK_FLUSH 0x00000080
+#define FAN_MARK_INODE 0x00000000
+#define FAN_MARK_MOUNT 0x00000010
+#define FAN_MARK_FILESYSTEM 0x00000100
+#define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_DONT_FOLLOW | FAN_MARK_ONLYDIR | FAN_MARK_MOUNT | FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY | FAN_MARK_FLUSH)
+#define FAN_ALL_EVENTS (FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN)
+#define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM | FAN_ACCESS_PERM)
+#define FAN_ALL_OUTGOING_EVENTS (FAN_ALL_EVENTS | FAN_ALL_PERM_EVENTS | FAN_Q_OVERFLOW)
+#define FANOTIFY_METADATA_VERSION 3
+struct fanotify_event_metadata {
+  __u32 event_len;
+  __u8 vers;
+  __u8 reserved;
+  __u16 metadata_len;
+  __aligned_u64 mask;
+  __s32 fd;
+  __s32 pid;
+};
+#define FAN_EVENT_INFO_TYPE_FID 1
+#define FAN_EVENT_INFO_TYPE_DFID_NAME 2
+#define FAN_EVENT_INFO_TYPE_DFID 3
+#define FAN_EVENT_INFO_TYPE_PIDFD 4
+#define FAN_EVENT_INFO_TYPE_ERROR 5
+struct fanotify_event_info_header {
+  __u8 info_type;
+  __u8 pad;
+  __u16 len;
+};
+struct fanotify_event_info_fid {
+  struct fanotify_event_info_header hdr;
+  __kernel_fsid_t fsid;
+  unsigned char handle[0];
+};
+struct fanotify_event_info_pidfd {
+  struct fanotify_event_info_header hdr;
+  __s32 pidfd;
+};
+struct fanotify_event_info_error {
+  struct fanotify_event_info_header hdr;
+  __s32 error;
+  __u32 error_count;
+};
+struct fanotify_response {
+  __s32 fd;
+  __u32 response;
+};
+#define FAN_ALLOW 0x01
+#define FAN_DENY 0x02
+#define FAN_AUDIT 0x10
+#define FAN_NOFD - 1
+#define FAN_NOPIDFD FAN_NOFD
+#define FAN_EPIDFD - 2
+#define FAN_EVENT_METADATA_LEN (sizeof(struct fanotify_event_metadata))
+#define FAN_EVENT_NEXT(meta,len) ((len) -= (meta)->event_len, (struct fanotify_event_metadata *) (((char *) (meta)) + (meta)->event_len))
+#define FAN_EVENT_OK(meta,len) ((long) (len) >= (long) FAN_EVENT_METADATA_LEN && (long) (meta)->event_len >= (long) FAN_EVENT_METADATA_LEN && (long) (meta)->event_len <= (long) (len))
+#endif
diff --git a/i686-linux-musl/include/linux/fb.h b/i686-linux-musl/include/linux/fb.h
new file mode 100644
index 0000000..a0ef0c4
--- /dev/null
+++ b/i686-linux-musl/include/linux/fb.h
@@ -0,0 +1,326 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_FB_H
+#define _UAPI_LINUX_FB_H
+#include <linux/types.h>
+#include <linux/i2c.h>
+#define FB_MAX 32
+#define FBIOGET_VSCREENINFO 0x4600
+#define FBIOPUT_VSCREENINFO 0x4601
+#define FBIOGET_FSCREENINFO 0x4602
+#define FBIOGETCMAP 0x4604
+#define FBIOPUTCMAP 0x4605
+#define FBIOPAN_DISPLAY 0x4606
+#define FBIO_CURSOR _IOWR('F', 0x08, struct fb_cursor)
+#define FBIOGET_CON2FBMAP 0x460F
+#define FBIOPUT_CON2FBMAP 0x4610
+#define FBIOBLANK 0x4611
+#define FBIOGET_VBLANK _IOR('F', 0x12, struct fb_vblank)
+#define FBIO_ALLOC 0x4613
+#define FBIO_FREE 0x4614
+#define FBIOGET_GLYPH 0x4615
+#define FBIOGET_HWCINFO 0x4616
+#define FBIOPUT_MODEINFO 0x4617
+#define FBIOGET_DISPINFO 0x4618
+#define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32)
+#define FB_TYPE_PACKED_PIXELS 0
+#define FB_TYPE_PLANES 1
+#define FB_TYPE_INTERLEAVED_PLANES 2
+#define FB_TYPE_TEXT 3
+#define FB_TYPE_VGA_PLANES 4
+#define FB_TYPE_FOURCC 5
+#define FB_AUX_TEXT_MDA 0
+#define FB_AUX_TEXT_CGA 1
+#define FB_AUX_TEXT_S3_MMIO 2
+#define FB_AUX_TEXT_MGA_STEP16 3
+#define FB_AUX_TEXT_MGA_STEP8 4
+#define FB_AUX_TEXT_SVGA_GROUP 8
+#define FB_AUX_TEXT_SVGA_MASK 7
+#define FB_AUX_TEXT_SVGA_STEP2 8
+#define FB_AUX_TEXT_SVGA_STEP4 9
+#define FB_AUX_TEXT_SVGA_STEP8 10
+#define FB_AUX_TEXT_SVGA_STEP16 11
+#define FB_AUX_TEXT_SVGA_LAST 15
+#define FB_AUX_VGA_PLANES_VGA4 0
+#define FB_AUX_VGA_PLANES_CFB4 1
+#define FB_AUX_VGA_PLANES_CFB8 2
+#define FB_VISUAL_MONO01 0
+#define FB_VISUAL_MONO10 1
+#define FB_VISUAL_TRUECOLOR 2
+#define FB_VISUAL_PSEUDOCOLOR 3
+#define FB_VISUAL_DIRECTCOLOR 4
+#define FB_VISUAL_STATIC_PSEUDOCOLOR 5
+#define FB_VISUAL_FOURCC 6
+#define FB_ACCEL_NONE 0
+#define FB_ACCEL_ATARIBLITT 1
+#define FB_ACCEL_AMIGABLITT 2
+#define FB_ACCEL_S3_TRIO64 3
+#define FB_ACCEL_NCR_77C32BLT 4
+#define FB_ACCEL_S3_VIRGE 5
+#define FB_ACCEL_ATI_MACH64GX 6
+#define FB_ACCEL_DEC_TGA 7
+#define FB_ACCEL_ATI_MACH64CT 8
+#define FB_ACCEL_ATI_MACH64VT 9
+#define FB_ACCEL_ATI_MACH64GT 10
+#define FB_ACCEL_SUN_CREATOR 11
+#define FB_ACCEL_SUN_CGSIX 12
+#define FB_ACCEL_SUN_LEO 13
+#define FB_ACCEL_IMS_TWINTURBO 14
+#define FB_ACCEL_3DLABS_PERMEDIA2 15
+#define FB_ACCEL_MATROX_MGA2064W 16
+#define FB_ACCEL_MATROX_MGA1064SG 17
+#define FB_ACCEL_MATROX_MGA2164W 18
+#define FB_ACCEL_MATROX_MGA2164W_AGP 19
+#define FB_ACCEL_MATROX_MGAG100 20
+#define FB_ACCEL_MATROX_MGAG200 21
+#define FB_ACCEL_SUN_CG14 22
+#define FB_ACCEL_SUN_BWTWO 23
+#define FB_ACCEL_SUN_CGTHREE 24
+#define FB_ACCEL_SUN_TCX 25
+#define FB_ACCEL_MATROX_MGAG400 26
+#define FB_ACCEL_NV3 27
+#define FB_ACCEL_NV4 28
+#define FB_ACCEL_NV5 29
+#define FB_ACCEL_CT_6555x 30
+#define FB_ACCEL_3DFX_BANSHEE 31
+#define FB_ACCEL_ATI_RAGE128 32
+#define FB_ACCEL_IGS_CYBER2000 33
+#define FB_ACCEL_IGS_CYBER2010 34
+#define FB_ACCEL_IGS_CYBER5000 35
+#define FB_ACCEL_SIS_GLAMOUR 36
+#define FB_ACCEL_3DLABS_PERMEDIA3 37
+#define FB_ACCEL_ATI_RADEON 38
+#define FB_ACCEL_I810 39
+#define FB_ACCEL_SIS_GLAMOUR_2 40
+#define FB_ACCEL_SIS_XABRE 41
+#define FB_ACCEL_I830 42
+#define FB_ACCEL_NV_10 43
+#define FB_ACCEL_NV_20 44
+#define FB_ACCEL_NV_30 45
+#define FB_ACCEL_NV_40 46
+#define FB_ACCEL_XGI_VOLARI_V 47
+#define FB_ACCEL_XGI_VOLARI_Z 48
+#define FB_ACCEL_OMAP1610 49
+#define FB_ACCEL_TRIDENT_TGUI 50
+#define FB_ACCEL_TRIDENT_3DIMAGE 51
+#define FB_ACCEL_TRIDENT_BLADE3D 52
+#define FB_ACCEL_TRIDENT_BLADEXP 53
+#define FB_ACCEL_CIRRUS_ALPINE 53
+#define FB_ACCEL_NEOMAGIC_NM2070 90
+#define FB_ACCEL_NEOMAGIC_NM2090 91
+#define FB_ACCEL_NEOMAGIC_NM2093 92
+#define FB_ACCEL_NEOMAGIC_NM2097 93
+#define FB_ACCEL_NEOMAGIC_NM2160 94
+#define FB_ACCEL_NEOMAGIC_NM2200 95
+#define FB_ACCEL_NEOMAGIC_NM2230 96
+#define FB_ACCEL_NEOMAGIC_NM2360 97
+#define FB_ACCEL_NEOMAGIC_NM2380 98
+#define FB_ACCEL_PXA3XX 99
+#define FB_ACCEL_SAVAGE4 0x80
+#define FB_ACCEL_SAVAGE3D 0x81
+#define FB_ACCEL_SAVAGE3D_MV 0x82
+#define FB_ACCEL_SAVAGE2000 0x83
+#define FB_ACCEL_SAVAGE_MX_MV 0x84
+#define FB_ACCEL_SAVAGE_MX 0x85
+#define FB_ACCEL_SAVAGE_IX_MV 0x86
+#define FB_ACCEL_SAVAGE_IX 0x87
+#define FB_ACCEL_PROSAVAGE_PM 0x88
+#define FB_ACCEL_PROSAVAGE_KM 0x89
+#define FB_ACCEL_S3TWISTER_P 0x8a
+#define FB_ACCEL_S3TWISTER_K 0x8b
+#define FB_ACCEL_SUPERSAVAGE 0x8c
+#define FB_ACCEL_PROSAVAGE_DDR 0x8d
+#define FB_ACCEL_PROSAVAGE_DDRK 0x8e
+#define FB_ACCEL_PUV3_UNIGFX 0xa0
+#define FB_CAP_FOURCC 1
+struct fb_fix_screeninfo {
+  char id[16];
+  unsigned long smem_start;
+  __u32 smem_len;
+  __u32 type;
+  __u32 type_aux;
+  __u32 visual;
+  __u16 xpanstep;
+  __u16 ypanstep;
+  __u16 ywrapstep;
+  __u32 line_length;
+  unsigned long mmio_start;
+  __u32 mmio_len;
+  __u32 accel;
+  __u16 capabilities;
+  __u16 reserved[2];
+};
+struct fb_bitfield {
+  __u32 offset;
+  __u32 length;
+  __u32 msb_right;
+};
+#define FB_NONSTD_HAM 1
+#define FB_NONSTD_REV_PIX_IN_B 2
+#define FB_ACTIVATE_NOW 0
+#define FB_ACTIVATE_NXTOPEN 1
+#define FB_ACTIVATE_TEST 2
+#define FB_ACTIVATE_MASK 15
+#define FB_ACTIVATE_VBL 16
+#define FB_CHANGE_CMAP_VBL 32
+#define FB_ACTIVATE_ALL 64
+#define FB_ACTIVATE_FORCE 128
+#define FB_ACTIVATE_INV_MODE 256
+#define FB_ACTIVATE_KD_TEXT 512
+#define FB_ACCELF_TEXT 1
+#define FB_SYNC_HOR_HIGH_ACT 1
+#define FB_SYNC_VERT_HIGH_ACT 2
+#define FB_SYNC_EXT 4
+#define FB_SYNC_COMP_HIGH_ACT 8
+#define FB_SYNC_BROADCAST 16
+#define FB_SYNC_ON_GREEN 32
+#define FB_VMODE_NONINTERLACED 0
+#define FB_VMODE_INTERLACED 1
+#define FB_VMODE_DOUBLE 2
+#define FB_VMODE_ODD_FLD_FIRST 4
+#define FB_VMODE_MASK 255
+#define FB_VMODE_YWRAP 256
+#define FB_VMODE_SMOOTH_XPAN 512
+#define FB_VMODE_CONUPDATE 512
+#define FB_ROTATE_UR 0
+#define FB_ROTATE_CW 1
+#define FB_ROTATE_UD 2
+#define FB_ROTATE_CCW 3
+#define PICOS2KHZ(a) (1000000000UL / (a))
+#define KHZ2PICOS(a) (1000000000UL / (a))
+struct fb_var_screeninfo {
+  __u32 xres;
+  __u32 yres;
+  __u32 xres_virtual;
+  __u32 yres_virtual;
+  __u32 xoffset;
+  __u32 yoffset;
+  __u32 bits_per_pixel;
+  __u32 grayscale;
+  struct fb_bitfield red;
+  struct fb_bitfield green;
+  struct fb_bitfield blue;
+  struct fb_bitfield transp;
+  __u32 nonstd;
+  __u32 activate;
+  __u32 height;
+  __u32 width;
+  __u32 accel_flags;
+  __u32 pixclock;
+  __u32 left_margin;
+  __u32 right_margin;
+  __u32 upper_margin;
+  __u32 lower_margin;
+  __u32 hsync_len;
+  __u32 vsync_len;
+  __u32 sync;
+  __u32 vmode;
+  __u32 rotate;
+  __u32 colorspace;
+  __u32 reserved[4];
+};
+struct fb_cmap {
+  __u32 start;
+  __u32 len;
+  __u16 * red;
+  __u16 * green;
+  __u16 * blue;
+  __u16 * transp;
+};
+struct fb_con2fbmap {
+  __u32 console;
+  __u32 framebuffer;
+};
+#define VESA_NO_BLANKING 0
+#define VESA_VSYNC_SUSPEND 1
+#define VESA_HSYNC_SUSPEND 2
+#define VESA_POWERDOWN 3
+enum {
+  FB_BLANK_UNBLANK = VESA_NO_BLANKING,
+  FB_BLANK_NORMAL = VESA_NO_BLANKING + 1,
+  FB_BLANK_VSYNC_SUSPEND = VESA_VSYNC_SUSPEND + 1,
+  FB_BLANK_HSYNC_SUSPEND = VESA_HSYNC_SUSPEND + 1,
+  FB_BLANK_POWERDOWN = VESA_POWERDOWN + 1
+};
+#define FB_VBLANK_VBLANKING 0x001
+#define FB_VBLANK_HBLANKING 0x002
+#define FB_VBLANK_HAVE_VBLANK 0x004
+#define FB_VBLANK_HAVE_HBLANK 0x008
+#define FB_VBLANK_HAVE_COUNT 0x010
+#define FB_VBLANK_HAVE_VCOUNT 0x020
+#define FB_VBLANK_HAVE_HCOUNT 0x040
+#define FB_VBLANK_VSYNCING 0x080
+#define FB_VBLANK_HAVE_VSYNC 0x100
+struct fb_vblank {
+  __u32 flags;
+  __u32 count;
+  __u32 vcount;
+  __u32 hcount;
+  __u32 reserved[4];
+};
+#define ROP_COPY 0
+#define ROP_XOR 1
+struct fb_copyarea {
+  __u32 dx;
+  __u32 dy;
+  __u32 width;
+  __u32 height;
+  __u32 sx;
+  __u32 sy;
+};
+struct fb_fillrect {
+  __u32 dx;
+  __u32 dy;
+  __u32 width;
+  __u32 height;
+  __u32 color;
+  __u32 rop;
+};
+struct fb_image {
+  __u32 dx;
+  __u32 dy;
+  __u32 width;
+  __u32 height;
+  __u32 fg_color;
+  __u32 bg_color;
+  __u8 depth;
+  const char * data;
+  struct fb_cmap cmap;
+};
+#define FB_CUR_SETIMAGE 0x01
+#define FB_CUR_SETPOS 0x02
+#define FB_CUR_SETHOT 0x04
+#define FB_CUR_SETCMAP 0x08
+#define FB_CUR_SETSHAPE 0x10
+#define FB_CUR_SETSIZE 0x20
+#define FB_CUR_SETALL 0xFF
+struct fbcurpos {
+  __u16 x, y;
+};
+struct fb_cursor {
+  __u16 set;
+  __u16 enable;
+  __u16 rop;
+  const char * mask;
+  struct fbcurpos hot;
+  struct fb_image image;
+};
+#define FB_BACKLIGHT_LEVELS 128
+#define FB_BACKLIGHT_MAX 0xFF
+#endif
diff --git a/i686-linux-musl/include/linux/fcntl.h b/i686-linux-musl/include/linux/fcntl.h
new file mode 100644
index 0000000..a46726b
--- /dev/null
+++ b/i686-linux-musl/include/linux/fcntl.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_FCNTL_H
+#define _UAPI_LINUX_FCNTL_H
+#include <asm/fcntl.h>
+#include <linux/openat2.h>
+#define F_SETLEASE (F_LINUX_SPECIFIC_BASE + 0)
+#define F_GETLEASE (F_LINUX_SPECIFIC_BASE + 1)
+#define F_CANCELLK (F_LINUX_SPECIFIC_BASE + 5)
+#define F_DUPFD_CLOEXEC (F_LINUX_SPECIFIC_BASE + 6)
+#define F_NOTIFY (F_LINUX_SPECIFIC_BASE + 2)
+#define F_SETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 7)
+#define F_GETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 8)
+#define F_ADD_SEALS (F_LINUX_SPECIFIC_BASE + 9)
+#define F_GET_SEALS (F_LINUX_SPECIFIC_BASE + 10)
+#define F_SEAL_SEAL 0x0001
+#define F_SEAL_SHRINK 0x0002
+#define F_SEAL_GROW 0x0004
+#define F_SEAL_WRITE 0x0008
+#define F_SEAL_FUTURE_WRITE 0x0010
+#define F_GET_RW_HINT (F_LINUX_SPECIFIC_BASE + 11)
+#define F_SET_RW_HINT (F_LINUX_SPECIFIC_BASE + 12)
+#define F_GET_FILE_RW_HINT (F_LINUX_SPECIFIC_BASE + 13)
+#define F_SET_FILE_RW_HINT (F_LINUX_SPECIFIC_BASE + 14)
+#define RWH_WRITE_LIFE_NOT_SET 0
+#define RWH_WRITE_LIFE_NONE 1
+#define RWH_WRITE_LIFE_SHORT 2
+#define RWH_WRITE_LIFE_MEDIUM 3
+#define RWH_WRITE_LIFE_LONG 4
+#define RWH_WRITE_LIFE_EXTREME 5
+#define RWF_WRITE_LIFE_NOT_SET RWH_WRITE_LIFE_NOT_SET
+#define DN_ACCESS 0x00000001
+#define DN_MODIFY 0x00000002
+#define DN_CREATE 0x00000004
+#define DN_DELETE 0x00000008
+#define DN_RENAME 0x00000010
+#define DN_ATTRIB 0x00000020
+#define DN_MULTISHOT 0x80000000
+#define AT_FDCWD - 100
+#define AT_SYMLINK_NOFOLLOW 0x100
+#define AT_EACCESS 0x200
+#define AT_REMOVEDIR 0x200
+#define AT_SYMLINK_FOLLOW 0x400
+#define AT_NO_AUTOMOUNT 0x800
+#define AT_EMPTY_PATH 0x1000
+#define AT_STATX_SYNC_TYPE 0x6000
+#define AT_STATX_SYNC_AS_STAT 0x0000
+#define AT_STATX_FORCE_SYNC 0x2000
+#define AT_STATX_DONT_SYNC 0x4000
+#define AT_RECURSIVE 0x8000
+#endif
diff --git a/i686-linux-musl/include/linux/fd.h b/i686-linux-musl/include/linux/fd.h
new file mode 100644
index 0000000..4d72d69
--- /dev/null
+++ b/i686-linux-musl/include/linux/fd.h
@@ -0,0 +1,205 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_FD_H
+#define _UAPI_LINUX_FD_H
+#include <linux/ioctl.h>
+#include <linux/compiler.h>
+struct floppy_struct {
+  unsigned int size, sect, head, track, stretch;
+#define FD_STRETCH 1
+#define FD_SWAPSIDES 2
+#define FD_ZEROBASED 4
+#define FD_SECTBASEMASK 0x3FC
+#define FD_MKSECTBASE(s) (((s) ^ 1) << 2)
+#define FD_SECTBASE(floppy) ((((floppy)->stretch & FD_SECTBASEMASK) >> 2) ^ 1)
+  unsigned char gap, rate,
+#define FD_2M 0x4
+#define FD_SIZECODEMASK 0x38
+#define FD_SIZECODE(floppy) (((((floppy)->rate & FD_SIZECODEMASK) >> 3) + 2) % 8)
+#define FD_SECTSIZE(floppy) ((floppy)->rate & FD_2M ? 512 : 128 << FD_SIZECODE(floppy))
+#define FD_PERP 0x40
+  spec1, fmt_gap;
+  const char * name;
+};
+#define FDCLRPRM _IO(2, 0x41)
+#define FDSETPRM _IOW(2, 0x42, struct floppy_struct)
+#define FDSETMEDIAPRM FDSETPRM
+#define FDDEFPRM _IOW(2, 0x43, struct floppy_struct)
+#define FDGETPRM _IOR(2, 0x04, struct floppy_struct)
+#define FDDEFMEDIAPRM FDDEFPRM
+#define FDGETMEDIAPRM FDGETPRM
+#define FDMSGON _IO(2, 0x45)
+#define FDMSGOFF _IO(2, 0x46)
+#define FD_FILL_BYTE 0xF6
+struct format_descr {
+  unsigned int device, head, track;
+};
+#define FDFMTBEG _IO(2, 0x47)
+#define FDFMTTRK _IOW(2, 0x48, struct format_descr)
+#define FDFMTEND _IO(2, 0x49)
+struct floppy_max_errors {
+  unsigned int abort, read_track, reset, recal, reporting;
+};
+#define FDSETEMSGTRESH _IO(2, 0x4a)
+#define FDFLUSH _IO(2, 0x4b)
+#define FDSETMAXERRS _IOW(2, 0x4c, struct floppy_max_errors)
+#define FDGETMAXERRS _IOR(2, 0x0e, struct floppy_max_errors)
+typedef char floppy_drive_name[16];
+#define FDGETDRVTYP _IOR(2, 0x0f, floppy_drive_name)
+struct floppy_drive_params {
+  signed char cmos;
+  unsigned long max_dtr;
+  unsigned long hlt;
+  unsigned long hut;
+  unsigned long srt;
+  unsigned long spinup;
+  unsigned long spindown;
+  unsigned char spindown_offset;
+  unsigned char select_delay;
+  unsigned char rps;
+  unsigned char tracks;
+  unsigned long timeout;
+  unsigned char interleave_sect;
+  struct floppy_max_errors max_errors;
+  char flags;
+#define FTD_MSG 0x10
+#define FD_BROKEN_DCL 0x20
+#define FD_DEBUG 0x02
+#define FD_SILENT_DCL_CLEAR 0x4
+#define FD_INVERTED_DCL 0x80
+  char read_track;
+#define FD_AUTODETECT_SIZE 8
+  short autodetect[FD_AUTODETECT_SIZE];
+  int checkfreq;
+  int native_format;
+};
+enum {
+  FD_NEED_TWADDLE_BIT,
+  FD_VERIFY_BIT,
+  FD_DISK_NEWCHANGE_BIT,
+  FD_UNUSED_BIT,
+  FD_DISK_CHANGED_BIT,
+  FD_DISK_WRITABLE_BIT,
+  FD_OPEN_SHOULD_FAIL_BIT
+};
+#define FDSETDRVPRM _IOW(2, 0x90, struct floppy_drive_params)
+#define FDGETDRVPRM _IOR(2, 0x11, struct floppy_drive_params)
+struct floppy_drive_struct {
+  unsigned long flags;
+#define FD_NEED_TWADDLE (1 << FD_NEED_TWADDLE_BIT)
+#define FD_VERIFY (1 << FD_VERIFY_BIT)
+#define FD_DISK_NEWCHANGE (1 << FD_DISK_NEWCHANGE_BIT)
+#define FD_DISK_CHANGED (1 << FD_DISK_CHANGED_BIT)
+#define FD_DISK_WRITABLE (1 << FD_DISK_WRITABLE_BIT)
+  unsigned long spinup_date;
+  unsigned long select_date;
+  unsigned long first_read_date;
+  short probed_format;
+  short track;
+  short maxblock;
+  short maxtrack;
+  int generation;
+  int keep_data;
+  int fd_ref;
+  int fd_device;
+  unsigned long last_checked;
+  char * dmabuf;
+  int bufblocks;
+};
+#define FDGETDRVSTAT _IOR(2, 0x12, struct floppy_drive_struct)
+#define FDPOLLDRVSTAT _IOR(2, 0x13, struct floppy_drive_struct)
+enum reset_mode {
+  FD_RESET_IF_NEEDED,
+  FD_RESET_IF_RAWCMD,
+  FD_RESET_ALWAYS
+};
+#define FDRESET _IO(2, 0x54)
+struct floppy_fdc_state {
+  int spec1;
+  int spec2;
+  int dtr;
+  unsigned char version;
+  unsigned char dor;
+  unsigned long address;
+  unsigned int rawcmd : 2;
+  unsigned int reset : 1;
+  unsigned int need_configure : 1;
+  unsigned int perp_mode : 2;
+  unsigned int has_fifo : 1;
+  unsigned int driver_version;
+#define FD_DRIVER_VERSION 0x100
+  unsigned char track[4];
+};
+#define FDGETFDCSTAT _IOR(2, 0x15, struct floppy_fdc_state)
+struct floppy_write_errors {
+  unsigned int write_errors;
+  unsigned long first_error_sector;
+  int first_error_generation;
+  unsigned long last_error_sector;
+  int last_error_generation;
+  unsigned int badness;
+};
+#define FDWERRORCLR _IO(2, 0x56)
+#define FDWERRORGET _IOR(2, 0x17, struct floppy_write_errors)
+#define FDHAVEBATCHEDRAWCMD
+struct floppy_raw_cmd {
+  unsigned int flags;
+#define FD_RAW_READ 1
+#define FD_RAW_WRITE 2
+#define FD_RAW_NO_MOTOR 4
+#define FD_RAW_DISK_CHANGE 4
+#define FD_RAW_INTR 8
+#define FD_RAW_SPIN 0x10
+#define FD_RAW_NO_MOTOR_AFTER 0x20
+#define FD_RAW_NEED_DISK 0x40
+#define FD_RAW_NEED_SEEK 0x80
+#define FD_RAW_MORE 0x100
+#define FD_RAW_STOP_IF_FAILURE 0x200
+#define FD_RAW_STOP_IF_SUCCESS 0x400
+#define FD_RAW_SOFTFAILURE 0x800
+#define FD_RAW_FAILURE 0x10000
+#define FD_RAW_HARDFAILURE 0x20000
+  void __user * data;
+  char * kernel_data;
+  struct floppy_raw_cmd * next;
+  long length;
+  long phys_length;
+  int buffer_length;
+  unsigned char rate;
+#define FD_RAW_CMD_SIZE 16
+#define FD_RAW_REPLY_SIZE 16
+#define FD_RAW_CMD_FULLSIZE (FD_RAW_CMD_SIZE + 1 + FD_RAW_REPLY_SIZE)
+  unsigned char cmd_count;
+  union {
+    struct {
+      unsigned char cmd[FD_RAW_CMD_SIZE];
+      unsigned char reply_count;
+      unsigned char reply[FD_RAW_REPLY_SIZE];
+    };
+    unsigned char fullcmd[FD_RAW_CMD_FULLSIZE];
+  };
+  int track;
+  int resultcode;
+  int reserved1;
+  int reserved2;
+};
+#define FDRAWCMD _IO(2, 0x58)
+#define FDTWADDLE _IO(2, 0x59)
+#define FDEJECT _IO(2, 0x5a)
+#endif
diff --git a/i686-linux-musl/include/linux/fdreg.h b/i686-linux-musl/include/linux/fdreg.h
new file mode 100644
index 0000000..2aeaf9a
--- /dev/null
+++ b/i686-linux-musl/include/linux/fdreg.h
@@ -0,0 +1,100 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_FDREG_H
+#define _LINUX_FDREG_H
+#define FD_SRA 0
+#define FD_SRB 1
+#define FD_DOR 2
+#define FD_TDR 3
+#define FD_DSR 4
+#define FD_STATUS 4
+#define FD_DATA 5
+#define FD_DIR 7
+#define FD_DCR 7
+#define STATUS_BUSYMASK 0x0F
+#define STATUS_BUSY 0x10
+#define STATUS_DMA 0x20
+#define STATUS_DIR 0x40
+#define STATUS_READY 0x80
+#define ST0_DS 0x03
+#define ST0_HA 0x04
+#define ST0_NR 0x08
+#define ST0_ECE 0x10
+#define ST0_SE 0x20
+#define ST0_INTR 0xC0
+#define ST1_MAM 0x01
+#define ST1_WP 0x02
+#define ST1_ND 0x04
+#define ST1_OR 0x10
+#define ST1_CRC 0x20
+#define ST1_EOC 0x80
+#define ST2_MAM 0x01
+#define ST2_BC 0x02
+#define ST2_SNS 0x04
+#define ST2_SEH 0x08
+#define ST2_WC 0x10
+#define ST2_CRC 0x20
+#define ST2_CM 0x40
+#define ST3_HA 0x04
+#define ST3_DS 0x08
+#define ST3_TZ 0x10
+#define ST3_RY 0x20
+#define ST3_WP 0x40
+#define ST3_FT 0x80
+#define FD_RECALIBRATE 0x07
+#define FD_SEEK 0x0F
+#define FD_READ 0xE6
+#define FD_WRITE 0xC5
+#define FD_SENSEI 0x08
+#define FD_SPECIFY 0x03
+#define FD_FORMAT 0x4D
+#define FD_VERSION 0x10
+#define FD_CONFIGURE 0x13
+#define FD_PERPENDICULAR 0x12
+#define FD_GETSTATUS 0x04
+#define FD_DUMPREGS 0x0E
+#define FD_READID 0xEA
+#define FD_UNLOCK 0x14
+#define FD_LOCK 0x94
+#define FD_RSEEK_OUT 0x8f
+#define FD_RSEEK_IN 0xcf
+#define FD_PARTID 0x18
+#define FD_SAVE 0x2e
+#define FD_DRIVESPEC 0x8e
+#define FD_RESTORE 0x4e
+#define FD_POWERDOWN 0x27
+#define FD_FORMAT_N_WRITE 0xef
+#define FD_OPTION 0x33
+#define DMA_READ 0x46
+#define DMA_WRITE 0x4A
+#define FDC_NONE 0x00
+#define FDC_UNKNOWN 0x10
+#define FDC_8272A 0x20
+#define FDC_765ED 0x30
+#define FDC_82072 0x40
+#define FDC_82072A 0x45
+#define FDC_82077_ORIG 0x51
+#define FDC_82077 0x52
+#define FDC_82078_UNKN 0x5f
+#define FDC_82078 0x60
+#define FDC_82078_1 0x61
+#define FDC_S82078B 0x62
+#define FDC_87306 0x63
+#define FD_RESET_DELAY 20
+#endif
diff --git a/i686-linux-musl/include/linux/fib_rules.h b/i686-linux-musl/include/linux/fib_rules.h
new file mode 100644
index 0000000..733c1b1
--- /dev/null
+++ b/i686-linux-musl/include/linux/fib_rules.h
@@ -0,0 +1,92 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_FIB_RULES_H
+#define __LINUX_FIB_RULES_H
+#include <linux/types.h>
+#include <linux/rtnetlink.h>
+#define FIB_RULE_PERMANENT 0x00000001
+#define FIB_RULE_INVERT 0x00000002
+#define FIB_RULE_UNRESOLVED 0x00000004
+#define FIB_RULE_IIF_DETACHED 0x00000008
+#define FIB_RULE_DEV_DETACHED FIB_RULE_IIF_DETACHED
+#define FIB_RULE_OIF_DETACHED 0x00000010
+#define FIB_RULE_FIND_SADDR 0x00010000
+struct fib_rule_hdr {
+  __u8 family;
+  __u8 dst_len;
+  __u8 src_len;
+  __u8 tos;
+  __u8 table;
+  __u8 res1;
+  __u8 res2;
+  __u8 action;
+  __u32 flags;
+};
+struct fib_rule_uid_range {
+  __u32 start;
+  __u32 end;
+};
+struct fib_rule_port_range {
+  __u16 start;
+  __u16 end;
+};
+enum {
+  FRA_UNSPEC,
+  FRA_DST,
+  FRA_SRC,
+  FRA_IIFNAME,
+#define FRA_IFNAME FRA_IIFNAME
+  FRA_GOTO,
+  FRA_UNUSED2,
+  FRA_PRIORITY,
+  FRA_UNUSED3,
+  FRA_UNUSED4,
+  FRA_UNUSED5,
+  FRA_FWMARK,
+  FRA_FLOW,
+  FRA_TUN_ID,
+  FRA_SUPPRESS_IFGROUP,
+  FRA_SUPPRESS_PREFIXLEN,
+  FRA_TABLE,
+  FRA_FWMASK,
+  FRA_OIFNAME,
+  FRA_PAD,
+  FRA_L3MDEV,
+  FRA_UID_RANGE,
+  FRA_PROTOCOL,
+  FRA_IP_PROTO,
+  FRA_SPORT_RANGE,
+  FRA_DPORT_RANGE,
+  __FRA_MAX
+};
+#define FRA_MAX (__FRA_MAX - 1)
+enum {
+  FR_ACT_UNSPEC,
+  FR_ACT_TO_TBL,
+  FR_ACT_GOTO,
+  FR_ACT_NOP,
+  FR_ACT_RES3,
+  FR_ACT_RES4,
+  FR_ACT_BLACKHOLE,
+  FR_ACT_UNREACHABLE,
+  FR_ACT_PROHIBIT,
+  __FR_ACT_MAX,
+};
+#define FR_ACT_MAX (__FR_ACT_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/fiemap.h b/i686-linux-musl/include/linux/fiemap.h
new file mode 100644
index 0000000..4310786
--- /dev/null
+++ b/i686-linux-musl/include/linux/fiemap.h
@@ -0,0 +1,55 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_FIEMAP_H
+#define _UAPI_LINUX_FIEMAP_H
+#include <linux/types.h>
+struct fiemap_extent {
+  __u64 fe_logical;
+  __u64 fe_physical;
+  __u64 fe_length;
+  __u64 fe_reserved64[2];
+  __u32 fe_flags;
+  __u32 fe_reserved[3];
+};
+struct fiemap {
+  __u64 fm_start;
+  __u64 fm_length;
+  __u32 fm_flags;
+  __u32 fm_mapped_extents;
+  __u32 fm_extent_count;
+  __u32 fm_reserved;
+  struct fiemap_extent fm_extents[0];
+};
+#define FIEMAP_MAX_OFFSET (~0ULL)
+#define FIEMAP_FLAG_SYNC 0x00000001
+#define FIEMAP_FLAG_XATTR 0x00000002
+#define FIEMAP_FLAG_CACHE 0x00000004
+#define FIEMAP_FLAGS_COMPAT (FIEMAP_FLAG_SYNC | FIEMAP_FLAG_XATTR)
+#define FIEMAP_EXTENT_LAST 0x00000001
+#define FIEMAP_EXTENT_UNKNOWN 0x00000002
+#define FIEMAP_EXTENT_DELALLOC 0x00000004
+#define FIEMAP_EXTENT_ENCODED 0x00000008
+#define FIEMAP_EXTENT_DATA_ENCRYPTED 0x00000080
+#define FIEMAP_EXTENT_NOT_ALIGNED 0x00000100
+#define FIEMAP_EXTENT_DATA_INLINE 0x00000200
+#define FIEMAP_EXTENT_DATA_TAIL 0x00000400
+#define FIEMAP_EXTENT_UNWRITTEN 0x00000800
+#define FIEMAP_EXTENT_MERGED 0x00001000
+#define FIEMAP_EXTENT_SHARED 0x00002000
+#endif
diff --git a/i686-linux-musl/include/linux/filter.h b/i686-linux-musl/include/linux/filter.h
new file mode 100644
index 0000000..d13c59d
--- /dev/null
+++ b/i686-linux-musl/include/linux/filter.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_FILTER_H__
+#define _UAPI__LINUX_FILTER_H__
+#include <linux/compiler.h>
+#include <linux/types.h>
+#include <linux/bpf_common.h>
+#define BPF_MAJOR_VERSION 1
+#define BPF_MINOR_VERSION 1
+struct sock_filter {
+  __u16 code;
+  __u8 jt;
+  __u8 jf;
+  __u32 k;
+};
+struct sock_fprog {
+  unsigned short len;
+  struct sock_filter __user * filter;
+};
+#define BPF_RVAL(code) ((code) & 0x18)
+#define BPF_A 0x10
+#define BPF_MISCOP(code) ((code) & 0xf8)
+#define BPF_TAX 0x00
+#define BPF_TXA 0x80
+#ifndef BPF_STMT
+#define BPF_STMT(code,k) { (unsigned short) (code), 0, 0, k }
+#endif
+#ifndef BPF_JUMP
+#define BPF_JUMP(code,k,jt,jf) { (unsigned short) (code), jt, jf, k }
+#endif
+#define BPF_MEMWORDS 16
+#define SKF_AD_OFF (- 0x1000)
+#define SKF_AD_PROTOCOL 0
+#define SKF_AD_PKTTYPE 4
+#define SKF_AD_IFINDEX 8
+#define SKF_AD_NLATTR 12
+#define SKF_AD_NLATTR_NEST 16
+#define SKF_AD_MARK 20
+#define SKF_AD_QUEUE 24
+#define SKF_AD_HATYPE 28
+#define SKF_AD_RXHASH 32
+#define SKF_AD_CPU 36
+#define SKF_AD_ALU_XOR_X 40
+#define SKF_AD_VLAN_TAG 44
+#define SKF_AD_VLAN_TAG_PRESENT 48
+#define SKF_AD_PAY_OFFSET 52
+#define SKF_AD_RANDOM 56
+#define SKF_AD_VLAN_TPID 60
+#define SKF_AD_MAX 64
+#define SKF_NET_OFF (- 0x100000)
+#define SKF_LL_OFF (- 0x200000)
+#define BPF_NET_OFF SKF_NET_OFF
+#define BPF_LL_OFF SKF_LL_OFF
+#endif
diff --git a/i686-linux-musl/include/linux/firewire-cdev.h b/i686-linux-musl/include/linux/firewire-cdev.h
new file mode 100644
index 0000000..92957bc
--- /dev/null
+++ b/i686-linux-musl/include/linux/firewire-cdev.h
@@ -0,0 +1,270 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_FIREWIRE_CDEV_H
+#define _LINUX_FIREWIRE_CDEV_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/firewire-constants.h>
+#define FW_CDEV_EVENT_BUS_RESET 0x00
+#define FW_CDEV_EVENT_RESPONSE 0x01
+#define FW_CDEV_EVENT_REQUEST 0x02
+#define FW_CDEV_EVENT_ISO_INTERRUPT 0x03
+#define FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED 0x04
+#define FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED 0x05
+#define FW_CDEV_EVENT_REQUEST2 0x06
+#define FW_CDEV_EVENT_PHY_PACKET_SENT 0x07
+#define FW_CDEV_EVENT_PHY_PACKET_RECEIVED 0x08
+#define FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL 0x09
+struct fw_cdev_event_common {
+  __u64 closure;
+  __u32 type;
+};
+struct fw_cdev_event_bus_reset {
+  __u64 closure;
+  __u32 type;
+  __u32 node_id;
+  __u32 local_node_id;
+  __u32 bm_node_id;
+  __u32 irm_node_id;
+  __u32 root_node_id;
+  __u32 generation;
+};
+struct fw_cdev_event_response {
+  __u64 closure;
+  __u32 type;
+  __u32 rcode;
+  __u32 length;
+  __u32 data[0];
+};
+struct fw_cdev_event_request {
+  __u64 closure;
+  __u32 type;
+  __u32 tcode;
+  __u64 offset;
+  __u32 handle;
+  __u32 length;
+  __u32 data[0];
+};
+struct fw_cdev_event_request2 {
+  __u64 closure;
+  __u32 type;
+  __u32 tcode;
+  __u64 offset;
+  __u32 source_node_id;
+  __u32 destination_node_id;
+  __u32 card;
+  __u32 generation;
+  __u32 handle;
+  __u32 length;
+  __u32 data[0];
+};
+struct fw_cdev_event_iso_interrupt {
+  __u64 closure;
+  __u32 type;
+  __u32 cycle;
+  __u32 header_length;
+  __u32 header[0];
+};
+struct fw_cdev_event_iso_interrupt_mc {
+  __u64 closure;
+  __u32 type;
+  __u32 completed;
+};
+struct fw_cdev_event_iso_resource {
+  __u64 closure;
+  __u32 type;
+  __u32 handle;
+  __s32 channel;
+  __s32 bandwidth;
+};
+struct fw_cdev_event_phy_packet {
+  __u64 closure;
+  __u32 type;
+  __u32 rcode;
+  __u32 length;
+  __u32 data[0];
+};
+union fw_cdev_event {
+  struct fw_cdev_event_common common;
+  struct fw_cdev_event_bus_reset bus_reset;
+  struct fw_cdev_event_response response;
+  struct fw_cdev_event_request request;
+  struct fw_cdev_event_request2 request2;
+  struct fw_cdev_event_iso_interrupt iso_interrupt;
+  struct fw_cdev_event_iso_interrupt_mc iso_interrupt_mc;
+  struct fw_cdev_event_iso_resource iso_resource;
+  struct fw_cdev_event_phy_packet phy_packet;
+};
+#define FW_CDEV_IOC_GET_INFO _IOWR('#', 0x00, struct fw_cdev_get_info)
+#define FW_CDEV_IOC_SEND_REQUEST _IOW('#', 0x01, struct fw_cdev_send_request)
+#define FW_CDEV_IOC_ALLOCATE _IOWR('#', 0x02, struct fw_cdev_allocate)
+#define FW_CDEV_IOC_DEALLOCATE _IOW('#', 0x03, struct fw_cdev_deallocate)
+#define FW_CDEV_IOC_SEND_RESPONSE _IOW('#', 0x04, struct fw_cdev_send_response)
+#define FW_CDEV_IOC_INITIATE_BUS_RESET _IOW('#', 0x05, struct fw_cdev_initiate_bus_reset)
+#define FW_CDEV_IOC_ADD_DESCRIPTOR _IOWR('#', 0x06, struct fw_cdev_add_descriptor)
+#define FW_CDEV_IOC_REMOVE_DESCRIPTOR _IOW('#', 0x07, struct fw_cdev_remove_descriptor)
+#define FW_CDEV_IOC_CREATE_ISO_CONTEXT _IOWR('#', 0x08, struct fw_cdev_create_iso_context)
+#define FW_CDEV_IOC_QUEUE_ISO _IOWR('#', 0x09, struct fw_cdev_queue_iso)
+#define FW_CDEV_IOC_START_ISO _IOW('#', 0x0a, struct fw_cdev_start_iso)
+#define FW_CDEV_IOC_STOP_ISO _IOW('#', 0x0b, struct fw_cdev_stop_iso)
+#define FW_CDEV_IOC_GET_CYCLE_TIMER _IOR('#', 0x0c, struct fw_cdev_get_cycle_timer)
+#define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE _IOWR('#', 0x0d, struct fw_cdev_allocate_iso_resource)
+#define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE _IOW('#', 0x0e, struct fw_cdev_deallocate)
+#define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE _IOW('#', 0x0f, struct fw_cdev_allocate_iso_resource)
+#define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE _IOW('#', 0x10, struct fw_cdev_allocate_iso_resource)
+#define FW_CDEV_IOC_GET_SPEED _IO('#', 0x11)
+#define FW_CDEV_IOC_SEND_BROADCAST_REQUEST _IOW('#', 0x12, struct fw_cdev_send_request)
+#define FW_CDEV_IOC_SEND_STREAM_PACKET _IOW('#', 0x13, struct fw_cdev_send_stream_packet)
+#define FW_CDEV_IOC_GET_CYCLE_TIMER2 _IOWR('#', 0x14, struct fw_cdev_get_cycle_timer2)
+#define FW_CDEV_IOC_SEND_PHY_PACKET _IOWR('#', 0x15, struct fw_cdev_send_phy_packet)
+#define FW_CDEV_IOC_RECEIVE_PHY_PACKETS _IOW('#', 0x16, struct fw_cdev_receive_phy_packets)
+#define FW_CDEV_IOC_SET_ISO_CHANNELS _IOW('#', 0x17, struct fw_cdev_set_iso_channels)
+#define FW_CDEV_IOC_FLUSH_ISO _IOW('#', 0x18, struct fw_cdev_flush_iso)
+struct fw_cdev_get_info {
+  __u32 version;
+  __u32 rom_length;
+  __u64 rom;
+  __u64 bus_reset;
+  __u64 bus_reset_closure;
+  __u32 card;
+};
+struct fw_cdev_send_request {
+  __u32 tcode;
+  __u32 length;
+  __u64 offset;
+  __u64 closure;
+  __u64 data;
+  __u32 generation;
+};
+struct fw_cdev_send_response {
+  __u32 rcode;
+  __u32 length;
+  __u64 data;
+  __u32 handle;
+};
+struct fw_cdev_allocate {
+  __u64 offset;
+  __u64 closure;
+  __u32 length;
+  __u32 handle;
+  __u64 region_end;
+};
+struct fw_cdev_deallocate {
+  __u32 handle;
+};
+#define FW_CDEV_LONG_RESET 0
+#define FW_CDEV_SHORT_RESET 1
+struct fw_cdev_initiate_bus_reset {
+  __u32 type;
+};
+struct fw_cdev_add_descriptor {
+  __u32 immediate;
+  __u32 key;
+  __u64 data;
+  __u32 length;
+  __u32 handle;
+};
+struct fw_cdev_remove_descriptor {
+  __u32 handle;
+};
+#define FW_CDEV_ISO_CONTEXT_TRANSMIT 0
+#define FW_CDEV_ISO_CONTEXT_RECEIVE 1
+#define FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL 2
+struct fw_cdev_create_iso_context {
+  __u32 type;
+  __u32 header_size;
+  __u32 channel;
+  __u32 speed;
+  __u64 closure;
+  __u32 handle;
+};
+struct fw_cdev_set_iso_channels {
+  __u64 channels;
+  __u32 handle;
+};
+#define FW_CDEV_ISO_PAYLOAD_LENGTH(v) (v)
+#define FW_CDEV_ISO_INTERRUPT (1 << 16)
+#define FW_CDEV_ISO_SKIP (1 << 17)
+#define FW_CDEV_ISO_SYNC (1 << 17)
+#define FW_CDEV_ISO_TAG(v) ((v) << 18)
+#define FW_CDEV_ISO_SY(v) ((v) << 20)
+#define FW_CDEV_ISO_HEADER_LENGTH(v) ((v) << 24)
+struct fw_cdev_iso_packet {
+  __u32 control;
+  __u32 header[0];
+};
+struct fw_cdev_queue_iso {
+  __u64 packets;
+  __u64 data;
+  __u32 size;
+  __u32 handle;
+};
+#define FW_CDEV_ISO_CONTEXT_MATCH_TAG0 1
+#define FW_CDEV_ISO_CONTEXT_MATCH_TAG1 2
+#define FW_CDEV_ISO_CONTEXT_MATCH_TAG2 4
+#define FW_CDEV_ISO_CONTEXT_MATCH_TAG3 8
+#define FW_CDEV_ISO_CONTEXT_MATCH_ALL_TAGS 15
+struct fw_cdev_start_iso {
+  __s32 cycle;
+  __u32 sync;
+  __u32 tags;
+  __u32 handle;
+};
+struct fw_cdev_stop_iso {
+  __u32 handle;
+};
+struct fw_cdev_flush_iso {
+  __u32 handle;
+};
+struct fw_cdev_get_cycle_timer {
+  __u64 local_time;
+  __u32 cycle_timer;
+};
+struct fw_cdev_get_cycle_timer2 {
+  __s64 tv_sec;
+  __s32 tv_nsec;
+  __s32 clk_id;
+  __u32 cycle_timer;
+};
+struct fw_cdev_allocate_iso_resource {
+  __u64 closure;
+  __u64 channels;
+  __u32 bandwidth;
+  __u32 handle;
+};
+struct fw_cdev_send_stream_packet {
+  __u32 length;
+  __u32 tag;
+  __u32 channel;
+  __u32 sy;
+  __u64 closure;
+  __u64 data;
+  __u32 generation;
+  __u32 speed;
+};
+struct fw_cdev_send_phy_packet {
+  __u64 closure;
+  __u32 data[2];
+  __u32 generation;
+};
+struct fw_cdev_receive_phy_packets {
+  __u64 closure;
+};
+#define FW_CDEV_VERSION 3
+#endif
diff --git a/i686-linux-musl/include/linux/firewire-constants.h b/i686-linux-musl/include/linux/firewire-constants.h
new file mode 100644
index 0000000..b599852
--- /dev/null
+++ b/i686-linux-musl/include/linux/firewire-constants.h
@@ -0,0 +1,74 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_FIREWIRE_CONSTANTS_H
+#define _LINUX_FIREWIRE_CONSTANTS_H
+#define TCODE_WRITE_QUADLET_REQUEST 0x0
+#define TCODE_WRITE_BLOCK_REQUEST 0x1
+#define TCODE_WRITE_RESPONSE 0x2
+#define TCODE_READ_QUADLET_REQUEST 0x4
+#define TCODE_READ_BLOCK_REQUEST 0x5
+#define TCODE_READ_QUADLET_RESPONSE 0x6
+#define TCODE_READ_BLOCK_RESPONSE 0x7
+#define TCODE_CYCLE_START 0x8
+#define TCODE_LOCK_REQUEST 0x9
+#define TCODE_STREAM_DATA 0xa
+#define TCODE_LOCK_RESPONSE 0xb
+#define EXTCODE_MASK_SWAP 0x1
+#define EXTCODE_COMPARE_SWAP 0x2
+#define EXTCODE_FETCH_ADD 0x3
+#define EXTCODE_LITTLE_ADD 0x4
+#define EXTCODE_BOUNDED_ADD 0x5
+#define EXTCODE_WRAP_ADD 0x6
+#define EXTCODE_VENDOR_DEPENDENT 0x7
+#define TCODE_LOCK_MASK_SWAP (0x10 | EXTCODE_MASK_SWAP)
+#define TCODE_LOCK_COMPARE_SWAP (0x10 | EXTCODE_COMPARE_SWAP)
+#define TCODE_LOCK_FETCH_ADD (0x10 | EXTCODE_FETCH_ADD)
+#define TCODE_LOCK_LITTLE_ADD (0x10 | EXTCODE_LITTLE_ADD)
+#define TCODE_LOCK_BOUNDED_ADD (0x10 | EXTCODE_BOUNDED_ADD)
+#define TCODE_LOCK_WRAP_ADD (0x10 | EXTCODE_WRAP_ADD)
+#define TCODE_LOCK_VENDOR_DEPENDENT (0x10 | EXTCODE_VENDOR_DEPENDENT)
+#define RCODE_COMPLETE 0x0
+#define RCODE_CONFLICT_ERROR 0x4
+#define RCODE_DATA_ERROR 0x5
+#define RCODE_TYPE_ERROR 0x6
+#define RCODE_ADDRESS_ERROR 0x7
+#define RCODE_SEND_ERROR 0x10
+#define RCODE_CANCELLED 0x11
+#define RCODE_BUSY 0x12
+#define RCODE_GENERATION 0x13
+#define RCODE_NO_ACK 0x14
+#define SCODE_100 0x0
+#define SCODE_200 0x1
+#define SCODE_400 0x2
+#define SCODE_800 0x3
+#define SCODE_1600 0x4
+#define SCODE_3200 0x5
+#define SCODE_BETA 0x3
+#define ACK_COMPLETE 0x1
+#define ACK_PENDING 0x2
+#define ACK_BUSY_X 0x4
+#define ACK_BUSY_A 0x5
+#define ACK_BUSY_B 0x6
+#define ACK_DATA_ERROR 0xd
+#define ACK_TYPE_ERROR 0xe
+#define RETRY_1 0x00
+#define RETRY_X 0x01
+#define RETRY_A 0x02
+#define RETRY_B 0x03
+#endif
diff --git a/i686-linux-musl/include/linux/fou.h b/i686-linux-musl/include/linux/fou.h
new file mode 100644
index 0000000..a16b8c6
--- /dev/null
+++ b/i686-linux-musl/include/linux/fou.h
@@ -0,0 +1,52 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_FOU_H
+#define _UAPI_LINUX_FOU_H
+#define FOU_GENL_NAME "fou"
+#define FOU_GENL_VERSION 0x1
+enum {
+  FOU_ATTR_UNSPEC,
+  FOU_ATTR_PORT,
+  FOU_ATTR_AF,
+  FOU_ATTR_IPPROTO,
+  FOU_ATTR_TYPE,
+  FOU_ATTR_REMCSUM_NOPARTIAL,
+  FOU_ATTR_LOCAL_V4,
+  FOU_ATTR_LOCAL_V6,
+  FOU_ATTR_PEER_V4,
+  FOU_ATTR_PEER_V6,
+  FOU_ATTR_PEER_PORT,
+  FOU_ATTR_IFINDEX,
+  __FOU_ATTR_MAX,
+};
+#define FOU_ATTR_MAX (__FOU_ATTR_MAX - 1)
+enum {
+  FOU_CMD_UNSPEC,
+  FOU_CMD_ADD,
+  FOU_CMD_DEL,
+  FOU_CMD_GET,
+  __FOU_CMD_MAX,
+};
+enum {
+  FOU_ENCAP_UNSPEC,
+  FOU_ENCAP_DIRECT,
+  FOU_ENCAP_GUE,
+};
+#define FOU_CMD_MAX (__FOU_CMD_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/fpga-dfl.h b/i686-linux-musl/include/linux/fpga-dfl.h
new file mode 100644
index 0000000..54b93d0
--- /dev/null
+++ b/i686-linux-musl/include/linux/fpga-dfl.h
@@ -0,0 +1,87 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_FPGA_DFL_H
+#define _UAPI_LINUX_FPGA_DFL_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define DFL_FPGA_API_VERSION 0
+#define DFL_FPGA_MAGIC 0xB6
+#define DFL_FPGA_BASE 0
+#define DFL_PORT_BASE 0x40
+#define DFL_FME_BASE 0x80
+#define DFL_FPGA_GET_API_VERSION _IO(DFL_FPGA_MAGIC, DFL_FPGA_BASE + 0)
+#define DFL_FPGA_CHECK_EXTENSION _IO(DFL_FPGA_MAGIC, DFL_FPGA_BASE + 1)
+#define DFL_FPGA_PORT_RESET _IO(DFL_FPGA_MAGIC, DFL_PORT_BASE + 0)
+struct dfl_fpga_port_info {
+  __u32 argsz;
+  __u32 flags;
+  __u32 num_regions;
+  __u32 num_umsgs;
+};
+#define DFL_FPGA_PORT_GET_INFO _IO(DFL_FPGA_MAGIC, DFL_PORT_BASE + 1)
+struct dfl_fpga_port_region_info {
+  __u32 argsz;
+  __u32 flags;
+#define DFL_PORT_REGION_READ (1 << 0)
+#define DFL_PORT_REGION_WRITE (1 << 1)
+#define DFL_PORT_REGION_MMAP (1 << 2)
+  __u32 index;
+#define DFL_PORT_REGION_INDEX_AFU 0
+#define DFL_PORT_REGION_INDEX_STP 1
+  __u32 padding;
+  __u64 size;
+  __u64 offset;
+};
+#define DFL_FPGA_PORT_GET_REGION_INFO _IO(DFL_FPGA_MAGIC, DFL_PORT_BASE + 2)
+struct dfl_fpga_port_dma_map {
+  __u32 argsz;
+  __u32 flags;
+  __u64 user_addr;
+  __u64 length;
+  __u64 iova;
+};
+#define DFL_FPGA_PORT_DMA_MAP _IO(DFL_FPGA_MAGIC, DFL_PORT_BASE + 3)
+struct dfl_fpga_port_dma_unmap {
+  __u32 argsz;
+  __u32 flags;
+  __u64 iova;
+};
+#define DFL_FPGA_PORT_DMA_UNMAP _IO(DFL_FPGA_MAGIC, DFL_PORT_BASE + 4)
+struct dfl_fpga_irq_set {
+  __u32 start;
+  __u32 count;
+  __s32 evtfds[];
+};
+#define DFL_FPGA_PORT_ERR_GET_IRQ_NUM _IOR(DFL_FPGA_MAGIC, DFL_PORT_BASE + 5, __u32)
+#define DFL_FPGA_PORT_ERR_SET_IRQ _IOW(DFL_FPGA_MAGIC, DFL_PORT_BASE + 6, struct dfl_fpga_irq_set)
+#define DFL_FPGA_PORT_UINT_GET_IRQ_NUM _IOR(DFL_FPGA_MAGIC, DFL_PORT_BASE + 7, __u32)
+#define DFL_FPGA_PORT_UINT_SET_IRQ _IOW(DFL_FPGA_MAGIC, DFL_PORT_BASE + 8, struct dfl_fpga_irq_set)
+struct dfl_fpga_fme_port_pr {
+  __u32 argsz;
+  __u32 flags;
+  __u32 port_id;
+  __u32 buffer_size;
+  __u64 buffer_address;
+};
+#define DFL_FPGA_FME_PORT_PR _IO(DFL_FPGA_MAGIC, DFL_FME_BASE + 0)
+#define DFL_FPGA_FME_PORT_RELEASE _IOW(DFL_FPGA_MAGIC, DFL_FME_BASE + 1, int)
+#define DFL_FPGA_FME_PORT_ASSIGN _IOW(DFL_FPGA_MAGIC, DFL_FME_BASE + 2, int)
+#define DFL_FPGA_FME_ERR_GET_IRQ_NUM _IOR(DFL_FPGA_MAGIC, DFL_FME_BASE + 3, __u32)
+#define DFL_FPGA_FME_ERR_SET_IRQ _IOW(DFL_FPGA_MAGIC, DFL_FME_BASE + 4, struct dfl_fpga_irq_set)
+#endif
diff --git a/i686-linux-musl/include/linux/fs.h b/i686-linux-musl/include/linux/fs.h
new file mode 100644
index 0000000..3bb4183
--- /dev/null
+++ b/i686-linux-musl/include/linux/fs.h
@@ -0,0 +1,199 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_FS_H
+#define _UAPI_LINUX_FS_H
+#include <linux/limits.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/fscrypt.h>
+#include <linux/mount.h>
+#undef NR_OPEN
+#define INR_OPEN_CUR 1024
+#define INR_OPEN_MAX 4096
+#define BLOCK_SIZE_BITS 10
+#define BLOCK_SIZE (1 << BLOCK_SIZE_BITS)
+#define SEEK_SET 0
+#define SEEK_CUR 1
+#define SEEK_END 2
+#define SEEK_DATA 3
+#define SEEK_HOLE 4
+#define SEEK_MAX SEEK_HOLE
+#define RENAME_NOREPLACE (1 << 0)
+#define RENAME_EXCHANGE (1 << 1)
+#define RENAME_WHITEOUT (1 << 2)
+struct file_clone_range {
+  __s64 src_fd;
+  __u64 src_offset;
+  __u64 src_length;
+  __u64 dest_offset;
+};
+struct fstrim_range {
+  __u64 start;
+  __u64 len;
+  __u64 minlen;
+};
+#define FILE_DEDUPE_RANGE_SAME 0
+#define FILE_DEDUPE_RANGE_DIFFERS 1
+struct file_dedupe_range_info {
+  __s64 dest_fd;
+  __u64 dest_offset;
+  __u64 bytes_deduped;
+  __s32 status;
+  __u32 reserved;
+};
+struct file_dedupe_range {
+  __u64 src_offset;
+  __u64 src_length;
+  __u16 dest_count;
+  __u16 reserved1;
+  __u32 reserved2;
+  struct file_dedupe_range_info info[0];
+};
+struct files_stat_struct {
+  unsigned long nr_files;
+  unsigned long nr_free_files;
+  unsigned long max_files;
+};
+struct inodes_stat_t {
+  long nr_inodes;
+  long nr_unused;
+  long dummy[5];
+};
+#define NR_FILE 8192
+struct fsxattr {
+  __u32 fsx_xflags;
+  __u32 fsx_extsize;
+  __u32 fsx_nextents;
+  __u32 fsx_projid;
+  __u32 fsx_cowextsize;
+  unsigned char fsx_pad[8];
+};
+#define FS_XFLAG_REALTIME 0x00000001
+#define FS_XFLAG_PREALLOC 0x00000002
+#define FS_XFLAG_IMMUTABLE 0x00000008
+#define FS_XFLAG_APPEND 0x00000010
+#define FS_XFLAG_SYNC 0x00000020
+#define FS_XFLAG_NOATIME 0x00000040
+#define FS_XFLAG_NODUMP 0x00000080
+#define FS_XFLAG_RTINHERIT 0x00000100
+#define FS_XFLAG_PROJINHERIT 0x00000200
+#define FS_XFLAG_NOSYMLINKS 0x00000400
+#define FS_XFLAG_EXTSIZE 0x00000800
+#define FS_XFLAG_EXTSZINHERIT 0x00001000
+#define FS_XFLAG_NODEFRAG 0x00002000
+#define FS_XFLAG_FILESTREAM 0x00004000
+#define FS_XFLAG_DAX 0x00008000
+#define FS_XFLAG_COWEXTSIZE 0x00010000
+#define FS_XFLAG_HASATTR 0x80000000
+#define BLKROSET _IO(0x12, 93)
+#define BLKROGET _IO(0x12, 94)
+#define BLKRRPART _IO(0x12, 95)
+#define BLKGETSIZE _IO(0x12, 96)
+#define BLKFLSBUF _IO(0x12, 97)
+#define BLKRASET _IO(0x12, 98)
+#define BLKRAGET _IO(0x12, 99)
+#define BLKFRASET _IO(0x12, 100)
+#define BLKFRAGET _IO(0x12, 101)
+#define BLKSECTSET _IO(0x12, 102)
+#define BLKSECTGET _IO(0x12, 103)
+#define BLKSSZGET _IO(0x12, 104)
+#define BLKBSZGET _IOR(0x12, 112, size_t)
+#define BLKBSZSET _IOW(0x12, 113, size_t)
+#define BLKGETSIZE64 _IOR(0x12, 114, size_t)
+#define BLKTRACESETUP _IOWR(0x12, 115, struct blk_user_trace_setup)
+#define BLKTRACESTART _IO(0x12, 116)
+#define BLKTRACESTOP _IO(0x12, 117)
+#define BLKTRACETEARDOWN _IO(0x12, 118)
+#define BLKDISCARD _IO(0x12, 119)
+#define BLKIOMIN _IO(0x12, 120)
+#define BLKIOOPT _IO(0x12, 121)
+#define BLKALIGNOFF _IO(0x12, 122)
+#define BLKPBSZGET _IO(0x12, 123)
+#define BLKDISCARDZEROES _IO(0x12, 124)
+#define BLKSECDISCARD _IO(0x12, 125)
+#define BLKROTATIONAL _IO(0x12, 126)
+#define BLKZEROOUT _IO(0x12, 127)
+#define BLKGETDISKSEQ _IOR(0x12, 128, __u64)
+#define BMAP_IOCTL 1
+#define FIBMAP _IO(0x00, 1)
+#define FIGETBSZ _IO(0x00, 2)
+#define FIFREEZE _IOWR('X', 119, int)
+#define FITHAW _IOWR('X', 120, int)
+#define FITRIM _IOWR('X', 121, struct fstrim_range)
+#define FICLONE _IOW(0x94, 9, int)
+#define FICLONERANGE _IOW(0x94, 13, struct file_clone_range)
+#define FIDEDUPERANGE _IOWR(0x94, 54, struct file_dedupe_range)
+#define FSLABEL_MAX 256
+#define FS_IOC_GETFLAGS _IOR('f', 1, long)
+#define FS_IOC_SETFLAGS _IOW('f', 2, long)
+#define FS_IOC_GETVERSION _IOR('v', 1, long)
+#define FS_IOC_SETVERSION _IOW('v', 2, long)
+#define FS_IOC_FIEMAP _IOWR('f', 11, struct fiemap)
+#define FS_IOC32_GETFLAGS _IOR('f', 1, int)
+#define FS_IOC32_SETFLAGS _IOW('f', 2, int)
+#define FS_IOC32_GETVERSION _IOR('v', 1, int)
+#define FS_IOC32_SETVERSION _IOW('v', 2, int)
+#define FS_IOC_FSGETXATTR _IOR('X', 31, struct fsxattr)
+#define FS_IOC_FSSETXATTR _IOW('X', 32, struct fsxattr)
+#define FS_IOC_GETFSLABEL _IOR(0x94, 49, char[FSLABEL_MAX])
+#define FS_IOC_SETFSLABEL _IOW(0x94, 50, char[FSLABEL_MAX])
+#define FS_SECRM_FL 0x00000001
+#define FS_UNRM_FL 0x00000002
+#define FS_COMPR_FL 0x00000004
+#define FS_SYNC_FL 0x00000008
+#define FS_IMMUTABLE_FL 0x00000010
+#define FS_APPEND_FL 0x00000020
+#define FS_NODUMP_FL 0x00000040
+#define FS_NOATIME_FL 0x00000080
+#define FS_DIRTY_FL 0x00000100
+#define FS_COMPRBLK_FL 0x00000200
+#define FS_NOCOMP_FL 0x00000400
+#define FS_ENCRYPT_FL 0x00000800
+#define FS_BTREE_FL 0x00001000
+#define FS_INDEX_FL 0x00001000
+#define FS_IMAGIC_FL 0x00002000
+#define FS_JOURNAL_DATA_FL 0x00004000
+#define FS_NOTAIL_FL 0x00008000
+#define FS_DIRSYNC_FL 0x00010000
+#define FS_TOPDIR_FL 0x00020000
+#define FS_HUGE_FILE_FL 0x00040000
+#define FS_EXTENT_FL 0x00080000
+#define FS_VERITY_FL 0x00100000
+#define FS_EA_INODE_FL 0x00200000
+#define FS_EOFBLOCKS_FL 0x00400000
+#define FS_NOCOW_FL 0x00800000
+#define FS_DAX_FL 0x02000000
+#define FS_INLINE_DATA_FL 0x10000000
+#define FS_PROJINHERIT_FL 0x20000000
+#define FS_CASEFOLD_FL 0x40000000
+#define FS_RESERVED_FL 0x80000000
+#define FS_FL_USER_VISIBLE 0x0003DFFF
+#define FS_FL_USER_MODIFIABLE 0x000380FF
+#define SYNC_FILE_RANGE_WAIT_BEFORE 1
+#define SYNC_FILE_RANGE_WRITE 2
+#define SYNC_FILE_RANGE_WAIT_AFTER 4
+#define SYNC_FILE_RANGE_WRITE_AND_WAIT (SYNC_FILE_RANGE_WRITE | SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WAIT_AFTER)
+typedef int __bitwise __kernel_rwf_t;
+#define RWF_HIPRI ((__force __kernel_rwf_t) 0x00000001)
+#define RWF_DSYNC ((__force __kernel_rwf_t) 0x00000002)
+#define RWF_SYNC ((__force __kernel_rwf_t) 0x00000004)
+#define RWF_NOWAIT ((__force __kernel_rwf_t) 0x00000008)
+#define RWF_APPEND ((__force __kernel_rwf_t) 0x00000010)
+#define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT | RWF_APPEND)
+#endif
diff --git a/i686-linux-musl/include/linux/fscrypt.h b/i686-linux-musl/include/linux/fscrypt.h
new file mode 100644
index 0000000..ca42eb3
--- /dev/null
+++ b/i686-linux-musl/include/linux/fscrypt.h
@@ -0,0 +1,146 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_FSCRYPT_H
+#define _UAPI_LINUX_FSCRYPT_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define FSCRYPT_POLICY_FLAGS_PAD_4 0x00
+#define FSCRYPT_POLICY_FLAGS_PAD_8 0x01
+#define FSCRYPT_POLICY_FLAGS_PAD_16 0x02
+#define FSCRYPT_POLICY_FLAGS_PAD_32 0x03
+#define FSCRYPT_POLICY_FLAGS_PAD_MASK 0x03
+#define FSCRYPT_POLICY_FLAG_DIRECT_KEY 0x04
+#define FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64 0x08
+#define FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32 0x10
+#define FSCRYPT_MODE_AES_256_XTS 1
+#define FSCRYPT_MODE_AES_256_CTS 4
+#define FSCRYPT_MODE_AES_128_CBC 5
+#define FSCRYPT_MODE_AES_128_CTS 6
+#define FSCRYPT_MODE_ADIANTUM 9
+#define FSCRYPT_POLICY_V1 0
+#define FSCRYPT_KEY_DESCRIPTOR_SIZE 8
+struct fscrypt_policy_v1 {
+  __u8 version;
+  __u8 contents_encryption_mode;
+  __u8 filenames_encryption_mode;
+  __u8 flags;
+  __u8 master_key_descriptor[FSCRYPT_KEY_DESCRIPTOR_SIZE];
+};
+#define FSCRYPT_KEY_DESC_PREFIX "fscrypt:"
+#define FSCRYPT_KEY_DESC_PREFIX_SIZE 8
+#define FSCRYPT_MAX_KEY_SIZE 64
+struct fscrypt_key {
+  __u32 mode;
+  __u8 raw[FSCRYPT_MAX_KEY_SIZE];
+  __u32 size;
+};
+#define FSCRYPT_POLICY_V2 2
+#define FSCRYPT_KEY_IDENTIFIER_SIZE 16
+struct fscrypt_policy_v2 {
+  __u8 version;
+  __u8 contents_encryption_mode;
+  __u8 filenames_encryption_mode;
+  __u8 flags;
+  __u8 __reserved[4];
+  __u8 master_key_identifier[FSCRYPT_KEY_IDENTIFIER_SIZE];
+};
+struct fscrypt_get_policy_ex_arg {
+  __u64 policy_size;
+  union {
+    __u8 version;
+    struct fscrypt_policy_v1 v1;
+    struct fscrypt_policy_v2 v2;
+  } policy;
+};
+#define FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR 1
+#define FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER 2
+struct fscrypt_key_specifier {
+  __u32 type;
+  __u32 __reserved;
+  union {
+    __u8 __reserved[32];
+    __u8 descriptor[FSCRYPT_KEY_DESCRIPTOR_SIZE];
+    __u8 identifier[FSCRYPT_KEY_IDENTIFIER_SIZE];
+  } u;
+};
+struct fscrypt_provisioning_key_payload {
+  __u32 type;
+  __u32 __reserved;
+  __u8 raw[];
+};
+struct fscrypt_add_key_arg {
+  struct fscrypt_key_specifier key_spec;
+  __u32 raw_size;
+  __u32 key_id;
+  __u32 __reserved[7];
+#define __FSCRYPT_ADD_KEY_FLAG_HW_WRAPPED 0x00000001
+  __u32 __flags;
+  __u8 raw[];
+};
+struct fscrypt_remove_key_arg {
+  struct fscrypt_key_specifier key_spec;
+#define FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY 0x00000001
+#define FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS 0x00000002
+  __u32 removal_status_flags;
+  __u32 __reserved[5];
+};
+struct fscrypt_get_key_status_arg {
+  struct fscrypt_key_specifier key_spec;
+  __u32 __reserved[6];
+#define FSCRYPT_KEY_STATUS_ABSENT 1
+#define FSCRYPT_KEY_STATUS_PRESENT 2
+#define FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED 3
+  __u32 status;
+#define FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF 0x00000001
+  __u32 status_flags;
+  __u32 user_count;
+  __u32 __out_reserved[13];
+};
+#define FS_IOC_SET_ENCRYPTION_POLICY _IOR('f', 19, struct fscrypt_policy_v1)
+#define FS_IOC_GET_ENCRYPTION_PWSALT _IOW('f', 20, __u8[16])
+#define FS_IOC_GET_ENCRYPTION_POLICY _IOW('f', 21, struct fscrypt_policy_v1)
+#define FS_IOC_GET_ENCRYPTION_POLICY_EX _IOWR('f', 22, __u8[9])
+#define FS_IOC_ADD_ENCRYPTION_KEY _IOWR('f', 23, struct fscrypt_add_key_arg)
+#define FS_IOC_REMOVE_ENCRYPTION_KEY _IOWR('f', 24, struct fscrypt_remove_key_arg)
+#define FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS _IOWR('f', 25, struct fscrypt_remove_key_arg)
+#define FS_IOC_GET_ENCRYPTION_KEY_STATUS _IOWR('f', 26, struct fscrypt_get_key_status_arg)
+#define FS_IOC_GET_ENCRYPTION_NONCE _IOR('f', 27, __u8[16])
+#define fscrypt_policy fscrypt_policy_v1
+#define FS_KEY_DESCRIPTOR_SIZE FSCRYPT_KEY_DESCRIPTOR_SIZE
+#define FS_POLICY_FLAGS_PAD_4 FSCRYPT_POLICY_FLAGS_PAD_4
+#define FS_POLICY_FLAGS_PAD_8 FSCRYPT_POLICY_FLAGS_PAD_8
+#define FS_POLICY_FLAGS_PAD_16 FSCRYPT_POLICY_FLAGS_PAD_16
+#define FS_POLICY_FLAGS_PAD_32 FSCRYPT_POLICY_FLAGS_PAD_32
+#define FS_POLICY_FLAGS_PAD_MASK FSCRYPT_POLICY_FLAGS_PAD_MASK
+#define FS_POLICY_FLAG_DIRECT_KEY FSCRYPT_POLICY_FLAG_DIRECT_KEY
+#define FS_POLICY_FLAGS_VALID 0x07
+#define FS_ENCRYPTION_MODE_INVALID 0
+#define FS_ENCRYPTION_MODE_AES_256_XTS FSCRYPT_MODE_AES_256_XTS
+#define FS_ENCRYPTION_MODE_AES_256_GCM 2
+#define FS_ENCRYPTION_MODE_AES_256_CBC 3
+#define FS_ENCRYPTION_MODE_AES_256_CTS FSCRYPT_MODE_AES_256_CTS
+#define FS_ENCRYPTION_MODE_AES_128_CBC FSCRYPT_MODE_AES_128_CBC
+#define FS_ENCRYPTION_MODE_AES_128_CTS FSCRYPT_MODE_AES_128_CTS
+#define FS_ENCRYPTION_MODE_SPECK128_256_XTS 7
+#define FS_ENCRYPTION_MODE_SPECK128_256_CTS 8
+#define FS_ENCRYPTION_MODE_ADIANTUM FSCRYPT_MODE_ADIANTUM
+#define FS_KEY_DESC_PREFIX FSCRYPT_KEY_DESC_PREFIX
+#define FS_KEY_DESC_PREFIX_SIZE FSCRYPT_KEY_DESC_PREFIX_SIZE
+#define FS_MAX_KEY_SIZE FSCRYPT_MAX_KEY_SIZE
+#endif
diff --git a/i686-linux-musl/include/linux/fsi.h b/i686-linux-musl/include/linux/fsi.h
new file mode 100644
index 0000000..fc88464
--- /dev/null
+++ b/i686-linux-musl/include/linux/fsi.h
@@ -0,0 +1,51 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_FSI_H
+#define _UAPI_LINUX_FSI_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+struct scom_access {
+  __u64 addr;
+  __u64 data;
+  __u64 mask;
+  __u32 intf_errors;
+#define SCOM_INTF_ERR_PARITY 0x00000001
+#define SCOM_INTF_ERR_PROTECTION 0x00000002
+#define SCOM_INTF_ERR_ABORT 0x00000004
+#define SCOM_INTF_ERR_UNKNOWN 0x80000000
+  __u8 pib_status;
+#define SCOM_PIB_SUCCESS 0
+#define SCOM_PIB_BLOCKED 1
+#define SCOM_PIB_OFFLINE 2
+#define SCOM_PIB_PARTIAL 3
+#define SCOM_PIB_BAD_ADDR 4
+#define SCOM_PIB_CLK_ERR 5
+#define SCOM_PIB_PARITY_ERR 6
+#define SCOM_PIB_TIMEOUT 7
+  __u8 pad;
+};
+#define SCOM_CHECK_SUPPORTED 0x00000001
+#define SCOM_CHECK_PROTECTED 0x00000002
+#define SCOM_RESET_INTF 0x00000001
+#define SCOM_RESET_PIB 0x00000002
+#define FSI_SCOM_CHECK _IOR('s', 0x00, __u32)
+#define FSI_SCOM_READ _IOWR('s', 0x01, struct scom_access)
+#define FSI_SCOM_WRITE _IOWR('s', 0x02, struct scom_access)
+#define FSI_SCOM_RESET _IOW('s', 0x03, __u32)
+#endif
diff --git a/i686-linux-musl/include/linux/fsl_hypervisor.h b/i686-linux-musl/include/linux/fsl_hypervisor.h
new file mode 100644
index 0000000..7d00973
--- /dev/null
+++ b/i686-linux-musl/include/linux/fsl_hypervisor.h
@@ -0,0 +1,72 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPIFSL_HYPERVISOR_H
+#define _UAPIFSL_HYPERVISOR_H
+#include <linux/types.h>
+struct fsl_hv_ioctl_restart {
+  __u32 ret;
+  __u32 partition;
+};
+struct fsl_hv_ioctl_status {
+  __u32 ret;
+  __u32 partition;
+  __u32 status;
+};
+struct fsl_hv_ioctl_start {
+  __u32 ret;
+  __u32 partition;
+  __u32 entry_point;
+  __u32 load;
+};
+struct fsl_hv_ioctl_stop {
+  __u32 ret;
+  __u32 partition;
+};
+struct fsl_hv_ioctl_memcpy {
+  __u32 ret;
+  __u32 source;
+  __u32 target;
+  __u32 reserved;
+  __u64 local_vaddr;
+  __u64 remote_paddr;
+  __u64 count;
+};
+struct fsl_hv_ioctl_doorbell {
+  __u32 ret;
+  __u32 doorbell;
+};
+struct fsl_hv_ioctl_prop {
+  __u32 ret;
+  __u32 handle;
+  __u64 path;
+  __u64 propname;
+  __u64 propval;
+  __u32 proplen;
+  __u32 reserved;
+};
+#define FSL_HV_IOCTL_TYPE 0xAF
+#define FSL_HV_IOCTL_PARTITION_RESTART _IOWR(FSL_HV_IOCTL_TYPE, 1, struct fsl_hv_ioctl_restart)
+#define FSL_HV_IOCTL_PARTITION_GET_STATUS _IOWR(FSL_HV_IOCTL_TYPE, 2, struct fsl_hv_ioctl_status)
+#define FSL_HV_IOCTL_PARTITION_START _IOWR(FSL_HV_IOCTL_TYPE, 3, struct fsl_hv_ioctl_start)
+#define FSL_HV_IOCTL_PARTITION_STOP _IOWR(FSL_HV_IOCTL_TYPE, 4, struct fsl_hv_ioctl_stop)
+#define FSL_HV_IOCTL_MEMCPY _IOWR(FSL_HV_IOCTL_TYPE, 5, struct fsl_hv_ioctl_memcpy)
+#define FSL_HV_IOCTL_DOORBELL _IOWR(FSL_HV_IOCTL_TYPE, 6, struct fsl_hv_ioctl_doorbell)
+#define FSL_HV_IOCTL_GETPROP _IOWR(FSL_HV_IOCTL_TYPE, 7, struct fsl_hv_ioctl_prop)
+#define FSL_HV_IOCTL_SETPROP _IOWR(FSL_HV_IOCTL_TYPE, 8, struct fsl_hv_ioctl_prop)
+#endif
diff --git a/i686-linux-musl/include/linux/fsl_mc.h b/i686-linux-musl/include/linux/fsl_mc.h
new file mode 100644
index 0000000..721da93
--- /dev/null
+++ b/i686-linux-musl/include/linux/fsl_mc.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_FSL_MC_H_
+#define _UAPI_FSL_MC_H_
+#include <linux/types.h>
+#define MC_CMD_NUM_OF_PARAMS 7
+struct fsl_mc_command {
+  __le64 header;
+  __le64 params[MC_CMD_NUM_OF_PARAMS];
+};
+#define FSL_MC_SEND_CMD_IOCTL_TYPE 'R'
+#define FSL_MC_SEND_CMD_IOCTL_SEQ 0xE0
+#define FSL_MC_SEND_MC_COMMAND _IOWR(FSL_MC_SEND_CMD_IOCTL_TYPE, FSL_MC_SEND_CMD_IOCTL_SEQ, struct fsl_mc_command)
+#endif
diff --git a/i686-linux-musl/include/linux/fsmap.h b/i686-linux-musl/include/linux/fsmap.h
new file mode 100644
index 0000000..fcfea79
--- /dev/null
+++ b/i686-linux-musl/include/linux/fsmap.h
@@ -0,0 +1,55 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_FSMAP_H
+#define _LINUX_FSMAP_H
+#include <linux/types.h>
+struct fsmap {
+  __u32 fmr_device;
+  __u32 fmr_flags;
+  __u64 fmr_physical;
+  __u64 fmr_owner;
+  __u64 fmr_offset;
+  __u64 fmr_length;
+  __u64 fmr_reserved[3];
+};
+struct fsmap_head {
+  __u32 fmh_iflags;
+  __u32 fmh_oflags;
+  __u32 fmh_count;
+  __u32 fmh_entries;
+  __u64 fmh_reserved[6];
+  struct fsmap fmh_keys[2];
+  struct fsmap fmh_recs[];
+};
+#define FMH_IF_VALID 0
+#define FMH_OF_DEV_T 0x1
+#define FMR_OF_PREALLOC 0x1
+#define FMR_OF_ATTR_FORK 0x2
+#define FMR_OF_EXTENT_MAP 0x4
+#define FMR_OF_SHARED 0x8
+#define FMR_OF_SPECIAL_OWNER 0x10
+#define FMR_OF_LAST 0x20
+#define FMR_OWNER(type,code) (((__u64) type << 32) | ((__u64) code & 0xFFFFFFFFULL))
+#define FMR_OWNER_TYPE(owner) ((__u32) ((__u64) owner >> 32))
+#define FMR_OWNER_CODE(owner) ((__u32) (((__u64) owner & 0xFFFFFFFFULL)))
+#define FMR_OWN_FREE FMR_OWNER(0, 1)
+#define FMR_OWN_UNKNOWN FMR_OWNER(0, 2)
+#define FMR_OWN_METADATA FMR_OWNER(0, 3)
+#define FS_IOC_GETFSMAP _IOWR('X', 59, struct fsmap_head)
+#endif
diff --git a/i686-linux-musl/include/linux/fsverity.h b/i686-linux-musl/include/linux/fsverity.h
new file mode 100644
index 0000000..ff1603c
--- /dev/null
+++ b/i686-linux-musl/include/linux/fsverity.h
@@ -0,0 +1,71 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_FSVERITY_H
+#define _UAPI_LINUX_FSVERITY_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define FS_VERITY_HASH_ALG_SHA256 1
+#define FS_VERITY_HASH_ALG_SHA512 2
+struct fsverity_enable_arg {
+  __u32 version;
+  __u32 hash_algorithm;
+  __u32 block_size;
+  __u32 salt_size;
+  __u64 salt_ptr;
+  __u32 sig_size;
+  __u32 __reserved1;
+  __u64 sig_ptr;
+  __u64 __reserved2[11];
+};
+struct fsverity_digest {
+  __u16 digest_algorithm;
+  __u16 digest_size;
+  __u8 digest[];
+};
+struct fsverity_descriptor {
+  __u8 version;
+  __u8 hash_algorithm;
+  __u8 log_blocksize;
+  __u8 salt_size;
+  __le32 __reserved_0x04;
+  __le64 data_size;
+  __u8 root_hash[64];
+  __u8 salt[32];
+  __u8 __reserved[144];
+};
+struct fsverity_formatted_digest {
+  char magic[8];
+  __le16 digest_algorithm;
+  __le16 digest_size;
+  __u8 digest[];
+};
+#define FS_VERITY_METADATA_TYPE_MERKLE_TREE 1
+#define FS_VERITY_METADATA_TYPE_DESCRIPTOR 2
+#define FS_VERITY_METADATA_TYPE_SIGNATURE 3
+struct fsverity_read_metadata_arg {
+  __u64 metadata_type;
+  __u64 offset;
+  __u64 length;
+  __u64 buf_ptr;
+  __u64 __reserved;
+};
+#define FS_IOC_ENABLE_VERITY _IOW('f', 133, struct fsverity_enable_arg)
+#define FS_IOC_MEASURE_VERITY _IOWR('f', 134, struct fsverity_digest)
+#define FS_IOC_READ_VERITY_METADATA _IOWR('f', 135, struct fsverity_read_metadata_arg)
+#endif
diff --git a/i686-linux-musl/include/linux/fuse.h b/i686-linux-musl/include/linux/fuse.h
new file mode 100644
index 0000000..358db19
--- /dev/null
+++ b/i686-linux-musl/include/linux/fuse.h
@@ -0,0 +1,554 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_FUSE_H
+#define _LINUX_FUSE_H
+#include <stdint.h>
+#define FUSE_KERNEL_VERSION 7
+#define FUSE_KERNEL_MINOR_VERSION 35
+#define FUSE_ROOT_ID 1
+struct fuse_attr {
+  uint64_t ino;
+  uint64_t size;
+  uint64_t blocks;
+  uint64_t atime;
+  uint64_t mtime;
+  uint64_t ctime;
+  uint32_t atimensec;
+  uint32_t mtimensec;
+  uint32_t ctimensec;
+  uint32_t mode;
+  uint32_t nlink;
+  uint32_t uid;
+  uint32_t gid;
+  uint32_t rdev;
+  uint32_t blksize;
+  uint32_t flags;
+};
+struct fuse_kstatfs {
+  uint64_t blocks;
+  uint64_t bfree;
+  uint64_t bavail;
+  uint64_t files;
+  uint64_t ffree;
+  uint32_t bsize;
+  uint32_t namelen;
+  uint32_t frsize;
+  uint32_t padding;
+  uint32_t spare[6];
+};
+struct fuse_file_lock {
+  uint64_t start;
+  uint64_t end;
+  uint32_t type;
+  uint32_t pid;
+};
+#define FATTR_MODE (1 << 0)
+#define FATTR_UID (1 << 1)
+#define FATTR_GID (1 << 2)
+#define FATTR_SIZE (1 << 3)
+#define FATTR_ATIME (1 << 4)
+#define FATTR_MTIME (1 << 5)
+#define FATTR_FH (1 << 6)
+#define FATTR_ATIME_NOW (1 << 7)
+#define FATTR_MTIME_NOW (1 << 8)
+#define FATTR_LOCKOWNER (1 << 9)
+#define FATTR_CTIME (1 << 10)
+#define FATTR_KILL_SUIDGID (1 << 11)
+#define FOPEN_DIRECT_IO (1 << 0)
+#define FOPEN_KEEP_CACHE (1 << 1)
+#define FOPEN_NONSEEKABLE (1 << 2)
+#define FOPEN_CACHE_DIR (1 << 3)
+#define FOPEN_STREAM (1 << 4)
+#define FOPEN_NOFLUSH (1 << 5)
+#define FUSE_ASYNC_READ (1 << 0)
+#define FUSE_POSIX_LOCKS (1 << 1)
+#define FUSE_FILE_OPS (1 << 2)
+#define FUSE_ATOMIC_O_TRUNC (1 << 3)
+#define FUSE_EXPORT_SUPPORT (1 << 4)
+#define FUSE_BIG_WRITES (1 << 5)
+#define FUSE_DONT_MASK (1 << 6)
+#define FUSE_SPLICE_WRITE (1 << 7)
+#define FUSE_SPLICE_MOVE (1 << 8)
+#define FUSE_SPLICE_READ (1 << 9)
+#define FUSE_FLOCK_LOCKS (1 << 10)
+#define FUSE_HAS_IOCTL_DIR (1 << 11)
+#define FUSE_AUTO_INVAL_DATA (1 << 12)
+#define FUSE_DO_READDIRPLUS (1 << 13)
+#define FUSE_READDIRPLUS_AUTO (1 << 14)
+#define FUSE_ASYNC_DIO (1 << 15)
+#define FUSE_WRITEBACK_CACHE (1 << 16)
+#define FUSE_NO_OPEN_SUPPORT (1 << 17)
+#define FUSE_PARALLEL_DIROPS (1 << 18)
+#define FUSE_HANDLE_KILLPRIV (1 << 19)
+#define FUSE_POSIX_ACL (1 << 20)
+#define FUSE_ABORT_ERROR (1 << 21)
+#define FUSE_MAX_PAGES (1 << 22)
+#define FUSE_CACHE_SYMLINKS (1 << 23)
+#define FUSE_NO_OPENDIR_SUPPORT (1 << 24)
+#define FUSE_EXPLICIT_INVAL_DATA (1 << 25)
+#define FUSE_MAP_ALIGNMENT (1 << 26)
+#define FUSE_SUBMOUNTS (1 << 27)
+#define FUSE_HANDLE_KILLPRIV_V2 (1 << 28)
+#define FUSE_SETXATTR_EXT (1 << 29)
+#define FUSE_PASSTHROUGH (1 << 31)
+#define CUSE_UNRESTRICTED_IOCTL (1 << 0)
+#define FUSE_RELEASE_FLUSH (1 << 0)
+#define FUSE_RELEASE_FLOCK_UNLOCK (1 << 1)
+#define FUSE_GETATTR_FH (1 << 0)
+#define FUSE_LK_FLOCK (1 << 0)
+#define FUSE_WRITE_CACHE (1 << 0)
+#define FUSE_WRITE_LOCKOWNER (1 << 1)
+#define FUSE_WRITE_KILL_SUIDGID (1 << 2)
+#define FUSE_WRITE_KILL_PRIV FUSE_WRITE_KILL_SUIDGID
+#define FUSE_READ_LOCKOWNER (1 << 1)
+#define FUSE_IOCTL_COMPAT (1 << 0)
+#define FUSE_IOCTL_UNRESTRICTED (1 << 1)
+#define FUSE_IOCTL_RETRY (1 << 2)
+#define FUSE_IOCTL_32BIT (1 << 3)
+#define FUSE_IOCTL_DIR (1 << 4)
+#define FUSE_IOCTL_COMPAT_X32 (1 << 5)
+#define FUSE_IOCTL_MAX_IOV 256
+#define FUSE_POLL_SCHEDULE_NOTIFY (1 << 0)
+#define FUSE_FSYNC_FDATASYNC (1 << 0)
+#define FUSE_ATTR_SUBMOUNT (1 << 0)
+#define FUSE_OPEN_KILL_SUIDGID (1 << 0)
+#define FUSE_SETXATTR_ACL_KILL_SGID (1 << 0)
+enum fuse_opcode {
+  FUSE_LOOKUP = 1,
+  FUSE_FORGET = 2,
+  FUSE_GETATTR = 3,
+  FUSE_SETATTR = 4,
+  FUSE_READLINK = 5,
+  FUSE_SYMLINK = 6,
+  FUSE_MKNOD = 8,
+  FUSE_MKDIR = 9,
+  FUSE_UNLINK = 10,
+  FUSE_RMDIR = 11,
+  FUSE_RENAME = 12,
+  FUSE_LINK = 13,
+  FUSE_OPEN = 14,
+  FUSE_READ = 15,
+  FUSE_WRITE = 16,
+  FUSE_STATFS = 17,
+  FUSE_RELEASE = 18,
+  FUSE_FSYNC = 20,
+  FUSE_SETXATTR = 21,
+  FUSE_GETXATTR = 22,
+  FUSE_LISTXATTR = 23,
+  FUSE_REMOVEXATTR = 24,
+  FUSE_FLUSH = 25,
+  FUSE_INIT = 26,
+  FUSE_OPENDIR = 27,
+  FUSE_READDIR = 28,
+  FUSE_RELEASEDIR = 29,
+  FUSE_FSYNCDIR = 30,
+  FUSE_GETLK = 31,
+  FUSE_SETLK = 32,
+  FUSE_SETLKW = 33,
+  FUSE_ACCESS = 34,
+  FUSE_CREATE = 35,
+  FUSE_INTERRUPT = 36,
+  FUSE_BMAP = 37,
+  FUSE_DESTROY = 38,
+  FUSE_IOCTL = 39,
+  FUSE_POLL = 40,
+  FUSE_NOTIFY_REPLY = 41,
+  FUSE_BATCH_FORGET = 42,
+  FUSE_FALLOCATE = 43,
+  FUSE_READDIRPLUS = 44,
+  FUSE_RENAME2 = 45,
+  FUSE_LSEEK = 46,
+  FUSE_COPY_FILE_RANGE = 47,
+  FUSE_SETUPMAPPING = 48,
+  FUSE_REMOVEMAPPING = 49,
+  FUSE_SYNCFS = 50,
+  FUSE_CANONICAL_PATH = 2016,
+  CUSE_INIT = 4096,
+  CUSE_INIT_BSWAP_RESERVED = 1048576,
+  FUSE_INIT_BSWAP_RESERVED = 436207616,
+};
+enum fuse_notify_code {
+  FUSE_NOTIFY_POLL = 1,
+  FUSE_NOTIFY_INVAL_INODE = 2,
+  FUSE_NOTIFY_INVAL_ENTRY = 3,
+  FUSE_NOTIFY_STORE = 4,
+  FUSE_NOTIFY_RETRIEVE = 5,
+  FUSE_NOTIFY_DELETE = 6,
+  FUSE_NOTIFY_CODE_MAX,
+};
+#define FUSE_MIN_READ_BUFFER 8192
+#define FUSE_COMPAT_ENTRY_OUT_SIZE 120
+struct fuse_entry_out {
+  uint64_t nodeid;
+  uint64_t generation;
+  uint64_t entry_valid;
+  uint64_t attr_valid;
+  uint32_t entry_valid_nsec;
+  uint32_t attr_valid_nsec;
+  struct fuse_attr attr;
+};
+struct fuse_forget_in {
+  uint64_t nlookup;
+};
+struct fuse_forget_one {
+  uint64_t nodeid;
+  uint64_t nlookup;
+};
+struct fuse_batch_forget_in {
+  uint32_t count;
+  uint32_t dummy;
+};
+struct fuse_getattr_in {
+  uint32_t getattr_flags;
+  uint32_t dummy;
+  uint64_t fh;
+};
+#define FUSE_COMPAT_ATTR_OUT_SIZE 96
+struct fuse_attr_out {
+  uint64_t attr_valid;
+  uint32_t attr_valid_nsec;
+  uint32_t dummy;
+  struct fuse_attr attr;
+};
+#define FUSE_COMPAT_MKNOD_IN_SIZE 8
+struct fuse_mknod_in {
+  uint32_t mode;
+  uint32_t rdev;
+  uint32_t umask;
+  uint32_t padding;
+};
+struct fuse_mkdir_in {
+  uint32_t mode;
+  uint32_t umask;
+};
+struct fuse_rename_in {
+  uint64_t newdir;
+};
+struct fuse_rename2_in {
+  uint64_t newdir;
+  uint32_t flags;
+  uint32_t padding;
+};
+struct fuse_link_in {
+  uint64_t oldnodeid;
+};
+struct fuse_setattr_in {
+  uint32_t valid;
+  uint32_t padding;
+  uint64_t fh;
+  uint64_t size;
+  uint64_t lock_owner;
+  uint64_t atime;
+  uint64_t mtime;
+  uint64_t ctime;
+  uint32_t atimensec;
+  uint32_t mtimensec;
+  uint32_t ctimensec;
+  uint32_t mode;
+  uint32_t unused4;
+  uint32_t uid;
+  uint32_t gid;
+  uint32_t unused5;
+};
+struct fuse_open_in {
+  uint32_t flags;
+  uint32_t open_flags;
+};
+struct fuse_create_in {
+  uint32_t flags;
+  uint32_t mode;
+  uint32_t umask;
+  uint32_t open_flags;
+};
+struct fuse_open_out {
+  uint64_t fh;
+  uint32_t open_flags;
+  uint32_t passthrough_fh;
+};
+struct fuse_release_in {
+  uint64_t fh;
+  uint32_t flags;
+  uint32_t release_flags;
+  uint64_t lock_owner;
+};
+struct fuse_flush_in {
+  uint64_t fh;
+  uint32_t unused;
+  uint32_t padding;
+  uint64_t lock_owner;
+};
+struct fuse_read_in {
+  uint64_t fh;
+  uint64_t offset;
+  uint32_t size;
+  uint32_t read_flags;
+  uint64_t lock_owner;
+  uint32_t flags;
+  uint32_t padding;
+};
+#define FUSE_COMPAT_WRITE_IN_SIZE 24
+struct fuse_write_in {
+  uint64_t fh;
+  uint64_t offset;
+  uint32_t size;
+  uint32_t write_flags;
+  uint64_t lock_owner;
+  uint32_t flags;
+  uint32_t padding;
+};
+struct fuse_write_out {
+  uint32_t size;
+  uint32_t padding;
+};
+#define FUSE_COMPAT_STATFS_SIZE 48
+struct fuse_statfs_out {
+  struct fuse_kstatfs st;
+};
+struct fuse_fsync_in {
+  uint64_t fh;
+  uint32_t fsync_flags;
+  uint32_t padding;
+};
+#define FUSE_COMPAT_SETXATTR_IN_SIZE 8
+struct fuse_setxattr_in {
+  uint32_t size;
+  uint32_t flags;
+  uint32_t setxattr_flags;
+  uint32_t padding;
+};
+struct fuse_getxattr_in {
+  uint32_t size;
+  uint32_t padding;
+};
+struct fuse_getxattr_out {
+  uint32_t size;
+  uint32_t padding;
+};
+struct fuse_lk_in {
+  uint64_t fh;
+  uint64_t owner;
+  struct fuse_file_lock lk;
+  uint32_t lk_flags;
+  uint32_t padding;
+};
+struct fuse_lk_out {
+  struct fuse_file_lock lk;
+};
+struct fuse_access_in {
+  uint32_t mask;
+  uint32_t padding;
+};
+struct fuse_init_in {
+  uint32_t major;
+  uint32_t minor;
+  uint32_t max_readahead;
+  uint32_t flags;
+};
+#define FUSE_COMPAT_INIT_OUT_SIZE 8
+#define FUSE_COMPAT_22_INIT_OUT_SIZE 24
+struct fuse_init_out {
+  uint32_t major;
+  uint32_t minor;
+  uint32_t max_readahead;
+  uint32_t flags;
+  uint16_t max_background;
+  uint16_t congestion_threshold;
+  uint32_t max_write;
+  uint32_t time_gran;
+  uint16_t max_pages;
+  uint16_t map_alignment;
+  uint32_t unused[8];
+};
+#define CUSE_INIT_INFO_MAX 4096
+struct cuse_init_in {
+  uint32_t major;
+  uint32_t minor;
+  uint32_t unused;
+  uint32_t flags;
+};
+struct cuse_init_out {
+  uint32_t major;
+  uint32_t minor;
+  uint32_t unused;
+  uint32_t flags;
+  uint32_t max_read;
+  uint32_t max_write;
+  uint32_t dev_major;
+  uint32_t dev_minor;
+  uint32_t spare[10];
+};
+struct fuse_interrupt_in {
+  uint64_t unique;
+};
+struct fuse_bmap_in {
+  uint64_t block;
+  uint32_t blocksize;
+  uint32_t padding;
+};
+struct fuse_bmap_out {
+  uint64_t block;
+};
+struct fuse_ioctl_in {
+  uint64_t fh;
+  uint32_t flags;
+  uint32_t cmd;
+  uint64_t arg;
+  uint32_t in_size;
+  uint32_t out_size;
+};
+struct fuse_ioctl_iovec {
+  uint64_t base;
+  uint64_t len;
+};
+struct fuse_ioctl_out {
+  int32_t result;
+  uint32_t flags;
+  uint32_t in_iovs;
+  uint32_t out_iovs;
+};
+struct fuse_poll_in {
+  uint64_t fh;
+  uint64_t kh;
+  uint32_t flags;
+  uint32_t events;
+};
+struct fuse_poll_out {
+  uint32_t revents;
+  uint32_t padding;
+};
+struct fuse_notify_poll_wakeup_out {
+  uint64_t kh;
+};
+struct fuse_fallocate_in {
+  uint64_t fh;
+  uint64_t offset;
+  uint64_t length;
+  uint32_t mode;
+  uint32_t padding;
+};
+struct fuse_in_header {
+  uint32_t len;
+  uint32_t opcode;
+  uint64_t unique;
+  uint64_t nodeid;
+  uint32_t uid;
+  uint32_t gid;
+  uint32_t pid;
+  uint32_t padding;
+};
+struct fuse_out_header {
+  uint32_t len;
+  int32_t error;
+  uint64_t unique;
+};
+struct fuse_dirent {
+  uint64_t ino;
+  uint64_t off;
+  uint32_t namelen;
+  uint32_t type;
+  char name[];
+};
+#define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
+#define FUSE_DIRENT_ALIGN(x) (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
+#define FUSE_DIRENT_SIZE(d) FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
+struct fuse_direntplus {
+  struct fuse_entry_out entry_out;
+  struct fuse_dirent dirent;
+};
+#define FUSE_NAME_OFFSET_DIRENTPLUS offsetof(struct fuse_direntplus, dirent.name)
+#define FUSE_DIRENTPLUS_SIZE(d) FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen)
+struct fuse_notify_inval_inode_out {
+  uint64_t ino;
+  int64_t off;
+  int64_t len;
+};
+struct fuse_notify_inval_entry_out {
+  uint64_t parent;
+  uint32_t namelen;
+  uint32_t padding;
+};
+struct fuse_notify_delete_out {
+  uint64_t parent;
+  uint64_t child;
+  uint32_t namelen;
+  uint32_t padding;
+};
+struct fuse_notify_store_out {
+  uint64_t nodeid;
+  uint64_t offset;
+  uint32_t size;
+  uint32_t padding;
+};
+struct fuse_notify_retrieve_out {
+  uint64_t notify_unique;
+  uint64_t nodeid;
+  uint64_t offset;
+  uint32_t size;
+  uint32_t padding;
+};
+struct fuse_notify_retrieve_in {
+  uint64_t dummy1;
+  uint64_t offset;
+  uint32_t size;
+  uint32_t dummy2;
+  uint64_t dummy3;
+  uint64_t dummy4;
+};
+#define FUSE_DEV_IOC_MAGIC 229
+#define FUSE_DEV_IOC_CLONE _IOR(FUSE_DEV_IOC_MAGIC, 0, uint32_t)
+#define FUSE_DEV_IOC_PASSTHROUGH_OPEN _IOW(FUSE_DEV_IOC_MAGIC, 126, __u32)
+struct fuse_lseek_in {
+  uint64_t fh;
+  uint64_t offset;
+  uint32_t whence;
+  uint32_t padding;
+};
+struct fuse_lseek_out {
+  uint64_t offset;
+};
+struct fuse_copy_file_range_in {
+  uint64_t fh_in;
+  uint64_t off_in;
+  uint64_t nodeid_out;
+  uint64_t fh_out;
+  uint64_t off_out;
+  uint64_t len;
+  uint64_t flags;
+};
+#define FUSE_SETUPMAPPING_FLAG_WRITE (1ull << 0)
+#define FUSE_SETUPMAPPING_FLAG_READ (1ull << 1)
+struct fuse_setupmapping_in {
+  uint64_t fh;
+  uint64_t foffset;
+  uint64_t len;
+  uint64_t flags;
+  uint64_t moffset;
+};
+struct fuse_removemapping_in {
+  uint32_t count;
+};
+struct fuse_removemapping_one {
+  uint64_t moffset;
+  uint64_t len;
+};
+#define FUSE_REMOVEMAPPING_MAX_ENTRY (PAGE_SIZE / sizeof(struct fuse_removemapping_one))
+struct fuse_syncfs_in {
+  uint64_t padding;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/futex.h b/i686-linux-musl/include/linux/futex.h
new file mode 100644
index 0000000..c80b90c
--- /dev/null
+++ b/i686-linux-musl/include/linux/futex.h
@@ -0,0 +1,87 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_FUTEX_H
+#define _UAPI_LINUX_FUTEX_H
+#include <linux/compiler.h>
+#include <linux/types.h>
+#define FUTEX_WAIT 0
+#define FUTEX_WAKE 1
+#define FUTEX_FD 2
+#define FUTEX_REQUEUE 3
+#define FUTEX_CMP_REQUEUE 4
+#define FUTEX_WAKE_OP 5
+#define FUTEX_LOCK_PI 6
+#define FUTEX_UNLOCK_PI 7
+#define FUTEX_TRYLOCK_PI 8
+#define FUTEX_WAIT_BITSET 9
+#define FUTEX_WAKE_BITSET 10
+#define FUTEX_WAIT_REQUEUE_PI 11
+#define FUTEX_CMP_REQUEUE_PI 12
+#define FUTEX_LOCK_PI2 13
+#define FUTEX_PRIVATE_FLAG 128
+#define FUTEX_CLOCK_REALTIME 256
+#define FUTEX_CMD_MASK ~(FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME)
+#define FUTEX_WAIT_PRIVATE (FUTEX_WAIT | FUTEX_PRIVATE_FLAG)
+#define FUTEX_WAKE_PRIVATE (FUTEX_WAKE | FUTEX_PRIVATE_FLAG)
+#define FUTEX_REQUEUE_PRIVATE (FUTEX_REQUEUE | FUTEX_PRIVATE_FLAG)
+#define FUTEX_CMP_REQUEUE_PRIVATE (FUTEX_CMP_REQUEUE | FUTEX_PRIVATE_FLAG)
+#define FUTEX_WAKE_OP_PRIVATE (FUTEX_WAKE_OP | FUTEX_PRIVATE_FLAG)
+#define FUTEX_LOCK_PI_PRIVATE (FUTEX_LOCK_PI | FUTEX_PRIVATE_FLAG)
+#define FUTEX_LOCK_PI2_PRIVATE (FUTEX_LOCK_PI2 | FUTEX_PRIVATE_FLAG)
+#define FUTEX_UNLOCK_PI_PRIVATE (FUTEX_UNLOCK_PI | FUTEX_PRIVATE_FLAG)
+#define FUTEX_TRYLOCK_PI_PRIVATE (FUTEX_TRYLOCK_PI | FUTEX_PRIVATE_FLAG)
+#define FUTEX_WAIT_BITSET_PRIVATE (FUTEX_WAIT_BITSET | FUTEX_PRIVATE_FLAG)
+#define FUTEX_WAKE_BITSET_PRIVATE (FUTEX_WAKE_BITSET | FUTEX_PRIVATE_FLAG)
+#define FUTEX_WAIT_REQUEUE_PI_PRIVATE (FUTEX_WAIT_REQUEUE_PI | FUTEX_PRIVATE_FLAG)
+#define FUTEX_CMP_REQUEUE_PI_PRIVATE (FUTEX_CMP_REQUEUE_PI | FUTEX_PRIVATE_FLAG)
+#define FUTEX_32 2
+#define FUTEX_WAITV_MAX 128
+struct futex_waitv {
+  __u64 val;
+  __u64 uaddr;
+  __u32 flags;
+  __u32 __reserved;
+};
+struct robust_list {
+  struct robust_list __user * next;
+};
+struct robust_list_head {
+  struct robust_list list;
+  long futex_offset;
+  struct robust_list __user * list_op_pending;
+};
+#define FUTEX_WAITERS 0x80000000
+#define FUTEX_OWNER_DIED 0x40000000
+#define FUTEX_TID_MASK 0x3fffffff
+#define ROBUST_LIST_LIMIT 2048
+#define FUTEX_BITSET_MATCH_ANY 0xffffffff
+#define FUTEX_OP_SET 0
+#define FUTEX_OP_ADD 1
+#define FUTEX_OP_OR 2
+#define FUTEX_OP_ANDN 3
+#define FUTEX_OP_XOR 4
+#define FUTEX_OP_OPARG_SHIFT 8
+#define FUTEX_OP_CMP_EQ 0
+#define FUTEX_OP_CMP_NE 1
+#define FUTEX_OP_CMP_LT 2
+#define FUTEX_OP_CMP_LE 3
+#define FUTEX_OP_CMP_GT 4
+#define FUTEX_OP_CMP_GE 5
+#define FUTEX_OP(op,oparg,cmp,cmparg) (((op & 0xf) << 28) | ((cmp & 0xf) << 24) | ((oparg & 0xfff) << 12) | (cmparg & 0xfff))
+#endif
diff --git a/i686-linux-musl/include/linux/gameport.h b/i686-linux-musl/include/linux/gameport.h
new file mode 100644
index 0000000..c29864e
--- /dev/null
+++ b/i686-linux-musl/include/linux/gameport.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_GAMEPORT_H
+#define _UAPI_GAMEPORT_H
+#define GAMEPORT_MODE_DISABLED 0
+#define GAMEPORT_MODE_RAW 1
+#define GAMEPORT_MODE_COOKED 2
+#define GAMEPORT_ID_VENDOR_ANALOG 0x0001
+#define GAMEPORT_ID_VENDOR_MADCATZ 0x0002
+#define GAMEPORT_ID_VENDOR_LOGITECH 0x0003
+#define GAMEPORT_ID_VENDOR_CREATIVE 0x0004
+#define GAMEPORT_ID_VENDOR_GENIUS 0x0005
+#define GAMEPORT_ID_VENDOR_INTERACT 0x0006
+#define GAMEPORT_ID_VENDOR_MICROSOFT 0x0007
+#define GAMEPORT_ID_VENDOR_THRUSTMASTER 0x0008
+#define GAMEPORT_ID_VENDOR_GRAVIS 0x0009
+#define GAMEPORT_ID_VENDOR_GUILLEMOT 0x000a
+#endif
diff --git a/i686-linux-musl/include/linux/gen_stats.h b/i686-linux-musl/include/linux/gen_stats.h
new file mode 100644
index 0000000..2df6616
--- /dev/null
+++ b/i686-linux-musl/include/linux/gen_stats.h
@@ -0,0 +1,58 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_GEN_STATS_H
+#define __LINUX_GEN_STATS_H
+#include <linux/types.h>
+enum {
+  TCA_STATS_UNSPEC,
+  TCA_STATS_BASIC,
+  TCA_STATS_RATE_EST,
+  TCA_STATS_QUEUE,
+  TCA_STATS_APP,
+  TCA_STATS_RATE_EST64,
+  TCA_STATS_PAD,
+  TCA_STATS_BASIC_HW,
+  TCA_STATS_PKT64,
+  __TCA_STATS_MAX,
+};
+#define TCA_STATS_MAX (__TCA_STATS_MAX - 1)
+struct gnet_stats_basic {
+  __u64 bytes;
+  __u32 packets;
+};
+struct gnet_stats_rate_est {
+  __u32 bps;
+  __u32 pps;
+};
+struct gnet_stats_rate_est64 {
+  __u64 bps;
+  __u64 pps;
+};
+struct gnet_stats_queue {
+  __u32 qlen;
+  __u32 backlog;
+  __u32 drops;
+  __u32 requeues;
+  __u32 overlimits;
+};
+struct gnet_estimator {
+  signed char interval;
+  unsigned char ewma_log;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/genetlink.h b/i686-linux-musl/include/linux/genetlink.h
new file mode 100644
index 0000000..2e2137d
--- /dev/null
+++ b/i686-linux-musl/include/linux/genetlink.h
@@ -0,0 +1,92 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_GENERIC_NETLINK_H
+#define _UAPI__LINUX_GENERIC_NETLINK_H
+#include <linux/types.h>
+#include <linux/netlink.h>
+#define GENL_NAMSIZ 16
+#define GENL_MIN_ID NLMSG_MIN_TYPE
+#define GENL_MAX_ID 1023
+struct genlmsghdr {
+  __u8 cmd;
+  __u8 version;
+  __u16 reserved;
+};
+#define GENL_HDRLEN NLMSG_ALIGN(sizeof(struct genlmsghdr))
+#define GENL_ADMIN_PERM 0x01
+#define GENL_CMD_CAP_DO 0x02
+#define GENL_CMD_CAP_DUMP 0x04
+#define GENL_CMD_CAP_HASPOL 0x08
+#define GENL_UNS_ADMIN_PERM 0x10
+#define GENL_ID_CTRL NLMSG_MIN_TYPE
+#define GENL_ID_VFS_DQUOT (NLMSG_MIN_TYPE + 1)
+#define GENL_ID_PMCRAID (NLMSG_MIN_TYPE + 2)
+#define GENL_START_ALLOC (NLMSG_MIN_TYPE + 3)
+enum {
+  CTRL_CMD_UNSPEC,
+  CTRL_CMD_NEWFAMILY,
+  CTRL_CMD_DELFAMILY,
+  CTRL_CMD_GETFAMILY,
+  CTRL_CMD_NEWOPS,
+  CTRL_CMD_DELOPS,
+  CTRL_CMD_GETOPS,
+  CTRL_CMD_NEWMCAST_GRP,
+  CTRL_CMD_DELMCAST_GRP,
+  CTRL_CMD_GETMCAST_GRP,
+  CTRL_CMD_GETPOLICY,
+  __CTRL_CMD_MAX,
+};
+#define CTRL_CMD_MAX (__CTRL_CMD_MAX - 1)
+enum {
+  CTRL_ATTR_UNSPEC,
+  CTRL_ATTR_FAMILY_ID,
+  CTRL_ATTR_FAMILY_NAME,
+  CTRL_ATTR_VERSION,
+  CTRL_ATTR_HDRSIZE,
+  CTRL_ATTR_MAXATTR,
+  CTRL_ATTR_OPS,
+  CTRL_ATTR_MCAST_GROUPS,
+  CTRL_ATTR_POLICY,
+  CTRL_ATTR_OP_POLICY,
+  CTRL_ATTR_OP,
+  __CTRL_ATTR_MAX,
+};
+#define CTRL_ATTR_MAX (__CTRL_ATTR_MAX - 1)
+enum {
+  CTRL_ATTR_OP_UNSPEC,
+  CTRL_ATTR_OP_ID,
+  CTRL_ATTR_OP_FLAGS,
+  __CTRL_ATTR_OP_MAX,
+};
+#define CTRL_ATTR_OP_MAX (__CTRL_ATTR_OP_MAX - 1)
+enum {
+  CTRL_ATTR_MCAST_GRP_UNSPEC,
+  CTRL_ATTR_MCAST_GRP_NAME,
+  CTRL_ATTR_MCAST_GRP_ID,
+  __CTRL_ATTR_MCAST_GRP_MAX,
+};
+enum {
+  CTRL_ATTR_POLICY_UNSPEC,
+  CTRL_ATTR_POLICY_DO,
+  CTRL_ATTR_POLICY_DUMP,
+  __CTRL_ATTR_POLICY_DUMP_MAX,
+  CTRL_ATTR_POLICY_DUMP_MAX = __CTRL_ATTR_POLICY_DUMP_MAX - 1
+};
+#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/genwqe/genwqe_card.h b/i686-linux-musl/include/linux/genwqe/genwqe_card.h
new file mode 100644
index 0000000..d14c251
--- /dev/null
+++ b/i686-linux-musl/include/linux/genwqe/genwqe_card.h
@@ -0,0 +1,270 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __GENWQE_CARD_H__
+#define __GENWQE_CARD_H__
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define GENWQE_DEVNAME "genwqe"
+#define GENWQE_TYPE_ALTERA_230 0x00
+#define GENWQE_TYPE_ALTERA_530 0x01
+#define GENWQE_TYPE_ALTERA_A4 0x02
+#define GENWQE_TYPE_ALTERA_A7 0x03
+#define GENWQE_UID_OFFS(uid) ((uid) << 24)
+#define GENWQE_SLU_OFFS GENWQE_UID_OFFS(0)
+#define GENWQE_HSU_OFFS GENWQE_UID_OFFS(1)
+#define GENWQE_APP_OFFS GENWQE_UID_OFFS(2)
+#define GENWQE_MAX_UNITS 3
+#define IO_EXTENDED_ERROR_POINTER 0x00000048
+#define IO_ERROR_INJECT_SELECTOR 0x00000060
+#define IO_EXTENDED_DIAG_SELECTOR 0x00000070
+#define IO_EXTENDED_DIAG_READ_MBX 0x00000078
+#define IO_EXTENDED_DIAG_MAP(ring) (0x00000500 | ((ring) << 3))
+#define GENWQE_EXTENDED_DIAG_SELECTOR(ring,trace) (((ring) << 8) | (trace))
+#define IO_SLU_UNITCFG 0x00000000
+#define IO_SLU_UNITCFG_TYPE_MASK 0x000000000ff00000
+#define IO_SLU_FIR 0x00000008
+#define IO_SLU_FIR_CLR 0x00000010
+#define IO_SLU_FEC 0x00000018
+#define IO_SLU_ERR_ACT_MASK 0x00000020
+#define IO_SLU_ERR_ATTN_MASK 0x00000028
+#define IO_SLU_FIRX1_ACT_MASK 0x00000030
+#define IO_SLU_FIRX0_ACT_MASK 0x00000038
+#define IO_SLU_SEC_LEM_DEBUG_OVR 0x00000040
+#define IO_SLU_EXTENDED_ERR_PTR 0x00000048
+#define IO_SLU_COMMON_CONFIG 0x00000060
+#define IO_SLU_FLASH_FIR 0x00000108
+#define IO_SLU_SLC_FIR 0x00000110
+#define IO_SLU_RIU_TRAP 0x00000280
+#define IO_SLU_FLASH_FEC 0x00000308
+#define IO_SLU_SLC_FEC 0x00000310
+#define IO_SLC_QUEUE_SEGMENT 0x00010000
+#define IO_SLC_VF_QUEUE_SEGMENT 0x00050000
+#define IO_SLC_QUEUE_OFFSET 0x00010008
+#define IO_SLC_VF_QUEUE_OFFSET 0x00050008
+#define IO_SLC_QUEUE_CONFIG 0x00010010
+#define IO_SLC_VF_QUEUE_CONFIG 0x00050010
+#define IO_SLC_APPJOB_TIMEOUT 0x00010018
+#define IO_SLC_VF_APPJOB_TIMEOUT 0x00050018
+#define TIMEOUT_250MS 0x0000000f
+#define HEARTBEAT_DISABLE 0x0000ff00
+#define IO_SLC_QUEUE_INITSQN 0x00010020
+#define IO_SLC_VF_QUEUE_INITSQN 0x00050020
+#define IO_SLC_QUEUE_WRAP 0x00010028
+#define IO_SLC_VF_QUEUE_WRAP 0x00050028
+#define IO_SLC_QUEUE_STATUS 0x00010100
+#define IO_SLC_VF_QUEUE_STATUS 0x00050100
+#define IO_SLC_QUEUE_WTIME 0x00010030
+#define IO_SLC_VF_QUEUE_WTIME 0x00050030
+#define IO_SLC_QUEUE_ERRCNTS 0x00010038
+#define IO_SLC_VF_QUEUE_ERRCNTS 0x00050038
+#define IO_SLC_QUEUE_LRW 0x00010040
+#define IO_SLC_VF_QUEUE_LRW 0x00050040
+#define IO_SLC_FREE_RUNNING_TIMER 0x00010108
+#define IO_SLC_VF_FREE_RUNNING_TIMER 0x00050108
+#define IO_PF_SLC_VIRTUAL_REGION 0x00050000
+#define IO_PF_SLC_VIRTUAL_WINDOW 0x00060000
+#define IO_PF_SLC_JOBPEND(n) (0x00061000 + 8 * (n))
+#define IO_SLC_JOBPEND(n) IO_PF_SLC_JOBPEND(n)
+#define IO_SLU_SLC_PARSE_TRAP(n) (0x00011000 + 8 * (n))
+#define IO_SLU_SLC_DISP_TRAP(n) (0x00011200 + 8 * (n))
+#define IO_SLC_CFGREG_GFIR 0x00020000
+#define GFIR_ERR_TRIGGER 0x0000ffff
+#define IO_SLC_CFGREG_SOFTRESET 0x00020018
+#define IO_SLC_MISC_DEBUG 0x00020060
+#define IO_SLC_MISC_DEBUG_CLR 0x00020068
+#define IO_SLC_MISC_DEBUG_SET 0x00020070
+#define IO_SLU_TEMPERATURE_SENSOR 0x00030000
+#define IO_SLU_TEMPERATURE_CONFIG 0x00030008
+#define IO_SLU_VOLTAGE_CONTROL 0x00030080
+#define IO_SLU_VOLTAGE_NOMINAL 0x00000000
+#define IO_SLU_VOLTAGE_DOWN5 0x00000006
+#define IO_SLU_VOLTAGE_UP5 0x00000007
+#define IO_SLU_LEDCONTROL 0x00030100
+#define IO_SLU_FLASH_DIRECTACCESS 0x00040010
+#define IO_SLU_FLASH_DIRECTACCESS2 0x00040020
+#define IO_SLU_FLASH_CMDINTF 0x00040030
+#define IO_SLU_BITSTREAM 0x00040040
+#define IO_HSU_ERR_BEHAVIOR 0x01001010
+#define IO_SLC2_SQB_TRAP 0x00062000
+#define IO_SLC2_QUEUE_MANAGER_TRAP 0x00062008
+#define IO_SLC2_FLS_MASTER_TRAP 0x00062010
+#define IO_HSU_UNITCFG 0x01000000
+#define IO_HSU_FIR 0x01000008
+#define IO_HSU_FIR_CLR 0x01000010
+#define IO_HSU_FEC 0x01000018
+#define IO_HSU_ERR_ACT_MASK 0x01000020
+#define IO_HSU_ERR_ATTN_MASK 0x01000028
+#define IO_HSU_FIRX1_ACT_MASK 0x01000030
+#define IO_HSU_FIRX0_ACT_MASK 0x01000038
+#define IO_HSU_SEC_LEM_DEBUG_OVR 0x01000040
+#define IO_HSU_EXTENDED_ERR_PTR 0x01000048
+#define IO_HSU_COMMON_CONFIG 0x01000060
+#define IO_APP_UNITCFG 0x02000000
+#define IO_APP_FIR 0x02000008
+#define IO_APP_FIR_CLR 0x02000010
+#define IO_APP_FEC 0x02000018
+#define IO_APP_ERR_ACT_MASK 0x02000020
+#define IO_APP_ERR_ATTN_MASK 0x02000028
+#define IO_APP_FIRX1_ACT_MASK 0x02000030
+#define IO_APP_FIRX0_ACT_MASK 0x02000038
+#define IO_APP_SEC_LEM_DEBUG_OVR 0x02000040
+#define IO_APP_EXTENDED_ERR_PTR 0x02000048
+#define IO_APP_COMMON_CONFIG 0x02000060
+#define IO_APP_DEBUG_REG_01 0x02010000
+#define IO_APP_DEBUG_REG_02 0x02010008
+#define IO_APP_DEBUG_REG_03 0x02010010
+#define IO_APP_DEBUG_REG_04 0x02010018
+#define IO_APP_DEBUG_REG_05 0x02010020
+#define IO_APP_DEBUG_REG_06 0x02010028
+#define IO_APP_DEBUG_REG_07 0x02010030
+#define IO_APP_DEBUG_REG_08 0x02010038
+#define IO_APP_DEBUG_REG_09 0x02010040
+#define IO_APP_DEBUG_REG_10 0x02010048
+#define IO_APP_DEBUG_REG_11 0x02010050
+#define IO_APP_DEBUG_REG_12 0x02010058
+#define IO_APP_DEBUG_REG_13 0x02010060
+#define IO_APP_DEBUG_REG_14 0x02010068
+#define IO_APP_DEBUG_REG_15 0x02010070
+#define IO_APP_DEBUG_REG_16 0x02010078
+#define IO_APP_DEBUG_REG_17 0x02010080
+#define IO_APP_DEBUG_REG_18 0x02010088
+struct genwqe_reg_io {
+  __u64 num;
+  __u64 val64;
+};
+#define IO_ILLEGAL_VALUE 0xffffffffffffffffull
+#define DDCB_ACFUNC_SLU 0x00
+#define DDCB_ACFUNC_APP 0x01
+#define DDCB_RETC_IDLE 0x0000
+#define DDCB_RETC_PENDING 0x0101
+#define DDCB_RETC_COMPLETE 0x0102
+#define DDCB_RETC_FAULT 0x0104
+#define DDCB_RETC_ERROR 0x0108
+#define DDCB_RETC_FORCED_ERROR 0x01ff
+#define DDCB_RETC_UNEXEC 0x0110
+#define DDCB_RETC_TERM 0x0120
+#define DDCB_RETC_RES0 0x0140
+#define DDCB_RETC_RES1 0x0180
+#define DDCB_OPT_ECHO_FORCE_NO 0x0000
+#define DDCB_OPT_ECHO_FORCE_102 0x0001
+#define DDCB_OPT_ECHO_FORCE_104 0x0002
+#define DDCB_OPT_ECHO_FORCE_108 0x0003
+#define DDCB_OPT_ECHO_FORCE_110 0x0004
+#define DDCB_OPT_ECHO_FORCE_120 0x0005
+#define DDCB_OPT_ECHO_FORCE_140 0x0006
+#define DDCB_OPT_ECHO_FORCE_180 0x0007
+#define DDCB_OPT_ECHO_COPY_NONE (0 << 5)
+#define DDCB_OPT_ECHO_COPY_ALL (1 << 5)
+#define SLCMD_ECHO_SYNC 0x00
+#define SLCMD_MOVE_FLASH 0x06
+#define SLCMD_MOVE_FLASH_FLAGS_MODE 0x03
+#define SLCMD_MOVE_FLASH_FLAGS_DLOAD 0
+#define SLCMD_MOVE_FLASH_FLAGS_EMUL 1
+#define SLCMD_MOVE_FLASH_FLAGS_UPLOAD 2
+#define SLCMD_MOVE_FLASH_FLAGS_VERIFY 3
+#define SLCMD_MOVE_FLASH_FLAG_NOTAP (1 << 2)
+#define SLCMD_MOVE_FLASH_FLAG_POLL (1 << 3)
+#define SLCMD_MOVE_FLASH_FLAG_PARTITION (1 << 4)
+#define SLCMD_MOVE_FLASH_FLAG_ERASE (1 << 5)
+enum genwqe_card_state {
+  GENWQE_CARD_UNUSED = 0,
+  GENWQE_CARD_USED = 1,
+  GENWQE_CARD_FATAL_ERROR = 2,
+  GENWQE_CARD_RELOAD_BITSTREAM = 3,
+  GENWQE_CARD_STATE_MAX,
+};
+struct genwqe_bitstream {
+  __u64 data_addr;
+  __u32 size;
+  __u32 crc;
+  __u64 target_addr;
+  __u32 partition;
+  __u32 uid;
+  __u64 slu_id;
+  __u64 app_id;
+  __u16 retc;
+  __u16 attn;
+  __u32 progress;
+};
+#define DDCB_LENGTH 256
+#define DDCB_ASIV_LENGTH 104
+#define DDCB_ASIV_LENGTH_ATS 96
+#define DDCB_ASV_LENGTH 64
+#define DDCB_FIXUPS 12
+struct genwqe_debug_data {
+  char driver_version[64];
+  __u64 slu_unitcfg;
+  __u64 app_unitcfg;
+  __u8 ddcb_before[DDCB_LENGTH];
+  __u8 ddcb_prev[DDCB_LENGTH];
+  __u8 ddcb_finished[DDCB_LENGTH];
+};
+#define ATS_TYPE_DATA 0x0ull
+#define ATS_TYPE_FLAT_RD 0x4ull
+#define ATS_TYPE_FLAT_RDWR 0x5ull
+#define ATS_TYPE_SGL_RD 0x6ull
+#define ATS_TYPE_SGL_RDWR 0x7ull
+#define ATS_SET_FLAGS(_struct,_field,_flags) (((_flags) & 0xf) << (44 - (4 * (offsetof(_struct, _field) / 8))))
+#define ATS_GET_FLAGS(_ats,_byte_offs) (((_ats) >> (44 - (4 * ((_byte_offs) / 8)))) & 0xf)
+struct genwqe_ddcb_cmd {
+  __u64 next_addr;
+  __u64 flags;
+  __u8 acfunc;
+  __u8 cmd;
+  __u8 asiv_length;
+  __u8 asv_length;
+  __u16 cmdopts;
+  __u16 retc;
+  __u16 attn;
+  __u16 vcrc;
+  __u32 progress;
+  __u64 deque_ts;
+  __u64 cmplt_ts;
+  __u64 disp_ts;
+  __u64 ddata_addr;
+  __u8 asv[DDCB_ASV_LENGTH];
+  union {
+    struct {
+      __u64 ats;
+      __u8 asiv[DDCB_ASIV_LENGTH_ATS];
+    };
+    __u8 __asiv[DDCB_ASIV_LENGTH];
+  };
+};
+#define GENWQE_IOC_CODE 0xa5
+#define GENWQE_READ_REG64 _IOR(GENWQE_IOC_CODE, 30, struct genwqe_reg_io)
+#define GENWQE_WRITE_REG64 _IOW(GENWQE_IOC_CODE, 31, struct genwqe_reg_io)
+#define GENWQE_READ_REG32 _IOR(GENWQE_IOC_CODE, 32, struct genwqe_reg_io)
+#define GENWQE_WRITE_REG32 _IOW(GENWQE_IOC_CODE, 33, struct genwqe_reg_io)
+#define GENWQE_READ_REG16 _IOR(GENWQE_IOC_CODE, 34, struct genwqe_reg_io)
+#define GENWQE_WRITE_REG16 _IOW(GENWQE_IOC_CODE, 35, struct genwqe_reg_io)
+#define GENWQE_GET_CARD_STATE _IOR(GENWQE_IOC_CODE, 36, enum genwqe_card_state)
+struct genwqe_mem {
+  __u64 addr;
+  __u64 size;
+  __u64 direction;
+  __u64 flags;
+};
+#define GENWQE_PIN_MEM _IOWR(GENWQE_IOC_CODE, 40, struct genwqe_mem)
+#define GENWQE_UNPIN_MEM _IOWR(GENWQE_IOC_CODE, 41, struct genwqe_mem)
+#define GENWQE_EXECUTE_DDCB _IOWR(GENWQE_IOC_CODE, 50, struct genwqe_ddcb_cmd)
+#define GENWQE_EXECUTE_RAW_DDCB _IOWR(GENWQE_IOC_CODE, 51, struct genwqe_ddcb_cmd)
+#define GENWQE_SLU_UPDATE _IOWR(GENWQE_IOC_CODE, 80, struct genwqe_bitstream)
+#define GENWQE_SLU_READ _IOWR(GENWQE_IOC_CODE, 81, struct genwqe_bitstream)
+#endif
diff --git a/i686-linux-musl/include/linux/gfs2_ondisk.h b/i686-linux-musl/include/linux/gfs2_ondisk.h
new file mode 100644
index 0000000..1ce4278
--- /dev/null
+++ b/i686-linux-musl/include/linux/gfs2_ondisk.h
@@ -0,0 +1,355 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __GFS2_ONDISK_DOT_H__
+#define __GFS2_ONDISK_DOT_H__
+#include <linux/types.h>
+#define GFS2_MAGIC 0x01161970
+#define GFS2_BASIC_BLOCK 512
+#define GFS2_BASIC_BLOCK_SHIFT 9
+#define GFS2_MOUNT_LOCK 0
+#define GFS2_LIVE_LOCK 1
+#define GFS2_FREEZE_LOCK 2
+#define GFS2_RENAME_LOCK 3
+#define GFS2_CONTROL_LOCK 4
+#define GFS2_MOUNTED_LOCK 5
+#define GFS2_FORMAT_NONE 0
+#define GFS2_FORMAT_SB 100
+#define GFS2_FORMAT_RG 200
+#define GFS2_FORMAT_RB 300
+#define GFS2_FORMAT_DI 400
+#define GFS2_FORMAT_IN 500
+#define GFS2_FORMAT_LF 600
+#define GFS2_FORMAT_JD 700
+#define GFS2_FORMAT_LH 800
+#define GFS2_FORMAT_LD 900
+#define GFS2_FORMAT_LB 1000
+#define GFS2_FORMAT_EA 1600
+#define GFS2_FORMAT_ED 1700
+#define GFS2_FORMAT_QC 1400
+#define GFS2_FORMAT_RI 1100
+#define GFS2_FORMAT_DE 1200
+#define GFS2_FORMAT_QU 1500
+#define GFS2_FORMAT_FS 1802
+#define GFS2_FORMAT_MULTI 1900
+struct gfs2_inum {
+  __be64 no_formal_ino;
+  __be64 no_addr;
+};
+#define GFS2_METATYPE_NONE 0
+#define GFS2_METATYPE_SB 1
+#define GFS2_METATYPE_RG 2
+#define GFS2_METATYPE_RB 3
+#define GFS2_METATYPE_DI 4
+#define GFS2_METATYPE_IN 5
+#define GFS2_METATYPE_LF 6
+#define GFS2_METATYPE_JD 7
+#define GFS2_METATYPE_LH 8
+#define GFS2_METATYPE_LD 9
+#define GFS2_METATYPE_LB 12
+#define GFS2_METATYPE_EA 10
+#define GFS2_METATYPE_ED 11
+#define GFS2_METATYPE_QC 14
+struct gfs2_meta_header {
+  __be32 mh_magic;
+  __be32 mh_type;
+  __be64 __pad0;
+  __be32 mh_format;
+  union {
+    __be32 mh_jid;
+    __be32 __pad1;
+  };
+};
+#define GFS2_SB_ADDR 128
+#define GFS2_SB_LOCK 0
+#define GFS2_LOCKNAME_LEN 64
+struct gfs2_sb {
+  struct gfs2_meta_header sb_header;
+  __be32 sb_fs_format;
+  __be32 sb_multihost_format;
+  __u32 __pad0;
+  __be32 sb_bsize;
+  __be32 sb_bsize_shift;
+  __u32 __pad1;
+  struct gfs2_inum sb_master_dir;
+  struct gfs2_inum __pad2;
+  struct gfs2_inum sb_root_dir;
+  char sb_lockproto[GFS2_LOCKNAME_LEN];
+  char sb_locktable[GFS2_LOCKNAME_LEN];
+  struct gfs2_inum __pad3;
+  struct gfs2_inum __pad4;
+#define GFS2_HAS_UUID 1
+  __u8 sb_uuid[16];
+};
+struct gfs2_rindex {
+  __be64 ri_addr;
+  __be32 ri_length;
+  __u32 __pad;
+  __be64 ri_data0;
+  __be32 ri_data;
+  __be32 ri_bitbytes;
+  __u8 ri_reserved[64];
+};
+#define GFS2_NBBY 4
+#define GFS2_BIT_SIZE 2
+#define GFS2_BIT_MASK 0x00000003
+#define GFS2_BLKST_FREE 0
+#define GFS2_BLKST_USED 1
+#define GFS2_BLKST_UNLINKED 2
+#define GFS2_BLKST_DINODE 3
+#define GFS2_RGF_JOURNAL 0x00000001
+#define GFS2_RGF_METAONLY 0x00000002
+#define GFS2_RGF_DATAONLY 0x00000004
+#define GFS2_RGF_NOALLOC 0x00000008
+#define GFS2_RGF_TRIMMED 0x00000010
+struct gfs2_inode_lvb {
+  __be32 ri_magic;
+  __be32 __pad;
+  __be64 ri_generation_deleted;
+};
+struct gfs2_rgrp_lvb {
+  __be32 rl_magic;
+  __be32 rl_flags;
+  __be32 rl_free;
+  __be32 rl_dinodes;
+  __be64 rl_igeneration;
+  __be32 rl_unlinked;
+  __be32 __pad;
+};
+struct gfs2_rgrp {
+  struct gfs2_meta_header rg_header;
+  __be32 rg_flags;
+  __be32 rg_free;
+  __be32 rg_dinodes;
+  union {
+    __be32 __pad;
+    __be32 rg_skip;
+  };
+  __be64 rg_igeneration;
+  __be64 rg_data0;
+  __be32 rg_data;
+  __be32 rg_bitbytes;
+  __be32 rg_crc;
+  __u8 rg_reserved[60];
+};
+struct gfs2_quota {
+  __be64 qu_limit;
+  __be64 qu_warn;
+  __be64 qu_value;
+  __u8 qu_reserved[64];
+};
+#define GFS2_MAX_META_HEIGHT 10
+#define GFS2_DIR_MAX_DEPTH 17
+#define DT2IF(dt) (((dt) << 12) & S_IFMT)
+#define IF2DT(sif) (((sif) & S_IFMT) >> 12)
+enum {
+  gfs2fl_Jdata = 0,
+  gfs2fl_ExHash = 1,
+  gfs2fl_Unused = 2,
+  gfs2fl_EaIndirect = 3,
+  gfs2fl_Directio = 4,
+  gfs2fl_Immutable = 5,
+  gfs2fl_AppendOnly = 6,
+  gfs2fl_NoAtime = 7,
+  gfs2fl_Sync = 8,
+  gfs2fl_System = 9,
+  gfs2fl_TopLevel = 10,
+  gfs2fl_TruncInProg = 29,
+  gfs2fl_InheritDirectio = 30,
+  gfs2fl_InheritJdata = 31,
+};
+#define GFS2_DIF_JDATA 0x00000001
+#define GFS2_DIF_EXHASH 0x00000002
+#define GFS2_DIF_UNUSED 0x00000004
+#define GFS2_DIF_EA_INDIRECT 0x00000008
+#define GFS2_DIF_DIRECTIO 0x00000010
+#define GFS2_DIF_IMMUTABLE 0x00000020
+#define GFS2_DIF_APPENDONLY 0x00000040
+#define GFS2_DIF_NOATIME 0x00000080
+#define GFS2_DIF_SYNC 0x00000100
+#define GFS2_DIF_SYSTEM 0x00000200
+#define GFS2_DIF_TOPDIR 0x00000400
+#define GFS2_DIF_TRUNC_IN_PROG 0x20000000
+#define GFS2_DIF_INHERIT_DIRECTIO 0x40000000
+#define GFS2_DIF_INHERIT_JDATA 0x80000000
+struct gfs2_dinode {
+  struct gfs2_meta_header di_header;
+  struct gfs2_inum di_num;
+  __be32 di_mode;
+  __be32 di_uid;
+  __be32 di_gid;
+  __be32 di_nlink;
+  __be64 di_size;
+  __be64 di_blocks;
+  __be64 di_atime;
+  __be64 di_mtime;
+  __be64 di_ctime;
+  __be32 di_major;
+  __be32 di_minor;
+  __be64 di_goal_meta;
+  __be64 di_goal_data;
+  __be64 di_generation;
+  __be32 di_flags;
+  __be32 di_payload_format;
+  __u16 __pad1;
+  __be16 di_height;
+  __u32 __pad2;
+  __u16 __pad3;
+  __be16 di_depth;
+  __be32 di_entries;
+  struct gfs2_inum __pad4;
+  __be64 di_eattr;
+  __be32 di_atime_nsec;
+  __be32 di_mtime_nsec;
+  __be32 di_ctime_nsec;
+  __u8 di_reserved[44];
+};
+#define GFS2_FNAMESIZE 255
+#define GFS2_DIRENT_SIZE(name_len) ((sizeof(struct gfs2_dirent) + (name_len) + 7) & ~7)
+#define GFS2_MIN_DIRENT_SIZE (GFS2_DIRENT_SIZE(1))
+struct gfs2_dirent {
+  struct gfs2_inum de_inum;
+  __be32 de_hash;
+  __be16 de_rec_len;
+  __be16 de_name_len;
+  __be16 de_type;
+  __be16 de_rahead;
+  union {
+    __u8 __pad[12];
+    struct {
+      __u32 de_cookie;
+      __u8 pad3[8];
+    };
+  };
+};
+struct gfs2_leaf {
+  struct gfs2_meta_header lf_header;
+  __be16 lf_depth;
+  __be16 lf_entries;
+  __be32 lf_dirent_format;
+  __be64 lf_next;
+  union {
+    __u8 lf_reserved[64];
+    struct {
+      __be64 lf_inode;
+      __be32 lf_dist;
+      __be32 lf_nsec;
+      __be64 lf_sec;
+      __u8 lf_reserved2[40];
+    };
+  };
+};
+#define GFS2_EA_MAX_NAME_LEN 255
+#define GFS2_EA_MAX_DATA_LEN 65536
+#define GFS2_EATYPE_UNUSED 0
+#define GFS2_EATYPE_USR 1
+#define GFS2_EATYPE_SYS 2
+#define GFS2_EATYPE_SECURITY 3
+#define GFS2_EATYPE_TRUSTED 4
+#define GFS2_EATYPE_LAST 4
+#define GFS2_EATYPE_VALID(x) ((x) <= GFS2_EATYPE_LAST)
+#define GFS2_EAFLAG_LAST 0x01
+struct gfs2_ea_header {
+  __be32 ea_rec_len;
+  __be32 ea_data_len;
+  __u8 ea_name_len;
+  __u8 ea_type;
+  __u8 ea_flags;
+  __u8 ea_num_ptrs;
+  __u32 __pad;
+};
+#define GFS2_LOG_HEAD_UNMOUNT 0x00000001
+#define GFS2_LOG_HEAD_FLUSH_NORMAL 0x00000002
+#define GFS2_LOG_HEAD_FLUSH_SYNC 0x00000004
+#define GFS2_LOG_HEAD_FLUSH_SHUTDOWN 0x00000008
+#define GFS2_LOG_HEAD_FLUSH_FREEZE 0x00000010
+#define GFS2_LOG_HEAD_RECOVERY 0x00000020
+#define GFS2_LOG_HEAD_USERSPACE 0x80000000
+#define GFS2_LFC_SHUTDOWN 0x00000100
+#define GFS2_LFC_JDATA_WPAGES 0x00000200
+#define GFS2_LFC_SET_FLAGS 0x00000400
+#define GFS2_LFC_AIL_EMPTY_GL 0x00000800
+#define GFS2_LFC_AIL_FLUSH 0x00001000
+#define GFS2_LFC_RGRP_GO_SYNC 0x00002000
+#define GFS2_LFC_INODE_GO_SYNC 0x00004000
+#define GFS2_LFC_INODE_GO_INVAL 0x00008000
+#define GFS2_LFC_FREEZE_GO_SYNC 0x00010000
+#define GFS2_LFC_KILL_SB 0x00020000
+#define GFS2_LFC_DO_SYNC 0x00040000
+#define GFS2_LFC_INPLACE_RESERVE 0x00080000
+#define GFS2_LFC_WRITE_INODE 0x00100000
+#define GFS2_LFC_MAKE_FS_RO 0x00200000
+#define GFS2_LFC_SYNC_FS 0x00400000
+#define GFS2_LFC_EVICT_INODE 0x00800000
+#define GFS2_LFC_TRANS_END 0x01000000
+#define GFS2_LFC_LOGD_JFLUSH_REQD 0x02000000
+#define GFS2_LFC_LOGD_AIL_FLUSH_REQD 0x04000000
+#define LH_V1_SIZE (offsetofend(struct gfs2_log_header, lh_hash))
+struct gfs2_log_header {
+  struct gfs2_meta_header lh_header;
+  __be64 lh_sequence;
+  __be32 lh_flags;
+  __be32 lh_tail;
+  __be32 lh_blkno;
+  __be32 lh_hash;
+  __be32 lh_crc;
+  __be32 lh_nsec;
+  __be64 lh_sec;
+  __be64 lh_addr;
+  __be64 lh_jinode;
+  __be64 lh_statfs_addr;
+  __be64 lh_quota_addr;
+  __be64 lh_local_total;
+  __be64 lh_local_free;
+  __be64 lh_local_dinodes;
+};
+#define GFS2_LOG_DESC_METADATA 300
+#define GFS2_LOG_DESC_REVOKE 301
+#define GFS2_LOG_DESC_JDATA 302
+struct gfs2_log_descriptor {
+  struct gfs2_meta_header ld_header;
+  __be32 ld_type;
+  __be32 ld_length;
+  __be32 ld_data1;
+  __be32 ld_data2;
+  __u8 ld_reserved[32];
+};
+#define GFS2_INUM_QUANTUM 1048576
+struct gfs2_inum_range {
+  __be64 ir_start;
+  __be64 ir_length;
+};
+struct gfs2_statfs_change {
+  __be64 sc_total;
+  __be64 sc_free;
+  __be64 sc_dinodes;
+};
+#define GFS2_QCF_USER 0x00000001
+struct gfs2_quota_change {
+  __be64 qc_change;
+  __be32 qc_flags;
+  __be32 qc_id;
+};
+struct gfs2_quota_lvb {
+  __be32 qb_magic;
+  __u32 __pad;
+  __be64 qb_limit;
+  __be64 qb_warn;
+  __be64 qb_value;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/gpio.h b/i686-linux-musl/include/linux/gpio.h
new file mode 100644
index 0000000..7e010d9
--- /dev/null
+++ b/i686-linux-musl/include/linux/gpio.h
@@ -0,0 +1,196 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_GPIO_H_
+#define _UAPI_GPIO_H_
+#include <linux/const.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define GPIO_MAX_NAME_SIZE 32
+struct gpiochip_info {
+  char name[GPIO_MAX_NAME_SIZE];
+  char label[GPIO_MAX_NAME_SIZE];
+  __u32 lines;
+};
+#define GPIO_V2_LINES_MAX 64
+#define GPIO_V2_LINE_NUM_ATTRS_MAX 10
+enum gpio_v2_line_flag {
+  GPIO_V2_LINE_FLAG_USED = _BITULL(0),
+  GPIO_V2_LINE_FLAG_ACTIVE_LOW = _BITULL(1),
+  GPIO_V2_LINE_FLAG_INPUT = _BITULL(2),
+  GPIO_V2_LINE_FLAG_OUTPUT = _BITULL(3),
+  GPIO_V2_LINE_FLAG_EDGE_RISING = _BITULL(4),
+  GPIO_V2_LINE_FLAG_EDGE_FALLING = _BITULL(5),
+  GPIO_V2_LINE_FLAG_OPEN_DRAIN = _BITULL(6),
+  GPIO_V2_LINE_FLAG_OPEN_SOURCE = _BITULL(7),
+  GPIO_V2_LINE_FLAG_BIAS_PULL_UP = _BITULL(8),
+  GPIO_V2_LINE_FLAG_BIAS_PULL_DOWN = _BITULL(9),
+  GPIO_V2_LINE_FLAG_BIAS_DISABLED = _BITULL(10),
+  GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME = _BITULL(11),
+};
+struct gpio_v2_line_values {
+  __aligned_u64 bits;
+  __aligned_u64 mask;
+};
+enum gpio_v2_line_attr_id {
+  GPIO_V2_LINE_ATTR_ID_FLAGS = 1,
+  GPIO_V2_LINE_ATTR_ID_OUTPUT_VALUES = 2,
+  GPIO_V2_LINE_ATTR_ID_DEBOUNCE = 3,
+};
+struct gpio_v2_line_attribute {
+  __u32 id;
+  __u32 padding;
+  union {
+    __aligned_u64 flags;
+    __aligned_u64 values;
+    __u32 debounce_period_us;
+  };
+};
+struct gpio_v2_line_config_attribute {
+  struct gpio_v2_line_attribute attr;
+  __aligned_u64 mask;
+};
+struct gpio_v2_line_config {
+  __aligned_u64 flags;
+  __u32 num_attrs;
+  __u32 padding[5];
+  struct gpio_v2_line_config_attribute attrs[GPIO_V2_LINE_NUM_ATTRS_MAX];
+};
+struct gpio_v2_line_request {
+  __u32 offsets[GPIO_V2_LINES_MAX];
+  char consumer[GPIO_MAX_NAME_SIZE];
+  struct gpio_v2_line_config config;
+  __u32 num_lines;
+  __u32 event_buffer_size;
+  __u32 padding[5];
+  __s32 fd;
+};
+struct gpio_v2_line_info {
+  char name[GPIO_MAX_NAME_SIZE];
+  char consumer[GPIO_MAX_NAME_SIZE];
+  __u32 offset;
+  __u32 num_attrs;
+  __aligned_u64 flags;
+  struct gpio_v2_line_attribute attrs[GPIO_V2_LINE_NUM_ATTRS_MAX];
+  __u32 padding[4];
+};
+enum gpio_v2_line_changed_type {
+  GPIO_V2_LINE_CHANGED_REQUESTED = 1,
+  GPIO_V2_LINE_CHANGED_RELEASED = 2,
+  GPIO_V2_LINE_CHANGED_CONFIG = 3,
+};
+struct gpio_v2_line_info_changed {
+  struct gpio_v2_line_info info;
+  __aligned_u64 timestamp_ns;
+  __u32 event_type;
+  __u32 padding[5];
+};
+enum gpio_v2_line_event_id {
+  GPIO_V2_LINE_EVENT_RISING_EDGE = 1,
+  GPIO_V2_LINE_EVENT_FALLING_EDGE = 2,
+};
+struct gpio_v2_line_event {
+  __aligned_u64 timestamp_ns;
+  __u32 id;
+  __u32 offset;
+  __u32 seqno;
+  __u32 line_seqno;
+  __u32 padding[6];
+};
+#define GPIOLINE_FLAG_KERNEL (1UL << 0)
+#define GPIOLINE_FLAG_IS_OUT (1UL << 1)
+#define GPIOLINE_FLAG_ACTIVE_LOW (1UL << 2)
+#define GPIOLINE_FLAG_OPEN_DRAIN (1UL << 3)
+#define GPIOLINE_FLAG_OPEN_SOURCE (1UL << 4)
+#define GPIOLINE_FLAG_BIAS_PULL_UP (1UL << 5)
+#define GPIOLINE_FLAG_BIAS_PULL_DOWN (1UL << 6)
+#define GPIOLINE_FLAG_BIAS_DISABLE (1UL << 7)
+struct gpioline_info {
+  __u32 line_offset;
+  __u32 flags;
+  char name[GPIO_MAX_NAME_SIZE];
+  char consumer[GPIO_MAX_NAME_SIZE];
+};
+#define GPIOHANDLES_MAX 64
+enum {
+  GPIOLINE_CHANGED_REQUESTED = 1,
+  GPIOLINE_CHANGED_RELEASED,
+  GPIOLINE_CHANGED_CONFIG,
+};
+struct gpioline_info_changed {
+  struct gpioline_info info;
+  __u64 timestamp;
+  __u32 event_type;
+  __u32 padding[5];
+};
+#define GPIOHANDLE_REQUEST_INPUT (1UL << 0)
+#define GPIOHANDLE_REQUEST_OUTPUT (1UL << 1)
+#define GPIOHANDLE_REQUEST_ACTIVE_LOW (1UL << 2)
+#define GPIOHANDLE_REQUEST_OPEN_DRAIN (1UL << 3)
+#define GPIOHANDLE_REQUEST_OPEN_SOURCE (1UL << 4)
+#define GPIOHANDLE_REQUEST_BIAS_PULL_UP (1UL << 5)
+#define GPIOHANDLE_REQUEST_BIAS_PULL_DOWN (1UL << 6)
+#define GPIOHANDLE_REQUEST_BIAS_DISABLE (1UL << 7)
+struct gpiohandle_request {
+  __u32 lineoffsets[GPIOHANDLES_MAX];
+  __u32 flags;
+  __u8 default_values[GPIOHANDLES_MAX];
+  char consumer_label[GPIO_MAX_NAME_SIZE];
+  __u32 lines;
+  int fd;
+};
+struct gpiohandle_config {
+  __u32 flags;
+  __u8 default_values[GPIOHANDLES_MAX];
+  __u32 padding[4];
+};
+struct gpiohandle_data {
+  __u8 values[GPIOHANDLES_MAX];
+};
+#define GPIOEVENT_REQUEST_RISING_EDGE (1UL << 0)
+#define GPIOEVENT_REQUEST_FALLING_EDGE (1UL << 1)
+#define GPIOEVENT_REQUEST_BOTH_EDGES ((1UL << 0) | (1UL << 1))
+struct gpioevent_request {
+  __u32 lineoffset;
+  __u32 handleflags;
+  __u32 eventflags;
+  char consumer_label[GPIO_MAX_NAME_SIZE];
+  int fd;
+};
+#define GPIOEVENT_EVENT_RISING_EDGE 0x01
+#define GPIOEVENT_EVENT_FALLING_EDGE 0x02
+struct gpioevent_data {
+  __u64 timestamp;
+  __u32 id;
+};
+#define GPIO_GET_CHIPINFO_IOCTL _IOR(0xB4, 0x01, struct gpiochip_info)
+#define GPIO_GET_LINEINFO_UNWATCH_IOCTL _IOWR(0xB4, 0x0C, __u32)
+#define GPIO_V2_GET_LINEINFO_IOCTL _IOWR(0xB4, 0x05, struct gpio_v2_line_info)
+#define GPIO_V2_GET_LINEINFO_WATCH_IOCTL _IOWR(0xB4, 0x06, struct gpio_v2_line_info)
+#define GPIO_V2_GET_LINE_IOCTL _IOWR(0xB4, 0x07, struct gpio_v2_line_request)
+#define GPIO_V2_LINE_SET_CONFIG_IOCTL _IOWR(0xB4, 0x0D, struct gpio_v2_line_config)
+#define GPIO_V2_LINE_GET_VALUES_IOCTL _IOWR(0xB4, 0x0E, struct gpio_v2_line_values)
+#define GPIO_V2_LINE_SET_VALUES_IOCTL _IOWR(0xB4, 0x0F, struct gpio_v2_line_values)
+#define GPIO_GET_LINEINFO_IOCTL _IOWR(0xB4, 0x02, struct gpioline_info)
+#define GPIO_GET_LINEHANDLE_IOCTL _IOWR(0xB4, 0x03, struct gpiohandle_request)
+#define GPIO_GET_LINEEVENT_IOCTL _IOWR(0xB4, 0x04, struct gpioevent_request)
+#define GPIOHANDLE_GET_LINE_VALUES_IOCTL _IOWR(0xB4, 0x08, struct gpiohandle_data)
+#define GPIOHANDLE_SET_LINE_VALUES_IOCTL _IOWR(0xB4, 0x09, struct gpiohandle_data)
+#define GPIOHANDLE_SET_CONFIG_IOCTL _IOWR(0xB4, 0x0A, struct gpiohandle_config)
+#define GPIO_GET_LINEINFO_WATCH_IOCTL _IOWR(0xB4, 0x0B, struct gpioline_info)
+#endif
diff --git a/i686-linux-musl/include/linux/gsmmux.h b/i686-linux-musl/include/linux/gsmmux.h
new file mode 100644
index 0000000..4e6920a
--- /dev/null
+++ b/i686-linux-musl/include/linux/gsmmux.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_GSMMUX_H
+#define _LINUX_GSMMUX_H
+#include <linux/if.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+struct gsm_config {
+  unsigned int adaption;
+  unsigned int encapsulation;
+  unsigned int initiator;
+  unsigned int t1;
+  unsigned int t2;
+  unsigned int t3;
+  unsigned int n2;
+  unsigned int mru;
+  unsigned int mtu;
+  unsigned int k;
+  unsigned int i;
+  unsigned int unused[8];
+};
+#define GSMIOC_GETCONF _IOR('G', 0, struct gsm_config)
+#define GSMIOC_SETCONF _IOW('G', 1, struct gsm_config)
+struct gsm_netconfig {
+  unsigned int adaption;
+  unsigned short protocol;
+  unsigned short unused2;
+  char if_name[IFNAMSIZ];
+  __u8 unused[28];
+};
+#define GSMIOC_ENABLE_NET _IOW('G', 2, struct gsm_netconfig)
+#define GSMIOC_DISABLE_NET _IO('G', 3)
+#define GSMIOC_GETFIRST _IOR('G', 4, __u32)
+#endif
diff --git a/i686-linux-musl/include/linux/gtp.h b/i686-linux-musl/include/linux/gtp.h
new file mode 100644
index 0000000..3b9416e
--- /dev/null
+++ b/i686-linux-musl/include/linux/gtp.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_GTP_H_
+#define _UAPI_LINUX_GTP_H_
+#define GTP_GENL_MCGRP_NAME "gtp"
+enum gtp_genl_cmds {
+  GTP_CMD_NEWPDP,
+  GTP_CMD_DELPDP,
+  GTP_CMD_GETPDP,
+  GTP_CMD_MAX,
+};
+enum gtp_version {
+  GTP_V0 = 0,
+  GTP_V1,
+};
+enum gtp_attrs {
+  GTPA_UNSPEC = 0,
+  GTPA_LINK,
+  GTPA_VERSION,
+  GTPA_TID,
+  GTPA_PEER_ADDRESS,
+#define GTPA_SGSN_ADDRESS GTPA_PEER_ADDRESS
+  GTPA_MS_ADDRESS,
+  GTPA_FLOW,
+  GTPA_NET_NS_FD,
+  GTPA_I_TEI,
+  GTPA_O_TEI,
+  GTPA_PAD,
+  __GTPA_MAX,
+};
+#define GTPA_MAX (__GTPA_MAX + 1)
+#endif
diff --git a/i686-linux-musl/include/linux/hash_info.h b/i686-linux-musl/include/linux/hash_info.h
new file mode 100644
index 0000000..824b71a
--- /dev/null
+++ b/i686-linux-musl/include/linux/hash_info.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_HASH_INFO_H
+#define _UAPI_LINUX_HASH_INFO_H
+enum hash_algo {
+  HASH_ALGO_MD4,
+  HASH_ALGO_MD5,
+  HASH_ALGO_SHA1,
+  HASH_ALGO_RIPE_MD_160,
+  HASH_ALGO_SHA256,
+  HASH_ALGO_SHA384,
+  HASH_ALGO_SHA512,
+  HASH_ALGO_SHA224,
+  HASH_ALGO_RIPE_MD_128,
+  HASH_ALGO_RIPE_MD_256,
+  HASH_ALGO_RIPE_MD_320,
+  HASH_ALGO_WP_256,
+  HASH_ALGO_WP_384,
+  HASH_ALGO_WP_512,
+  HASH_ALGO_TGR_128,
+  HASH_ALGO_TGR_160,
+  HASH_ALGO_TGR_192,
+  HASH_ALGO_SM3_256,
+  HASH_ALGO_STREEBOG_256,
+  HASH_ALGO_STREEBOG_512,
+  HASH_ALGO__LAST
+};
+#endif
diff --git a/i686-linux-musl/include/linux/hdlc.h b/i686-linux-musl/include/linux/hdlc.h
new file mode 100644
index 0000000..10e3983
--- /dev/null
+++ b/i686-linux-musl/include/linux/hdlc.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__HDLC_H
+#define _UAPI__HDLC_H
+#define HDLC_MAX_MTU 1500
+#define HDLC_MAX_MRU 1600
+#endif
diff --git a/i686-linux-musl/include/linux/hdlc/ioctl.h b/i686-linux-musl/include/linux/hdlc/ioctl.h
new file mode 100644
index 0000000..3c727c5
--- /dev/null
+++ b/i686-linux-musl/include/linux/hdlc/ioctl.h
@@ -0,0 +1,91 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __HDLC_IOCTL_H__
+#define __HDLC_IOCTL_H__
+#define GENERIC_HDLC_VERSION 4
+#define CLOCK_DEFAULT 0
+#define CLOCK_EXT 1
+#define CLOCK_INT 2
+#define CLOCK_TXINT 3
+#define CLOCK_TXFROMRX 4
+#define ENCODING_DEFAULT 0
+#define ENCODING_NRZ 1
+#define ENCODING_NRZI 2
+#define ENCODING_FM_MARK 3
+#define ENCODING_FM_SPACE 4
+#define ENCODING_MANCHESTER 5
+#define PARITY_DEFAULT 0
+#define PARITY_NONE 1
+#define PARITY_CRC16_PR0 2
+#define PARITY_CRC16_PR1 3
+#define PARITY_CRC16_PR0_CCITT 4
+#define PARITY_CRC16_PR1_CCITT 5
+#define PARITY_CRC32_PR0_CCITT 6
+#define PARITY_CRC32_PR1_CCITT 7
+#define LMI_DEFAULT 0
+#define LMI_NONE 1
+#define LMI_ANSI 2
+#define LMI_CCITT 3
+#define LMI_CISCO 4
+#ifndef __ASSEMBLY__
+typedef struct {
+  unsigned int clock_rate;
+  unsigned int clock_type;
+  unsigned short loopback;
+} sync_serial_settings;
+typedef struct {
+  unsigned int clock_rate;
+  unsigned int clock_type;
+  unsigned short loopback;
+  unsigned int slot_map;
+} te1_settings;
+typedef struct {
+  unsigned short encoding;
+  unsigned short parity;
+} raw_hdlc_proto;
+typedef struct {
+  unsigned int t391;
+  unsigned int t392;
+  unsigned int n391;
+  unsigned int n392;
+  unsigned int n393;
+  unsigned short lmi;
+  unsigned short dce;
+} fr_proto;
+typedef struct {
+  unsigned int dlci;
+} fr_proto_pvc;
+typedef struct {
+  unsigned int dlci;
+  char master[IFNAMSIZ];
+} fr_proto_pvc_info;
+typedef struct {
+  unsigned int interval;
+  unsigned int timeout;
+} cisco_proto;
+typedef struct {
+  unsigned short dce;
+  unsigned int modulo;
+  unsigned int window;
+  unsigned int t1;
+  unsigned int t2;
+  unsigned int n2;
+} x25_hdlc_proto;
+#endif
+#endif
diff --git a/i686-linux-musl/include/linux/hdlcdrv.h b/i686-linux-musl/include/linux/hdlcdrv.h
new file mode 100644
index 0000000..9f6cdb7
--- /dev/null
+++ b/i686-linux-musl/include/linux/hdlcdrv.h
@@ -0,0 +1,85 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_HDLCDRV_H
+#define _UAPI_HDLCDRV_H
+struct hdlcdrv_params {
+  int iobase;
+  int irq;
+  int dma;
+  int dma2;
+  int seriobase;
+  int pariobase;
+  int midiiobase;
+};
+struct hdlcdrv_channel_params {
+  int tx_delay;
+  int tx_tail;
+  int slottime;
+  int ppersist;
+  int fulldup;
+};
+struct hdlcdrv_old_channel_state {
+  int ptt;
+  int dcd;
+  int ptt_keyed;
+};
+struct hdlcdrv_channel_state {
+  int ptt;
+  int dcd;
+  int ptt_keyed;
+  unsigned long tx_packets;
+  unsigned long tx_errors;
+  unsigned long rx_packets;
+  unsigned long rx_errors;
+};
+struct hdlcdrv_ioctl {
+  int cmd;
+  union {
+    struct hdlcdrv_params mp;
+    struct hdlcdrv_channel_params cp;
+    struct hdlcdrv_channel_state cs;
+    struct hdlcdrv_old_channel_state ocs;
+    unsigned int calibrate;
+    unsigned char bits;
+    char modename[128];
+    char drivername[32];
+  } data;
+};
+#define HDLCDRVCTL_GETMODEMPAR 0
+#define HDLCDRVCTL_SETMODEMPAR 1
+#define HDLCDRVCTL_MODEMPARMASK 2
+#define HDLCDRVCTL_GETCHANNELPAR 10
+#define HDLCDRVCTL_SETCHANNELPAR 11
+#define HDLCDRVCTL_OLDGETSTAT 20
+#define HDLCDRVCTL_CALIBRATE 21
+#define HDLCDRVCTL_GETSTAT 22
+#define HDLCDRVCTL_GETSAMPLES 30
+#define HDLCDRVCTL_GETBITS 31
+#define HDLCDRVCTL_GETMODE 40
+#define HDLCDRVCTL_SETMODE 41
+#define HDLCDRVCTL_MODELIST 42
+#define HDLCDRVCTL_DRIVERNAME 43
+#define HDLCDRV_PARMASK_IOBASE (1 << 0)
+#define HDLCDRV_PARMASK_IRQ (1 << 1)
+#define HDLCDRV_PARMASK_DMA (1 << 2)
+#define HDLCDRV_PARMASK_DMA2 (1 << 3)
+#define HDLCDRV_PARMASK_SERIOBASE (1 << 4)
+#define HDLCDRV_PARMASK_PARIOBASE (1 << 5)
+#define HDLCDRV_PARMASK_MIDIIOBASE (1 << 6)
+#endif
diff --git a/i686-linux-musl/include/linux/hdreg.h b/i686-linux-musl/include/linux/hdreg.h
new file mode 100644
index 0000000..29a2c24
--- /dev/null
+++ b/i686-linux-musl/include/linux/hdreg.h
@@ -0,0 +1,390 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_HDREG_H
+#define _LINUX_HDREG_H
+#include <linux/types.h>
+#define HDIO_DRIVE_CMD_HDR_SIZE (4 * sizeof(__u8))
+#define HDIO_DRIVE_HOB_HDR_SIZE (8 * sizeof(__u8))
+#define HDIO_DRIVE_TASK_HDR_SIZE (8 * sizeof(__u8))
+#define IDE_DRIVE_TASK_NO_DATA 0
+#define IDE_DRIVE_TASK_INVALID - 1
+#define IDE_DRIVE_TASK_SET_XFER 1
+#define IDE_DRIVE_TASK_IN 2
+#define IDE_DRIVE_TASK_OUT 3
+#define IDE_DRIVE_TASK_RAW_WRITE 4
+#define IDE_TASKFILE_STD_IN_FLAGS 0xFE
+#define IDE_HOB_STD_IN_FLAGS 0x3C
+#define IDE_TASKFILE_STD_OUT_FLAGS 0xFE
+#define IDE_HOB_STD_OUT_FLAGS 0x3C
+typedef unsigned char task_ioreg_t;
+typedef unsigned long sata_ioreg_t;
+typedef union ide_reg_valid_s {
+  unsigned all : 16;
+  struct {
+    unsigned data : 1;
+    unsigned error_feature : 1;
+    unsigned sector : 1;
+    unsigned nsector : 1;
+    unsigned lcyl : 1;
+    unsigned hcyl : 1;
+    unsigned select : 1;
+    unsigned status_command : 1;
+    unsigned data_hob : 1;
+    unsigned error_feature_hob : 1;
+    unsigned sector_hob : 1;
+    unsigned nsector_hob : 1;
+    unsigned lcyl_hob : 1;
+    unsigned hcyl_hob : 1;
+    unsigned select_hob : 1;
+    unsigned control_hob : 1;
+  } b;
+} ide_reg_valid_t;
+typedef struct ide_task_request_s {
+  __u8 io_ports[8];
+  __u8 hob_ports[8];
+  ide_reg_valid_t out_flags;
+  ide_reg_valid_t in_flags;
+  int data_phase;
+  int req_cmd;
+  unsigned long out_size;
+  unsigned long in_size;
+} ide_task_request_t;
+typedef struct ide_ioctl_request_s {
+  ide_task_request_t * task_request;
+  unsigned char * out_buffer;
+  unsigned char * in_buffer;
+} ide_ioctl_request_t;
+struct hd_drive_cmd_hdr {
+  __u8 command;
+  __u8 sector_number;
+  __u8 feature;
+  __u8 sector_count;
+};
+typedef struct hd_drive_task_hdr {
+  __u8 data;
+  __u8 feature;
+  __u8 sector_count;
+  __u8 sector_number;
+  __u8 low_cylinder;
+  __u8 high_cylinder;
+  __u8 device_head;
+  __u8 command;
+} task_struct_t;
+typedef struct hd_drive_hob_hdr {
+  __u8 data;
+  __u8 feature;
+  __u8 sector_count;
+  __u8 sector_number;
+  __u8 low_cylinder;
+  __u8 high_cylinder;
+  __u8 device_head;
+  __u8 control;
+} hob_struct_t;
+#define TASKFILE_NO_DATA 0x0000
+#define TASKFILE_IN 0x0001
+#define TASKFILE_MULTI_IN 0x0002
+#define TASKFILE_OUT 0x0004
+#define TASKFILE_MULTI_OUT 0x0008
+#define TASKFILE_IN_OUT 0x0010
+#define TASKFILE_IN_DMA 0x0020
+#define TASKFILE_OUT_DMA 0x0040
+#define TASKFILE_IN_DMAQ 0x0080
+#define TASKFILE_OUT_DMAQ 0x0100
+#define TASKFILE_P_IN 0x0200
+#define TASKFILE_P_OUT 0x0400
+#define TASKFILE_P_IN_DMA 0x0800
+#define TASKFILE_P_OUT_DMA 0x1000
+#define TASKFILE_P_IN_DMAQ 0x2000
+#define TASKFILE_P_OUT_DMAQ 0x4000
+#define TASKFILE_48 0x8000
+#define TASKFILE_INVALID 0x7fff
+#define WIN_NOP 0x00
+#define CFA_REQ_EXT_ERROR_CODE 0x03
+#define WIN_SRST 0x08
+#define WIN_DEVICE_RESET 0x08
+#define WIN_RECAL 0x10
+#define WIN_RESTORE WIN_RECAL
+#define WIN_READ 0x20
+#define WIN_READ_ONCE 0x21
+#define WIN_READ_LONG 0x22
+#define WIN_READ_LONG_ONCE 0x23
+#define WIN_READ_EXT 0x24
+#define WIN_READDMA_EXT 0x25
+#define WIN_READDMA_QUEUED_EXT 0x26
+#define WIN_READ_NATIVE_MAX_EXT 0x27
+#define WIN_MULTREAD_EXT 0x29
+#define WIN_WRITE 0x30
+#define WIN_WRITE_ONCE 0x31
+#define WIN_WRITE_LONG 0x32
+#define WIN_WRITE_LONG_ONCE 0x33
+#define WIN_WRITE_EXT 0x34
+#define WIN_WRITEDMA_EXT 0x35
+#define WIN_WRITEDMA_QUEUED_EXT 0x36
+#define WIN_SET_MAX_EXT 0x37
+#define CFA_WRITE_SECT_WO_ERASE 0x38
+#define WIN_MULTWRITE_EXT 0x39
+#define WIN_WRITE_VERIFY 0x3C
+#define WIN_VERIFY 0x40
+#define WIN_VERIFY_ONCE 0x41
+#define WIN_VERIFY_EXT 0x42
+#define WIN_FORMAT 0x50
+#define WIN_INIT 0x60
+#define WIN_SEEK 0x70
+#define CFA_TRANSLATE_SECTOR 0x87
+#define WIN_DIAGNOSE 0x90
+#define WIN_SPECIFY 0x91
+#define WIN_DOWNLOAD_MICROCODE 0x92
+#define WIN_STANDBYNOW2 0x94
+#define WIN_STANDBY2 0x96
+#define WIN_SETIDLE2 0x97
+#define WIN_CHECKPOWERMODE2 0x98
+#define WIN_SLEEPNOW2 0x99
+#define WIN_PACKETCMD 0xA0
+#define WIN_PIDENTIFY 0xA1
+#define WIN_QUEUED_SERVICE 0xA2
+#define WIN_SMART 0xB0
+#define CFA_ERASE_SECTORS 0xC0
+#define WIN_MULTREAD 0xC4
+#define WIN_MULTWRITE 0xC5
+#define WIN_SETMULT 0xC6
+#define WIN_READDMA_QUEUED 0xC7
+#define WIN_READDMA 0xC8
+#define WIN_READDMA_ONCE 0xC9
+#define WIN_WRITEDMA 0xCA
+#define WIN_WRITEDMA_ONCE 0xCB
+#define WIN_WRITEDMA_QUEUED 0xCC
+#define CFA_WRITE_MULTI_WO_ERASE 0xCD
+#define WIN_GETMEDIASTATUS 0xDA
+#define WIN_ACKMEDIACHANGE 0xDB
+#define WIN_POSTBOOT 0xDC
+#define WIN_PREBOOT 0xDD
+#define WIN_DOORLOCK 0xDE
+#define WIN_DOORUNLOCK 0xDF
+#define WIN_STANDBYNOW1 0xE0
+#define WIN_IDLEIMMEDIATE 0xE1
+#define WIN_STANDBY 0xE2
+#define WIN_SETIDLE1 0xE3
+#define WIN_READ_BUFFER 0xE4
+#define WIN_CHECKPOWERMODE1 0xE5
+#define WIN_SLEEPNOW1 0xE6
+#define WIN_FLUSH_CACHE 0xE7
+#define WIN_WRITE_BUFFER 0xE8
+#define WIN_WRITE_SAME 0xE9
+#define WIN_FLUSH_CACHE_EXT 0xEA
+#define WIN_IDENTIFY 0xEC
+#define WIN_MEDIAEJECT 0xED
+#define WIN_IDENTIFY_DMA 0xEE
+#define WIN_SETFEATURES 0xEF
+#define EXABYTE_ENABLE_NEST 0xF0
+#define WIN_SECURITY_SET_PASS 0xF1
+#define WIN_SECURITY_UNLOCK 0xF2
+#define WIN_SECURITY_ERASE_PREPARE 0xF3
+#define WIN_SECURITY_ERASE_UNIT 0xF4
+#define WIN_SECURITY_FREEZE_LOCK 0xF5
+#define WIN_SECURITY_DISABLE 0xF6
+#define WIN_READ_NATIVE_MAX 0xF8
+#define WIN_SET_MAX 0xF9
+#define DISABLE_SEAGATE 0xFB
+#define SMART_READ_VALUES 0xD0
+#define SMART_READ_THRESHOLDS 0xD1
+#define SMART_AUTOSAVE 0xD2
+#define SMART_SAVE 0xD3
+#define SMART_IMMEDIATE_OFFLINE 0xD4
+#define SMART_READ_LOG_SECTOR 0xD5
+#define SMART_WRITE_LOG_SECTOR 0xD6
+#define SMART_WRITE_THRESHOLDS 0xD7
+#define SMART_ENABLE 0xD8
+#define SMART_DISABLE 0xD9
+#define SMART_STATUS 0xDA
+#define SMART_AUTO_OFFLINE 0xDB
+#define SMART_LCYL_PASS 0x4F
+#define SMART_HCYL_PASS 0xC2
+#define SETFEATURES_EN_8BIT 0x01
+#define SETFEATURES_EN_WCACHE 0x02
+#define SETFEATURES_DIS_DEFECT 0x04
+#define SETFEATURES_EN_APM 0x05
+#define SETFEATURES_EN_SAME_R 0x22
+#define SETFEATURES_DIS_MSN 0x31
+#define SETFEATURES_DIS_RETRY 0x33
+#define SETFEATURES_EN_AAM 0x42
+#define SETFEATURES_RW_LONG 0x44
+#define SETFEATURES_SET_CACHE 0x54
+#define SETFEATURES_DIS_RLA 0x55
+#define SETFEATURES_EN_RI 0x5D
+#define SETFEATURES_EN_SI 0x5E
+#define SETFEATURES_DIS_RPOD 0x66
+#define SETFEATURES_DIS_ECC 0x77
+#define SETFEATURES_DIS_8BIT 0x81
+#define SETFEATURES_DIS_WCACHE 0x82
+#define SETFEATURES_EN_DEFECT 0x84
+#define SETFEATURES_DIS_APM 0x85
+#define SETFEATURES_EN_ECC 0x88
+#define SETFEATURES_EN_MSN 0x95
+#define SETFEATURES_EN_RETRY 0x99
+#define SETFEATURES_EN_RLA 0xAA
+#define SETFEATURES_PREFETCH 0xAB
+#define SETFEATURES_EN_REST 0xAC
+#define SETFEATURES_4B_RW_LONG 0xBB
+#define SETFEATURES_DIS_AAM 0xC2
+#define SETFEATURES_EN_RPOD 0xCC
+#define SETFEATURES_DIS_RI 0xDD
+#define SETFEATURES_EN_SAME_M 0xDD
+#define SETFEATURES_DIS_SI 0xDE
+#define SECURITY_SET_PASSWORD 0xBA
+#define SECURITY_UNLOCK 0xBB
+#define SECURITY_ERASE_PREPARE 0xBC
+#define SECURITY_ERASE_UNIT 0xBD
+#define SECURITY_FREEZE_LOCK 0xBE
+#define SECURITY_DISABLE_PASSWORD 0xBF
+struct hd_geometry {
+  unsigned char heads;
+  unsigned char sectors;
+  unsigned short cylinders;
+  unsigned long start;
+};
+#define HDIO_GETGEO 0x0301
+#define HDIO_GET_UNMASKINTR 0x0302
+#define HDIO_GET_MULTCOUNT 0x0304
+#define HDIO_GET_QDMA 0x0305
+#define HDIO_SET_XFER 0x0306
+#define HDIO_OBSOLETE_IDENTITY 0x0307
+#define HDIO_GET_KEEPSETTINGS 0x0308
+#define HDIO_GET_32BIT 0x0309
+#define HDIO_GET_NOWERR 0x030a
+#define HDIO_GET_DMA 0x030b
+#define HDIO_GET_NICE 0x030c
+#define HDIO_GET_IDENTITY 0x030d
+#define HDIO_GET_WCACHE 0x030e
+#define HDIO_GET_ACOUSTIC 0x030f
+#define HDIO_GET_ADDRESS 0x0310
+#define HDIO_GET_BUSSTATE 0x031a
+#define HDIO_TRISTATE_HWIF 0x031b
+#define HDIO_DRIVE_RESET 0x031c
+#define HDIO_DRIVE_TASKFILE 0x031d
+#define HDIO_DRIVE_TASK 0x031e
+#define HDIO_DRIVE_CMD 0x031f
+#define HDIO_DRIVE_CMD_AEB HDIO_DRIVE_TASK
+#define HDIO_SET_MULTCOUNT 0x0321
+#define HDIO_SET_UNMASKINTR 0x0322
+#define HDIO_SET_KEEPSETTINGS 0x0323
+#define HDIO_SET_32BIT 0x0324
+#define HDIO_SET_NOWERR 0x0325
+#define HDIO_SET_DMA 0x0326
+#define HDIO_SET_PIO_MODE 0x0327
+#define HDIO_SCAN_HWIF 0x0328
+#define HDIO_UNREGISTER_HWIF 0x032a
+#define HDIO_SET_NICE 0x0329
+#define HDIO_SET_WCACHE 0x032b
+#define HDIO_SET_ACOUSTIC 0x032c
+#define HDIO_SET_BUSSTATE 0x032d
+#define HDIO_SET_QDMA 0x032e
+#define HDIO_SET_ADDRESS 0x032f
+enum {
+  BUSSTATE_OFF = 0,
+  BUSSTATE_ON,
+  BUSSTATE_TRISTATE
+};
+#define __NEW_HD_DRIVE_ID
+struct hd_driveid {
+  unsigned short config;
+  unsigned short cyls;
+  unsigned short reserved2;
+  unsigned short heads;
+  unsigned short track_bytes;
+  unsigned short sector_bytes;
+  unsigned short sectors;
+  unsigned short vendor0;
+  unsigned short vendor1;
+  unsigned short vendor2;
+  unsigned char serial_no[20];
+  unsigned short buf_type;
+  unsigned short buf_size;
+  unsigned short ecc_bytes;
+  unsigned char fw_rev[8];
+  unsigned char model[40];
+  unsigned char max_multsect;
+  unsigned char vendor3;
+  unsigned short dword_io;
+  unsigned char vendor4;
+  unsigned char capability;
+  unsigned short reserved50;
+  unsigned char vendor5;
+  unsigned char tPIO;
+  unsigned char vendor6;
+  unsigned char tDMA;
+  unsigned short field_valid;
+  unsigned short cur_cyls;
+  unsigned short cur_heads;
+  unsigned short cur_sectors;
+  unsigned short cur_capacity0;
+  unsigned short cur_capacity1;
+  unsigned char multsect;
+  unsigned char multsect_valid;
+  unsigned int lba_capacity;
+  unsigned short dma_1word;
+  unsigned short dma_mword;
+  unsigned short eide_pio_modes;
+  unsigned short eide_dma_min;
+  unsigned short eide_dma_time;
+  unsigned short eide_pio;
+  unsigned short eide_pio_iordy;
+  unsigned short words69_70[2];
+  unsigned short words71_74[4];
+  unsigned short queue_depth;
+  unsigned short words76_79[4];
+  unsigned short major_rev_num;
+  unsigned short minor_rev_num;
+  unsigned short command_set_1;
+  unsigned short command_set_2;
+  unsigned short cfsse;
+  unsigned short cfs_enable_1;
+  unsigned short cfs_enable_2;
+  unsigned short csf_default;
+  unsigned short dma_ultra;
+  unsigned short trseuc;
+  unsigned short trsEuc;
+  unsigned short CurAPMvalues;
+  unsigned short mprc;
+  unsigned short hw_config;
+  unsigned short acoustic;
+  unsigned short msrqs;
+  unsigned short sxfert;
+  unsigned short sal;
+  unsigned int spg;
+  unsigned long long lba_capacity_2;
+  unsigned short words104_125[22];
+  unsigned short last_lun;
+  unsigned short word127;
+  unsigned short dlf;
+  unsigned short csfo;
+  unsigned short words130_155[26];
+  unsigned short word156;
+  unsigned short words157_159[3];
+  unsigned short cfa_power;
+  unsigned short words161_175[15];
+  unsigned short words176_205[30];
+  unsigned short words206_254[49];
+  unsigned short integrity_word;
+};
+#define IDE_NICE_DSC_OVERLAP (0)
+#define IDE_NICE_ATAPI_OVERLAP (1)
+#define IDE_NICE_1 (3)
+#define IDE_NICE_0 (2)
+#define IDE_NICE_2 (4)
+#endif
diff --git a/i686-linux-musl/include/linux/hid.h b/i686-linux-musl/include/linux/hid.h
new file mode 100644
index 0000000..ce93cd7
--- /dev/null
+++ b/i686-linux-musl/include/linux/hid.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__HID_H
+#define _UAPI__HID_H
+#define USB_INTERFACE_CLASS_HID 3
+#define USB_INTERFACE_SUBCLASS_BOOT 1
+#define USB_INTERFACE_PROTOCOL_KEYBOARD 1
+#define USB_INTERFACE_PROTOCOL_MOUSE 2
+#define HID_REQ_GET_REPORT 0x01
+#define HID_REQ_GET_IDLE 0x02
+#define HID_REQ_GET_PROTOCOL 0x03
+#define HID_REQ_SET_REPORT 0x09
+#define HID_REQ_SET_IDLE 0x0A
+#define HID_REQ_SET_PROTOCOL 0x0B
+#define HID_DT_HID (USB_TYPE_CLASS | 0x01)
+#define HID_DT_REPORT (USB_TYPE_CLASS | 0x02)
+#define HID_DT_PHYSICAL (USB_TYPE_CLASS | 0x03)
+#define HID_MAX_DESCRIPTOR_SIZE 4096
+#endif
diff --git a/i686-linux-musl/include/linux/hiddev.h b/i686-linux-musl/include/linux/hiddev.h
new file mode 100644
index 0000000..a7553ca
--- /dev/null
+++ b/i686-linux-musl/include/linux/hiddev.h
@@ -0,0 +1,126 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_HIDDEV_H
+#define _UAPI_HIDDEV_H
+#include <linux/types.h>
+struct hiddev_event {
+  unsigned hid;
+  signed int value;
+};
+struct hiddev_devinfo {
+  __u32 bustype;
+  __u32 busnum;
+  __u32 devnum;
+  __u32 ifnum;
+  __s16 vendor;
+  __s16 product;
+  __s16 version;
+  __u32 num_applications;
+};
+struct hiddev_collection_info {
+  __u32 index;
+  __u32 type;
+  __u32 usage;
+  __u32 level;
+};
+#define HID_STRING_SIZE 256
+struct hiddev_string_descriptor {
+  __s32 index;
+  char value[HID_STRING_SIZE];
+};
+struct hiddev_report_info {
+  __u32 report_type;
+  __u32 report_id;
+  __u32 num_fields;
+};
+#define HID_REPORT_ID_UNKNOWN 0xffffffff
+#define HID_REPORT_ID_FIRST 0x00000100
+#define HID_REPORT_ID_NEXT 0x00000200
+#define HID_REPORT_ID_MASK 0x000000ff
+#define HID_REPORT_ID_MAX 0x000000ff
+#define HID_REPORT_TYPE_INPUT 1
+#define HID_REPORT_TYPE_OUTPUT 2
+#define HID_REPORT_TYPE_FEATURE 3
+#define HID_REPORT_TYPE_MIN 1
+#define HID_REPORT_TYPE_MAX 3
+struct hiddev_field_info {
+  __u32 report_type;
+  __u32 report_id;
+  __u32 field_index;
+  __u32 maxusage;
+  __u32 flags;
+  __u32 physical;
+  __u32 logical;
+  __u32 application;
+  __s32 logical_minimum;
+  __s32 logical_maximum;
+  __s32 physical_minimum;
+  __s32 physical_maximum;
+  __u32 unit_exponent;
+  __u32 unit;
+};
+#define HID_FIELD_CONSTANT 0x001
+#define HID_FIELD_VARIABLE 0x002
+#define HID_FIELD_RELATIVE 0x004
+#define HID_FIELD_WRAP 0x008
+#define HID_FIELD_NONLINEAR 0x010
+#define HID_FIELD_NO_PREFERRED 0x020
+#define HID_FIELD_NULL_STATE 0x040
+#define HID_FIELD_VOLATILE 0x080
+#define HID_FIELD_BUFFERED_BYTE 0x100
+struct hiddev_usage_ref {
+  __u32 report_type;
+  __u32 report_id;
+  __u32 field_index;
+  __u32 usage_index;
+  __u32 usage_code;
+  __s32 value;
+};
+#define HID_MAX_MULTI_USAGES 1024
+struct hiddev_usage_ref_multi {
+  struct hiddev_usage_ref uref;
+  __u32 num_values;
+  __s32 values[HID_MAX_MULTI_USAGES];
+};
+#define HID_FIELD_INDEX_NONE 0xffffffff
+#define HID_VERSION 0x010004
+#define HIDIOCGVERSION _IOR('H', 0x01, int)
+#define HIDIOCAPPLICATION _IO('H', 0x02)
+#define HIDIOCGDEVINFO _IOR('H', 0x03, struct hiddev_devinfo)
+#define HIDIOCGSTRING _IOR('H', 0x04, struct hiddev_string_descriptor)
+#define HIDIOCINITREPORT _IO('H', 0x05)
+#define HIDIOCGNAME(len) _IOC(_IOC_READ, 'H', 0x06, len)
+#define HIDIOCGREPORT _IOW('H', 0x07, struct hiddev_report_info)
+#define HIDIOCSREPORT _IOW('H', 0x08, struct hiddev_report_info)
+#define HIDIOCGREPORTINFO _IOWR('H', 0x09, struct hiddev_report_info)
+#define HIDIOCGFIELDINFO _IOWR('H', 0x0A, struct hiddev_field_info)
+#define HIDIOCGUSAGE _IOWR('H', 0x0B, struct hiddev_usage_ref)
+#define HIDIOCSUSAGE _IOW('H', 0x0C, struct hiddev_usage_ref)
+#define HIDIOCGUCODE _IOWR('H', 0x0D, struct hiddev_usage_ref)
+#define HIDIOCGFLAG _IOR('H', 0x0E, int)
+#define HIDIOCSFLAG _IOW('H', 0x0F, int)
+#define HIDIOCGCOLLECTIONINDEX _IOW('H', 0x10, struct hiddev_usage_ref)
+#define HIDIOCGCOLLECTIONINFO _IOWR('H', 0x11, struct hiddev_collection_info)
+#define HIDIOCGPHYS(len) _IOC(_IOC_READ, 'H', 0x12, len)
+#define HIDIOCGUSAGES _IOWR('H', 0x13, struct hiddev_usage_ref_multi)
+#define HIDIOCSUSAGES _IOW('H', 0x14, struct hiddev_usage_ref_multi)
+#define HIDDEV_FLAG_UREF 0x1
+#define HIDDEV_FLAG_REPORT 0x2
+#define HIDDEV_FLAGS 0x3
+#endif
diff --git a/i686-linux-musl/include/linux/hidraw.h b/i686-linux-musl/include/linux/hidraw.h
new file mode 100644
index 0000000..65020ac
--- /dev/null
+++ b/i686-linux-musl/include/linux/hidraw.h
@@ -0,0 +1,47 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_HIDRAW_H
+#define _UAPI_HIDRAW_H
+#include <linux/hid.h>
+#include <linux/types.h>
+struct hidraw_report_descriptor {
+  __u32 size;
+  __u8 value[HID_MAX_DESCRIPTOR_SIZE];
+};
+struct hidraw_devinfo {
+  __u32 bustype;
+  __s16 vendor;
+  __s16 product;
+};
+#define HIDIOCGRDESCSIZE _IOR('H', 0x01, int)
+#define HIDIOCGRDESC _IOR('H', 0x02, struct hidraw_report_descriptor)
+#define HIDIOCGRAWINFO _IOR('H', 0x03, struct hidraw_devinfo)
+#define HIDIOCGRAWNAME(len) _IOC(_IOC_READ, 'H', 0x04, len)
+#define HIDIOCGRAWPHYS(len) _IOC(_IOC_READ, 'H', 0x05, len)
+#define HIDIOCSFEATURE(len) _IOC(_IOC_WRITE | _IOC_READ, 'H', 0x06, len)
+#define HIDIOCGFEATURE(len) _IOC(_IOC_WRITE | _IOC_READ, 'H', 0x07, len)
+#define HIDIOCGRAWUNIQ(len) _IOC(_IOC_READ, 'H', 0x08, len)
+#define HIDIOCSINPUT(len) _IOC(_IOC_WRITE | _IOC_READ, 'H', 0x09, len)
+#define HIDIOCGINPUT(len) _IOC(_IOC_WRITE | _IOC_READ, 'H', 0x0A, len)
+#define HIDIOCSOUTPUT(len) _IOC(_IOC_WRITE | _IOC_READ, 'H', 0x0B, len)
+#define HIDIOCGOUTPUT(len) _IOC(_IOC_WRITE | _IOC_READ, 'H', 0x0C, len)
+#define HIDRAW_FIRST_MINOR 0
+#define HIDRAW_MAX_DEVICES 64
+#define HIDRAW_BUFFER_SIZE 64
+#endif
diff --git a/i686-linux-musl/include/linux/hpet.h b/i686-linux-musl/include/linux/hpet.h
new file mode 100644
index 0000000..ab944b4
--- /dev/null
+++ b/i686-linux-musl/include/linux/hpet.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__HPET__
+#define _UAPI__HPET__
+#include <linux/compiler.h>
+struct hpet_info {
+  unsigned long hi_ireqfreq;
+  unsigned long hi_flags;
+  unsigned short hi_hpet;
+  unsigned short hi_timer;
+};
+#define HPET_INFO_PERIODIC 0x0010
+#define HPET_IE_ON _IO('h', 0x01)
+#define HPET_IE_OFF _IO('h', 0x02)
+#define HPET_INFO _IOR('h', 0x03, struct hpet_info)
+#define HPET_EPI _IO('h', 0x04)
+#define HPET_DPI _IO('h', 0x05)
+#define HPET_IRQFREQ _IOW('h', 0x6, unsigned long)
+#define MAX_HPET_TBS 8
+#endif
diff --git a/i686-linux-musl/include/linux/hsi/cs-protocol.h b/i686-linux-musl/include/linux/hsi/cs-protocol.h
new file mode 100644
index 0000000..baac345
--- /dev/null
+++ b/i686-linux-musl/include/linux/hsi/cs-protocol.h
@@ -0,0 +1,75 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _CS_PROTOCOL_H
+#define _CS_PROTOCOL_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define CS_DEV_FILE_NAME "/dev/cmt_speech"
+#define CS_IF_VERSION 2
+#define CS_CMD_SHIFT 28
+#define CS_DOMAIN_SHIFT 24
+#define CS_CMD_MASK 0xff000000
+#define CS_PARAM_MASK 0xffffff
+#define CS_CMD(id,dom) (((id) << CS_CMD_SHIFT) | ((dom) << CS_DOMAIN_SHIFT))
+#define CS_ERROR CS_CMD(1, 0)
+#define CS_RX_DATA_RECEIVED CS_CMD(2, 0)
+#define CS_TX_DATA_READY CS_CMD(3, 0)
+#define CS_TX_DATA_SENT CS_CMD(4, 0)
+#define CS_ERR_PEER_RESET 0
+#define CS_FEAT_TSTAMP_RX_CTRL (1 << 0)
+#define CS_FEAT_ROLLING_RX_COUNTER (2 << 0)
+#define CS_STATE_CLOSED 0
+#define CS_STATE_OPENED 1
+#define CS_STATE_CONFIGURED 2
+#define CS_MAX_BUFFERS_SHIFT 4
+#define CS_MAX_BUFFERS (1 << CS_MAX_BUFFERS_SHIFT)
+struct cs_buffer_config {
+  __u32 rx_bufs;
+  __u32 tx_bufs;
+  __u32 buf_size;
+  __u32 flags;
+  __u32 reserved[4];
+};
+struct cs_timestamp {
+  __u32 tv_sec;
+  __u32 tv_nsec;
+};
+struct cs_mmap_config_block {
+  __u32 reserved1;
+  __u32 buf_size;
+  __u32 rx_bufs;
+  __u32 tx_bufs;
+  __u32 reserved2;
+  __u32 rx_offsets[CS_MAX_BUFFERS];
+  __u32 tx_offsets[CS_MAX_BUFFERS];
+  __u32 rx_ptr;
+  __u32 rx_ptr_boundary;
+  __u32 reserved3[2];
+  struct cs_timestamp tstamp_rx_ctrl;
+};
+#define CS_IO_MAGIC 'C'
+#define CS_IOW(num,dtype) _IOW(CS_IO_MAGIC, num, dtype)
+#define CS_IOR(num,dtype) _IOR(CS_IO_MAGIC, num, dtype)
+#define CS_IOWR(num,dtype) _IOWR(CS_IO_MAGIC, num, dtype)
+#define CS_IO(num) _IO(CS_IO_MAGIC, num)
+#define CS_GET_STATE CS_IOR(21, unsigned int)
+#define CS_SET_WAKELINE CS_IOW(23, unsigned int)
+#define CS_GET_IF_VERSION CS_IOR(30, unsigned int)
+#define CS_CONFIG_BUFS CS_IOW(31, struct cs_buffer_config)
+#endif
diff --git a/i686-linux-musl/include/linux/hsi/hsi_char.h b/i686-linux-musl/include/linux/hsi/hsi_char.h
new file mode 100644
index 0000000..e127a35
--- /dev/null
+++ b/i686-linux-musl/include/linux/hsi/hsi_char.h
@@ -0,0 +1,52 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __HSI_CHAR_H
+#define __HSI_CHAR_H
+#include <linux/types.h>
+#define HSI_CHAR_MAGIC 'k'
+#define HSC_IOW(num,dtype) _IOW(HSI_CHAR_MAGIC, num, dtype)
+#define HSC_IOR(num,dtype) _IOR(HSI_CHAR_MAGIC, num, dtype)
+#define HSC_IOWR(num,dtype) _IOWR(HSI_CHAR_MAGIC, num, dtype)
+#define HSC_IO(num) _IO(HSI_CHAR_MAGIC, num)
+#define HSC_RESET HSC_IO(16)
+#define HSC_SET_PM HSC_IO(17)
+#define HSC_SEND_BREAK HSC_IO(18)
+#define HSC_SET_RX HSC_IOW(19, struct hsc_rx_config)
+#define HSC_GET_RX HSC_IOW(20, struct hsc_rx_config)
+#define HSC_SET_TX HSC_IOW(21, struct hsc_tx_config)
+#define HSC_GET_TX HSC_IOW(22, struct hsc_tx_config)
+#define HSC_PM_DISABLE 0
+#define HSC_PM_ENABLE 1
+#define HSC_MODE_STREAM 1
+#define HSC_MODE_FRAME 2
+#define HSC_FLOW_SYNC 0
+#define HSC_ARB_RR 0
+#define HSC_ARB_PRIO 1
+struct hsc_rx_config {
+  __u32 mode;
+  __u32 flow;
+  __u32 channels;
+};
+struct hsc_tx_config {
+  __u32 mode;
+  __u32 channels;
+  __u32 speed;
+  __u32 arb_mode;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/hsr_netlink.h b/i686-linux-musl/include/linux/hsr_netlink.h
new file mode 100644
index 0000000..e410e57
--- /dev/null
+++ b/i686-linux-musl/include/linux/hsr_netlink.h
@@ -0,0 +1,47 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_HSR_NETLINK_H
+#define __UAPI_HSR_NETLINK_H
+enum {
+  HSR_A_UNSPEC,
+  HSR_A_NODE_ADDR,
+  HSR_A_IFINDEX,
+  HSR_A_IF1_AGE,
+  HSR_A_IF2_AGE,
+  HSR_A_NODE_ADDR_B,
+  HSR_A_IF1_SEQ,
+  HSR_A_IF2_SEQ,
+  HSR_A_IF1_IFINDEX,
+  HSR_A_IF2_IFINDEX,
+  HSR_A_ADDR_B_IFINDEX,
+  __HSR_A_MAX,
+};
+#define HSR_A_MAX (__HSR_A_MAX - 1)
+enum {
+  HSR_C_UNSPEC,
+  HSR_C_RING_ERROR,
+  HSR_C_NODE_DOWN,
+  HSR_C_GET_NODE_STATUS,
+  HSR_C_SET_NODE_STATUS,
+  HSR_C_GET_NODE_LIST,
+  HSR_C_SET_NODE_LIST,
+  __HSR_C_MAX,
+};
+#define HSR_C_MAX (__HSR_C_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/hw_breakpoint.h b/i686-linux-musl/include/linux/hw_breakpoint.h
new file mode 100644
index 0000000..74acd53
--- /dev/null
+++ b/i686-linux-musl/include/linux/hw_breakpoint.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_HW_BREAKPOINT_H
+#define _UAPI_LINUX_HW_BREAKPOINT_H
+enum {
+  HW_BREAKPOINT_LEN_1 = 1,
+  HW_BREAKPOINT_LEN_2 = 2,
+  HW_BREAKPOINT_LEN_3 = 3,
+  HW_BREAKPOINT_LEN_4 = 4,
+  HW_BREAKPOINT_LEN_5 = 5,
+  HW_BREAKPOINT_LEN_6 = 6,
+  HW_BREAKPOINT_LEN_7 = 7,
+  HW_BREAKPOINT_LEN_8 = 8,
+};
+enum {
+  HW_BREAKPOINT_EMPTY = 0,
+  HW_BREAKPOINT_R = 1,
+  HW_BREAKPOINT_W = 2,
+  HW_BREAKPOINT_RW = HW_BREAKPOINT_R | HW_BREAKPOINT_W,
+  HW_BREAKPOINT_X = 4,
+  HW_BREAKPOINT_INVALID = HW_BREAKPOINT_RW | HW_BREAKPOINT_X,
+};
+enum bp_type_idx {
+  TYPE_INST = 0,
+  TYPE_DATA = 1,
+  TYPE_MAX
+};
+#endif
diff --git a/i686-linux-musl/include/linux/hyperv.h b/i686-linux-musl/include/linux/hyperv.h
new file mode 100644
index 0000000..4790bbf
--- /dev/null
+++ b/i686-linux-musl/include/linux/hyperv.h
@@ -0,0 +1,194 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_HYPERV_H
+#define _UAPI_HYPERV_H
+#include <linux/types.h>
+#define UTIL_FW_MINOR 0
+#define UTIL_WS2K8_FW_MAJOR 1
+#define UTIL_WS2K8_FW_VERSION (UTIL_WS2K8_FW_MAJOR << 16 | UTIL_FW_MINOR)
+#define UTIL_FW_MAJOR 3
+#define UTIL_FW_VERSION (UTIL_FW_MAJOR << 16 | UTIL_FW_MINOR)
+#define VSS_OP_REGISTER 128
+#define VSS_OP_REGISTER1 129
+enum hv_vss_op {
+  VSS_OP_CREATE = 0,
+  VSS_OP_DELETE,
+  VSS_OP_HOT_BACKUP,
+  VSS_OP_GET_DM_INFO,
+  VSS_OP_BU_COMPLETE,
+  VSS_OP_FREEZE,
+  VSS_OP_THAW,
+  VSS_OP_AUTO_RECOVER,
+  VSS_OP_COUNT
+};
+struct hv_vss_hdr {
+  __u8 operation;
+  __u8 reserved[7];
+} __attribute__((packed));
+#define VSS_HBU_NO_AUTO_RECOVERY 0x00000005
+struct hv_vss_check_feature {
+  __u32 flags;
+} __attribute__((packed));
+struct hv_vss_check_dm_info {
+  __u32 flags;
+} __attribute__((packed));
+struct hv_vss_msg {
+  union {
+    struct hv_vss_hdr vss_hdr;
+    int error;
+  };
+  union {
+    struct hv_vss_check_feature vss_cf;
+    struct hv_vss_check_dm_info dm_info;
+  };
+} __attribute__((packed));
+#define FCOPY_VERSION_0 0
+#define FCOPY_VERSION_1 1
+#define FCOPY_CURRENT_VERSION FCOPY_VERSION_1
+#define W_MAX_PATH 260
+enum hv_fcopy_op {
+  START_FILE_COPY = 0,
+  WRITE_TO_FILE,
+  COMPLETE_FCOPY,
+  CANCEL_FCOPY,
+};
+struct hv_fcopy_hdr {
+  __u32 operation;
+  __u8 service_id0[16];
+  __u8 service_id1[16];
+} __attribute__((packed));
+#define OVER_WRITE 0x1
+#define CREATE_PATH 0x2
+struct hv_start_fcopy {
+  struct hv_fcopy_hdr hdr;
+  __u16 file_name[W_MAX_PATH];
+  __u16 path_name[W_MAX_PATH];
+  __u32 copy_flags;
+  __u64 file_size;
+} __attribute__((packed));
+#define DATA_FRAGMENT (6 * 1024)
+struct hv_do_fcopy {
+  struct hv_fcopy_hdr hdr;
+  __u32 pad;
+  __u64 offset;
+  __u32 size;
+  __u8 data[DATA_FRAGMENT];
+} __attribute__((packed));
+#define HV_KVP_EXCHANGE_MAX_VALUE_SIZE (2048)
+#define HV_KVP_EXCHANGE_MAX_KEY_SIZE (512)
+#define REG_SZ 1
+#define REG_U32 4
+#define REG_U64 8
+#define KVP_OP_REGISTER 4
+#define KVP_OP_REGISTER1 100
+enum hv_kvp_exchg_op {
+  KVP_OP_GET = 0,
+  KVP_OP_SET,
+  KVP_OP_DELETE,
+  KVP_OP_ENUMERATE,
+  KVP_OP_GET_IP_INFO,
+  KVP_OP_SET_IP_INFO,
+  KVP_OP_COUNT
+};
+enum hv_kvp_exchg_pool {
+  KVP_POOL_EXTERNAL = 0,
+  KVP_POOL_GUEST,
+  KVP_POOL_AUTO,
+  KVP_POOL_AUTO_EXTERNAL,
+  KVP_POOL_AUTO_INTERNAL,
+  KVP_POOL_COUNT
+};
+#define HV_S_OK 0x00000000
+#define HV_E_FAIL 0x80004005
+#define HV_S_CONT 0x80070103
+#define HV_ERROR_NOT_SUPPORTED 0x80070032
+#define HV_ERROR_MACHINE_LOCKED 0x800704F7
+#define HV_ERROR_DEVICE_NOT_CONNECTED 0x8007048F
+#define HV_INVALIDARG 0x80070057
+#define HV_GUID_NOTFOUND 0x80041002
+#define HV_ERROR_ALREADY_EXISTS 0x80070050
+#define HV_ERROR_DISK_FULL 0x80070070
+#define ADDR_FAMILY_NONE 0x00
+#define ADDR_FAMILY_IPV4 0x01
+#define ADDR_FAMILY_IPV6 0x02
+#define MAX_ADAPTER_ID_SIZE 128
+#define MAX_IP_ADDR_SIZE 1024
+#define MAX_GATEWAY_SIZE 512
+struct hv_kvp_ipaddr_value {
+  __u16 adapter_id[MAX_ADAPTER_ID_SIZE];
+  __u8 addr_family;
+  __u8 dhcp_enabled;
+  __u16 ip_addr[MAX_IP_ADDR_SIZE];
+  __u16 sub_net[MAX_IP_ADDR_SIZE];
+  __u16 gate_way[MAX_GATEWAY_SIZE];
+  __u16 dns_addr[MAX_IP_ADDR_SIZE];
+} __attribute__((packed));
+struct hv_kvp_hdr {
+  __u8 operation;
+  __u8 pool;
+  __u16 pad;
+} __attribute__((packed));
+struct hv_kvp_exchg_msg_value {
+  __u32 value_type;
+  __u32 key_size;
+  __u32 value_size;
+  __u8 key[HV_KVP_EXCHANGE_MAX_KEY_SIZE];
+  union {
+    __u8 value[HV_KVP_EXCHANGE_MAX_VALUE_SIZE];
+    __u32 value_u32;
+    __u64 value_u64;
+  };
+} __attribute__((packed));
+struct hv_kvp_msg_enumerate {
+  __u32 index;
+  struct hv_kvp_exchg_msg_value data;
+} __attribute__((packed));
+struct hv_kvp_msg_get {
+  struct hv_kvp_exchg_msg_value data;
+};
+struct hv_kvp_msg_set {
+  struct hv_kvp_exchg_msg_value data;
+};
+struct hv_kvp_msg_delete {
+  __u32 key_size;
+  __u8 key[HV_KVP_EXCHANGE_MAX_KEY_SIZE];
+};
+struct hv_kvp_register {
+  __u8 version[HV_KVP_EXCHANGE_MAX_KEY_SIZE];
+};
+struct hv_kvp_msg {
+  union {
+    struct hv_kvp_hdr kvp_hdr;
+    int error;
+  };
+  union {
+    struct hv_kvp_msg_get kvp_get;
+    struct hv_kvp_msg_set kvp_set;
+    struct hv_kvp_msg_delete kvp_delete;
+    struct hv_kvp_msg_enumerate kvp_enum_data;
+    struct hv_kvp_ipaddr_value kvp_ip_val;
+    struct hv_kvp_register kvp_register;
+  } body;
+} __attribute__((packed));
+struct hv_kvp_ip_msg {
+  __u8 operation;
+  __u8 pool;
+  struct hv_kvp_ipaddr_value kvp_ip_val;
+} __attribute__((packed));
+#endif
diff --git a/i686-linux-musl/include/linux/i2c-dev.h b/i686-linux-musl/include/linux/i2c-dev.h
new file mode 100644
index 0000000..07fdda2
--- /dev/null
+++ b/i686-linux-musl/include/linux/i2c-dev.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_I2C_DEV_H
+#define _UAPI_LINUX_I2C_DEV_H
+#include <linux/types.h>
+#include <linux/compiler.h>
+#define I2C_RETRIES 0x0701
+#define I2C_TIMEOUT 0x0702
+#define I2C_SLAVE 0x0703
+#define I2C_SLAVE_FORCE 0x0706
+#define I2C_TENBIT 0x0704
+#define I2C_FUNCS 0x0705
+#define I2C_RDWR 0x0707
+#define I2C_PEC 0x0708
+#define I2C_SMBUS 0x0720
+struct i2c_smbus_ioctl_data {
+  __u8 read_write;
+  __u8 command;
+  __u32 size;
+  union i2c_smbus_data __user * data;
+};
+struct i2c_rdwr_ioctl_data {
+  struct i2c_msg __user * msgs;
+  __u32 nmsgs;
+};
+#define I2C_RDWR_IOCTL_MAX_MSGS 42
+#define I2C_RDRW_IOCTL_MAX_MSGS I2C_RDWR_IOCTL_MAX_MSGS
+#endif
diff --git a/i686-linux-musl/include/linux/i2c.h b/i686-linux-musl/include/linux/i2c.h
new file mode 100644
index 0000000..fe578e8
--- /dev/null
+++ b/i686-linux-musl/include/linux/i2c.h
@@ -0,0 +1,81 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_I2C_H
+#define _UAPI_LINUX_I2C_H
+#include <linux/types.h>
+struct i2c_msg {
+  __u16 addr;
+  __u16 flags;
+#define I2C_M_RD 0x0001
+#define I2C_M_TEN 0x0010
+#define I2C_M_DMA_SAFE 0x0200
+#define I2C_M_RECV_LEN 0x0400
+#define I2C_M_NO_RD_ACK 0x0800
+#define I2C_M_IGNORE_NAK 0x1000
+#define I2C_M_REV_DIR_ADDR 0x2000
+#define I2C_M_NOSTART 0x4000
+#define I2C_M_STOP 0x8000
+  __u16 len;
+  __u8 * buf;
+};
+#define I2C_FUNC_I2C 0x00000001
+#define I2C_FUNC_10BIT_ADDR 0x00000002
+#define I2C_FUNC_PROTOCOL_MANGLING 0x00000004
+#define I2C_FUNC_SMBUS_PEC 0x00000008
+#define I2C_FUNC_NOSTART 0x00000010
+#define I2C_FUNC_SLAVE 0x00000020
+#define I2C_FUNC_SMBUS_BLOCK_PROC_CALL 0x00008000
+#define I2C_FUNC_SMBUS_QUICK 0x00010000
+#define I2C_FUNC_SMBUS_READ_BYTE 0x00020000
+#define I2C_FUNC_SMBUS_WRITE_BYTE 0x00040000
+#define I2C_FUNC_SMBUS_READ_BYTE_DATA 0x00080000
+#define I2C_FUNC_SMBUS_WRITE_BYTE_DATA 0x00100000
+#define I2C_FUNC_SMBUS_READ_WORD_DATA 0x00200000
+#define I2C_FUNC_SMBUS_WRITE_WORD_DATA 0x00400000
+#define I2C_FUNC_SMBUS_PROC_CALL 0x00800000
+#define I2C_FUNC_SMBUS_READ_BLOCK_DATA 0x01000000
+#define I2C_FUNC_SMBUS_WRITE_BLOCK_DATA 0x02000000
+#define I2C_FUNC_SMBUS_READ_I2C_BLOCK 0x04000000
+#define I2C_FUNC_SMBUS_WRITE_I2C_BLOCK 0x08000000
+#define I2C_FUNC_SMBUS_HOST_NOTIFY 0x10000000
+#define I2C_FUNC_SMBUS_BYTE (I2C_FUNC_SMBUS_READ_BYTE | I2C_FUNC_SMBUS_WRITE_BYTE)
+#define I2C_FUNC_SMBUS_BYTE_DATA (I2C_FUNC_SMBUS_READ_BYTE_DATA | I2C_FUNC_SMBUS_WRITE_BYTE_DATA)
+#define I2C_FUNC_SMBUS_WORD_DATA (I2C_FUNC_SMBUS_READ_WORD_DATA | I2C_FUNC_SMBUS_WRITE_WORD_DATA)
+#define I2C_FUNC_SMBUS_BLOCK_DATA (I2C_FUNC_SMBUS_READ_BLOCK_DATA | I2C_FUNC_SMBUS_WRITE_BLOCK_DATA)
+#define I2C_FUNC_SMBUS_I2C_BLOCK (I2C_FUNC_SMBUS_READ_I2C_BLOCK | I2C_FUNC_SMBUS_WRITE_I2C_BLOCK)
+#define I2C_FUNC_SMBUS_EMUL (I2C_FUNC_SMBUS_QUICK | I2C_FUNC_SMBUS_BYTE | I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA | I2C_FUNC_SMBUS_PROC_CALL | I2C_FUNC_SMBUS_WRITE_BLOCK_DATA | I2C_FUNC_SMBUS_I2C_BLOCK | I2C_FUNC_SMBUS_PEC)
+#define I2C_FUNC_SMBUS_EMUL_ALL (I2C_FUNC_SMBUS_EMUL | I2C_FUNC_SMBUS_READ_BLOCK_DATA | I2C_FUNC_SMBUS_BLOCK_PROC_CALL)
+#define I2C_SMBUS_BLOCK_MAX 32
+union i2c_smbus_data {
+  __u8 byte;
+  __u16 word;
+  __u8 block[I2C_SMBUS_BLOCK_MAX + 2];
+};
+#define I2C_SMBUS_READ 1
+#define I2C_SMBUS_WRITE 0
+#define I2C_SMBUS_QUICK 0
+#define I2C_SMBUS_BYTE 1
+#define I2C_SMBUS_BYTE_DATA 2
+#define I2C_SMBUS_WORD_DATA 3
+#define I2C_SMBUS_PROC_CALL 4
+#define I2C_SMBUS_BLOCK_DATA 5
+#define I2C_SMBUS_I2C_BLOCK_BROKEN 6
+#define I2C_SMBUS_BLOCK_PROC_CALL 7
+#define I2C_SMBUS_I2C_BLOCK_DATA 8
+#endif
diff --git a/i686-linux-musl/include/linux/i2o-dev.h b/i686-linux-musl/include/linux/i2o-dev.h
new file mode 100644
index 0000000..fc8b26d
--- /dev/null
+++ b/i686-linux-musl/include/linux/i2o-dev.h
@@ -0,0 +1,317 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _I2O_DEV_H
+#define _I2O_DEV_H
+#define MAX_I2O_CONTROLLERS 32
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define I2O_MAGIC_NUMBER 'i'
+#define I2OGETIOPS _IOR(I2O_MAGIC_NUMBER, 0, __u8[MAX_I2O_CONTROLLERS])
+#define I2OHRTGET _IOWR(I2O_MAGIC_NUMBER, 1, struct i2o_cmd_hrtlct)
+#define I2OLCTGET _IOWR(I2O_MAGIC_NUMBER, 2, struct i2o_cmd_hrtlct)
+#define I2OPARMSET _IOWR(I2O_MAGIC_NUMBER, 3, struct i2o_cmd_psetget)
+#define I2OPARMGET _IOWR(I2O_MAGIC_NUMBER, 4, struct i2o_cmd_psetget)
+#define I2OSWDL _IOWR(I2O_MAGIC_NUMBER, 5, struct i2o_sw_xfer)
+#define I2OSWUL _IOWR(I2O_MAGIC_NUMBER, 6, struct i2o_sw_xfer)
+#define I2OSWDEL _IOWR(I2O_MAGIC_NUMBER, 7, struct i2o_sw_xfer)
+#define I2OVALIDATE _IOR(I2O_MAGIC_NUMBER, 8, __u32)
+#define I2OHTML _IOWR(I2O_MAGIC_NUMBER, 9, struct i2o_html)
+#define I2OEVTREG _IOW(I2O_MAGIC_NUMBER, 10, struct i2o_evt_id)
+#define I2OEVTGET _IOR(I2O_MAGIC_NUMBER, 11, struct i2o_evt_info)
+#define I2OPASSTHRU _IOR(I2O_MAGIC_NUMBER, 12, struct i2o_cmd_passthru)
+#define I2OPASSTHRU32 _IOR(I2O_MAGIC_NUMBER, 12, struct i2o_cmd_passthru32)
+struct i2o_cmd_passthru32 {
+  unsigned int iop;
+  __u32 msg;
+};
+struct i2o_cmd_passthru {
+  unsigned int iop;
+  void __user * msg;
+};
+struct i2o_cmd_hrtlct {
+  unsigned int iop;
+  void __user * resbuf;
+  unsigned int __user * reslen;
+};
+struct i2o_cmd_psetget {
+  unsigned int iop;
+  unsigned int tid;
+  void __user * opbuf;
+  unsigned int oplen;
+  void __user * resbuf;
+  unsigned int __user * reslen;
+};
+struct i2o_sw_xfer {
+  unsigned int iop;
+  unsigned char flags;
+  unsigned char sw_type;
+  unsigned int sw_id;
+  void __user * buf;
+  unsigned int __user * swlen;
+  unsigned int __user * maxfrag;
+  unsigned int __user * curfrag;
+};
+struct i2o_html {
+  unsigned int iop;
+  unsigned int tid;
+  unsigned int page;
+  void __user * resbuf;
+  unsigned int __user * reslen;
+  void __user * qbuf;
+  unsigned int qlen;
+};
+#define I2O_EVT_Q_LEN 32
+struct i2o_evt_id {
+  unsigned int iop;
+  unsigned int tid;
+  unsigned int evt_mask;
+};
+#define I2O_EVT_DATA_SIZE 88
+struct i2o_evt_info {
+  struct i2o_evt_id id;
+  unsigned char evt_data[I2O_EVT_DATA_SIZE];
+  unsigned int data_size;
+};
+struct i2o_evt_get {
+  struct i2o_evt_info info;
+  int pending;
+  int lost;
+};
+typedef struct i2o_sg_io_hdr {
+  unsigned int flags;
+} i2o_sg_io_hdr_t;
+#define I2O_BUS_LOCAL 0
+#define I2O_BUS_ISA 1
+#define I2O_BUS_EISA 2
+#define I2O_BUS_PCI 4
+#define I2O_BUS_PCMCIA 5
+#define I2O_BUS_NUBUS 6
+#define I2O_BUS_CARDBUS 7
+#define I2O_BUS_UNKNOWN 0x80
+typedef struct _i2o_pci_bus {
+  __u8 PciFunctionNumber;
+  __u8 PciDeviceNumber;
+  __u8 PciBusNumber;
+  __u8 reserved;
+  __u16 PciVendorID;
+  __u16 PciDeviceID;
+} i2o_pci_bus;
+typedef struct _i2o_local_bus {
+  __u16 LbBaseIOPort;
+  __u16 reserved;
+  __u32 LbBaseMemoryAddress;
+} i2o_local_bus;
+typedef struct _i2o_isa_bus {
+  __u16 IsaBaseIOPort;
+  __u8 CSN;
+  __u8 reserved;
+  __u32 IsaBaseMemoryAddress;
+} i2o_isa_bus;
+typedef struct _i2o_eisa_bus_info {
+  __u16 EisaBaseIOPort;
+  __u8 reserved;
+  __u8 EisaSlotNumber;
+  __u32 EisaBaseMemoryAddress;
+} i2o_eisa_bus;
+typedef struct _i2o_mca_bus {
+  __u16 McaBaseIOPort;
+  __u8 reserved;
+  __u8 McaSlotNumber;
+  __u32 McaBaseMemoryAddress;
+} i2o_mca_bus;
+typedef struct _i2o_other_bus {
+  __u16 BaseIOPort;
+  __u16 reserved;
+  __u32 BaseMemoryAddress;
+} i2o_other_bus;
+typedef struct _i2o_hrt_entry {
+  __u32 adapter_id;
+  __u32 parent_tid : 12;
+  __u32 state : 4;
+  __u32 bus_num : 8;
+  __u32 bus_type : 8;
+  union {
+    i2o_pci_bus pci_bus;
+    i2o_local_bus local_bus;
+    i2o_isa_bus isa_bus;
+    i2o_eisa_bus eisa_bus;
+    i2o_mca_bus mca_bus;
+    i2o_other_bus other_bus;
+  } bus;
+} i2o_hrt_entry;
+typedef struct _i2o_hrt {
+  __u16 num_entries;
+  __u8 entry_len;
+  __u8 hrt_version;
+  __u32 change_ind;
+  i2o_hrt_entry hrt_entry[1];
+} i2o_hrt;
+typedef struct _i2o_lct_entry {
+  __u32 entry_size : 16;
+  __u32 tid : 12;
+  __u32 reserved : 4;
+  __u32 change_ind;
+  __u32 device_flags;
+  __u32 class_id : 12;
+  __u32 version : 4;
+  __u32 vendor_id : 16;
+  __u32 sub_class;
+  __u32 user_tid : 12;
+  __u32 parent_tid : 12;
+  __u32 bios_info : 8;
+  __u8 identity_tag[8];
+  __u32 event_capabilities;
+} i2o_lct_entry;
+typedef struct _i2o_lct {
+  __u32 table_size : 16;
+  __u32 boot_tid : 12;
+  __u32 lct_ver : 4;
+  __u32 iop_flags;
+  __u32 change_ind;
+  i2o_lct_entry lct_entry[1];
+} i2o_lct;
+typedef struct _i2o_status_block {
+  __u16 org_id;
+  __u16 reserved;
+  __u16 iop_id : 12;
+  __u16 reserved1 : 4;
+  __u16 host_unit_id;
+  __u16 segment_number : 12;
+  __u16 i2o_version : 4;
+  __u8 iop_state;
+  __u8 msg_type;
+  __u16 inbound_frame_size;
+  __u8 init_code;
+  __u8 reserved2;
+  __u32 max_inbound_frames;
+  __u32 cur_inbound_frames;
+  __u32 max_outbound_frames;
+  char product_id[24];
+  __u32 expected_lct_size;
+  __u32 iop_capabilities;
+  __u32 desired_mem_size;
+  __u32 current_mem_size;
+  __u32 current_mem_base;
+  __u32 desired_io_size;
+  __u32 current_io_size;
+  __u32 current_io_base;
+  __u32 reserved3 : 24;
+  __u32 cmd_status : 8;
+} i2o_status_block;
+#define I2O_EVT_IND_STATE_CHANGE 0x80000000
+#define I2O_EVT_IND_GENERAL_WARNING 0x40000000
+#define I2O_EVT_IND_CONFIGURATION_FLAG 0x20000000
+#define I2O_EVT_IND_LOCK_RELEASE 0x10000000
+#define I2O_EVT_IND_CAPABILITY_CHANGE 0x08000000
+#define I2O_EVT_IND_DEVICE_RESET 0x04000000
+#define I2O_EVT_IND_EVT_MASK_MODIFIED 0x02000000
+#define I2O_EVT_IND_FIELD_MODIFIED 0x01000000
+#define I2O_EVT_IND_VENDOR_EVT 0x00800000
+#define I2O_EVT_IND_DEVICE_STATE 0x00400000
+#define I2O_EVT_IND_EXEC_RESOURCE_LIMITS 0x00000001
+#define I2O_EVT_IND_EXEC_CONNECTION_FAIL 0x00000002
+#define I2O_EVT_IND_EXEC_ADAPTER_FAULT 0x00000004
+#define I2O_EVT_IND_EXEC_POWER_FAIL 0x00000008
+#define I2O_EVT_IND_EXEC_RESET_PENDING 0x00000010
+#define I2O_EVT_IND_EXEC_RESET_IMMINENT 0x00000020
+#define I2O_EVT_IND_EXEC_HW_FAIL 0x00000040
+#define I2O_EVT_IND_EXEC_XCT_CHANGE 0x00000080
+#define I2O_EVT_IND_EXEC_NEW_LCT_ENTRY 0x00000100
+#define I2O_EVT_IND_EXEC_MODIFIED_LCT 0x00000200
+#define I2O_EVT_IND_EXEC_DDM_AVAILABILITY 0x00000400
+#define I2O_EVT_IND_BSA_VOLUME_LOAD 0x00000001
+#define I2O_EVT_IND_BSA_VOLUME_UNLOAD 0x00000002
+#define I2O_EVT_IND_BSA_VOLUME_UNLOAD_REQ 0x00000004
+#define I2O_EVT_IND_BSA_CAPACITY_CHANGE 0x00000008
+#define I2O_EVT_IND_BSA_SCSI_SMART 0x00000010
+#define I2O_EVT_STATE_CHANGE_NORMAL 0x00
+#define I2O_EVT_STATE_CHANGE_SUSPENDED 0x01
+#define I2O_EVT_STATE_CHANGE_RESTART 0x02
+#define I2O_EVT_STATE_CHANGE_NA_RECOVER 0x03
+#define I2O_EVT_STATE_CHANGE_NA_NO_RECOVER 0x04
+#define I2O_EVT_STATE_CHANGE_QUIESCE_REQUEST 0x05
+#define I2O_EVT_STATE_CHANGE_FAILED 0x10
+#define I2O_EVT_STATE_CHANGE_FAULTED 0x11
+#define I2O_EVT_GEN_WARNING_NORMAL 0x00
+#define I2O_EVT_GEN_WARNING_ERROR_THRESHOLD 0x01
+#define I2O_EVT_GEN_WARNING_MEDIA_FAULT 0x02
+#define I2O_EVT_CAPABILITY_OTHER 0x01
+#define I2O_EVT_CAPABILITY_CHANGED 0x02
+#define I2O_EVT_SENSOR_STATE_CHANGED 0x01
+#define I2O_CLASS_VERSION_10 0x00
+#define I2O_CLASS_VERSION_11 0x01
+#define I2O_CLASS_EXECUTIVE 0x000
+#define I2O_CLASS_DDM 0x001
+#define I2O_CLASS_RANDOM_BLOCK_STORAGE 0x010
+#define I2O_CLASS_SEQUENTIAL_STORAGE 0x011
+#define I2O_CLASS_LAN 0x020
+#define I2O_CLASS_WAN 0x030
+#define I2O_CLASS_FIBRE_CHANNEL_PORT 0x040
+#define I2O_CLASS_FIBRE_CHANNEL_PERIPHERAL 0x041
+#define I2O_CLASS_SCSI_PERIPHERAL 0x051
+#define I2O_CLASS_ATE_PORT 0x060
+#define I2O_CLASS_ATE_PERIPHERAL 0x061
+#define I2O_CLASS_FLOPPY_CONTROLLER 0x070
+#define I2O_CLASS_FLOPPY_DEVICE 0x071
+#define I2O_CLASS_BUS_ADAPTER 0x080
+#define I2O_CLASS_PEER_TRANSPORT_AGENT 0x090
+#define I2O_CLASS_PEER_TRANSPORT 0x091
+#define I2O_CLASS_END 0xfff
+#define I2O_CLASS_MATCH_ANYCLASS 0xffffffff
+#define I2O_SUBCLASS_i960 0x001
+#define I2O_SUBCLASS_HDM 0x020
+#define I2O_SUBCLASS_ISM 0x021
+#define I2O_PARAMS_FIELD_GET 0x0001
+#define I2O_PARAMS_LIST_GET 0x0002
+#define I2O_PARAMS_MORE_GET 0x0003
+#define I2O_PARAMS_SIZE_GET 0x0004
+#define I2O_PARAMS_TABLE_GET 0x0005
+#define I2O_PARAMS_FIELD_SET 0x0006
+#define I2O_PARAMS_LIST_SET 0x0007
+#define I2O_PARAMS_ROW_ADD 0x0008
+#define I2O_PARAMS_ROW_DELETE 0x0009
+#define I2O_PARAMS_TABLE_CLEAR 0x000A
+#define I2O_SNFORMAT_UNKNOWN 0
+#define I2O_SNFORMAT_BINARY 1
+#define I2O_SNFORMAT_ASCII 2
+#define I2O_SNFORMAT_UNICODE 3
+#define I2O_SNFORMAT_LAN48_MAC 4
+#define I2O_SNFORMAT_WAN 5
+#define I2O_SNFORMAT_LAN64_MAC 6
+#define I2O_SNFORMAT_DDM 7
+#define I2O_SNFORMAT_IEEE_REG64 8
+#define I2O_SNFORMAT_IEEE_REG128 9
+#define I2O_SNFORMAT_UNKNOWN2 0xff
+#define ADAPTER_STATE_INITIALIZING 0x01
+#define ADAPTER_STATE_RESET 0x02
+#define ADAPTER_STATE_HOLD 0x04
+#define ADAPTER_STATE_READY 0x05
+#define ADAPTER_STATE_OPERATIONAL 0x08
+#define ADAPTER_STATE_FAILED 0x10
+#define ADAPTER_STATE_FAULTED 0x11
+#define I2O_SOFTWARE_MODULE_IRTOS 0x11
+#define I2O_SOFTWARE_MODULE_IOP_PRIVATE 0x22
+#define I2O_SOFTWARE_MODULE_IOP_CONFIG 0x23
+#define I2O_VENDOR_DPT 0x001b
+#define I2O_DPT_SG_FLAG_INTERPRET 0x00010000
+#define I2O_DPT_SG_FLAG_PHYSICAL 0x00020000
+#define I2O_DPT_FLASH_FRAG_SIZE 0x10000
+#define I2O_DPT_FLASH_READ 0x0101
+#define I2O_DPT_FLASH_WRITE 0x0102
+#endif
diff --git a/i686-linux-musl/include/linux/i8k.h b/i686-linux-musl/include/linux/i8k.h
new file mode 100644
index 0000000..47ada4b
--- /dev/null
+++ b/i686-linux-musl/include/linux/i8k.h
@@ -0,0 +1,43 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_I8K_H
+#define _LINUX_I8K_H
+#define I8K_PROC "/proc/i8k"
+#define I8K_PROC_FMT "1.0"
+#define I8K_BIOS_VERSION _IOR('i', 0x80, int)
+#define I8K_MACHINE_ID _IOR('i', 0x81, int)
+#define I8K_POWER_STATUS _IOR('i', 0x82, size_t)
+#define I8K_FN_STATUS _IOR('i', 0x83, size_t)
+#define I8K_GET_TEMP _IOR('i', 0x84, size_t)
+#define I8K_GET_SPEED _IOWR('i', 0x85, size_t)
+#define I8K_GET_FAN _IOWR('i', 0x86, size_t)
+#define I8K_SET_FAN _IOWR('i', 0x87, size_t)
+#define I8K_FAN_LEFT 1
+#define I8K_FAN_RIGHT 0
+#define I8K_FAN_OFF 0
+#define I8K_FAN_LOW 1
+#define I8K_FAN_HIGH 2
+#define I8K_FAN_TURBO 3
+#define I8K_FAN_MAX I8K_FAN_TURBO
+#define I8K_VOL_UP 1
+#define I8K_VOL_DOWN 2
+#define I8K_VOL_MUTE 4
+#define I8K_AC 1
+#define I8K_BATTERY 0
+#endif
diff --git a/i686-linux-musl/include/linux/icmp.h b/i686-linux-musl/include/linux/icmp.h
new file mode 100644
index 0000000..8847a48
--- /dev/null
+++ b/i686-linux-musl/include/linux/icmp.h
@@ -0,0 +1,132 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ICMP_H
+#define _UAPI_LINUX_ICMP_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+#include <linux/if.h>
+#include <linux/in6.h>
+#define ICMP_ECHOREPLY 0
+#define ICMP_DEST_UNREACH 3
+#define ICMP_SOURCE_QUENCH 4
+#define ICMP_REDIRECT 5
+#define ICMP_ECHO 8
+#define ICMP_TIME_EXCEEDED 11
+#define ICMP_PARAMETERPROB 12
+#define ICMP_TIMESTAMP 13
+#define ICMP_TIMESTAMPREPLY 14
+#define ICMP_INFO_REQUEST 15
+#define ICMP_INFO_REPLY 16
+#define ICMP_ADDRESS 17
+#define ICMP_ADDRESSREPLY 18
+#define NR_ICMP_TYPES 18
+#define ICMP_NET_UNREACH 0
+#define ICMP_HOST_UNREACH 1
+#define ICMP_PROT_UNREACH 2
+#define ICMP_PORT_UNREACH 3
+#define ICMP_FRAG_NEEDED 4
+#define ICMP_SR_FAILED 5
+#define ICMP_NET_UNKNOWN 6
+#define ICMP_HOST_UNKNOWN 7
+#define ICMP_HOST_ISOLATED 8
+#define ICMP_NET_ANO 9
+#define ICMP_HOST_ANO 10
+#define ICMP_NET_UNR_TOS 11
+#define ICMP_HOST_UNR_TOS 12
+#define ICMP_PKT_FILTERED 13
+#define ICMP_PREC_VIOLATION 14
+#define ICMP_PREC_CUTOFF 15
+#define NR_ICMP_UNREACH 15
+#define ICMP_REDIR_NET 0
+#define ICMP_REDIR_HOST 1
+#define ICMP_REDIR_NETTOS 2
+#define ICMP_REDIR_HOSTTOS 3
+#define ICMP_EXC_TTL 0
+#define ICMP_EXC_FRAGTIME 1
+#define ICMP_EXT_ECHO 42
+#define ICMP_EXT_ECHOREPLY 43
+#define ICMP_EXT_CODE_MAL_QUERY 1
+#define ICMP_EXT_CODE_NO_IF 2
+#define ICMP_EXT_CODE_NO_TABLE_ENT 3
+#define ICMP_EXT_CODE_MULT_IFS 4
+#define ICMP_EXT_ECHOREPLY_ACTIVE (1 << 2)
+#define ICMP_EXT_ECHOREPLY_IPV4 (1 << 1)
+#define ICMP_EXT_ECHOREPLY_IPV6 1
+#define ICMP_EXT_ECHO_CTYPE_NAME 1
+#define ICMP_EXT_ECHO_CTYPE_INDEX 2
+#define ICMP_EXT_ECHO_CTYPE_ADDR 3
+#define ICMP_AFI_IP 1
+#define ICMP_AFI_IP6 2
+struct icmphdr {
+  __u8 type;
+  __u8 code;
+  __sum16 checksum;
+  union {
+    struct {
+      __be16 id;
+      __be16 sequence;
+    } echo;
+    __be32 gateway;
+    struct {
+      __be16 __linux_unused;
+      __be16 mtu;
+    } frag;
+    __u8 reserved[4];
+  } un;
+};
+#define ICMP_FILTER 1
+struct icmp_filter {
+  __u32 data;
+};
+struct icmp_ext_hdr {
+#ifdef __LITTLE_ENDIAN_BITFIELD
+  __u8 reserved1 : 4, version : 4;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+  __u8 version : 4, reserved1 : 4;
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif
+  __u8 reserved2;
+  __sum16 checksum;
+};
+struct icmp_extobj_hdr {
+  __be16 length;
+  __u8 class_num;
+  __u8 class_type;
+};
+struct icmp_ext_echo_ctype3_hdr {
+  __be16 afi;
+  __u8 addrlen;
+  __u8 reserved;
+};
+struct icmp_ext_echo_iio {
+  struct icmp_extobj_hdr extobj_hdr;
+  union {
+    char name[IFNAMSIZ];
+    __be32 ifindex;
+    struct {
+      struct icmp_ext_echo_ctype3_hdr ctype3_hdr;
+      union {
+        __be32 ipv4_addr;
+        struct in6_addr ipv6_addr;
+      } ip_addr;
+    } addr;
+  } ident;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/icmpv6.h b/i686-linux-musl/include/linux/icmpv6.h
new file mode 100644
index 0000000..5285698
--- /dev/null
+++ b/i686-linux-musl/include/linux/icmpv6.h
@@ -0,0 +1,127 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ICMPV6_H
+#define _UAPI_LINUX_ICMPV6_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+struct icmp6hdr {
+  __u8 icmp6_type;
+  __u8 icmp6_code;
+  __sum16 icmp6_cksum;
+  union {
+    __be32 un_data32[1];
+    __be16 un_data16[2];
+    __u8 un_data8[4];
+    struct icmpv6_echo {
+      __be16 identifier;
+      __be16 sequence;
+    } u_echo;
+    struct icmpv6_nd_advt {
+#ifdef __LITTLE_ENDIAN_BITFIELD
+      __u32 reserved : 5, override : 1, solicited : 1, router : 1, reserved2 : 24;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+      __u32 router : 1, solicited : 1, override : 1, reserved : 29;
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif
+    } u_nd_advt;
+    struct icmpv6_nd_ra {
+      __u8 hop_limit;
+#ifdef __LITTLE_ENDIAN_BITFIELD
+      __u8 reserved : 3, router_pref : 2, home_agent : 1, other : 1, managed : 1;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+      __u8 managed : 1, other : 1, home_agent : 1, router_pref : 2, reserved : 3;
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif
+      __be16 rt_lifetime;
+    } u_nd_ra;
+  } icmp6_dataun;
+#define icmp6_identifier icmp6_dataun.u_echo.identifier
+#define icmp6_sequence icmp6_dataun.u_echo.sequence
+#define icmp6_pointer icmp6_dataun.un_data32[0]
+#define icmp6_mtu icmp6_dataun.un_data32[0]
+#define icmp6_unused icmp6_dataun.un_data32[0]
+#define icmp6_maxdelay icmp6_dataun.un_data16[0]
+#define icmp6_datagram_len icmp6_dataun.un_data8[0]
+#define icmp6_router icmp6_dataun.u_nd_advt.router
+#define icmp6_solicited icmp6_dataun.u_nd_advt.solicited
+#define icmp6_override icmp6_dataun.u_nd_advt.override
+#define icmp6_ndiscreserved icmp6_dataun.u_nd_advt.reserved
+#define icmp6_hop_limit icmp6_dataun.u_nd_ra.hop_limit
+#define icmp6_addrconf_managed icmp6_dataun.u_nd_ra.managed
+#define icmp6_addrconf_other icmp6_dataun.u_nd_ra.other
+#define icmp6_rt_lifetime icmp6_dataun.u_nd_ra.rt_lifetime
+#define icmp6_router_pref icmp6_dataun.u_nd_ra.router_pref
+};
+#define ICMPV6_ROUTER_PREF_LOW 0x3
+#define ICMPV6_ROUTER_PREF_MEDIUM 0x0
+#define ICMPV6_ROUTER_PREF_HIGH 0x1
+#define ICMPV6_ROUTER_PREF_INVALID 0x2
+#define ICMPV6_DEST_UNREACH 1
+#define ICMPV6_PKT_TOOBIG 2
+#define ICMPV6_TIME_EXCEED 3
+#define ICMPV6_PARAMPROB 4
+#define ICMPV6_ERRMSG_MAX 127
+#define ICMPV6_INFOMSG_MASK 0x80
+#define ICMPV6_ECHO_REQUEST 128
+#define ICMPV6_ECHO_REPLY 129
+#define ICMPV6_MGM_QUERY 130
+#define ICMPV6_MGM_REPORT 131
+#define ICMPV6_MGM_REDUCTION 132
+#define ICMPV6_NI_QUERY 139
+#define ICMPV6_NI_REPLY 140
+#define ICMPV6_MLD2_REPORT 143
+#define ICMPV6_DHAAD_REQUEST 144
+#define ICMPV6_DHAAD_REPLY 145
+#define ICMPV6_MOBILE_PREFIX_SOL 146
+#define ICMPV6_MOBILE_PREFIX_ADV 147
+#define ICMPV6_MRDISC_ADV 151
+#define ICMPV6_MSG_MAX 255
+#define ICMPV6_NOROUTE 0
+#define ICMPV6_ADM_PROHIBITED 1
+#define ICMPV6_NOT_NEIGHBOUR 2
+#define ICMPV6_ADDR_UNREACH 3
+#define ICMPV6_PORT_UNREACH 4
+#define ICMPV6_POLICY_FAIL 5
+#define ICMPV6_REJECT_ROUTE 6
+#define ICMPV6_EXC_HOPLIMIT 0
+#define ICMPV6_EXC_FRAGTIME 1
+#define ICMPV6_HDR_FIELD 0
+#define ICMPV6_UNK_NEXTHDR 1
+#define ICMPV6_UNK_OPTION 2
+#define ICMPV6_HDR_INCOMP 3
+#define ICMPV6_EXT_ECHO_REQUEST 160
+#define ICMPV6_EXT_ECHO_REPLY 161
+#define ICMPV6_FILTER 1
+#define ICMPV6_FILTER_BLOCK 1
+#define ICMPV6_FILTER_PASS 2
+#define ICMPV6_FILTER_BLOCKOTHERS 3
+#define ICMPV6_FILTER_PASSONLY 4
+struct icmp6_filter {
+  __u32 data[8];
+};
+#define MLD2_MODE_IS_INCLUDE 1
+#define MLD2_MODE_IS_EXCLUDE 2
+#define MLD2_CHANGE_TO_INCLUDE 3
+#define MLD2_CHANGE_TO_EXCLUDE 4
+#define MLD2_ALLOW_NEW_SOURCES 5
+#define MLD2_BLOCK_OLD_SOURCES 6
+#define MLD2_ALL_MCR_INIT { { { 0xff, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x16 } } }
+#endif
diff --git a/i686-linux-musl/include/linux/idxd.h b/i686-linux-musl/include/linux/idxd.h
new file mode 100644
index 0000000..2966447
--- /dev/null
+++ b/i686-linux-musl/include/linux/idxd.h
@@ -0,0 +1,299 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _USR_IDXD_H_
+#define _USR_IDXD_H_
+#include <stdint.h>
+enum idxd_scmd_stat {
+  IDXD_SCMD_DEV_ENABLED = 0x80000010,
+  IDXD_SCMD_DEV_NOT_ENABLED = 0x80000020,
+  IDXD_SCMD_WQ_ENABLED = 0x80000021,
+  IDXD_SCMD_DEV_DMA_ERR = 0x80020000,
+  IDXD_SCMD_WQ_NO_GRP = 0x80030000,
+  IDXD_SCMD_WQ_NO_NAME = 0x80040000,
+  IDXD_SCMD_WQ_NO_SVM = 0x80050000,
+  IDXD_SCMD_WQ_NO_THRESH = 0x80060000,
+  IDXD_SCMD_WQ_PORTAL_ERR = 0x80070000,
+  IDXD_SCMD_WQ_RES_ALLOC_ERR = 0x80080000,
+  IDXD_SCMD_PERCPU_ERR = 0x80090000,
+  IDXD_SCMD_DMA_CHAN_ERR = 0x800a0000,
+  IDXD_SCMD_CDEV_ERR = 0x800b0000,
+  IDXD_SCMD_WQ_NO_SWQ_SUPPORT = 0x800c0000,
+  IDXD_SCMD_WQ_NONE_CONFIGURED = 0x800d0000,
+  IDXD_SCMD_WQ_NO_SIZE = 0x800e0000,
+  IDXD_SCMD_WQ_NO_PRIV = 0x800f0000,
+};
+#define IDXD_SCMD_SOFTERR_MASK 0x80000000
+#define IDXD_SCMD_SOFTERR_SHIFT 16
+#define IDXD_OP_FLAG_FENCE 0x0001
+#define IDXD_OP_FLAG_BOF 0x0002
+#define IDXD_OP_FLAG_CRAV 0x0004
+#define IDXD_OP_FLAG_RCR 0x0008
+#define IDXD_OP_FLAG_RCI 0x0010
+#define IDXD_OP_FLAG_CRSTS 0x0020
+#define IDXD_OP_FLAG_CR 0x0080
+#define IDXD_OP_FLAG_CC 0x0100
+#define IDXD_OP_FLAG_ADDR1_TCS 0x0200
+#define IDXD_OP_FLAG_ADDR2_TCS 0x0400
+#define IDXD_OP_FLAG_ADDR3_TCS 0x0800
+#define IDXD_OP_FLAG_CR_TCS 0x1000
+#define IDXD_OP_FLAG_STORD 0x2000
+#define IDXD_OP_FLAG_DRDBK 0x4000
+#define IDXD_OP_FLAG_DSTS 0x8000
+#define IDXD_OP_FLAG_RD_SRC2_AECS 0x010000
+enum dsa_opcode {
+  DSA_OPCODE_NOOP = 0,
+  DSA_OPCODE_BATCH,
+  DSA_OPCODE_DRAIN,
+  DSA_OPCODE_MEMMOVE,
+  DSA_OPCODE_MEMFILL,
+  DSA_OPCODE_COMPARE,
+  DSA_OPCODE_COMPVAL,
+  DSA_OPCODE_CR_DELTA,
+  DSA_OPCODE_AP_DELTA,
+  DSA_OPCODE_DUALCAST,
+  DSA_OPCODE_CRCGEN = 0x10,
+  DSA_OPCODE_COPY_CRC,
+  DSA_OPCODE_DIF_CHECK,
+  DSA_OPCODE_DIF_INS,
+  DSA_OPCODE_DIF_STRP,
+  DSA_OPCODE_DIF_UPDT,
+  DSA_OPCODE_CFLUSH = 0x20,
+};
+enum iax_opcode {
+  IAX_OPCODE_NOOP = 0,
+  IAX_OPCODE_DRAIN = 2,
+  IAX_OPCODE_MEMMOVE,
+  IAX_OPCODE_DECOMPRESS = 0x42,
+  IAX_OPCODE_COMPRESS,
+};
+enum dsa_completion_status {
+  DSA_COMP_NONE = 0,
+  DSA_COMP_SUCCESS,
+  DSA_COMP_SUCCESS_PRED,
+  DSA_COMP_PAGE_FAULT_NOBOF,
+  DSA_COMP_PAGE_FAULT_IR,
+  DSA_COMP_BATCH_FAIL,
+  DSA_COMP_BATCH_PAGE_FAULT,
+  DSA_COMP_DR_OFFSET_NOINC,
+  DSA_COMP_DR_OFFSET_ERANGE,
+  DSA_COMP_DIF_ERR,
+  DSA_COMP_BAD_OPCODE = 0x10,
+  DSA_COMP_INVALID_FLAGS,
+  DSA_COMP_NOZERO_RESERVE,
+  DSA_COMP_XFER_ERANGE,
+  DSA_COMP_DESC_CNT_ERANGE,
+  DSA_COMP_DR_ERANGE,
+  DSA_COMP_OVERLAP_BUFFERS,
+  DSA_COMP_DCAST_ERR,
+  DSA_COMP_DESCLIST_ALIGN,
+  DSA_COMP_INT_HANDLE_INVAL,
+  DSA_COMP_CRA_XLAT,
+  DSA_COMP_CRA_ALIGN,
+  DSA_COMP_ADDR_ALIGN,
+  DSA_COMP_PRIV_BAD,
+  DSA_COMP_TRAFFIC_CLASS_CONF,
+  DSA_COMP_PFAULT_RDBA,
+  DSA_COMP_HW_ERR1,
+  DSA_COMP_HW_ERR_DRB,
+  DSA_COMP_TRANSLATION_FAIL,
+};
+enum iax_completion_status {
+  IAX_COMP_NONE = 0,
+  IAX_COMP_SUCCESS,
+  IAX_COMP_PAGE_FAULT_IR = 0x04,
+  IAX_COMP_OUTBUF_OVERFLOW,
+  IAX_COMP_BAD_OPCODE = 0x10,
+  IAX_COMP_INVALID_FLAGS,
+  IAX_COMP_NOZERO_RESERVE,
+  IAX_COMP_INVALID_SIZE,
+  IAX_COMP_OVERLAP_BUFFERS = 0x16,
+  IAX_COMP_INT_HANDLE_INVAL = 0x19,
+  IAX_COMP_CRA_XLAT,
+  IAX_COMP_CRA_ALIGN,
+  IAX_COMP_ADDR_ALIGN,
+  IAX_COMP_PRIV_BAD,
+  IAX_COMP_TRAFFIC_CLASS_CONF,
+  IAX_COMP_PFAULT_RDBA,
+  IAX_COMP_HW_ERR1,
+  IAX_COMP_HW_ERR_DRB,
+  IAX_COMP_TRANSLATION_FAIL,
+  IAX_COMP_PRS_TIMEOUT,
+  IAX_COMP_WATCHDOG,
+  IAX_COMP_INVALID_COMP_FLAG = 0x30,
+  IAX_COMP_INVALID_FILTER_FLAG,
+  IAX_COMP_INVALID_NUM_ELEMS = 0x33,
+};
+#define DSA_COMP_STATUS_MASK 0x7f
+#define DSA_COMP_STATUS_WRITE 0x80
+struct dsa_hw_desc {
+  uint32_t pasid : 20;
+  uint32_t rsvd : 11;
+  uint32_t priv : 1;
+  uint32_t flags : 24;
+  uint32_t opcode : 8;
+  uint64_t completion_addr;
+  union {
+    uint64_t src_addr;
+    uint64_t rdback_addr;
+    uint64_t pattern;
+    uint64_t desc_list_addr;
+  };
+  union {
+    uint64_t dst_addr;
+    uint64_t rdback_addr2;
+    uint64_t src2_addr;
+    uint64_t comp_pattern;
+  };
+  union {
+    uint32_t xfer_size;
+    uint32_t desc_count;
+  };
+  uint16_t int_handle;
+  uint16_t rsvd1;
+  union {
+    uint8_t expected_res;
+    struct {
+      uint64_t delta_addr;
+      uint32_t max_delta_size;
+      uint32_t delt_rsvd;
+      uint8_t expected_res_mask;
+    };
+    uint32_t delta_rec_size;
+    uint64_t dest2;
+    struct {
+      uint32_t crc_seed;
+      uint32_t crc_rsvd;
+      uint64_t seed_addr;
+    };
+    struct {
+      uint8_t src_dif_flags;
+      uint8_t dif_chk_res;
+      uint8_t dif_chk_flags;
+      uint8_t dif_chk_res2[5];
+      uint32_t chk_ref_tag_seed;
+      uint16_t chk_app_tag_mask;
+      uint16_t chk_app_tag_seed;
+    };
+    struct {
+      uint8_t dif_ins_res;
+      uint8_t dest_dif_flag;
+      uint8_t dif_ins_flags;
+      uint8_t dif_ins_res2[13];
+      uint32_t ins_ref_tag_seed;
+      uint16_t ins_app_tag_mask;
+      uint16_t ins_app_tag_seed;
+    };
+    struct {
+      uint8_t src_upd_flags;
+      uint8_t upd_dest_flags;
+      uint8_t dif_upd_flags;
+      uint8_t dif_upd_res[5];
+      uint32_t src_ref_tag_seed;
+      uint16_t src_app_tag_mask;
+      uint16_t src_app_tag_seed;
+      uint32_t dest_ref_tag_seed;
+      uint16_t dest_app_tag_mask;
+      uint16_t dest_app_tag_seed;
+    };
+    uint8_t op_specific[24];
+  };
+} __attribute__((packed));
+struct iax_hw_desc {
+  uint32_t pasid : 20;
+  uint32_t rsvd : 11;
+  uint32_t priv : 1;
+  uint32_t flags : 24;
+  uint32_t opcode : 8;
+  uint64_t completion_addr;
+  uint64_t src1_addr;
+  uint64_t dst_addr;
+  uint32_t src1_size;
+  uint16_t int_handle;
+  union {
+    uint16_t compr_flags;
+    uint16_t decompr_flags;
+  };
+  uint64_t src2_addr;
+  uint32_t max_dst_size;
+  uint32_t src2_size;
+  uint32_t filter_flags;
+  uint32_t num_inputs;
+} __attribute__((packed));
+struct dsa_raw_desc {
+  uint64_t field[8];
+} __attribute__((packed));
+struct dsa_completion_record {
+  volatile uint8_t status;
+  union {
+    uint8_t result;
+    uint8_t dif_status;
+  };
+  uint16_t rsvd;
+  uint32_t bytes_completed;
+  uint64_t fault_addr;
+  union {
+    struct {
+      uint32_t invalid_flags : 24;
+      uint32_t rsvd2 : 8;
+    };
+    uint32_t delta_rec_size;
+    uint32_t crc_val;
+    struct {
+      uint32_t dif_chk_ref_tag;
+      uint16_t dif_chk_app_tag_mask;
+      uint16_t dif_chk_app_tag;
+    };
+    struct {
+      uint64_t dif_ins_res;
+      uint32_t dif_ins_ref_tag;
+      uint16_t dif_ins_app_tag_mask;
+      uint16_t dif_ins_app_tag;
+    };
+    struct {
+      uint32_t dif_upd_src_ref_tag;
+      uint16_t dif_upd_src_app_tag_mask;
+      uint16_t dif_upd_src_app_tag;
+      uint32_t dif_upd_dest_ref_tag;
+      uint16_t dif_upd_dest_app_tag_mask;
+      uint16_t dif_upd_dest_app_tag;
+    };
+    uint8_t op_specific[16];
+  };
+} __attribute__((packed));
+struct dsa_raw_completion_record {
+  uint64_t field[4];
+} __attribute__((packed));
+struct iax_completion_record {
+  volatile uint8_t status;
+  uint8_t error_code;
+  uint16_t rsvd;
+  uint32_t bytes_completed;
+  uint64_t fault_addr;
+  uint32_t invalid_flags;
+  uint32_t rsvd2;
+  uint32_t output_size;
+  uint8_t output_bits;
+  uint8_t rsvd3;
+  uint16_t rsvd4;
+  uint64_t rsvd5[4];
+} __attribute__((packed));
+struct iax_raw_completion_record {
+  uint64_t field[8];
+} __attribute__((packed));
+#endif
diff --git a/i686-linux-musl/include/linux/if.h b/i686-linux-musl/include/linux/if.h
new file mode 100644
index 0000000..63c77eb
--- /dev/null
+++ b/i686-linux-musl/include/linux/if.h
@@ -0,0 +1,194 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_IF_H
+#define _LINUX_IF_H
+#include <linux/libc-compat.h>
+#include <linux/types.h>
+#include <linux/socket.h>
+#include <linux/compiler.h>
+#include <sys/socket.h>
+#if __UAPI_DEF_IF_IFNAMSIZ
+#define IFNAMSIZ 16
+#endif
+#define IFALIASZ 256
+#define ALTIFNAMSIZ 128
+#include <linux/hdlc/ioctl.h>
+#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0
+enum net_device_flags {
+#if __UAPI_DEF_IF_NET_DEVICE_FLAGS
+  IFF_UP = 1 << 0,
+  IFF_BROADCAST = 1 << 1,
+  IFF_DEBUG = 1 << 2,
+  IFF_LOOPBACK = 1 << 3,
+  IFF_POINTOPOINT = 1 << 4,
+  IFF_NOTRAILERS = 1 << 5,
+  IFF_RUNNING = 1 << 6,
+  IFF_NOARP = 1 << 7,
+  IFF_PROMISC = 1 << 8,
+  IFF_ALLMULTI = 1 << 9,
+  IFF_MASTER = 1 << 10,
+  IFF_SLAVE = 1 << 11,
+  IFF_MULTICAST = 1 << 12,
+  IFF_PORTSEL = 1 << 13,
+  IFF_AUTOMEDIA = 1 << 14,
+  IFF_DYNAMIC = 1 << 15,
+#endif
+#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
+  IFF_LOWER_UP = 1 << 16,
+  IFF_DORMANT = 1 << 17,
+  IFF_ECHO = 1 << 18,
+#endif
+};
+#endif
+#if __UAPI_DEF_IF_NET_DEVICE_FLAGS
+#define IFF_UP IFF_UP
+#define IFF_BROADCAST IFF_BROADCAST
+#define IFF_DEBUG IFF_DEBUG
+#define IFF_LOOPBACK IFF_LOOPBACK
+#define IFF_POINTOPOINT IFF_POINTOPOINT
+#define IFF_NOTRAILERS IFF_NOTRAILERS
+#define IFF_RUNNING IFF_RUNNING
+#define IFF_NOARP IFF_NOARP
+#define IFF_PROMISC IFF_PROMISC
+#define IFF_ALLMULTI IFF_ALLMULTI
+#define IFF_MASTER IFF_MASTER
+#define IFF_SLAVE IFF_SLAVE
+#define IFF_MULTICAST IFF_MULTICAST
+#define IFF_PORTSEL IFF_PORTSEL
+#define IFF_AUTOMEDIA IFF_AUTOMEDIA
+#define IFF_DYNAMIC IFF_DYNAMIC
+#endif
+#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
+#define IFF_LOWER_UP IFF_LOWER_UP
+#define IFF_DORMANT IFF_DORMANT
+#define IFF_ECHO IFF_ECHO
+#endif
+#define IFF_VOLATILE (IFF_LOOPBACK | IFF_POINTOPOINT | IFF_BROADCAST | IFF_ECHO | IFF_MASTER | IFF_SLAVE | IFF_RUNNING | IFF_LOWER_UP | IFF_DORMANT)
+#define IF_GET_IFACE 0x0001
+#define IF_GET_PROTO 0x0002
+#define IF_IFACE_V35 0x1000
+#define IF_IFACE_V24 0x1001
+#define IF_IFACE_X21 0x1002
+#define IF_IFACE_T1 0x1003
+#define IF_IFACE_E1 0x1004
+#define IF_IFACE_SYNC_SERIAL 0x1005
+#define IF_IFACE_X21D 0x1006
+#define IF_PROTO_HDLC 0x2000
+#define IF_PROTO_PPP 0x2001
+#define IF_PROTO_CISCO 0x2002
+#define IF_PROTO_FR 0x2003
+#define IF_PROTO_FR_ADD_PVC 0x2004
+#define IF_PROTO_FR_DEL_PVC 0x2005
+#define IF_PROTO_X25 0x2006
+#define IF_PROTO_HDLC_ETH 0x2007
+#define IF_PROTO_FR_ADD_ETH_PVC 0x2008
+#define IF_PROTO_FR_DEL_ETH_PVC 0x2009
+#define IF_PROTO_FR_PVC 0x200A
+#define IF_PROTO_FR_ETH_PVC 0x200B
+#define IF_PROTO_RAW 0x200C
+enum {
+  IF_OPER_UNKNOWN,
+  IF_OPER_NOTPRESENT,
+  IF_OPER_DOWN,
+  IF_OPER_LOWERLAYERDOWN,
+  IF_OPER_TESTING,
+  IF_OPER_DORMANT,
+  IF_OPER_UP,
+};
+enum {
+  IF_LINK_MODE_DEFAULT,
+  IF_LINK_MODE_DORMANT,
+  IF_LINK_MODE_TESTING,
+};
+#if __UAPI_DEF_IF_IFMAP
+struct ifmap {
+  unsigned long mem_start;
+  unsigned long mem_end;
+  unsigned short base_addr;
+  unsigned char irq;
+  unsigned char dma;
+  unsigned char port;
+};
+#endif
+struct if_settings {
+  unsigned int type;
+  unsigned int size;
+  union {
+    raw_hdlc_proto __user * raw_hdlc;
+    cisco_proto __user * cisco;
+    fr_proto __user * fr;
+    fr_proto_pvc __user * fr_pvc;
+    fr_proto_pvc_info __user * fr_pvc_info;
+    x25_hdlc_proto __user * x25;
+    sync_serial_settings __user * sync;
+    te1_settings __user * te1;
+  } ifs_ifsu;
+};
+#if __UAPI_DEF_IF_IFREQ
+struct ifreq {
+#define IFHWADDRLEN 6
+  union {
+    char ifrn_name[IFNAMSIZ];
+  } ifr_ifrn;
+  union {
+    struct sockaddr ifru_addr;
+    struct sockaddr ifru_dstaddr;
+    struct sockaddr ifru_broadaddr;
+    struct sockaddr ifru_netmask;
+    struct sockaddr ifru_hwaddr;
+    short ifru_flags;
+    int ifru_ivalue;
+    int ifru_mtu;
+    struct ifmap ifru_map;
+    char ifru_slave[IFNAMSIZ];
+    char ifru_newname[IFNAMSIZ];
+    void __user * ifru_data;
+    struct if_settings ifru_settings;
+  } ifr_ifru;
+};
+#endif
+#define ifr_name ifr_ifrn.ifrn_name
+#define ifr_hwaddr ifr_ifru.ifru_hwaddr
+#define ifr_addr ifr_ifru.ifru_addr
+#define ifr_dstaddr ifr_ifru.ifru_dstaddr
+#define ifr_broadaddr ifr_ifru.ifru_broadaddr
+#define ifr_netmask ifr_ifru.ifru_netmask
+#define ifr_flags ifr_ifru.ifru_flags
+#define ifr_metric ifr_ifru.ifru_ivalue
+#define ifr_mtu ifr_ifru.ifru_mtu
+#define ifr_map ifr_ifru.ifru_map
+#define ifr_slave ifr_ifru.ifru_slave
+#define ifr_data ifr_ifru.ifru_data
+#define ifr_ifindex ifr_ifru.ifru_ivalue
+#define ifr_bandwidth ifr_ifru.ifru_ivalue
+#define ifr_qlen ifr_ifru.ifru_ivalue
+#define ifr_newname ifr_ifru.ifru_newname
+#define ifr_settings ifr_ifru.ifru_settings
+#if __UAPI_DEF_IF_IFCONF
+struct ifconf {
+  int ifc_len;
+  union {
+    char __user * ifcu_buf;
+    struct ifreq __user * ifcu_req;
+  } ifc_ifcu;
+};
+#endif
+#define ifc_buf ifc_ifcu.ifcu_buf
+#define ifc_req ifc_ifcu.ifcu_req
+#endif
diff --git a/i686-linux-musl/include/linux/if_addr.h b/i686-linux-musl/include/linux/if_addr.h
new file mode 100644
index 0000000..6a6b640
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_addr.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_IF_ADDR_H
+#define __LINUX_IF_ADDR_H
+#include <linux/types.h>
+#include <linux/netlink.h>
+struct ifaddrmsg {
+  __u8 ifa_family;
+  __u8 ifa_prefixlen;
+  __u8 ifa_flags;
+  __u8 ifa_scope;
+  __u32 ifa_index;
+};
+enum {
+  IFA_UNSPEC,
+  IFA_ADDRESS,
+  IFA_LOCAL,
+  IFA_LABEL,
+  IFA_BROADCAST,
+  IFA_ANYCAST,
+  IFA_CACHEINFO,
+  IFA_MULTICAST,
+  IFA_FLAGS,
+  IFA_RT_PRIORITY,
+  IFA_TARGET_NETNSID,
+  __IFA_MAX,
+};
+#define IFA_MAX (__IFA_MAX - 1)
+#define IFA_F_SECONDARY 0x01
+#define IFA_F_TEMPORARY IFA_F_SECONDARY
+#define IFA_F_NODAD 0x02
+#define IFA_F_OPTIMISTIC 0x04
+#define IFA_F_DADFAILED 0x08
+#define IFA_F_HOMEADDRESS 0x10
+#define IFA_F_DEPRECATED 0x20
+#define IFA_F_TENTATIVE 0x40
+#define IFA_F_PERMANENT 0x80
+#define IFA_F_MANAGETEMPADDR 0x100
+#define IFA_F_NOPREFIXROUTE 0x200
+#define IFA_F_MCAUTOJOIN 0x400
+#define IFA_F_STABLE_PRIVACY 0x800
+struct ifa_cacheinfo {
+  __u32 ifa_prefered;
+  __u32 ifa_valid;
+  __u32 cstamp;
+  __u32 tstamp;
+};
+#define IFA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
+#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct ifaddrmsg))
+#endif
diff --git a/i686-linux-musl/include/linux/if_addrlabel.h b/i686-linux-musl/include/linux/if_addrlabel.h
new file mode 100644
index 0000000..cf73767
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_addrlabel.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_IF_ADDRLABEL_H
+#define __LINUX_IF_ADDRLABEL_H
+#include <linux/types.h>
+struct ifaddrlblmsg {
+  __u8 ifal_family;
+  __u8 __ifal_reserved;
+  __u8 ifal_prefixlen;
+  __u8 ifal_flags;
+  __u32 ifal_index;
+  __u32 ifal_seq;
+};
+enum {
+  IFAL_ADDRESS = 1,
+  IFAL_LABEL = 2,
+  __IFAL_MAX
+};
+#define IFAL_MAX (__IFAL_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/if_alg.h b/i686-linux-musl/include/linux/if_alg.h
new file mode 100644
index 0000000..6530a16
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_alg.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_IF_ALG_H
+#define _LINUX_IF_ALG_H
+#include <linux/types.h>
+struct sockaddr_alg {
+  __u16 salg_family;
+  __u8 salg_type[14];
+  __u32 salg_feat;
+  __u32 salg_mask;
+  __u8 salg_name[64];
+};
+struct sockaddr_alg_new {
+  __u16 salg_family;
+  __u8 salg_type[14];
+  __u32 salg_feat;
+  __u32 salg_mask;
+  __u8 salg_name[];
+};
+struct af_alg_iv {
+  __u32 ivlen;
+  __u8 iv[0];
+};
+#define ALG_SET_KEY 1
+#define ALG_SET_IV 2
+#define ALG_SET_OP 3
+#define ALG_SET_AEAD_ASSOCLEN 4
+#define ALG_SET_AEAD_AUTHSIZE 5
+#define ALG_SET_DRBG_ENTROPY 6
+#define ALG_OP_DECRYPT 0
+#define ALG_OP_ENCRYPT 1
+#endif
diff --git a/i686-linux-musl/include/linux/if_arcnet.h b/i686-linux-musl/include/linux/if_arcnet.h
new file mode 100644
index 0000000..6aece37
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_arcnet.h
@@ -0,0 +1,81 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_IF_ARCNET_H
+#define _LINUX_IF_ARCNET_H
+#include <linux/types.h>
+#include <linux/if_ether.h>
+#define ARC_P_IP 212
+#define ARC_P_IPV6 196
+#define ARC_P_ARP 213
+#define ARC_P_RARP 214
+#define ARC_P_IPX 250
+#define ARC_P_NOVELL_EC 236
+#define ARC_P_IP_RFC1051 240
+#define ARC_P_ARP_RFC1051 241
+#define ARC_P_ETHER 232
+#define ARC_P_DATAPOINT_BOOT 0
+#define ARC_P_DATAPOINT_MOUNT 1
+#define ARC_P_POWERLAN_BEACON 8
+#define ARC_P_POWERLAN_BEACON2 243
+#define ARC_P_LANSOFT 251
+#define ARC_P_ATALK 0xDD
+#define ARCNET_ALEN 1
+struct arc_rfc1201 {
+  __u8 proto;
+  __u8 split_flag;
+  __be16 sequence;
+  __u8 payload[0];
+};
+#define RFC1201_HDR_SIZE 4
+struct arc_rfc1051 {
+  __u8 proto;
+  __u8 payload[0];
+};
+#define RFC1051_HDR_SIZE 1
+struct arc_eth_encap {
+  __u8 proto;
+  struct ethhdr eth;
+  __u8 payload[0];
+};
+#define ETH_ENCAP_HDR_SIZE 14
+struct arc_cap {
+  __u8 proto;
+  __u8 cookie[sizeof(int)];
+  union {
+    __u8 ack;
+    __u8 raw[0];
+  } mes;
+};
+struct arc_hardware {
+  __u8 source;
+  __u8 dest;
+  __u8 offset[2];
+};
+#define ARC_HDR_SIZE 4
+struct archdr {
+  struct arc_hardware hard;
+  union {
+    struct arc_rfc1201 rfc1201;
+    struct arc_rfc1051 rfc1051;
+    struct arc_eth_encap eth_encap;
+    struct arc_cap cap;
+    __u8 raw[0];
+  } soft;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/if_arp.h b/i686-linux-musl/include/linux/if_arp.h
new file mode 100644
index 0000000..1cd23ef
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_arp.h
@@ -0,0 +1,123 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IF_ARP_H
+#define _UAPI_LINUX_IF_ARP_H
+#include <linux/netdevice.h>
+#define ARPHRD_NETROM 0
+#define ARPHRD_ETHER 1
+#define ARPHRD_EETHER 2
+#define ARPHRD_AX25 3
+#define ARPHRD_PRONET 4
+#define ARPHRD_CHAOS 5
+#define ARPHRD_IEEE802 6
+#define ARPHRD_ARCNET 7
+#define ARPHRD_APPLETLK 8
+#define ARPHRD_DLCI 15
+#define ARPHRD_ATM 19
+#define ARPHRD_METRICOM 23
+#define ARPHRD_IEEE1394 24
+#define ARPHRD_EUI64 27
+#define ARPHRD_INFINIBAND 32
+#define ARPHRD_SLIP 256
+#define ARPHRD_CSLIP 257
+#define ARPHRD_SLIP6 258
+#define ARPHRD_CSLIP6 259
+#define ARPHRD_RSRVD 260
+#define ARPHRD_ADAPT 264
+#define ARPHRD_ROSE 270
+#define ARPHRD_X25 271
+#define ARPHRD_HWX25 272
+#define ARPHRD_CAN 280
+#define ARPHRD_MCTP 290
+#define ARPHRD_PPP 512
+#define ARPHRD_CISCO 513
+#define ARPHRD_HDLC ARPHRD_CISCO
+#define ARPHRD_LAPB 516
+#define ARPHRD_DDCMP 517
+#define ARPHRD_RAWHDLC 518
+#define ARPHRD_RAWIP 519
+#define ARPHRD_TUNNEL 768
+#define ARPHRD_TUNNEL6 769
+#define ARPHRD_FRAD 770
+#define ARPHRD_SKIP 771
+#define ARPHRD_LOOPBACK 772
+#define ARPHRD_LOCALTLK 773
+#define ARPHRD_FDDI 774
+#define ARPHRD_BIF 775
+#define ARPHRD_SIT 776
+#define ARPHRD_IPDDP 777
+#define ARPHRD_IPGRE 778
+#define ARPHRD_PIMREG 779
+#define ARPHRD_HIPPI 780
+#define ARPHRD_ASH 781
+#define ARPHRD_ECONET 782
+#define ARPHRD_IRDA 783
+#define ARPHRD_FCPP 784
+#define ARPHRD_FCAL 785
+#define ARPHRD_FCPL 786
+#define ARPHRD_FCFABRIC 787
+#define ARPHRD_IEEE802_TR 800
+#define ARPHRD_IEEE80211 801
+#define ARPHRD_IEEE80211_PRISM 802
+#define ARPHRD_IEEE80211_RADIOTAP 803
+#define ARPHRD_IEEE802154 804
+#define ARPHRD_IEEE802154_MONITOR 805
+#define ARPHRD_PHONET 820
+#define ARPHRD_PHONET_PIPE 821
+#define ARPHRD_CAIF 822
+#define ARPHRD_IP6GRE 823
+#define ARPHRD_NETLINK 824
+#define ARPHRD_6LOWPAN 825
+#define ARPHRD_VSOCKMON 826
+#define ARPHRD_VOID 0xFFFF
+#define ARPHRD_NONE 0xFFFE
+#define ARPOP_REQUEST 1
+#define ARPOP_REPLY 2
+#define ARPOP_RREQUEST 3
+#define ARPOP_RREPLY 4
+#define ARPOP_InREQUEST 8
+#define ARPOP_InREPLY 9
+#define ARPOP_NAK 10
+struct arpreq {
+  struct sockaddr arp_pa;
+  struct sockaddr arp_ha;
+  int arp_flags;
+  struct sockaddr arp_netmask;
+  char arp_dev[IFNAMSIZ];
+};
+struct arpreq_old {
+  struct sockaddr arp_pa;
+  struct sockaddr arp_ha;
+  int arp_flags;
+  struct sockaddr arp_netmask;
+};
+#define ATF_COM 0x02
+#define ATF_PERM 0x04
+#define ATF_PUBL 0x08
+#define ATF_USETRAILERS 0x10
+#define ATF_NETMASK 0x20
+#define ATF_DONTPUB 0x40
+struct arphdr {
+  __be16 ar_hrd;
+  __be16 ar_pro;
+  unsigned char ar_hln;
+  unsigned char ar_pln;
+  __be16 ar_op;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/if_bonding.h b/i686-linux-musl/include/linux/if_bonding.h
new file mode 100644
index 0000000..60abfde
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_bonding.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_IF_BONDING_H
+#define _LINUX_IF_BONDING_H
+#include <linux/if.h>
+#include <linux/types.h>
+#include <linux/if_ether.h>
+#define BOND_ABI_VERSION 2
+#define BOND_ENSLAVE_OLD (SIOCDEVPRIVATE)
+#define BOND_RELEASE_OLD (SIOCDEVPRIVATE + 1)
+#define BOND_SETHWADDR_OLD (SIOCDEVPRIVATE + 2)
+#define BOND_SLAVE_INFO_QUERY_OLD (SIOCDEVPRIVATE + 11)
+#define BOND_INFO_QUERY_OLD (SIOCDEVPRIVATE + 12)
+#define BOND_CHANGE_ACTIVE_OLD (SIOCDEVPRIVATE + 13)
+#define BOND_CHECK_MII_STATUS (SIOCGMIIPHY)
+#define BOND_MODE_ROUNDROBIN 0
+#define BOND_MODE_ACTIVEBACKUP 1
+#define BOND_MODE_XOR 2
+#define BOND_MODE_BROADCAST 3
+#define BOND_MODE_8023AD 4
+#define BOND_MODE_TLB 5
+#define BOND_MODE_ALB 6
+#define BOND_LINK_UP 0
+#define BOND_LINK_FAIL 1
+#define BOND_LINK_DOWN 2
+#define BOND_LINK_BACK 3
+#define BOND_STATE_ACTIVE 0
+#define BOND_STATE_BACKUP 1
+#define BOND_DEFAULT_MAX_BONDS 1
+#define BOND_DEFAULT_TX_QUEUES 16
+#define BOND_DEFAULT_RESEND_IGMP 1
+#define BOND_XMIT_POLICY_LAYER2 0
+#define BOND_XMIT_POLICY_LAYER34 1
+#define BOND_XMIT_POLICY_LAYER23 2
+#define BOND_XMIT_POLICY_ENCAP23 3
+#define BOND_XMIT_POLICY_ENCAP34 4
+#define BOND_XMIT_POLICY_VLAN_SRCMAC 5
+#define LACP_STATE_LACP_ACTIVITY 0x1
+#define LACP_STATE_LACP_TIMEOUT 0x2
+#define LACP_STATE_AGGREGATION 0x4
+#define LACP_STATE_SYNCHRONIZATION 0x8
+#define LACP_STATE_COLLECTING 0x10
+#define LACP_STATE_DISTRIBUTING 0x20
+#define LACP_STATE_DEFAULTED 0x40
+#define LACP_STATE_EXPIRED 0x80
+typedef struct ifbond {
+  __s32 bond_mode;
+  __s32 num_slaves;
+  __s32 miimon;
+} ifbond;
+typedef struct ifslave {
+  __s32 slave_id;
+  char slave_name[IFNAMSIZ];
+  __s8 link;
+  __s8 state;
+  __u32 link_failure_count;
+} ifslave;
+struct ad_info {
+  __u16 aggregator_id;
+  __u16 ports;
+  __u16 actor_key;
+  __u16 partner_key;
+  __u8 partner_system[ETH_ALEN];
+};
+enum {
+  BOND_XSTATS_UNSPEC,
+  BOND_XSTATS_3AD,
+  __BOND_XSTATS_MAX
+};
+#define BOND_XSTATS_MAX (__BOND_XSTATS_MAX - 1)
+enum {
+  BOND_3AD_STAT_LACPDU_RX,
+  BOND_3AD_STAT_LACPDU_TX,
+  BOND_3AD_STAT_LACPDU_UNKNOWN_RX,
+  BOND_3AD_STAT_LACPDU_ILLEGAL_RX,
+  BOND_3AD_STAT_MARKER_RX,
+  BOND_3AD_STAT_MARKER_TX,
+  BOND_3AD_STAT_MARKER_RESP_RX,
+  BOND_3AD_STAT_MARKER_RESP_TX,
+  BOND_3AD_STAT_MARKER_UNKNOWN_RX,
+  BOND_3AD_STAT_PAD,
+  __BOND_3AD_STAT_MAX
+};
+#define BOND_3AD_STAT_MAX (__BOND_3AD_STAT_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/if_bridge.h b/i686-linux-musl/include/linux/if_bridge.h
new file mode 100644
index 0000000..2054fb3
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_bridge.h
@@ -0,0 +1,620 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IF_BRIDGE_H
+#define _UAPI_LINUX_IF_BRIDGE_H
+#include <linux/types.h>
+#include <linux/if_ether.h>
+#include <linux/in6.h>
+#define SYSFS_BRIDGE_ATTR "bridge"
+#define SYSFS_BRIDGE_FDB "brforward"
+#define SYSFS_BRIDGE_PORT_SUBDIR "brif"
+#define SYSFS_BRIDGE_PORT_ATTR "brport"
+#define SYSFS_BRIDGE_PORT_LINK "bridge"
+#define BRCTL_VERSION 1
+#define BRCTL_GET_VERSION 0
+#define BRCTL_GET_BRIDGES 1
+#define BRCTL_ADD_BRIDGE 2
+#define BRCTL_DEL_BRIDGE 3
+#define BRCTL_ADD_IF 4
+#define BRCTL_DEL_IF 5
+#define BRCTL_GET_BRIDGE_INFO 6
+#define BRCTL_GET_PORT_LIST 7
+#define BRCTL_SET_BRIDGE_FORWARD_DELAY 8
+#define BRCTL_SET_BRIDGE_HELLO_TIME 9
+#define BRCTL_SET_BRIDGE_MAX_AGE 10
+#define BRCTL_SET_AGEING_TIME 11
+#define BRCTL_SET_GC_INTERVAL 12
+#define BRCTL_GET_PORT_INFO 13
+#define BRCTL_SET_BRIDGE_STP_STATE 14
+#define BRCTL_SET_BRIDGE_PRIORITY 15
+#define BRCTL_SET_PORT_PRIORITY 16
+#define BRCTL_SET_PATH_COST 17
+#define BRCTL_GET_FDB_ENTRIES 18
+#define BR_STATE_DISABLED 0
+#define BR_STATE_LISTENING 1
+#define BR_STATE_LEARNING 2
+#define BR_STATE_FORWARDING 3
+#define BR_STATE_BLOCKING 4
+struct __bridge_info {
+  __u64 designated_root;
+  __u64 bridge_id;
+  __u32 root_path_cost;
+  __u32 max_age;
+  __u32 hello_time;
+  __u32 forward_delay;
+  __u32 bridge_max_age;
+  __u32 bridge_hello_time;
+  __u32 bridge_forward_delay;
+  __u8 topology_change;
+  __u8 topology_change_detected;
+  __u8 root_port;
+  __u8 stp_enabled;
+  __u32 ageing_time;
+  __u32 gc_interval;
+  __u32 hello_timer_value;
+  __u32 tcn_timer_value;
+  __u32 topology_change_timer_value;
+  __u32 gc_timer_value;
+};
+struct __port_info {
+  __u64 designated_root;
+  __u64 designated_bridge;
+  __u16 port_id;
+  __u16 designated_port;
+  __u32 path_cost;
+  __u32 designated_cost;
+  __u8 state;
+  __u8 top_change_ack;
+  __u8 config_pending;
+  __u8 unused0;
+  __u32 message_age_timer_value;
+  __u32 forward_delay_timer_value;
+  __u32 hold_timer_value;
+};
+struct __fdb_entry {
+  __u8 mac_addr[ETH_ALEN];
+  __u8 port_no;
+  __u8 is_local;
+  __u32 ageing_timer_value;
+  __u8 port_hi;
+  __u8 pad0;
+  __u16 unused;
+};
+#define BRIDGE_FLAGS_MASTER 1
+#define BRIDGE_FLAGS_SELF 2
+#define BRIDGE_MODE_VEB 0
+#define BRIDGE_MODE_VEPA 1
+#define BRIDGE_MODE_UNDEF 0xFFFF
+enum {
+  IFLA_BRIDGE_FLAGS,
+  IFLA_BRIDGE_MODE,
+  IFLA_BRIDGE_VLAN_INFO,
+  IFLA_BRIDGE_VLAN_TUNNEL_INFO,
+  IFLA_BRIDGE_MRP,
+  IFLA_BRIDGE_CFM,
+  __IFLA_BRIDGE_MAX,
+};
+#define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
+#define BRIDGE_VLAN_INFO_MASTER (1 << 0)
+#define BRIDGE_VLAN_INFO_PVID (1 << 1)
+#define BRIDGE_VLAN_INFO_UNTAGGED (1 << 2)
+#define BRIDGE_VLAN_INFO_RANGE_BEGIN (1 << 3)
+#define BRIDGE_VLAN_INFO_RANGE_END (1 << 4)
+#define BRIDGE_VLAN_INFO_BRENTRY (1 << 5)
+#define BRIDGE_VLAN_INFO_ONLY_OPTS (1 << 6)
+struct bridge_vlan_info {
+  __u16 flags;
+  __u16 vid;
+};
+enum {
+  IFLA_BRIDGE_VLAN_TUNNEL_UNSPEC,
+  IFLA_BRIDGE_VLAN_TUNNEL_ID,
+  IFLA_BRIDGE_VLAN_TUNNEL_VID,
+  IFLA_BRIDGE_VLAN_TUNNEL_FLAGS,
+  __IFLA_BRIDGE_VLAN_TUNNEL_MAX,
+};
+#define IFLA_BRIDGE_VLAN_TUNNEL_MAX (__IFLA_BRIDGE_VLAN_TUNNEL_MAX - 1)
+struct bridge_vlan_xstats {
+  __u64 rx_bytes;
+  __u64 rx_packets;
+  __u64 tx_bytes;
+  __u64 tx_packets;
+  __u16 vid;
+  __u16 flags;
+  __u32 pad2;
+};
+enum {
+  IFLA_BRIDGE_MRP_UNSPEC,
+  IFLA_BRIDGE_MRP_INSTANCE,
+  IFLA_BRIDGE_MRP_PORT_STATE,
+  IFLA_BRIDGE_MRP_PORT_ROLE,
+  IFLA_BRIDGE_MRP_RING_STATE,
+  IFLA_BRIDGE_MRP_RING_ROLE,
+  IFLA_BRIDGE_MRP_START_TEST,
+  IFLA_BRIDGE_MRP_INFO,
+  IFLA_BRIDGE_MRP_IN_ROLE,
+  IFLA_BRIDGE_MRP_IN_STATE,
+  IFLA_BRIDGE_MRP_START_IN_TEST,
+  __IFLA_BRIDGE_MRP_MAX,
+};
+#define IFLA_BRIDGE_MRP_MAX (__IFLA_BRIDGE_MRP_MAX - 1)
+enum {
+  IFLA_BRIDGE_MRP_INSTANCE_UNSPEC,
+  IFLA_BRIDGE_MRP_INSTANCE_RING_ID,
+  IFLA_BRIDGE_MRP_INSTANCE_P_IFINDEX,
+  IFLA_BRIDGE_MRP_INSTANCE_S_IFINDEX,
+  IFLA_BRIDGE_MRP_INSTANCE_PRIO,
+  __IFLA_BRIDGE_MRP_INSTANCE_MAX,
+};
+#define IFLA_BRIDGE_MRP_INSTANCE_MAX (__IFLA_BRIDGE_MRP_INSTANCE_MAX - 1)
+enum {
+  IFLA_BRIDGE_MRP_PORT_STATE_UNSPEC,
+  IFLA_BRIDGE_MRP_PORT_STATE_STATE,
+  __IFLA_BRIDGE_MRP_PORT_STATE_MAX,
+};
+#define IFLA_BRIDGE_MRP_PORT_STATE_MAX (__IFLA_BRIDGE_MRP_PORT_STATE_MAX - 1)
+enum {
+  IFLA_BRIDGE_MRP_PORT_ROLE_UNSPEC,
+  IFLA_BRIDGE_MRP_PORT_ROLE_ROLE,
+  __IFLA_BRIDGE_MRP_PORT_ROLE_MAX,
+};
+#define IFLA_BRIDGE_MRP_PORT_ROLE_MAX (__IFLA_BRIDGE_MRP_PORT_ROLE_MAX - 1)
+enum {
+  IFLA_BRIDGE_MRP_RING_STATE_UNSPEC,
+  IFLA_BRIDGE_MRP_RING_STATE_RING_ID,
+  IFLA_BRIDGE_MRP_RING_STATE_STATE,
+  __IFLA_BRIDGE_MRP_RING_STATE_MAX,
+};
+#define IFLA_BRIDGE_MRP_RING_STATE_MAX (__IFLA_BRIDGE_MRP_RING_STATE_MAX - 1)
+enum {
+  IFLA_BRIDGE_MRP_RING_ROLE_UNSPEC,
+  IFLA_BRIDGE_MRP_RING_ROLE_RING_ID,
+  IFLA_BRIDGE_MRP_RING_ROLE_ROLE,
+  __IFLA_BRIDGE_MRP_RING_ROLE_MAX,
+};
+#define IFLA_BRIDGE_MRP_RING_ROLE_MAX (__IFLA_BRIDGE_MRP_RING_ROLE_MAX - 1)
+enum {
+  IFLA_BRIDGE_MRP_START_TEST_UNSPEC,
+  IFLA_BRIDGE_MRP_START_TEST_RING_ID,
+  IFLA_BRIDGE_MRP_START_TEST_INTERVAL,
+  IFLA_BRIDGE_MRP_START_TEST_MAX_MISS,
+  IFLA_BRIDGE_MRP_START_TEST_PERIOD,
+  IFLA_BRIDGE_MRP_START_TEST_MONITOR,
+  __IFLA_BRIDGE_MRP_START_TEST_MAX,
+};
+#define IFLA_BRIDGE_MRP_START_TEST_MAX (__IFLA_BRIDGE_MRP_START_TEST_MAX - 1)
+enum {
+  IFLA_BRIDGE_MRP_INFO_UNSPEC,
+  IFLA_BRIDGE_MRP_INFO_RING_ID,
+  IFLA_BRIDGE_MRP_INFO_P_IFINDEX,
+  IFLA_BRIDGE_MRP_INFO_S_IFINDEX,
+  IFLA_BRIDGE_MRP_INFO_PRIO,
+  IFLA_BRIDGE_MRP_INFO_RING_STATE,
+  IFLA_BRIDGE_MRP_INFO_RING_ROLE,
+  IFLA_BRIDGE_MRP_INFO_TEST_INTERVAL,
+  IFLA_BRIDGE_MRP_INFO_TEST_MAX_MISS,
+  IFLA_BRIDGE_MRP_INFO_TEST_MONITOR,
+  IFLA_BRIDGE_MRP_INFO_I_IFINDEX,
+  IFLA_BRIDGE_MRP_INFO_IN_STATE,
+  IFLA_BRIDGE_MRP_INFO_IN_ROLE,
+  IFLA_BRIDGE_MRP_INFO_IN_TEST_INTERVAL,
+  IFLA_BRIDGE_MRP_INFO_IN_TEST_MAX_MISS,
+  __IFLA_BRIDGE_MRP_INFO_MAX,
+};
+#define IFLA_BRIDGE_MRP_INFO_MAX (__IFLA_BRIDGE_MRP_INFO_MAX - 1)
+enum {
+  IFLA_BRIDGE_MRP_IN_STATE_UNSPEC,
+  IFLA_BRIDGE_MRP_IN_STATE_IN_ID,
+  IFLA_BRIDGE_MRP_IN_STATE_STATE,
+  __IFLA_BRIDGE_MRP_IN_STATE_MAX,
+};
+#define IFLA_BRIDGE_MRP_IN_STATE_MAX (__IFLA_BRIDGE_MRP_IN_STATE_MAX - 1)
+enum {
+  IFLA_BRIDGE_MRP_IN_ROLE_UNSPEC,
+  IFLA_BRIDGE_MRP_IN_ROLE_RING_ID,
+  IFLA_BRIDGE_MRP_IN_ROLE_IN_ID,
+  IFLA_BRIDGE_MRP_IN_ROLE_ROLE,
+  IFLA_BRIDGE_MRP_IN_ROLE_I_IFINDEX,
+  __IFLA_BRIDGE_MRP_IN_ROLE_MAX,
+};
+#define IFLA_BRIDGE_MRP_IN_ROLE_MAX (__IFLA_BRIDGE_MRP_IN_ROLE_MAX - 1)
+enum {
+  IFLA_BRIDGE_MRP_START_IN_TEST_UNSPEC,
+  IFLA_BRIDGE_MRP_START_IN_TEST_IN_ID,
+  IFLA_BRIDGE_MRP_START_IN_TEST_INTERVAL,
+  IFLA_BRIDGE_MRP_START_IN_TEST_MAX_MISS,
+  IFLA_BRIDGE_MRP_START_IN_TEST_PERIOD,
+  __IFLA_BRIDGE_MRP_START_IN_TEST_MAX,
+};
+#define IFLA_BRIDGE_MRP_START_IN_TEST_MAX (__IFLA_BRIDGE_MRP_START_IN_TEST_MAX - 1)
+struct br_mrp_instance {
+  __u32 ring_id;
+  __u32 p_ifindex;
+  __u32 s_ifindex;
+  __u16 prio;
+};
+struct br_mrp_ring_state {
+  __u32 ring_id;
+  __u32 ring_state;
+};
+struct br_mrp_ring_role {
+  __u32 ring_id;
+  __u32 ring_role;
+};
+struct br_mrp_start_test {
+  __u32 ring_id;
+  __u32 interval;
+  __u32 max_miss;
+  __u32 period;
+  __u32 monitor;
+};
+struct br_mrp_in_state {
+  __u32 in_state;
+  __u16 in_id;
+};
+struct br_mrp_in_role {
+  __u32 ring_id;
+  __u32 in_role;
+  __u32 i_ifindex;
+  __u16 in_id;
+};
+struct br_mrp_start_in_test {
+  __u32 interval;
+  __u32 max_miss;
+  __u32 period;
+  __u16 in_id;
+};
+enum {
+  IFLA_BRIDGE_CFM_UNSPEC,
+  IFLA_BRIDGE_CFM_MEP_CREATE,
+  IFLA_BRIDGE_CFM_MEP_DELETE,
+  IFLA_BRIDGE_CFM_MEP_CONFIG,
+  IFLA_BRIDGE_CFM_CC_CONFIG,
+  IFLA_BRIDGE_CFM_CC_PEER_MEP_ADD,
+  IFLA_BRIDGE_CFM_CC_PEER_MEP_REMOVE,
+  IFLA_BRIDGE_CFM_CC_RDI,
+  IFLA_BRIDGE_CFM_CC_CCM_TX,
+  IFLA_BRIDGE_CFM_MEP_CREATE_INFO,
+  IFLA_BRIDGE_CFM_MEP_CONFIG_INFO,
+  IFLA_BRIDGE_CFM_CC_CONFIG_INFO,
+  IFLA_BRIDGE_CFM_CC_RDI_INFO,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_INFO,
+  IFLA_BRIDGE_CFM_CC_PEER_MEP_INFO,
+  IFLA_BRIDGE_CFM_MEP_STATUS_INFO,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_INFO,
+  __IFLA_BRIDGE_CFM_MAX,
+};
+#define IFLA_BRIDGE_CFM_MAX (__IFLA_BRIDGE_CFM_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_MEP_CREATE_UNSPEC,
+  IFLA_BRIDGE_CFM_MEP_CREATE_INSTANCE,
+  IFLA_BRIDGE_CFM_MEP_CREATE_DOMAIN,
+  IFLA_BRIDGE_CFM_MEP_CREATE_DIRECTION,
+  IFLA_BRIDGE_CFM_MEP_CREATE_IFINDEX,
+  __IFLA_BRIDGE_CFM_MEP_CREATE_MAX,
+};
+#define IFLA_BRIDGE_CFM_MEP_CREATE_MAX (__IFLA_BRIDGE_CFM_MEP_CREATE_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_MEP_DELETE_UNSPEC,
+  IFLA_BRIDGE_CFM_MEP_DELETE_INSTANCE,
+  __IFLA_BRIDGE_CFM_MEP_DELETE_MAX,
+};
+#define IFLA_BRIDGE_CFM_MEP_DELETE_MAX (__IFLA_BRIDGE_CFM_MEP_DELETE_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_MEP_CONFIG_UNSPEC,
+  IFLA_BRIDGE_CFM_MEP_CONFIG_INSTANCE,
+  IFLA_BRIDGE_CFM_MEP_CONFIG_UNICAST_MAC,
+  IFLA_BRIDGE_CFM_MEP_CONFIG_MDLEVEL,
+  IFLA_BRIDGE_CFM_MEP_CONFIG_MEPID,
+  __IFLA_BRIDGE_CFM_MEP_CONFIG_MAX,
+};
+#define IFLA_BRIDGE_CFM_MEP_CONFIG_MAX (__IFLA_BRIDGE_CFM_MEP_CONFIG_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_CC_CONFIG_UNSPEC,
+  IFLA_BRIDGE_CFM_CC_CONFIG_INSTANCE,
+  IFLA_BRIDGE_CFM_CC_CONFIG_ENABLE,
+  IFLA_BRIDGE_CFM_CC_CONFIG_EXP_INTERVAL,
+  IFLA_BRIDGE_CFM_CC_CONFIG_EXP_MAID,
+  __IFLA_BRIDGE_CFM_CC_CONFIG_MAX,
+};
+#define IFLA_BRIDGE_CFM_CC_CONFIG_MAX (__IFLA_BRIDGE_CFM_CC_CONFIG_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_CC_PEER_MEP_UNSPEC,
+  IFLA_BRIDGE_CFM_CC_PEER_MEP_INSTANCE,
+  IFLA_BRIDGE_CFM_CC_PEER_MEPID,
+  __IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX,
+};
+#define IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX (__IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_CC_RDI_UNSPEC,
+  IFLA_BRIDGE_CFM_CC_RDI_INSTANCE,
+  IFLA_BRIDGE_CFM_CC_RDI_RDI,
+  __IFLA_BRIDGE_CFM_CC_RDI_MAX,
+};
+#define IFLA_BRIDGE_CFM_CC_RDI_MAX (__IFLA_BRIDGE_CFM_CC_RDI_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_CC_CCM_TX_UNSPEC,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_INSTANCE,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_DMAC,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_SEQ_NO_UPDATE,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_PERIOD,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV_VALUE,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV_VALUE,
+  __IFLA_BRIDGE_CFM_CC_CCM_TX_MAX,
+};
+#define IFLA_BRIDGE_CFM_CC_CCM_TX_MAX (__IFLA_BRIDGE_CFM_CC_CCM_TX_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_MEP_STATUS_UNSPEC,
+  IFLA_BRIDGE_CFM_MEP_STATUS_INSTANCE,
+  IFLA_BRIDGE_CFM_MEP_STATUS_OPCODE_UNEXP_SEEN,
+  IFLA_BRIDGE_CFM_MEP_STATUS_VERSION_UNEXP_SEEN,
+  IFLA_BRIDGE_CFM_MEP_STATUS_RX_LEVEL_LOW_SEEN,
+  __IFLA_BRIDGE_CFM_MEP_STATUS_MAX,
+};
+#define IFLA_BRIDGE_CFM_MEP_STATUS_MAX (__IFLA_BRIDGE_CFM_MEP_STATUS_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_UNSPEC,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_INSTANCE,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_PEER_MEPID,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_CCM_DEFECT,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_RDI,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_PORT_TLV_VALUE,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_IF_TLV_VALUE,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_SEEN,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_TLV_SEEN,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_SEQ_UNEXP_SEEN,
+  __IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX,
+};
+#define IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX (__IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX - 1)
+struct bridge_stp_xstats {
+  __u64 transition_blk;
+  __u64 transition_fwd;
+  __u64 rx_bpdu;
+  __u64 tx_bpdu;
+  __u64 rx_tcn;
+  __u64 tx_tcn;
+};
+struct br_vlan_msg {
+  __u8 family;
+  __u8 reserved1;
+  __u16 reserved2;
+  __u32 ifindex;
+};
+enum {
+  BRIDGE_VLANDB_DUMP_UNSPEC,
+  BRIDGE_VLANDB_DUMP_FLAGS,
+  __BRIDGE_VLANDB_DUMP_MAX,
+};
+#define BRIDGE_VLANDB_DUMP_MAX (__BRIDGE_VLANDB_DUMP_MAX - 1)
+#define BRIDGE_VLANDB_DUMPF_STATS (1 << 0)
+#define BRIDGE_VLANDB_DUMPF_GLOBAL (1 << 1)
+enum {
+  BRIDGE_VLANDB_UNSPEC,
+  BRIDGE_VLANDB_ENTRY,
+  BRIDGE_VLANDB_GLOBAL_OPTIONS,
+  __BRIDGE_VLANDB_MAX,
+};
+#define BRIDGE_VLANDB_MAX (__BRIDGE_VLANDB_MAX - 1)
+enum {
+  BRIDGE_VLANDB_ENTRY_UNSPEC,
+  BRIDGE_VLANDB_ENTRY_INFO,
+  BRIDGE_VLANDB_ENTRY_RANGE,
+  BRIDGE_VLANDB_ENTRY_STATE,
+  BRIDGE_VLANDB_ENTRY_TUNNEL_INFO,
+  BRIDGE_VLANDB_ENTRY_STATS,
+  BRIDGE_VLANDB_ENTRY_MCAST_ROUTER,
+  __BRIDGE_VLANDB_ENTRY_MAX,
+};
+#define BRIDGE_VLANDB_ENTRY_MAX (__BRIDGE_VLANDB_ENTRY_MAX - 1)
+enum {
+  BRIDGE_VLANDB_TINFO_UNSPEC,
+  BRIDGE_VLANDB_TINFO_ID,
+  BRIDGE_VLANDB_TINFO_CMD,
+  __BRIDGE_VLANDB_TINFO_MAX,
+};
+#define BRIDGE_VLANDB_TINFO_MAX (__BRIDGE_VLANDB_TINFO_MAX - 1)
+enum {
+  BRIDGE_VLANDB_STATS_UNSPEC,
+  BRIDGE_VLANDB_STATS_RX_BYTES,
+  BRIDGE_VLANDB_STATS_RX_PACKETS,
+  BRIDGE_VLANDB_STATS_TX_BYTES,
+  BRIDGE_VLANDB_STATS_TX_PACKETS,
+  BRIDGE_VLANDB_STATS_PAD,
+  __BRIDGE_VLANDB_STATS_MAX,
+};
+#define BRIDGE_VLANDB_STATS_MAX (__BRIDGE_VLANDB_STATS_MAX - 1)
+enum {
+  BRIDGE_VLANDB_GOPTS_UNSPEC,
+  BRIDGE_VLANDB_GOPTS_ID,
+  BRIDGE_VLANDB_GOPTS_RANGE,
+  BRIDGE_VLANDB_GOPTS_MCAST_SNOOPING,
+  BRIDGE_VLANDB_GOPTS_MCAST_IGMP_VERSION,
+  BRIDGE_VLANDB_GOPTS_MCAST_MLD_VERSION,
+  BRIDGE_VLANDB_GOPTS_MCAST_LAST_MEMBER_CNT,
+  BRIDGE_VLANDB_GOPTS_MCAST_STARTUP_QUERY_CNT,
+  BRIDGE_VLANDB_GOPTS_MCAST_LAST_MEMBER_INTVL,
+  BRIDGE_VLANDB_GOPTS_PAD,
+  BRIDGE_VLANDB_GOPTS_MCAST_MEMBERSHIP_INTVL,
+  BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_INTVL,
+  BRIDGE_VLANDB_GOPTS_MCAST_QUERY_INTVL,
+  BRIDGE_VLANDB_GOPTS_MCAST_QUERY_RESPONSE_INTVL,
+  BRIDGE_VLANDB_GOPTS_MCAST_STARTUP_QUERY_INTVL,
+  BRIDGE_VLANDB_GOPTS_MCAST_QUERIER,
+  BRIDGE_VLANDB_GOPTS_MCAST_ROUTER_PORTS,
+  BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_STATE,
+  __BRIDGE_VLANDB_GOPTS_MAX
+};
+#define BRIDGE_VLANDB_GOPTS_MAX (__BRIDGE_VLANDB_GOPTS_MAX - 1)
+enum {
+  MDBA_UNSPEC,
+  MDBA_MDB,
+  MDBA_ROUTER,
+  __MDBA_MAX,
+};
+#define MDBA_MAX (__MDBA_MAX - 1)
+enum {
+  MDBA_MDB_UNSPEC,
+  MDBA_MDB_ENTRY,
+  __MDBA_MDB_MAX,
+};
+#define MDBA_MDB_MAX (__MDBA_MDB_MAX - 1)
+enum {
+  MDBA_MDB_ENTRY_UNSPEC,
+  MDBA_MDB_ENTRY_INFO,
+  __MDBA_MDB_ENTRY_MAX,
+};
+#define MDBA_MDB_ENTRY_MAX (__MDBA_MDB_ENTRY_MAX - 1)
+enum {
+  MDBA_MDB_EATTR_UNSPEC,
+  MDBA_MDB_EATTR_TIMER,
+  MDBA_MDB_EATTR_SRC_LIST,
+  MDBA_MDB_EATTR_GROUP_MODE,
+  MDBA_MDB_EATTR_SOURCE,
+  MDBA_MDB_EATTR_RTPROT,
+  __MDBA_MDB_EATTR_MAX
+};
+#define MDBA_MDB_EATTR_MAX (__MDBA_MDB_EATTR_MAX - 1)
+enum {
+  MDBA_MDB_SRCLIST_UNSPEC,
+  MDBA_MDB_SRCLIST_ENTRY,
+  __MDBA_MDB_SRCLIST_MAX
+};
+#define MDBA_MDB_SRCLIST_MAX (__MDBA_MDB_SRCLIST_MAX - 1)
+enum {
+  MDBA_MDB_SRCATTR_UNSPEC,
+  MDBA_MDB_SRCATTR_ADDRESS,
+  MDBA_MDB_SRCATTR_TIMER,
+  __MDBA_MDB_SRCATTR_MAX
+};
+#define MDBA_MDB_SRCATTR_MAX (__MDBA_MDB_SRCATTR_MAX - 1)
+enum {
+  MDB_RTR_TYPE_DISABLED,
+  MDB_RTR_TYPE_TEMP_QUERY,
+  MDB_RTR_TYPE_PERM,
+  MDB_RTR_TYPE_TEMP
+};
+enum {
+  MDBA_ROUTER_UNSPEC,
+  MDBA_ROUTER_PORT,
+  __MDBA_ROUTER_MAX,
+};
+#define MDBA_ROUTER_MAX (__MDBA_ROUTER_MAX - 1)
+enum {
+  MDBA_ROUTER_PATTR_UNSPEC,
+  MDBA_ROUTER_PATTR_TIMER,
+  MDBA_ROUTER_PATTR_TYPE,
+  MDBA_ROUTER_PATTR_INET_TIMER,
+  MDBA_ROUTER_PATTR_INET6_TIMER,
+  MDBA_ROUTER_PATTR_VID,
+  __MDBA_ROUTER_PATTR_MAX
+};
+#define MDBA_ROUTER_PATTR_MAX (__MDBA_ROUTER_PATTR_MAX - 1)
+struct br_port_msg {
+  __u8 family;
+  __u32 ifindex;
+};
+struct br_mdb_entry {
+  __u32 ifindex;
+#define MDB_TEMPORARY 0
+#define MDB_PERMANENT 1
+  __u8 state;
+#define MDB_FLAGS_OFFLOAD (1 << 0)
+#define MDB_FLAGS_FAST_LEAVE (1 << 1)
+#define MDB_FLAGS_STAR_EXCL (1 << 2)
+#define MDB_FLAGS_BLOCKED (1 << 3)
+  __u8 flags;
+  __u16 vid;
+  struct {
+    union {
+      __be32 ip4;
+      struct in6_addr ip6;
+      unsigned char mac_addr[ETH_ALEN];
+    } u;
+    __be16 proto;
+  } addr;
+};
+enum {
+  MDBA_SET_ENTRY_UNSPEC,
+  MDBA_SET_ENTRY,
+  MDBA_SET_ENTRY_ATTRS,
+  __MDBA_SET_ENTRY_MAX,
+};
+#define MDBA_SET_ENTRY_MAX (__MDBA_SET_ENTRY_MAX - 1)
+enum {
+  MDBE_ATTR_UNSPEC,
+  MDBE_ATTR_SOURCE,
+  __MDBE_ATTR_MAX,
+};
+#define MDBE_ATTR_MAX (__MDBE_ATTR_MAX - 1)
+enum {
+  BRIDGE_XSTATS_UNSPEC,
+  BRIDGE_XSTATS_VLAN,
+  BRIDGE_XSTATS_MCAST,
+  BRIDGE_XSTATS_PAD,
+  BRIDGE_XSTATS_STP,
+  __BRIDGE_XSTATS_MAX
+};
+#define BRIDGE_XSTATS_MAX (__BRIDGE_XSTATS_MAX - 1)
+enum {
+  BR_MCAST_DIR_RX,
+  BR_MCAST_DIR_TX,
+  BR_MCAST_DIR_SIZE
+};
+struct br_mcast_stats {
+  __u64 igmp_v1queries[BR_MCAST_DIR_SIZE];
+  __u64 igmp_v2queries[BR_MCAST_DIR_SIZE];
+  __u64 igmp_v3queries[BR_MCAST_DIR_SIZE];
+  __u64 igmp_leaves[BR_MCAST_DIR_SIZE];
+  __u64 igmp_v1reports[BR_MCAST_DIR_SIZE];
+  __u64 igmp_v2reports[BR_MCAST_DIR_SIZE];
+  __u64 igmp_v3reports[BR_MCAST_DIR_SIZE];
+  __u64 igmp_parse_errors;
+  __u64 mld_v1queries[BR_MCAST_DIR_SIZE];
+  __u64 mld_v2queries[BR_MCAST_DIR_SIZE];
+  __u64 mld_leaves[BR_MCAST_DIR_SIZE];
+  __u64 mld_v1reports[BR_MCAST_DIR_SIZE];
+  __u64 mld_v2reports[BR_MCAST_DIR_SIZE];
+  __u64 mld_parse_errors;
+  __u64 mcast_bytes[BR_MCAST_DIR_SIZE];
+  __u64 mcast_packets[BR_MCAST_DIR_SIZE];
+};
+enum br_boolopt_id {
+  BR_BOOLOPT_NO_LL_LEARN,
+  BR_BOOLOPT_MCAST_VLAN_SNOOPING,
+  BR_BOOLOPT_MAX
+};
+struct br_boolopt_multi {
+  __u32 optval;
+  __u32 optmask;
+};
+enum {
+  BRIDGE_QUERIER_UNSPEC,
+  BRIDGE_QUERIER_IP_ADDRESS,
+  BRIDGE_QUERIER_IP_PORT,
+  BRIDGE_QUERIER_IP_OTHER_TIMER,
+  BRIDGE_QUERIER_PAD,
+  BRIDGE_QUERIER_IPV6_ADDRESS,
+  BRIDGE_QUERIER_IPV6_PORT,
+  BRIDGE_QUERIER_IPV6_OTHER_TIMER,
+  __BRIDGE_QUERIER_MAX
+};
+#define BRIDGE_QUERIER_MAX (__BRIDGE_QUERIER_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/if_cablemodem.h b/i686-linux-musl/include/linux/if_cablemodem.h
new file mode 100644
index 0000000..172c287
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_cablemodem.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_CABLEMODEM_H_
+#define _LINUX_CABLEMODEM_H_
+#define SIOCGCMSTATS (SIOCDEVPRIVATE + 0)
+#define SIOCGCMFIRMWARE (SIOCDEVPRIVATE + 1)
+#define SIOCGCMFREQUENCY (SIOCDEVPRIVATE + 2)
+#define SIOCSCMFREQUENCY (SIOCDEVPRIVATE + 3)
+#define SIOCGCMPIDS (SIOCDEVPRIVATE + 4)
+#define SIOCSCMPIDS (SIOCDEVPRIVATE + 5)
+#endif
diff --git a/i686-linux-musl/include/linux/if_eql.h b/i686-linux-musl/include/linux/if_eql.h
new file mode 100644
index 0000000..11432ce
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_eql.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IF_EQL_H
+#define _UAPI_LINUX_IF_EQL_H
+#define EQL_DEFAULT_SLAVE_PRIORITY 28800
+#define EQL_DEFAULT_MAX_SLAVES 4
+#define EQL_DEFAULT_MTU 576
+#define EQL_DEFAULT_RESCHED_IVAL HZ
+#define EQL_ENSLAVE (SIOCDEVPRIVATE)
+#define EQL_EMANCIPATE (SIOCDEVPRIVATE + 1)
+#define EQL_GETSLAVECFG (SIOCDEVPRIVATE + 2)
+#define EQL_SETSLAVECFG (SIOCDEVPRIVATE + 3)
+#define EQL_GETMASTRCFG (SIOCDEVPRIVATE + 4)
+#define EQL_SETMASTRCFG (SIOCDEVPRIVATE + 5)
+typedef struct master_config {
+  char master_name[16];
+  int max_slaves;
+  int min_slaves;
+} master_config_t;
+typedef struct slave_config {
+  char slave_name[16];
+  long priority;
+} slave_config_t;
+typedef struct slaving_request {
+  char slave_name[16];
+  long priority;
+} slaving_request_t;
+#endif
diff --git a/i686-linux-musl/include/linux/if_ether.h b/i686-linux-musl/include/linux/if_ether.h
new file mode 100644
index 0000000..1f7f8f2
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_ether.h
@@ -0,0 +1,138 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IF_ETHER_H
+#define _UAPI_LINUX_IF_ETHER_H
+#include <linux/types.h>
+#define ETH_ALEN 6
+#define ETH_TLEN 2
+#define ETH_HLEN 14
+#define ETH_ZLEN 60
+#define ETH_DATA_LEN 1500
+#define ETH_FRAME_LEN 1514
+#define ETH_FCS_LEN 4
+#define ETH_MIN_MTU 68
+#define ETH_MAX_MTU 0xFFFFU
+#define ETH_P_LOOP 0x0060
+#define ETH_P_PUP 0x0200
+#define ETH_P_PUPAT 0x0201
+#define ETH_P_TSN 0x22F0
+#define ETH_P_ERSPAN2 0x22EB
+#define ETH_P_IP 0x0800
+#define ETH_P_X25 0x0805
+#define ETH_P_ARP 0x0806
+#define ETH_P_BPQ 0x08FF
+#define ETH_P_IEEEPUP 0x0a00
+#define ETH_P_IEEEPUPAT 0x0a01
+#define ETH_P_BATMAN 0x4305
+#define ETH_P_DEC 0x6000
+#define ETH_P_DNA_DL 0x6001
+#define ETH_P_DNA_RC 0x6002
+#define ETH_P_DNA_RT 0x6003
+#define ETH_P_LAT 0x6004
+#define ETH_P_DIAG 0x6005
+#define ETH_P_CUST 0x6006
+#define ETH_P_SCA 0x6007
+#define ETH_P_TEB 0x6558
+#define ETH_P_RARP 0x8035
+#define ETH_P_ATALK 0x809B
+#define ETH_P_AARP 0x80F3
+#define ETH_P_8021Q 0x8100
+#define ETH_P_ERSPAN 0x88BE
+#define ETH_P_IPX 0x8137
+#define ETH_P_IPV6 0x86DD
+#define ETH_P_PAUSE 0x8808
+#define ETH_P_SLOW 0x8809
+#define ETH_P_WCCP 0x883E
+#define ETH_P_MPLS_UC 0x8847
+#define ETH_P_MPLS_MC 0x8848
+#define ETH_P_ATMMPOA 0x884c
+#define ETH_P_PPP_DISC 0x8863
+#define ETH_P_PPP_SES 0x8864
+#define ETH_P_LINK_CTL 0x886c
+#define ETH_P_ATMFATE 0x8884
+#define ETH_P_PAE 0x888E
+#define ETH_P_REALTEK 0x8899
+#define ETH_P_AOE 0x88A2
+#define ETH_P_8021AD 0x88A8
+#define ETH_P_802_EX1 0x88B5
+#define ETH_P_PREAUTH 0x88C7
+#define ETH_P_TIPC 0x88CA
+#define ETH_P_LLDP 0x88CC
+#define ETH_P_MRP 0x88E3
+#define ETH_P_MACSEC 0x88E5
+#define ETH_P_8021AH 0x88E7
+#define ETH_P_MVRP 0x88F5
+#define ETH_P_1588 0x88F7
+#define ETH_P_NCSI 0x88F8
+#define ETH_P_PRP 0x88FB
+#define ETH_P_CFM 0x8902
+#define ETH_P_FCOE 0x8906
+#define ETH_P_IBOE 0x8915
+#define ETH_P_TDLS 0x890D
+#define ETH_P_FIP 0x8914
+#define ETH_P_80221 0x8917
+#define ETH_P_HSR 0x892F
+#define ETH_P_NSH 0x894F
+#define ETH_P_LOOPBACK 0x9000
+#define ETH_P_QINQ1 0x9100
+#define ETH_P_QINQ2 0x9200
+#define ETH_P_QINQ3 0x9300
+#define ETH_P_EDSA 0xDADA
+#define ETH_P_DSA_8021Q 0xDADB
+#define ETH_P_IFE 0xED3E
+#define ETH_P_AF_IUCV 0xFBFB
+#define ETH_P_802_3_MIN 0x0600
+#define ETH_P_802_3 0x0001
+#define ETH_P_AX25 0x0002
+#define ETH_P_ALL 0x0003
+#define ETH_P_802_2 0x0004
+#define ETH_P_SNAP 0x0005
+#define ETH_P_DDCMP 0x0006
+#define ETH_P_WAN_PPP 0x0007
+#define ETH_P_PPP_MP 0x0008
+#define ETH_P_LOCALTALK 0x0009
+#define ETH_P_CAN 0x000C
+#define ETH_P_CANFD 0x000D
+#define ETH_P_PPPTALK 0x0010
+#define ETH_P_TR_802_2 0x0011
+#define ETH_P_MOBITEX 0x0015
+#define ETH_P_CONTROL 0x0016
+#define ETH_P_IRDA 0x0017
+#define ETH_P_ECONET 0x0018
+#define ETH_P_HDLC 0x0019
+#define ETH_P_ARCNET 0x001A
+#define ETH_P_DSA 0x001B
+#define ETH_P_TRAILER 0x001C
+#define ETH_P_PHONET 0x00F5
+#define ETH_P_IEEE802154 0x00F6
+#define ETH_P_CAIF 0x00F7
+#define ETH_P_XDSA 0x00F8
+#define ETH_P_MAP 0x00F9
+#define ETH_P_MCTP 0x00FA
+#ifndef __UAPI_DEF_ETHHDR
+#define __UAPI_DEF_ETHHDR 1
+#endif
+#if __UAPI_DEF_ETHHDR
+struct ethhdr {
+  unsigned char h_dest[ETH_ALEN];
+  unsigned char h_source[ETH_ALEN];
+  __be16 h_proto;
+} __attribute__((packed));
+#endif
+#endif
diff --git a/i686-linux-musl/include/linux/if_fc.h b/i686-linux-musl/include/linux/if_fc.h
new file mode 100644
index 0000000..b655178
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_fc.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_IF_FC_H
+#define _LINUX_IF_FC_H
+#include <linux/types.h>
+#define FC_ALEN 6
+#define FC_HLEN (sizeof(struct fch_hdr) + sizeof(struct fcllc))
+#define FC_ID_LEN 3
+#define EXTENDED_SAP 0xAA
+#define UI_CMD 0x03
+struct fch_hdr {
+  __u8 daddr[FC_ALEN];
+  __u8 saddr[FC_ALEN];
+};
+struct fcllc {
+  __u8 dsap;
+  __u8 ssap;
+  __u8 llc;
+  __u8 protid[3];
+  __be16 ethertype;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/if_fddi.h b/i686-linux-musl/include/linux/if_fddi.h
new file mode 100644
index 0000000..4b5074b
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_fddi.h
@@ -0,0 +1,90 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IF_FDDI_H
+#define _UAPI_LINUX_IF_FDDI_H
+#include <linux/types.h>
+#define FDDI_K_ALEN 6
+#define FDDI_K_8022_HLEN 16
+#define FDDI_K_SNAP_HLEN 21
+#define FDDI_K_8022_ZLEN 16
+#define FDDI_K_SNAP_ZLEN 21
+#define FDDI_K_8022_DLEN 4475
+#define FDDI_K_SNAP_DLEN 4470
+#define FDDI_K_LLC_ZLEN 13
+#define FDDI_K_LLC_LEN 4491
+#define FDDI_K_OUI_LEN 3
+#define FDDI_FC_K_CLASS_MASK 0x80
+#define FDDI_FC_K_CLASS_SYNC 0x80
+#define FDDI_FC_K_CLASS_ASYNC 0x00
+#define FDDI_FC_K_ALEN_MASK 0x40
+#define FDDI_FC_K_ALEN_48 0x40
+#define FDDI_FC_K_ALEN_16 0x00
+#define FDDI_FC_K_FORMAT_MASK 0x30
+#define FDDI_FC_K_FORMAT_FUTURE 0x30
+#define FDDI_FC_K_FORMAT_IMPLEMENTOR 0x20
+#define FDDI_FC_K_FORMAT_LLC 0x10
+#define FDDI_FC_K_FORMAT_MANAGEMENT 0x00
+#define FDDI_FC_K_CONTROL_MASK 0x0f
+#define FDDI_FC_K_VOID 0x00
+#define FDDI_FC_K_NON_RESTRICTED_TOKEN 0x80
+#define FDDI_FC_K_RESTRICTED_TOKEN 0xC0
+#define FDDI_FC_K_SMT_MIN 0x41
+#define FDDI_FC_K_SMT_MAX 0x4F
+#define FDDI_FC_K_MAC_MIN 0xC1
+#define FDDI_FC_K_MAC_MAX 0xCF
+#define FDDI_FC_K_ASYNC_LLC_MIN 0x50
+#define FDDI_FC_K_ASYNC_LLC_DEF 0x54
+#define FDDI_FC_K_ASYNC_LLC_MAX 0x5F
+#define FDDI_FC_K_SYNC_LLC_MIN 0xD0
+#define FDDI_FC_K_SYNC_LLC_MAX 0xD7
+#define FDDI_FC_K_IMPLEMENTOR_MIN 0x60
+#define FDDI_FC_K_IMPLEMENTOR_MAX 0x6F
+#define FDDI_FC_K_RESERVED_MIN 0x70
+#define FDDI_FC_K_RESERVED_MAX 0x7F
+#define FDDI_EXTENDED_SAP 0xAA
+#define FDDI_UI_CMD 0x03
+struct fddi_8022_1_hdr {
+  __u8 dsap;
+  __u8 ssap;
+  __u8 ctrl;
+} __attribute__((packed));
+struct fddi_8022_2_hdr {
+  __u8 dsap;
+  __u8 ssap;
+  __u8 ctrl_1;
+  __u8 ctrl_2;
+} __attribute__((packed));
+struct fddi_snap_hdr {
+  __u8 dsap;
+  __u8 ssap;
+  __u8 ctrl;
+  __u8 oui[FDDI_K_OUI_LEN];
+  __be16 ethertype;
+} __attribute__((packed));
+struct fddihdr {
+  __u8 fc;
+  __u8 daddr[FDDI_K_ALEN];
+  __u8 saddr[FDDI_K_ALEN];
+  union {
+    struct fddi_8022_1_hdr llc_8022_1;
+    struct fddi_8022_2_hdr llc_8022_2;
+    struct fddi_snap_hdr llc_snap;
+  } hdr;
+} __attribute__((packed));
+#endif
diff --git a/i686-linux-musl/include/linux/if_hippi.h b/i686-linux-musl/include/linux/if_hippi.h
new file mode 100644
index 0000000..29691d9
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_hippi.h
@@ -0,0 +1,88 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_IF_HIPPI_H
+#define _LINUX_IF_HIPPI_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+#define HIPPI_ALEN 6
+#define HIPPI_HLEN sizeof(struct hippi_hdr)
+#define HIPPI_ZLEN 0
+#define HIPPI_DATA_LEN 65280
+#define HIPPI_FRAME_LEN (HIPPI_DATA_LEN + HIPPI_HLEN)
+#define HIPPI_EXTENDED_SAP 0xAA
+#define HIPPI_UI_CMD 0x03
+struct hipnet_statistics {
+  int rx_packets;
+  int tx_packets;
+  int rx_errors;
+  int tx_errors;
+  int rx_dropped;
+  int tx_dropped;
+  int rx_length_errors;
+  int rx_over_errors;
+  int rx_crc_errors;
+  int rx_frame_errors;
+  int rx_fifo_errors;
+  int rx_missed_errors;
+  int tx_aborted_errors;
+  int tx_carrier_errors;
+  int tx_fifo_errors;
+  int tx_heartbeat_errors;
+  int tx_window_errors;
+};
+struct hippi_fp_hdr {
+  __be32 fixed;
+  __be32 d2_size;
+} __attribute__((packed));
+struct hippi_le_hdr {
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 fc : 3;
+  __u8 double_wide : 1;
+  __u8 message_type : 4;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 message_type : 4;
+  __u8 double_wide : 1;
+  __u8 fc : 3;
+#endif
+  __u8 dest_switch_addr[3];
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 dest_addr_type : 4, src_addr_type : 4;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 src_addr_type : 4, dest_addr_type : 4;
+#endif
+  __u8 src_switch_addr[3];
+  __u16 reserved;
+  __u8 daddr[HIPPI_ALEN];
+  __u16 locally_administered;
+  __u8 saddr[HIPPI_ALEN];
+} __attribute__((packed));
+#define HIPPI_OUI_LEN 3
+struct hippi_snap_hdr {
+  __u8 dsap;
+  __u8 ssap;
+  __u8 ctrl;
+  __u8 oui[HIPPI_OUI_LEN];
+  __be16 ethertype;
+} __attribute__((packed));
+struct hippi_hdr {
+  struct hippi_fp_hdr fp;
+  struct hippi_le_hdr le;
+  struct hippi_snap_hdr snap;
+} __attribute__((packed));
+#endif
diff --git a/i686-linux-musl/include/linux/if_infiniband.h b/i686-linux-musl/include/linux/if_infiniband.h
new file mode 100644
index 0000000..7f1a58c
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_infiniband.h
@@ -0,0 +1,22 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_IF_INFINIBAND_H
+#define _LINUX_IF_INFINIBAND_H
+#define INFINIBAND_ALEN 20
+#endif
diff --git a/i686-linux-musl/include/linux/if_link.h b/i686-linux-musl/include/linux/if_link.h
new file mode 100644
index 0000000..6a1d89f
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_link.h
@@ -0,0 +1,863 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IF_LINK_H
+#define _UAPI_LINUX_IF_LINK_H
+#include <linux/types.h>
+#include <linux/netlink.h>
+struct rtnl_link_stats {
+  __u32 rx_packets;
+  __u32 tx_packets;
+  __u32 rx_bytes;
+  __u32 tx_bytes;
+  __u32 rx_errors;
+  __u32 tx_errors;
+  __u32 rx_dropped;
+  __u32 tx_dropped;
+  __u32 multicast;
+  __u32 collisions;
+  __u32 rx_length_errors;
+  __u32 rx_over_errors;
+  __u32 rx_crc_errors;
+  __u32 rx_frame_errors;
+  __u32 rx_fifo_errors;
+  __u32 rx_missed_errors;
+  __u32 tx_aborted_errors;
+  __u32 tx_carrier_errors;
+  __u32 tx_fifo_errors;
+  __u32 tx_heartbeat_errors;
+  __u32 tx_window_errors;
+  __u32 rx_compressed;
+  __u32 tx_compressed;
+  __u32 rx_nohandler;
+};
+struct rtnl_link_stats64 {
+  __u64 rx_packets;
+  __u64 tx_packets;
+  __u64 rx_bytes;
+  __u64 tx_bytes;
+  __u64 rx_errors;
+  __u64 tx_errors;
+  __u64 rx_dropped;
+  __u64 tx_dropped;
+  __u64 multicast;
+  __u64 collisions;
+  __u64 rx_length_errors;
+  __u64 rx_over_errors;
+  __u64 rx_crc_errors;
+  __u64 rx_frame_errors;
+  __u64 rx_fifo_errors;
+  __u64 rx_missed_errors;
+  __u64 tx_aborted_errors;
+  __u64 tx_carrier_errors;
+  __u64 tx_fifo_errors;
+  __u64 tx_heartbeat_errors;
+  __u64 tx_window_errors;
+  __u64 rx_compressed;
+  __u64 tx_compressed;
+  __u64 rx_nohandler;
+};
+struct rtnl_link_ifmap {
+  __u64 mem_start;
+  __u64 mem_end;
+  __u64 base_addr;
+  __u16 irq;
+  __u8 dma;
+  __u8 port;
+};
+enum {
+  IFLA_UNSPEC,
+  IFLA_ADDRESS,
+  IFLA_BROADCAST,
+  IFLA_IFNAME,
+  IFLA_MTU,
+  IFLA_LINK,
+  IFLA_QDISC,
+  IFLA_STATS,
+  IFLA_COST,
+#define IFLA_COST IFLA_COST
+  IFLA_PRIORITY,
+#define IFLA_PRIORITY IFLA_PRIORITY
+  IFLA_MASTER,
+#define IFLA_MASTER IFLA_MASTER
+  IFLA_WIRELESS,
+#define IFLA_WIRELESS IFLA_WIRELESS
+  IFLA_PROTINFO,
+#define IFLA_PROTINFO IFLA_PROTINFO
+  IFLA_TXQLEN,
+#define IFLA_TXQLEN IFLA_TXQLEN
+  IFLA_MAP,
+#define IFLA_MAP IFLA_MAP
+  IFLA_WEIGHT,
+#define IFLA_WEIGHT IFLA_WEIGHT
+  IFLA_OPERSTATE,
+  IFLA_LINKMODE,
+  IFLA_LINKINFO,
+#define IFLA_LINKINFO IFLA_LINKINFO
+  IFLA_NET_NS_PID,
+  IFLA_IFALIAS,
+  IFLA_NUM_VF,
+  IFLA_VFINFO_LIST,
+  IFLA_STATS64,
+  IFLA_VF_PORTS,
+  IFLA_PORT_SELF,
+  IFLA_AF_SPEC,
+  IFLA_GROUP,
+  IFLA_NET_NS_FD,
+  IFLA_EXT_MASK,
+  IFLA_PROMISCUITY,
+#define IFLA_PROMISCUITY IFLA_PROMISCUITY
+  IFLA_NUM_TX_QUEUES,
+  IFLA_NUM_RX_QUEUES,
+  IFLA_CARRIER,
+  IFLA_PHYS_PORT_ID,
+  IFLA_CARRIER_CHANGES,
+  IFLA_PHYS_SWITCH_ID,
+  IFLA_LINK_NETNSID,
+  IFLA_PHYS_PORT_NAME,
+  IFLA_PROTO_DOWN,
+  IFLA_GSO_MAX_SEGS,
+  IFLA_GSO_MAX_SIZE,
+  IFLA_PAD,
+  IFLA_XDP,
+  IFLA_EVENT,
+  IFLA_NEW_NETNSID,
+  IFLA_IF_NETNSID,
+  IFLA_TARGET_NETNSID = IFLA_IF_NETNSID,
+  IFLA_CARRIER_UP_COUNT,
+  IFLA_CARRIER_DOWN_COUNT,
+  IFLA_NEW_IFINDEX,
+  IFLA_MIN_MTU,
+  IFLA_MAX_MTU,
+  IFLA_PROP_LIST,
+  IFLA_ALT_IFNAME,
+  IFLA_PERM_ADDRESS,
+  IFLA_PROTO_DOWN_REASON,
+  IFLA_PARENT_DEV_NAME,
+  IFLA_PARENT_DEV_BUS_NAME,
+  __IFLA_MAX
+};
+#define IFLA_MAX (__IFLA_MAX - 1)
+enum {
+  IFLA_PROTO_DOWN_REASON_UNSPEC,
+  IFLA_PROTO_DOWN_REASON_MASK,
+  IFLA_PROTO_DOWN_REASON_VALUE,
+  __IFLA_PROTO_DOWN_REASON_CNT,
+  IFLA_PROTO_DOWN_REASON_MAX = __IFLA_PROTO_DOWN_REASON_CNT - 1
+};
+#define IFLA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
+#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct ifinfomsg))
+enum {
+  IFLA_INET_UNSPEC,
+  IFLA_INET_CONF,
+  __IFLA_INET_MAX,
+};
+#define IFLA_INET_MAX (__IFLA_INET_MAX - 1)
+enum {
+  IFLA_INET6_UNSPEC,
+  IFLA_INET6_FLAGS,
+  IFLA_INET6_CONF,
+  IFLA_INET6_STATS,
+  IFLA_INET6_MCAST,
+  IFLA_INET6_CACHEINFO,
+  IFLA_INET6_ICMP6STATS,
+  IFLA_INET6_TOKEN,
+  IFLA_INET6_ADDR_GEN_MODE,
+  IFLA_INET6_RA_MTU,
+  __IFLA_INET6_MAX
+};
+#define IFLA_INET6_MAX (__IFLA_INET6_MAX - 1)
+enum in6_addr_gen_mode {
+  IN6_ADDR_GEN_MODE_EUI64,
+  IN6_ADDR_GEN_MODE_NONE,
+  IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
+  IN6_ADDR_GEN_MODE_RANDOM,
+};
+enum {
+  IFLA_BR_UNSPEC,
+  IFLA_BR_FORWARD_DELAY,
+  IFLA_BR_HELLO_TIME,
+  IFLA_BR_MAX_AGE,
+  IFLA_BR_AGEING_TIME,
+  IFLA_BR_STP_STATE,
+  IFLA_BR_PRIORITY,
+  IFLA_BR_VLAN_FILTERING,
+  IFLA_BR_VLAN_PROTOCOL,
+  IFLA_BR_GROUP_FWD_MASK,
+  IFLA_BR_ROOT_ID,
+  IFLA_BR_BRIDGE_ID,
+  IFLA_BR_ROOT_PORT,
+  IFLA_BR_ROOT_PATH_COST,
+  IFLA_BR_TOPOLOGY_CHANGE,
+  IFLA_BR_TOPOLOGY_CHANGE_DETECTED,
+  IFLA_BR_HELLO_TIMER,
+  IFLA_BR_TCN_TIMER,
+  IFLA_BR_TOPOLOGY_CHANGE_TIMER,
+  IFLA_BR_GC_TIMER,
+  IFLA_BR_GROUP_ADDR,
+  IFLA_BR_FDB_FLUSH,
+  IFLA_BR_MCAST_ROUTER,
+  IFLA_BR_MCAST_SNOOPING,
+  IFLA_BR_MCAST_QUERY_USE_IFADDR,
+  IFLA_BR_MCAST_QUERIER,
+  IFLA_BR_MCAST_HASH_ELASTICITY,
+  IFLA_BR_MCAST_HASH_MAX,
+  IFLA_BR_MCAST_LAST_MEMBER_CNT,
+  IFLA_BR_MCAST_STARTUP_QUERY_CNT,
+  IFLA_BR_MCAST_LAST_MEMBER_INTVL,
+  IFLA_BR_MCAST_MEMBERSHIP_INTVL,
+  IFLA_BR_MCAST_QUERIER_INTVL,
+  IFLA_BR_MCAST_QUERY_INTVL,
+  IFLA_BR_MCAST_QUERY_RESPONSE_INTVL,
+  IFLA_BR_MCAST_STARTUP_QUERY_INTVL,
+  IFLA_BR_NF_CALL_IPTABLES,
+  IFLA_BR_NF_CALL_IP6TABLES,
+  IFLA_BR_NF_CALL_ARPTABLES,
+  IFLA_BR_VLAN_DEFAULT_PVID,
+  IFLA_BR_PAD,
+  IFLA_BR_VLAN_STATS_ENABLED,
+  IFLA_BR_MCAST_STATS_ENABLED,
+  IFLA_BR_MCAST_IGMP_VERSION,
+  IFLA_BR_MCAST_MLD_VERSION,
+  IFLA_BR_VLAN_STATS_PER_PORT,
+  IFLA_BR_MULTI_BOOLOPT,
+  IFLA_BR_MCAST_QUERIER_STATE,
+  __IFLA_BR_MAX,
+};
+#define IFLA_BR_MAX (__IFLA_BR_MAX - 1)
+struct ifla_bridge_id {
+  __u8 prio[2];
+  __u8 addr[6];
+};
+enum {
+  BRIDGE_MODE_UNSPEC,
+  BRIDGE_MODE_HAIRPIN,
+};
+enum {
+  IFLA_BRPORT_UNSPEC,
+  IFLA_BRPORT_STATE,
+  IFLA_BRPORT_PRIORITY,
+  IFLA_BRPORT_COST,
+  IFLA_BRPORT_MODE,
+  IFLA_BRPORT_GUARD,
+  IFLA_BRPORT_PROTECT,
+  IFLA_BRPORT_FAST_LEAVE,
+  IFLA_BRPORT_LEARNING,
+  IFLA_BRPORT_UNICAST_FLOOD,
+  IFLA_BRPORT_PROXYARP,
+  IFLA_BRPORT_LEARNING_SYNC,
+  IFLA_BRPORT_PROXYARP_WIFI,
+  IFLA_BRPORT_ROOT_ID,
+  IFLA_BRPORT_BRIDGE_ID,
+  IFLA_BRPORT_DESIGNATED_PORT,
+  IFLA_BRPORT_DESIGNATED_COST,
+  IFLA_BRPORT_ID,
+  IFLA_BRPORT_NO,
+  IFLA_BRPORT_TOPOLOGY_CHANGE_ACK,
+  IFLA_BRPORT_CONFIG_PENDING,
+  IFLA_BRPORT_MESSAGE_AGE_TIMER,
+  IFLA_BRPORT_FORWARD_DELAY_TIMER,
+  IFLA_BRPORT_HOLD_TIMER,
+  IFLA_BRPORT_FLUSH,
+  IFLA_BRPORT_MULTICAST_ROUTER,
+  IFLA_BRPORT_PAD,
+  IFLA_BRPORT_MCAST_FLOOD,
+  IFLA_BRPORT_MCAST_TO_UCAST,
+  IFLA_BRPORT_VLAN_TUNNEL,
+  IFLA_BRPORT_BCAST_FLOOD,
+  IFLA_BRPORT_GROUP_FWD_MASK,
+  IFLA_BRPORT_NEIGH_SUPPRESS,
+  IFLA_BRPORT_ISOLATED,
+  IFLA_BRPORT_BACKUP_PORT,
+  IFLA_BRPORT_MRP_RING_OPEN,
+  IFLA_BRPORT_MRP_IN_OPEN,
+  IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
+  IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
+  __IFLA_BRPORT_MAX
+};
+#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
+struct ifla_cacheinfo {
+  __u32 max_reasm_len;
+  __u32 tstamp;
+  __u32 reachable_time;
+  __u32 retrans_time;
+};
+enum {
+  IFLA_INFO_UNSPEC,
+  IFLA_INFO_KIND,
+  IFLA_INFO_DATA,
+  IFLA_INFO_XSTATS,
+  IFLA_INFO_SLAVE_KIND,
+  IFLA_INFO_SLAVE_DATA,
+  __IFLA_INFO_MAX,
+};
+#define IFLA_INFO_MAX (__IFLA_INFO_MAX - 1)
+enum {
+  IFLA_VLAN_UNSPEC,
+  IFLA_VLAN_ID,
+  IFLA_VLAN_FLAGS,
+  IFLA_VLAN_EGRESS_QOS,
+  IFLA_VLAN_INGRESS_QOS,
+  IFLA_VLAN_PROTOCOL,
+  __IFLA_VLAN_MAX,
+};
+#define IFLA_VLAN_MAX (__IFLA_VLAN_MAX - 1)
+struct ifla_vlan_flags {
+  __u32 flags;
+  __u32 mask;
+};
+enum {
+  IFLA_VLAN_QOS_UNSPEC,
+  IFLA_VLAN_QOS_MAPPING,
+  __IFLA_VLAN_QOS_MAX
+};
+#define IFLA_VLAN_QOS_MAX (__IFLA_VLAN_QOS_MAX - 1)
+struct ifla_vlan_qos_mapping {
+  __u32 from;
+  __u32 to;
+};
+enum {
+  IFLA_MACVLAN_UNSPEC,
+  IFLA_MACVLAN_MODE,
+  IFLA_MACVLAN_FLAGS,
+  IFLA_MACVLAN_MACADDR_MODE,
+  IFLA_MACVLAN_MACADDR,
+  IFLA_MACVLAN_MACADDR_DATA,
+  IFLA_MACVLAN_MACADDR_COUNT,
+  IFLA_MACVLAN_BC_QUEUE_LEN,
+  IFLA_MACVLAN_BC_QUEUE_LEN_USED,
+  __IFLA_MACVLAN_MAX,
+};
+#define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
+enum macvlan_mode {
+  MACVLAN_MODE_PRIVATE = 1,
+  MACVLAN_MODE_VEPA = 2,
+  MACVLAN_MODE_BRIDGE = 4,
+  MACVLAN_MODE_PASSTHRU = 8,
+  MACVLAN_MODE_SOURCE = 16,
+};
+enum macvlan_macaddr_mode {
+  MACVLAN_MACADDR_ADD,
+  MACVLAN_MACADDR_DEL,
+  MACVLAN_MACADDR_FLUSH,
+  MACVLAN_MACADDR_SET,
+};
+#define MACVLAN_FLAG_NOPROMISC 1
+#define MACVLAN_FLAG_NODST 2
+enum {
+  IFLA_VRF_UNSPEC,
+  IFLA_VRF_TABLE,
+  __IFLA_VRF_MAX
+};
+#define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1)
+enum {
+  IFLA_VRF_PORT_UNSPEC,
+  IFLA_VRF_PORT_TABLE,
+  __IFLA_VRF_PORT_MAX
+};
+#define IFLA_VRF_PORT_MAX (__IFLA_VRF_PORT_MAX - 1)
+enum {
+  IFLA_MACSEC_UNSPEC,
+  IFLA_MACSEC_SCI,
+  IFLA_MACSEC_PORT,
+  IFLA_MACSEC_ICV_LEN,
+  IFLA_MACSEC_CIPHER_SUITE,
+  IFLA_MACSEC_WINDOW,
+  IFLA_MACSEC_ENCODING_SA,
+  IFLA_MACSEC_ENCRYPT,
+  IFLA_MACSEC_PROTECT,
+  IFLA_MACSEC_INC_SCI,
+  IFLA_MACSEC_ES,
+  IFLA_MACSEC_SCB,
+  IFLA_MACSEC_REPLAY_PROTECT,
+  IFLA_MACSEC_VALIDATION,
+  IFLA_MACSEC_PAD,
+  IFLA_MACSEC_OFFLOAD,
+  __IFLA_MACSEC_MAX,
+};
+#define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1)
+enum {
+  IFLA_XFRM_UNSPEC,
+  IFLA_XFRM_LINK,
+  IFLA_XFRM_IF_ID,
+  __IFLA_XFRM_MAX
+};
+#define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
+enum macsec_validation_type {
+  MACSEC_VALIDATE_DISABLED = 0,
+  MACSEC_VALIDATE_CHECK = 1,
+  MACSEC_VALIDATE_STRICT = 2,
+  __MACSEC_VALIDATE_END,
+  MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1,
+};
+enum macsec_offload {
+  MACSEC_OFFLOAD_OFF = 0,
+  MACSEC_OFFLOAD_PHY = 1,
+  MACSEC_OFFLOAD_MAC = 2,
+  __MACSEC_OFFLOAD_END,
+  MACSEC_OFFLOAD_MAX = __MACSEC_OFFLOAD_END - 1,
+};
+enum {
+  IFLA_IPVLAN_UNSPEC,
+  IFLA_IPVLAN_MODE,
+  IFLA_IPVLAN_FLAGS,
+  __IFLA_IPVLAN_MAX
+};
+#define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
+enum ipvlan_mode {
+  IPVLAN_MODE_L2 = 0,
+  IPVLAN_MODE_L3,
+  IPVLAN_MODE_L3S,
+  IPVLAN_MODE_MAX
+};
+#define IPVLAN_F_PRIVATE 0x01
+#define IPVLAN_F_VEPA 0x02
+enum {
+  IFLA_VXLAN_UNSPEC,
+  IFLA_VXLAN_ID,
+  IFLA_VXLAN_GROUP,
+  IFLA_VXLAN_LINK,
+  IFLA_VXLAN_LOCAL,
+  IFLA_VXLAN_TTL,
+  IFLA_VXLAN_TOS,
+  IFLA_VXLAN_LEARNING,
+  IFLA_VXLAN_AGEING,
+  IFLA_VXLAN_LIMIT,
+  IFLA_VXLAN_PORT_RANGE,
+  IFLA_VXLAN_PROXY,
+  IFLA_VXLAN_RSC,
+  IFLA_VXLAN_L2MISS,
+  IFLA_VXLAN_L3MISS,
+  IFLA_VXLAN_PORT,
+  IFLA_VXLAN_GROUP6,
+  IFLA_VXLAN_LOCAL6,
+  IFLA_VXLAN_UDP_CSUM,
+  IFLA_VXLAN_UDP_ZERO_CSUM6_TX,
+  IFLA_VXLAN_UDP_ZERO_CSUM6_RX,
+  IFLA_VXLAN_REMCSUM_TX,
+  IFLA_VXLAN_REMCSUM_RX,
+  IFLA_VXLAN_GBP,
+  IFLA_VXLAN_REMCSUM_NOPARTIAL,
+  IFLA_VXLAN_COLLECT_METADATA,
+  IFLA_VXLAN_LABEL,
+  IFLA_VXLAN_GPE,
+  IFLA_VXLAN_TTL_INHERIT,
+  IFLA_VXLAN_DF,
+  __IFLA_VXLAN_MAX
+};
+#define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
+struct ifla_vxlan_port_range {
+  __be16 low;
+  __be16 high;
+};
+enum ifla_vxlan_df {
+  VXLAN_DF_UNSET = 0,
+  VXLAN_DF_SET,
+  VXLAN_DF_INHERIT,
+  __VXLAN_DF_END,
+  VXLAN_DF_MAX = __VXLAN_DF_END - 1,
+};
+enum {
+  IFLA_GENEVE_UNSPEC,
+  IFLA_GENEVE_ID,
+  IFLA_GENEVE_REMOTE,
+  IFLA_GENEVE_TTL,
+  IFLA_GENEVE_TOS,
+  IFLA_GENEVE_PORT,
+  IFLA_GENEVE_COLLECT_METADATA,
+  IFLA_GENEVE_REMOTE6,
+  IFLA_GENEVE_UDP_CSUM,
+  IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
+  IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
+  IFLA_GENEVE_LABEL,
+  IFLA_GENEVE_TTL_INHERIT,
+  IFLA_GENEVE_DF,
+  __IFLA_GENEVE_MAX
+};
+#define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)
+enum ifla_geneve_df {
+  GENEVE_DF_UNSET = 0,
+  GENEVE_DF_SET,
+  GENEVE_DF_INHERIT,
+  __GENEVE_DF_END,
+  GENEVE_DF_MAX = __GENEVE_DF_END - 1,
+};
+enum {
+  IFLA_BAREUDP_UNSPEC,
+  IFLA_BAREUDP_PORT,
+  IFLA_BAREUDP_ETHERTYPE,
+  IFLA_BAREUDP_SRCPORT_MIN,
+  IFLA_BAREUDP_MULTIPROTO_MODE,
+  __IFLA_BAREUDP_MAX
+};
+#define IFLA_BAREUDP_MAX (__IFLA_BAREUDP_MAX - 1)
+enum {
+  IFLA_PPP_UNSPEC,
+  IFLA_PPP_DEV_FD,
+  __IFLA_PPP_MAX
+};
+#define IFLA_PPP_MAX (__IFLA_PPP_MAX - 1)
+enum ifla_gtp_role {
+  GTP_ROLE_GGSN = 0,
+  GTP_ROLE_SGSN,
+};
+enum {
+  IFLA_GTP_UNSPEC,
+  IFLA_GTP_FD0,
+  IFLA_GTP_FD1,
+  IFLA_GTP_PDP_HASHSIZE,
+  IFLA_GTP_ROLE,
+  __IFLA_GTP_MAX,
+};
+#define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
+enum {
+  IFLA_BOND_UNSPEC,
+  IFLA_BOND_MODE,
+  IFLA_BOND_ACTIVE_SLAVE,
+  IFLA_BOND_MIIMON,
+  IFLA_BOND_UPDELAY,
+  IFLA_BOND_DOWNDELAY,
+  IFLA_BOND_USE_CARRIER,
+  IFLA_BOND_ARP_INTERVAL,
+  IFLA_BOND_ARP_IP_TARGET,
+  IFLA_BOND_ARP_VALIDATE,
+  IFLA_BOND_ARP_ALL_TARGETS,
+  IFLA_BOND_PRIMARY,
+  IFLA_BOND_PRIMARY_RESELECT,
+  IFLA_BOND_FAIL_OVER_MAC,
+  IFLA_BOND_XMIT_HASH_POLICY,
+  IFLA_BOND_RESEND_IGMP,
+  IFLA_BOND_NUM_PEER_NOTIF,
+  IFLA_BOND_ALL_SLAVES_ACTIVE,
+  IFLA_BOND_MIN_LINKS,
+  IFLA_BOND_LP_INTERVAL,
+  IFLA_BOND_PACKETS_PER_SLAVE,
+  IFLA_BOND_AD_LACP_RATE,
+  IFLA_BOND_AD_SELECT,
+  IFLA_BOND_AD_INFO,
+  IFLA_BOND_AD_ACTOR_SYS_PRIO,
+  IFLA_BOND_AD_USER_PORT_KEY,
+  IFLA_BOND_AD_ACTOR_SYSTEM,
+  IFLA_BOND_TLB_DYNAMIC_LB,
+  IFLA_BOND_PEER_NOTIF_DELAY,
+  IFLA_BOND_AD_LACP_ACTIVE,
+  __IFLA_BOND_MAX,
+};
+#define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1)
+enum {
+  IFLA_BOND_AD_INFO_UNSPEC,
+  IFLA_BOND_AD_INFO_AGGREGATOR,
+  IFLA_BOND_AD_INFO_NUM_PORTS,
+  IFLA_BOND_AD_INFO_ACTOR_KEY,
+  IFLA_BOND_AD_INFO_PARTNER_KEY,
+  IFLA_BOND_AD_INFO_PARTNER_MAC,
+  __IFLA_BOND_AD_INFO_MAX,
+};
+#define IFLA_BOND_AD_INFO_MAX (__IFLA_BOND_AD_INFO_MAX - 1)
+enum {
+  IFLA_BOND_SLAVE_UNSPEC,
+  IFLA_BOND_SLAVE_STATE,
+  IFLA_BOND_SLAVE_MII_STATUS,
+  IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,
+  IFLA_BOND_SLAVE_PERM_HWADDR,
+  IFLA_BOND_SLAVE_QUEUE_ID,
+  IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
+  IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
+  IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
+  __IFLA_BOND_SLAVE_MAX,
+};
+#define IFLA_BOND_SLAVE_MAX (__IFLA_BOND_SLAVE_MAX - 1)
+enum {
+  IFLA_VF_INFO_UNSPEC,
+  IFLA_VF_INFO,
+  __IFLA_VF_INFO_MAX,
+};
+#define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
+enum {
+  IFLA_VF_UNSPEC,
+  IFLA_VF_MAC,
+  IFLA_VF_VLAN,
+  IFLA_VF_TX_RATE,
+  IFLA_VF_SPOOFCHK,
+  IFLA_VF_LINK_STATE,
+  IFLA_VF_RATE,
+  IFLA_VF_RSS_QUERY_EN,
+  IFLA_VF_STATS,
+  IFLA_VF_TRUST,
+  IFLA_VF_IB_NODE_GUID,
+  IFLA_VF_IB_PORT_GUID,
+  IFLA_VF_VLAN_LIST,
+  IFLA_VF_BROADCAST,
+  __IFLA_VF_MAX,
+};
+#define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
+struct ifla_vf_mac {
+  __u32 vf;
+  __u8 mac[32];
+};
+struct ifla_vf_broadcast {
+  __u8 broadcast[32];
+};
+struct ifla_vf_vlan {
+  __u32 vf;
+  __u32 vlan;
+  __u32 qos;
+};
+enum {
+  IFLA_VF_VLAN_INFO_UNSPEC,
+  IFLA_VF_VLAN_INFO,
+  __IFLA_VF_VLAN_INFO_MAX,
+};
+#define IFLA_VF_VLAN_INFO_MAX (__IFLA_VF_VLAN_INFO_MAX - 1)
+#define MAX_VLAN_LIST_LEN 1
+struct ifla_vf_vlan_info {
+  __u32 vf;
+  __u32 vlan;
+  __u32 qos;
+  __be16 vlan_proto;
+};
+struct ifla_vf_tx_rate {
+  __u32 vf;
+  __u32 rate;
+};
+struct ifla_vf_rate {
+  __u32 vf;
+  __u32 min_tx_rate;
+  __u32 max_tx_rate;
+};
+struct ifla_vf_spoofchk {
+  __u32 vf;
+  __u32 setting;
+};
+struct ifla_vf_guid {
+  __u32 vf;
+  __u64 guid;
+};
+enum {
+  IFLA_VF_LINK_STATE_AUTO,
+  IFLA_VF_LINK_STATE_ENABLE,
+  IFLA_VF_LINK_STATE_DISABLE,
+  __IFLA_VF_LINK_STATE_MAX,
+};
+struct ifla_vf_link_state {
+  __u32 vf;
+  __u32 link_state;
+};
+struct ifla_vf_rss_query_en {
+  __u32 vf;
+  __u32 setting;
+};
+enum {
+  IFLA_VF_STATS_RX_PACKETS,
+  IFLA_VF_STATS_TX_PACKETS,
+  IFLA_VF_STATS_RX_BYTES,
+  IFLA_VF_STATS_TX_BYTES,
+  IFLA_VF_STATS_BROADCAST,
+  IFLA_VF_STATS_MULTICAST,
+  IFLA_VF_STATS_PAD,
+  IFLA_VF_STATS_RX_DROPPED,
+  IFLA_VF_STATS_TX_DROPPED,
+  __IFLA_VF_STATS_MAX,
+};
+#define IFLA_VF_STATS_MAX (__IFLA_VF_STATS_MAX - 1)
+struct ifla_vf_trust {
+  __u32 vf;
+  __u32 setting;
+};
+enum {
+  IFLA_VF_PORT_UNSPEC,
+  IFLA_VF_PORT,
+  __IFLA_VF_PORT_MAX,
+};
+#define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
+enum {
+  IFLA_PORT_UNSPEC,
+  IFLA_PORT_VF,
+  IFLA_PORT_PROFILE,
+  IFLA_PORT_VSI_TYPE,
+  IFLA_PORT_INSTANCE_UUID,
+  IFLA_PORT_HOST_UUID,
+  IFLA_PORT_REQUEST,
+  IFLA_PORT_RESPONSE,
+  __IFLA_PORT_MAX,
+};
+#define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
+#define PORT_PROFILE_MAX 40
+#define PORT_UUID_MAX 16
+#define PORT_SELF_VF - 1
+enum {
+  PORT_REQUEST_PREASSOCIATE = 0,
+  PORT_REQUEST_PREASSOCIATE_RR,
+  PORT_REQUEST_ASSOCIATE,
+  PORT_REQUEST_DISASSOCIATE,
+};
+enum {
+  PORT_VDP_RESPONSE_SUCCESS = 0,
+  PORT_VDP_RESPONSE_INVALID_FORMAT,
+  PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
+  PORT_VDP_RESPONSE_UNUSED_VTID,
+  PORT_VDP_RESPONSE_VTID_VIOLATION,
+  PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
+  PORT_VDP_RESPONSE_OUT_OF_SYNC,
+  PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
+  PORT_PROFILE_RESPONSE_INPROGRESS,
+  PORT_PROFILE_RESPONSE_INVALID,
+  PORT_PROFILE_RESPONSE_BADSTATE,
+  PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
+  PORT_PROFILE_RESPONSE_ERROR,
+};
+struct ifla_port_vsi {
+  __u8 vsi_mgr_id;
+  __u8 vsi_type_id[3];
+  __u8 vsi_type_version;
+  __u8 pad[3];
+};
+enum {
+  IFLA_IPOIB_UNSPEC,
+  IFLA_IPOIB_PKEY,
+  IFLA_IPOIB_MODE,
+  IFLA_IPOIB_UMCAST,
+  __IFLA_IPOIB_MAX
+};
+enum {
+  IPOIB_MODE_DATAGRAM = 0,
+  IPOIB_MODE_CONNECTED = 1,
+};
+#define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
+enum {
+  HSR_PROTOCOL_HSR,
+  HSR_PROTOCOL_PRP,
+  HSR_PROTOCOL_MAX,
+};
+enum {
+  IFLA_HSR_UNSPEC,
+  IFLA_HSR_SLAVE1,
+  IFLA_HSR_SLAVE2,
+  IFLA_HSR_MULTICAST_SPEC,
+  IFLA_HSR_SUPERVISION_ADDR,
+  IFLA_HSR_SEQ_NR,
+  IFLA_HSR_VERSION,
+  IFLA_HSR_PROTOCOL,
+  __IFLA_HSR_MAX,
+};
+#define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1)
+struct if_stats_msg {
+  __u8 family;
+  __u8 pad1;
+  __u16 pad2;
+  __u32 ifindex;
+  __u32 filter_mask;
+};
+enum {
+  IFLA_STATS_UNSPEC,
+  IFLA_STATS_LINK_64,
+  IFLA_STATS_LINK_XSTATS,
+  IFLA_STATS_LINK_XSTATS_SLAVE,
+  IFLA_STATS_LINK_OFFLOAD_XSTATS,
+  IFLA_STATS_AF_SPEC,
+  __IFLA_STATS_MAX,
+};
+#define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
+#define IFLA_STATS_FILTER_BIT(ATTR) (1 << (ATTR - 1))
+enum {
+  LINK_XSTATS_TYPE_UNSPEC,
+  LINK_XSTATS_TYPE_BRIDGE,
+  LINK_XSTATS_TYPE_BOND,
+  __LINK_XSTATS_TYPE_MAX
+};
+#define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1)
+enum {
+  IFLA_OFFLOAD_XSTATS_UNSPEC,
+  IFLA_OFFLOAD_XSTATS_CPU_HIT,
+  __IFLA_OFFLOAD_XSTATS_MAX
+};
+#define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
+#define XDP_FLAGS_UPDATE_IF_NOEXIST (1U << 0)
+#define XDP_FLAGS_SKB_MODE (1U << 1)
+#define XDP_FLAGS_DRV_MODE (1U << 2)
+#define XDP_FLAGS_HW_MODE (1U << 3)
+#define XDP_FLAGS_REPLACE (1U << 4)
+#define XDP_FLAGS_MODES (XDP_FLAGS_SKB_MODE | XDP_FLAGS_DRV_MODE | XDP_FLAGS_HW_MODE)
+#define XDP_FLAGS_MASK (XDP_FLAGS_UPDATE_IF_NOEXIST | XDP_FLAGS_MODES | XDP_FLAGS_REPLACE)
+enum {
+  XDP_ATTACHED_NONE = 0,
+  XDP_ATTACHED_DRV,
+  XDP_ATTACHED_SKB,
+  XDP_ATTACHED_HW,
+  XDP_ATTACHED_MULTI,
+};
+enum {
+  IFLA_XDP_UNSPEC,
+  IFLA_XDP_FD,
+  IFLA_XDP_ATTACHED,
+  IFLA_XDP_FLAGS,
+  IFLA_XDP_PROG_ID,
+  IFLA_XDP_DRV_PROG_ID,
+  IFLA_XDP_SKB_PROG_ID,
+  IFLA_XDP_HW_PROG_ID,
+  IFLA_XDP_EXPECTED_FD,
+  __IFLA_XDP_MAX,
+};
+#define IFLA_XDP_MAX (__IFLA_XDP_MAX - 1)
+enum {
+  IFLA_EVENT_NONE,
+  IFLA_EVENT_REBOOT,
+  IFLA_EVENT_FEATURES,
+  IFLA_EVENT_BONDING_FAILOVER,
+  IFLA_EVENT_NOTIFY_PEERS,
+  IFLA_EVENT_IGMP_RESEND,
+  IFLA_EVENT_BONDING_OPTIONS,
+};
+enum {
+  IFLA_TUN_UNSPEC,
+  IFLA_TUN_OWNER,
+  IFLA_TUN_GROUP,
+  IFLA_TUN_TYPE,
+  IFLA_TUN_PI,
+  IFLA_TUN_VNET_HDR,
+  IFLA_TUN_PERSIST,
+  IFLA_TUN_MULTI_QUEUE,
+  IFLA_TUN_NUM_QUEUES,
+  IFLA_TUN_NUM_DISABLED_QUEUES,
+  __IFLA_TUN_MAX,
+};
+#define IFLA_TUN_MAX (__IFLA_TUN_MAX - 1)
+#define RMNET_FLAGS_INGRESS_DEAGGREGATION (1U << 0)
+#define RMNET_FLAGS_INGRESS_MAP_COMMANDS (1U << 1)
+#define RMNET_FLAGS_INGRESS_MAP_CKSUMV4 (1U << 2)
+#define RMNET_FLAGS_EGRESS_MAP_CKSUMV4 (1U << 3)
+#define RMNET_FLAGS_INGRESS_MAP_CKSUMV5 (1U << 4)
+#define RMNET_FLAGS_EGRESS_MAP_CKSUMV5 (1U << 5)
+enum {
+  IFLA_RMNET_UNSPEC,
+  IFLA_RMNET_MUX_ID,
+  IFLA_RMNET_FLAGS,
+  __IFLA_RMNET_MAX,
+};
+#define IFLA_RMNET_MAX (__IFLA_RMNET_MAX - 1)
+struct ifla_rmnet_flags {
+  __u32 flags;
+  __u32 mask;
+};
+enum {
+  IFLA_MCTP_UNSPEC,
+  IFLA_MCTP_NET,
+  __IFLA_MCTP_MAX,
+};
+#define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/if_ltalk.h b/i686-linux-musl/include/linux/if_ltalk.h
new file mode 100644
index 0000000..9dbd6ec
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_ltalk.h
@@ -0,0 +1,24 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_LTALK_H
+#define _UAPI__LINUX_LTALK_H
+#define LTALK_HLEN 1
+#define LTALK_MTU 600
+#define LTALK_ALEN 1
+#endif
diff --git a/i686-linux-musl/include/linux/if_macsec.h b/i686-linux-musl/include/linux/if_macsec.h
new file mode 100644
index 0000000..e60d767
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_macsec.h
@@ -0,0 +1,173 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_MACSEC_H
+#define _UAPI_MACSEC_H
+#include <linux/types.h>
+#define MACSEC_GENL_NAME "macsec"
+#define MACSEC_GENL_VERSION 1
+#define MACSEC_MAX_KEY_LEN 128
+#define MACSEC_KEYID_LEN 16
+#define MACSEC_CIPHER_ID_GCM_AES_128 0x0080C20001000001ULL
+#define MACSEC_CIPHER_ID_GCM_AES_256 0x0080C20001000002ULL
+#define MACSEC_CIPHER_ID_GCM_AES_XPN_128 0x0080C20001000003ULL
+#define MACSEC_CIPHER_ID_GCM_AES_XPN_256 0x0080C20001000004ULL
+#define MACSEC_DEFAULT_CIPHER_ID 0x0080020001000001ULL
+#define MACSEC_DEFAULT_CIPHER_ALT MACSEC_CIPHER_ID_GCM_AES_128
+#define MACSEC_MIN_ICV_LEN 8
+#define MACSEC_MAX_ICV_LEN 32
+#define MACSEC_STD_ICV_LEN 16
+enum macsec_attrs {
+  MACSEC_ATTR_UNSPEC,
+  MACSEC_ATTR_IFINDEX,
+  MACSEC_ATTR_RXSC_CONFIG,
+  MACSEC_ATTR_SA_CONFIG,
+  MACSEC_ATTR_SECY,
+  MACSEC_ATTR_TXSA_LIST,
+  MACSEC_ATTR_RXSC_LIST,
+  MACSEC_ATTR_TXSC_STATS,
+  MACSEC_ATTR_SECY_STATS,
+  MACSEC_ATTR_OFFLOAD,
+  __MACSEC_ATTR_END,
+  NUM_MACSEC_ATTR = __MACSEC_ATTR_END,
+  MACSEC_ATTR_MAX = __MACSEC_ATTR_END - 1,
+};
+enum macsec_secy_attrs {
+  MACSEC_SECY_ATTR_UNSPEC,
+  MACSEC_SECY_ATTR_SCI,
+  MACSEC_SECY_ATTR_ENCODING_SA,
+  MACSEC_SECY_ATTR_WINDOW,
+  MACSEC_SECY_ATTR_CIPHER_SUITE,
+  MACSEC_SECY_ATTR_ICV_LEN,
+  MACSEC_SECY_ATTR_PROTECT,
+  MACSEC_SECY_ATTR_REPLAY,
+  MACSEC_SECY_ATTR_OPER,
+  MACSEC_SECY_ATTR_VALIDATE,
+  MACSEC_SECY_ATTR_ENCRYPT,
+  MACSEC_SECY_ATTR_INC_SCI,
+  MACSEC_SECY_ATTR_ES,
+  MACSEC_SECY_ATTR_SCB,
+  MACSEC_SECY_ATTR_PAD,
+  __MACSEC_SECY_ATTR_END,
+  NUM_MACSEC_SECY_ATTR = __MACSEC_SECY_ATTR_END,
+  MACSEC_SECY_ATTR_MAX = __MACSEC_SECY_ATTR_END - 1,
+};
+enum macsec_rxsc_attrs {
+  MACSEC_RXSC_ATTR_UNSPEC,
+  MACSEC_RXSC_ATTR_SCI,
+  MACSEC_RXSC_ATTR_ACTIVE,
+  MACSEC_RXSC_ATTR_SA_LIST,
+  MACSEC_RXSC_ATTR_STATS,
+  MACSEC_RXSC_ATTR_PAD,
+  __MACSEC_RXSC_ATTR_END,
+  NUM_MACSEC_RXSC_ATTR = __MACSEC_RXSC_ATTR_END,
+  MACSEC_RXSC_ATTR_MAX = __MACSEC_RXSC_ATTR_END - 1,
+};
+enum macsec_sa_attrs {
+  MACSEC_SA_ATTR_UNSPEC,
+  MACSEC_SA_ATTR_AN,
+  MACSEC_SA_ATTR_ACTIVE,
+  MACSEC_SA_ATTR_PN,
+  MACSEC_SA_ATTR_KEY,
+  MACSEC_SA_ATTR_KEYID,
+  MACSEC_SA_ATTR_STATS,
+  MACSEC_SA_ATTR_PAD,
+  MACSEC_SA_ATTR_SSCI,
+  MACSEC_SA_ATTR_SALT,
+  __MACSEC_SA_ATTR_END,
+  NUM_MACSEC_SA_ATTR = __MACSEC_SA_ATTR_END,
+  MACSEC_SA_ATTR_MAX = __MACSEC_SA_ATTR_END - 1,
+};
+enum macsec_offload_attrs {
+  MACSEC_OFFLOAD_ATTR_UNSPEC,
+  MACSEC_OFFLOAD_ATTR_TYPE,
+  MACSEC_OFFLOAD_ATTR_PAD,
+  __MACSEC_OFFLOAD_ATTR_END,
+  NUM_MACSEC_OFFLOAD_ATTR = __MACSEC_OFFLOAD_ATTR_END,
+  MACSEC_OFFLOAD_ATTR_MAX = __MACSEC_OFFLOAD_ATTR_END - 1,
+};
+enum macsec_nl_commands {
+  MACSEC_CMD_GET_TXSC,
+  MACSEC_CMD_ADD_RXSC,
+  MACSEC_CMD_DEL_RXSC,
+  MACSEC_CMD_UPD_RXSC,
+  MACSEC_CMD_ADD_TXSA,
+  MACSEC_CMD_DEL_TXSA,
+  MACSEC_CMD_UPD_TXSA,
+  MACSEC_CMD_ADD_RXSA,
+  MACSEC_CMD_DEL_RXSA,
+  MACSEC_CMD_UPD_RXSA,
+  MACSEC_CMD_UPD_OFFLOAD,
+};
+enum macsec_rxsc_stats_attr {
+  MACSEC_RXSC_STATS_ATTR_UNSPEC,
+  MACSEC_RXSC_STATS_ATTR_IN_OCTETS_VALIDATED,
+  MACSEC_RXSC_STATS_ATTR_IN_OCTETS_DECRYPTED,
+  MACSEC_RXSC_STATS_ATTR_IN_PKTS_UNCHECKED,
+  MACSEC_RXSC_STATS_ATTR_IN_PKTS_DELAYED,
+  MACSEC_RXSC_STATS_ATTR_IN_PKTS_OK,
+  MACSEC_RXSC_STATS_ATTR_IN_PKTS_INVALID,
+  MACSEC_RXSC_STATS_ATTR_IN_PKTS_LATE,
+  MACSEC_RXSC_STATS_ATTR_IN_PKTS_NOT_VALID,
+  MACSEC_RXSC_STATS_ATTR_IN_PKTS_NOT_USING_SA,
+  MACSEC_RXSC_STATS_ATTR_IN_PKTS_UNUSED_SA,
+  MACSEC_RXSC_STATS_ATTR_PAD,
+  __MACSEC_RXSC_STATS_ATTR_END,
+  NUM_MACSEC_RXSC_STATS_ATTR = __MACSEC_RXSC_STATS_ATTR_END,
+  MACSEC_RXSC_STATS_ATTR_MAX = __MACSEC_RXSC_STATS_ATTR_END - 1,
+};
+enum macsec_sa_stats_attr {
+  MACSEC_SA_STATS_ATTR_UNSPEC,
+  MACSEC_SA_STATS_ATTR_IN_PKTS_OK,
+  MACSEC_SA_STATS_ATTR_IN_PKTS_INVALID,
+  MACSEC_SA_STATS_ATTR_IN_PKTS_NOT_VALID,
+  MACSEC_SA_STATS_ATTR_IN_PKTS_NOT_USING_SA,
+  MACSEC_SA_STATS_ATTR_IN_PKTS_UNUSED_SA,
+  MACSEC_SA_STATS_ATTR_OUT_PKTS_PROTECTED,
+  MACSEC_SA_STATS_ATTR_OUT_PKTS_ENCRYPTED,
+  __MACSEC_SA_STATS_ATTR_END,
+  NUM_MACSEC_SA_STATS_ATTR = __MACSEC_SA_STATS_ATTR_END,
+  MACSEC_SA_STATS_ATTR_MAX = __MACSEC_SA_STATS_ATTR_END - 1,
+};
+enum macsec_txsc_stats_attr {
+  MACSEC_TXSC_STATS_ATTR_UNSPEC,
+  MACSEC_TXSC_STATS_ATTR_OUT_PKTS_PROTECTED,
+  MACSEC_TXSC_STATS_ATTR_OUT_PKTS_ENCRYPTED,
+  MACSEC_TXSC_STATS_ATTR_OUT_OCTETS_PROTECTED,
+  MACSEC_TXSC_STATS_ATTR_OUT_OCTETS_ENCRYPTED,
+  MACSEC_TXSC_STATS_ATTR_PAD,
+  __MACSEC_TXSC_STATS_ATTR_END,
+  NUM_MACSEC_TXSC_STATS_ATTR = __MACSEC_TXSC_STATS_ATTR_END,
+  MACSEC_TXSC_STATS_ATTR_MAX = __MACSEC_TXSC_STATS_ATTR_END - 1,
+};
+enum macsec_secy_stats_attr {
+  MACSEC_SECY_STATS_ATTR_UNSPEC,
+  MACSEC_SECY_STATS_ATTR_OUT_PKTS_UNTAGGED,
+  MACSEC_SECY_STATS_ATTR_IN_PKTS_UNTAGGED,
+  MACSEC_SECY_STATS_ATTR_OUT_PKTS_TOO_LONG,
+  MACSEC_SECY_STATS_ATTR_IN_PKTS_NO_TAG,
+  MACSEC_SECY_STATS_ATTR_IN_PKTS_BAD_TAG,
+  MACSEC_SECY_STATS_ATTR_IN_PKTS_UNKNOWN_SCI,
+  MACSEC_SECY_STATS_ATTR_IN_PKTS_NO_SCI,
+  MACSEC_SECY_STATS_ATTR_IN_PKTS_OVERRUN,
+  MACSEC_SECY_STATS_ATTR_PAD,
+  __MACSEC_SECY_STATS_ATTR_END,
+  NUM_MACSEC_SECY_STATS_ATTR = __MACSEC_SECY_STATS_ATTR_END,
+  MACSEC_SECY_STATS_ATTR_MAX = __MACSEC_SECY_STATS_ATTR_END - 1,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/if_packet.h b/i686-linux-musl/include/linux/if_packet.h
new file mode 100644
index 0000000..e7e7a33
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_packet.h
@@ -0,0 +1,236 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_IF_PACKET_H
+#define __LINUX_IF_PACKET_H
+#include <asm/byteorder.h>
+#include <linux/types.h>
+struct sockaddr_pkt {
+  unsigned short spkt_family;
+  unsigned char spkt_device[14];
+  __be16 spkt_protocol;
+};
+struct sockaddr_ll {
+  unsigned short sll_family;
+  __be16 sll_protocol;
+  int sll_ifindex;
+  unsigned short sll_hatype;
+  unsigned char sll_pkttype;
+  unsigned char sll_halen;
+  unsigned char sll_addr[8];
+};
+#define PACKET_HOST 0
+#define PACKET_BROADCAST 1
+#define PACKET_MULTICAST 2
+#define PACKET_OTHERHOST 3
+#define PACKET_OUTGOING 4
+#define PACKET_LOOPBACK 5
+#define PACKET_USER 6
+#define PACKET_KERNEL 7
+#define PACKET_FASTROUTE 6
+#define PACKET_ADD_MEMBERSHIP 1
+#define PACKET_DROP_MEMBERSHIP 2
+#define PACKET_RECV_OUTPUT 3
+#define PACKET_RX_RING 5
+#define PACKET_STATISTICS 6
+#define PACKET_COPY_THRESH 7
+#define PACKET_AUXDATA 8
+#define PACKET_ORIGDEV 9
+#define PACKET_VERSION 10
+#define PACKET_HDRLEN 11
+#define PACKET_RESERVE 12
+#define PACKET_TX_RING 13
+#define PACKET_LOSS 14
+#define PACKET_VNET_HDR 15
+#define PACKET_TX_TIMESTAMP 16
+#define PACKET_TIMESTAMP 17
+#define PACKET_FANOUT 18
+#define PACKET_TX_HAS_OFF 19
+#define PACKET_QDISC_BYPASS 20
+#define PACKET_ROLLOVER_STATS 21
+#define PACKET_FANOUT_DATA 22
+#define PACKET_IGNORE_OUTGOING 23
+#define PACKET_FANOUT_HASH 0
+#define PACKET_FANOUT_LB 1
+#define PACKET_FANOUT_CPU 2
+#define PACKET_FANOUT_ROLLOVER 3
+#define PACKET_FANOUT_RND 4
+#define PACKET_FANOUT_QM 5
+#define PACKET_FANOUT_CBPF 6
+#define PACKET_FANOUT_EBPF 7
+#define PACKET_FANOUT_FLAG_ROLLOVER 0x1000
+#define PACKET_FANOUT_FLAG_UNIQUEID 0x2000
+#define PACKET_FANOUT_FLAG_DEFRAG 0x8000
+struct tpacket_stats {
+  unsigned int tp_packets;
+  unsigned int tp_drops;
+};
+struct tpacket_stats_v3 {
+  unsigned int tp_packets;
+  unsigned int tp_drops;
+  unsigned int tp_freeze_q_cnt;
+};
+struct tpacket_rollover_stats {
+  __aligned_u64 tp_all;
+  __aligned_u64 tp_huge;
+  __aligned_u64 tp_failed;
+};
+union tpacket_stats_u {
+  struct tpacket_stats stats1;
+  struct tpacket_stats_v3 stats3;
+};
+struct tpacket_auxdata {
+  __u32 tp_status;
+  __u32 tp_len;
+  __u32 tp_snaplen;
+  __u16 tp_mac;
+  __u16 tp_net;
+  __u16 tp_vlan_tci;
+  __u16 tp_vlan_tpid;
+};
+#define TP_STATUS_KERNEL 0
+#define TP_STATUS_USER (1 << 0)
+#define TP_STATUS_COPY (1 << 1)
+#define TP_STATUS_LOSING (1 << 2)
+#define TP_STATUS_CSUMNOTREADY (1 << 3)
+#define TP_STATUS_VLAN_VALID (1 << 4)
+#define TP_STATUS_BLK_TMO (1 << 5)
+#define TP_STATUS_VLAN_TPID_VALID (1 << 6)
+#define TP_STATUS_CSUM_VALID (1 << 7)
+#define TP_STATUS_AVAILABLE 0
+#define TP_STATUS_SEND_REQUEST (1 << 0)
+#define TP_STATUS_SENDING (1 << 1)
+#define TP_STATUS_WRONG_FORMAT (1 << 2)
+#define TP_STATUS_TS_SOFTWARE (1 << 29)
+#define TP_STATUS_TS_SYS_HARDWARE (1 << 30)
+#define TP_STATUS_TS_RAW_HARDWARE (1U << 31)
+#define TP_FT_REQ_FILL_RXHASH 0x1
+struct tpacket_hdr {
+  unsigned long tp_status;
+  unsigned int tp_len;
+  unsigned int tp_snaplen;
+  unsigned short tp_mac;
+  unsigned short tp_net;
+  unsigned int tp_sec;
+  unsigned int tp_usec;
+};
+#define TPACKET_ALIGNMENT 16
+#define TPACKET_ALIGN(x) (((x) + TPACKET_ALIGNMENT - 1) & ~(TPACKET_ALIGNMENT - 1))
+#define TPACKET_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket_hdr)) + sizeof(struct sockaddr_ll))
+struct tpacket2_hdr {
+  __u32 tp_status;
+  __u32 tp_len;
+  __u32 tp_snaplen;
+  __u16 tp_mac;
+  __u16 tp_net;
+  __u32 tp_sec;
+  __u32 tp_nsec;
+  __u16 tp_vlan_tci;
+  __u16 tp_vlan_tpid;
+  __u8 tp_padding[4];
+};
+struct tpacket_hdr_variant1 {
+  __u32 tp_rxhash;
+  __u32 tp_vlan_tci;
+  __u16 tp_vlan_tpid;
+  __u16 tp_padding;
+};
+struct tpacket3_hdr {
+  __u32 tp_next_offset;
+  __u32 tp_sec;
+  __u32 tp_nsec;
+  __u32 tp_snaplen;
+  __u32 tp_len;
+  __u32 tp_status;
+  __u16 tp_mac;
+  __u16 tp_net;
+  union {
+    struct tpacket_hdr_variant1 hv1;
+  };
+  __u8 tp_padding[8];
+};
+struct tpacket_bd_ts {
+  unsigned int ts_sec;
+  union {
+    unsigned int ts_usec;
+    unsigned int ts_nsec;
+  };
+};
+struct tpacket_hdr_v1 {
+  __u32 block_status;
+  __u32 num_pkts;
+  __u32 offset_to_first_pkt;
+  __u32 blk_len;
+  __aligned_u64 seq_num;
+  struct tpacket_bd_ts ts_first_pkt, ts_last_pkt;
+};
+union tpacket_bd_header_u {
+  struct tpacket_hdr_v1 bh1;
+};
+struct tpacket_block_desc {
+  __u32 version;
+  __u32 offset_to_priv;
+  union tpacket_bd_header_u hdr;
+};
+#define TPACKET2_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket2_hdr)) + sizeof(struct sockaddr_ll))
+#define TPACKET3_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket3_hdr)) + sizeof(struct sockaddr_ll))
+enum tpacket_versions {
+  TPACKET_V1,
+  TPACKET_V2,
+  TPACKET_V3
+};
+struct tpacket_req {
+  unsigned int tp_block_size;
+  unsigned int tp_block_nr;
+  unsigned int tp_frame_size;
+  unsigned int tp_frame_nr;
+};
+struct tpacket_req3 {
+  unsigned int tp_block_size;
+  unsigned int tp_block_nr;
+  unsigned int tp_frame_size;
+  unsigned int tp_frame_nr;
+  unsigned int tp_retire_blk_tov;
+  unsigned int tp_sizeof_priv;
+  unsigned int tp_feature_req_word;
+};
+union tpacket_req_u {
+  struct tpacket_req req;
+  struct tpacket_req3 req3;
+};
+struct packet_mreq {
+  int mr_ifindex;
+  unsigned short mr_type;
+  unsigned short mr_alen;
+  unsigned char mr_address[8];
+};
+struct fanout_args {
+#ifdef __LITTLE_ENDIAN_BITFIELD
+  __u16 id;
+  __u16 type_flags;
+#else
+  __u16 type_flags;
+  __u16 id;
+#endif
+  __u32 max_num_members;
+};
+#define PACKET_MR_MULTICAST 0
+#define PACKET_MR_PROMISC 1
+#define PACKET_MR_ALLMULTI 2
+#define PACKET_MR_UNICAST 3
+#endif
diff --git a/i686-linux-musl/include/linux/if_phonet.h b/i686-linux-musl/include/linux/if_phonet.h
new file mode 100644
index 0000000..058d0d9
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_phonet.h
@@ -0,0 +1,24 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPILINUX_IF_PHONET_H
+#define _UAPILINUX_IF_PHONET_H
+#define PHONET_MIN_MTU 6
+#define PHONET_MAX_MTU 65541
+#define PHONET_DEV_MTU PHONET_MAX_MTU
+#endif
diff --git a/i686-linux-musl/include/linux/if_plip.h b/i686-linux-musl/include/linux/if_plip.h
new file mode 100644
index 0000000..4cd6beb
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_plip.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_IF_PLIP_H
+#define _LINUX_IF_PLIP_H
+#include <linux/sockios.h>
+#define SIOCDEVPLIP SIOCDEVPRIVATE
+struct plipconf {
+  unsigned short pcmd;
+  unsigned long nibble;
+  unsigned long trigger;
+};
+#define PLIP_GET_TIMEOUT 0x1
+#define PLIP_SET_TIMEOUT 0x2
+#endif
diff --git a/i686-linux-musl/include/linux/if_ppp.h b/i686-linux-musl/include/linux/if_ppp.h
new file mode 100644
index 0000000..68f3ce5
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_ppp.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <linux/ppp-ioctl.h>
diff --git a/i686-linux-musl/include/linux/if_pppol2tp.h b/i686-linux-musl/include/linux/if_pppol2tp.h
new file mode 100644
index 0000000..1ca3238
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_pppol2tp.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_IF_PPPOL2TP_H
+#define _UAPI__LINUX_IF_PPPOL2TP_H
+#include <linux/types.h>
+#include <linux/in.h>
+#include <linux/in6.h>
+#include <linux/l2tp.h>
+struct pppol2tp_addr {
+  __kernel_pid_t pid;
+  int fd;
+  struct sockaddr_in addr;
+  __u16 s_tunnel, s_session;
+  __u16 d_tunnel, d_session;
+};
+struct pppol2tpin6_addr {
+  __kernel_pid_t pid;
+  int fd;
+  __u16 s_tunnel, s_session;
+  __u16 d_tunnel, d_session;
+  struct sockaddr_in6 addr;
+};
+struct pppol2tpv3_addr {
+  __kernel_pid_t pid;
+  int fd;
+  struct sockaddr_in addr;
+  __u32 s_tunnel, s_session;
+  __u32 d_tunnel, d_session;
+};
+struct pppol2tpv3in6_addr {
+  __kernel_pid_t pid;
+  int fd;
+  __u32 s_tunnel, s_session;
+  __u32 d_tunnel, d_session;
+  struct sockaddr_in6 addr;
+};
+enum {
+  PPPOL2TP_SO_DEBUG = 1,
+  PPPOL2TP_SO_RECVSEQ = 2,
+  PPPOL2TP_SO_SENDSEQ = 3,
+  PPPOL2TP_SO_LNSMODE = 4,
+  PPPOL2TP_SO_REORDERTO = 5,
+};
+enum {
+  PPPOL2TP_MSG_DEBUG = L2TP_MSG_DEBUG,
+  PPPOL2TP_MSG_CONTROL = L2TP_MSG_CONTROL,
+  PPPOL2TP_MSG_SEQ = L2TP_MSG_SEQ,
+  PPPOL2TP_MSG_DATA = L2TP_MSG_DATA,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/if_pppox.h b/i686-linux-musl/include/linux/if_pppox.h
new file mode 100644
index 0000000..40d25e8
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_pppox.h
@@ -0,0 +1,113 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_IF_PPPOX_H
+#define _UAPI__LINUX_IF_PPPOX_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+#include <linux/socket.h>
+#include <linux/if.h>
+#include <linux/if_ether.h>
+#include <linux/if_pppol2tp.h>
+#include <linux/in.h>
+#include <linux/in6.h>
+#ifndef AF_PPPOX
+#define AF_PPPOX 24
+#define PF_PPPOX AF_PPPOX
+#endif
+typedef __be16 sid_t;
+struct pppoe_addr {
+  sid_t sid;
+  unsigned char remote[ETH_ALEN];
+  char dev[IFNAMSIZ];
+};
+struct pptp_addr {
+  __u16 call_id;
+  struct in_addr sin_addr;
+};
+#define PX_PROTO_OE 0
+#define PX_PROTO_OL2TP 1
+#define PX_PROTO_PPTP 2
+#define PX_MAX_PROTO 3
+struct sockaddr_pppox {
+  __kernel_sa_family_t sa_family;
+  unsigned int sa_protocol;
+  union {
+    struct pppoe_addr pppoe;
+    struct pptp_addr pptp;
+  } sa_addr;
+} __packed;
+struct sockaddr_pppol2tp {
+  __kernel_sa_family_t sa_family;
+  unsigned int sa_protocol;
+  struct pppol2tp_addr pppol2tp;
+} __packed;
+struct sockaddr_pppol2tpin6 {
+  __kernel_sa_family_t sa_family;
+  unsigned int sa_protocol;
+  struct pppol2tpin6_addr pppol2tp;
+} __packed;
+struct sockaddr_pppol2tpv3 {
+  __kernel_sa_family_t sa_family;
+  unsigned int sa_protocol;
+  struct pppol2tpv3_addr pppol2tp;
+} __packed;
+struct sockaddr_pppol2tpv3in6 {
+  __kernel_sa_family_t sa_family;
+  unsigned int sa_protocol;
+  struct pppol2tpv3in6_addr pppol2tp;
+} __packed;
+#define PPPOEIOCSFWD _IOW(0xB1, 0, size_t)
+#define PPPOEIOCDFWD _IO(0xB1, 1)
+#define PADI_CODE 0x09
+#define PADO_CODE 0x07
+#define PADR_CODE 0x19
+#define PADS_CODE 0x65
+#define PADT_CODE 0xa7
+struct pppoe_tag {
+  __be16 tag_type;
+  __be16 tag_len;
+  char tag_data[0];
+} __attribute__((packed));
+#define PTT_EOL __cpu_to_be16(0x0000)
+#define PTT_SRV_NAME __cpu_to_be16(0x0101)
+#define PTT_AC_NAME __cpu_to_be16(0x0102)
+#define PTT_HOST_UNIQ __cpu_to_be16(0x0103)
+#define PTT_AC_COOKIE __cpu_to_be16(0x0104)
+#define PTT_VENDOR __cpu_to_be16(0x0105)
+#define PTT_RELAY_SID __cpu_to_be16(0x0110)
+#define PTT_SRV_ERR __cpu_to_be16(0x0201)
+#define PTT_SYS_ERR __cpu_to_be16(0x0202)
+#define PTT_GEN_ERR __cpu_to_be16(0x0203)
+struct pppoe_hdr {
+#ifdef __LITTLE_ENDIAN_BITFIELD
+  __u8 type : 4;
+  __u8 ver : 4;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+  __u8 ver : 4;
+  __u8 type : 4;
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif
+  __u8 code;
+  __be16 sid;
+  __be16 length;
+  struct pppoe_tag tag[0];
+} __packed;
+#define PPPOE_SES_HLEN 8
+#endif
diff --git a/i686-linux-musl/include/linux/if_slip.h b/i686-linux-musl/include/linux/if_slip.h
new file mode 100644
index 0000000..845fec3
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_slip.h
@@ -0,0 +1,32 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_SLIP_H
+#define __LINUX_SLIP_H
+#define SL_MODE_SLIP 0
+#define SL_MODE_CSLIP 1
+#define SL_MODE_KISS 4
+#define SL_OPT_SIXBIT 2
+#define SL_OPT_ADAPTIVE 8
+#define SIOCSKEEPALIVE (SIOCDEVPRIVATE)
+#define SIOCGKEEPALIVE (SIOCDEVPRIVATE + 1)
+#define SIOCSOUTFILL (SIOCDEVPRIVATE + 2)
+#define SIOCGOUTFILL (SIOCDEVPRIVATE + 3)
+#define SIOCSLEASE (SIOCDEVPRIVATE + 4)
+#define SIOCGLEASE (SIOCDEVPRIVATE + 5)
+#endif
diff --git a/i686-linux-musl/include/linux/if_team.h b/i686-linux-musl/include/linux/if_team.h
new file mode 100644
index 0000000..2f591e0
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_team.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IF_TEAM_H_
+#define _UAPI_LINUX_IF_TEAM_H_
+#define TEAM_STRING_MAX_LEN 32
+enum {
+  TEAM_CMD_NOOP,
+  TEAM_CMD_OPTIONS_SET,
+  TEAM_CMD_OPTIONS_GET,
+  TEAM_CMD_PORT_LIST_GET,
+  __TEAM_CMD_MAX,
+  TEAM_CMD_MAX = (__TEAM_CMD_MAX - 1),
+};
+enum {
+  TEAM_ATTR_UNSPEC,
+  TEAM_ATTR_TEAM_IFINDEX,
+  TEAM_ATTR_LIST_OPTION,
+  TEAM_ATTR_LIST_PORT,
+  __TEAM_ATTR_MAX,
+  TEAM_ATTR_MAX = __TEAM_ATTR_MAX - 1,
+};
+enum {
+  TEAM_ATTR_ITEM_OPTION_UNSPEC,
+  TEAM_ATTR_ITEM_OPTION,
+  __TEAM_ATTR_ITEM_OPTION_MAX,
+  TEAM_ATTR_ITEM_OPTION_MAX = __TEAM_ATTR_ITEM_OPTION_MAX - 1,
+};
+enum {
+  TEAM_ATTR_OPTION_UNSPEC,
+  TEAM_ATTR_OPTION_NAME,
+  TEAM_ATTR_OPTION_CHANGED,
+  TEAM_ATTR_OPTION_TYPE,
+  TEAM_ATTR_OPTION_DATA,
+  TEAM_ATTR_OPTION_REMOVED,
+  TEAM_ATTR_OPTION_PORT_IFINDEX,
+  TEAM_ATTR_OPTION_ARRAY_INDEX,
+  __TEAM_ATTR_OPTION_MAX,
+  TEAM_ATTR_OPTION_MAX = __TEAM_ATTR_OPTION_MAX - 1,
+};
+enum {
+  TEAM_ATTR_ITEM_PORT_UNSPEC,
+  TEAM_ATTR_ITEM_PORT,
+  __TEAM_ATTR_ITEM_PORT_MAX,
+  TEAM_ATTR_ITEM_PORT_MAX = __TEAM_ATTR_ITEM_PORT_MAX - 1,
+};
+enum {
+  TEAM_ATTR_PORT_UNSPEC,
+  TEAM_ATTR_PORT_IFINDEX,
+  TEAM_ATTR_PORT_CHANGED,
+  TEAM_ATTR_PORT_LINKUP,
+  TEAM_ATTR_PORT_SPEED,
+  TEAM_ATTR_PORT_DUPLEX,
+  TEAM_ATTR_PORT_REMOVED,
+  __TEAM_ATTR_PORT_MAX,
+  TEAM_ATTR_PORT_MAX = __TEAM_ATTR_PORT_MAX - 1,
+};
+#define TEAM_GENL_NAME "team"
+#define TEAM_GENL_VERSION 0x1
+#define TEAM_GENL_CHANGE_EVENT_MC_GRP_NAME "change_event"
+#endif
diff --git a/i686-linux-musl/include/linux/if_tun.h b/i686-linux-musl/include/linux/if_tun.h
new file mode 100644
index 0000000..d1a8f9e
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_tun.h
@@ -0,0 +1,86 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__IF_TUN_H
+#define _UAPI__IF_TUN_H
+#include <linux/types.h>
+#include <linux/if_ether.h>
+#include <linux/filter.h>
+#define TUN_READQ_SIZE 500
+#define TUN_TUN_DEV IFF_TUN
+#define TUN_TAP_DEV IFF_TAP
+#define TUN_TYPE_MASK 0x000f
+#define TUNSETNOCSUM _IOW('T', 200, int)
+#define TUNSETDEBUG _IOW('T', 201, int)
+#define TUNSETIFF _IOW('T', 202, int)
+#define TUNSETPERSIST _IOW('T', 203, int)
+#define TUNSETOWNER _IOW('T', 204, int)
+#define TUNSETLINK _IOW('T', 205, int)
+#define TUNSETGROUP _IOW('T', 206, int)
+#define TUNGETFEATURES _IOR('T', 207, unsigned int)
+#define TUNSETOFFLOAD _IOW('T', 208, unsigned int)
+#define TUNSETTXFILTER _IOW('T', 209, unsigned int)
+#define TUNGETIFF _IOR('T', 210, unsigned int)
+#define TUNGETSNDBUF _IOR('T', 211, int)
+#define TUNSETSNDBUF _IOW('T', 212, int)
+#define TUNATTACHFILTER _IOW('T', 213, struct sock_fprog)
+#define TUNDETACHFILTER _IOW('T', 214, struct sock_fprog)
+#define TUNGETVNETHDRSZ _IOR('T', 215, int)
+#define TUNSETVNETHDRSZ _IOW('T', 216, int)
+#define TUNSETQUEUE _IOW('T', 217, int)
+#define TUNSETIFINDEX _IOW('T', 218, unsigned int)
+#define TUNGETFILTER _IOR('T', 219, struct sock_fprog)
+#define TUNSETVNETLE _IOW('T', 220, int)
+#define TUNGETVNETLE _IOR('T', 221, int)
+#define TUNSETVNETBE _IOW('T', 222, int)
+#define TUNGETVNETBE _IOR('T', 223, int)
+#define TUNSETSTEERINGEBPF _IOR('T', 224, int)
+#define TUNSETFILTEREBPF _IOR('T', 225, int)
+#define TUNSETCARRIER _IOW('T', 226, int)
+#define TUNGETDEVNETNS _IO('T', 227)
+#define IFF_TUN 0x0001
+#define IFF_TAP 0x0002
+#define IFF_NAPI 0x0010
+#define IFF_NAPI_FRAGS 0x0020
+#define IFF_NO_PI 0x1000
+#define IFF_ONE_QUEUE 0x2000
+#define IFF_VNET_HDR 0x4000
+#define IFF_TUN_EXCL 0x8000
+#define IFF_MULTI_QUEUE 0x0100
+#define IFF_ATTACH_QUEUE 0x0200
+#define IFF_DETACH_QUEUE 0x0400
+#define IFF_PERSIST 0x0800
+#define IFF_NOFILTER 0x1000
+#define TUN_TX_TIMESTAMP 1
+#define TUN_F_CSUM 0x01
+#define TUN_F_TSO4 0x02
+#define TUN_F_TSO6 0x04
+#define TUN_F_TSO_ECN 0x08
+#define TUN_F_UFO 0x10
+#define TUN_PKT_STRIP 0x0001
+struct tun_pi {
+  __u16 flags;
+  __be16 proto;
+};
+#define TUN_FLT_ALLMULTI 0x0001
+struct tun_filter {
+  __u16 flags;
+  __u16 count;
+  __u8 addr[0][ETH_ALEN];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/if_tunnel.h b/i686-linux-musl/include/linux/if_tunnel.h
new file mode 100644
index 0000000..8e1847f
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_tunnel.h
@@ -0,0 +1,173 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_IF_TUNNEL_H_
+#define _UAPI_IF_TUNNEL_H_
+#include <linux/types.h>
+#include <linux/if.h>
+#include <linux/ip.h>
+#include <linux/in6.h>
+#include <asm/byteorder.h>
+#define SIOCGETTUNNEL (SIOCDEVPRIVATE + 0)
+#define SIOCADDTUNNEL (SIOCDEVPRIVATE + 1)
+#define SIOCDELTUNNEL (SIOCDEVPRIVATE + 2)
+#define SIOCCHGTUNNEL (SIOCDEVPRIVATE + 3)
+#define SIOCGETPRL (SIOCDEVPRIVATE + 4)
+#define SIOCADDPRL (SIOCDEVPRIVATE + 5)
+#define SIOCDELPRL (SIOCDEVPRIVATE + 6)
+#define SIOCCHGPRL (SIOCDEVPRIVATE + 7)
+#define SIOCGET6RD (SIOCDEVPRIVATE + 8)
+#define SIOCADD6RD (SIOCDEVPRIVATE + 9)
+#define SIOCDEL6RD (SIOCDEVPRIVATE + 10)
+#define SIOCCHG6RD (SIOCDEVPRIVATE + 11)
+#define GRE_CSUM __cpu_to_be16(0x8000)
+#define GRE_ROUTING __cpu_to_be16(0x4000)
+#define GRE_KEY __cpu_to_be16(0x2000)
+#define GRE_SEQ __cpu_to_be16(0x1000)
+#define GRE_STRICT __cpu_to_be16(0x0800)
+#define GRE_REC __cpu_to_be16(0x0700)
+#define GRE_ACK __cpu_to_be16(0x0080)
+#define GRE_FLAGS __cpu_to_be16(0x0078)
+#define GRE_VERSION __cpu_to_be16(0x0007)
+#define GRE_IS_CSUM(f) ((f) & GRE_CSUM)
+#define GRE_IS_ROUTING(f) ((f) & GRE_ROUTING)
+#define GRE_IS_KEY(f) ((f) & GRE_KEY)
+#define GRE_IS_SEQ(f) ((f) & GRE_SEQ)
+#define GRE_IS_STRICT(f) ((f) & GRE_STRICT)
+#define GRE_IS_REC(f) ((f) & GRE_REC)
+#define GRE_IS_ACK(f) ((f) & GRE_ACK)
+#define GRE_VERSION_0 __cpu_to_be16(0x0000)
+#define GRE_VERSION_1 __cpu_to_be16(0x0001)
+#define GRE_PROTO_PPP __cpu_to_be16(0x880b)
+#define GRE_PPTP_KEY_MASK __cpu_to_be32(0xffff)
+struct ip_tunnel_parm {
+  char name[IFNAMSIZ];
+  int link;
+  __be16 i_flags;
+  __be16 o_flags;
+  __be32 i_key;
+  __be32 o_key;
+  struct iphdr iph;
+};
+enum {
+  IFLA_IPTUN_UNSPEC,
+  IFLA_IPTUN_LINK,
+  IFLA_IPTUN_LOCAL,
+  IFLA_IPTUN_REMOTE,
+  IFLA_IPTUN_TTL,
+  IFLA_IPTUN_TOS,
+  IFLA_IPTUN_ENCAP_LIMIT,
+  IFLA_IPTUN_FLOWINFO,
+  IFLA_IPTUN_FLAGS,
+  IFLA_IPTUN_PROTO,
+  IFLA_IPTUN_PMTUDISC,
+  IFLA_IPTUN_6RD_PREFIX,
+  IFLA_IPTUN_6RD_RELAY_PREFIX,
+  IFLA_IPTUN_6RD_PREFIXLEN,
+  IFLA_IPTUN_6RD_RELAY_PREFIXLEN,
+  IFLA_IPTUN_ENCAP_TYPE,
+  IFLA_IPTUN_ENCAP_FLAGS,
+  IFLA_IPTUN_ENCAP_SPORT,
+  IFLA_IPTUN_ENCAP_DPORT,
+  IFLA_IPTUN_COLLECT_METADATA,
+  IFLA_IPTUN_FWMARK,
+  __IFLA_IPTUN_MAX,
+};
+#define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1)
+enum tunnel_encap_types {
+  TUNNEL_ENCAP_NONE,
+  TUNNEL_ENCAP_FOU,
+  TUNNEL_ENCAP_GUE,
+  TUNNEL_ENCAP_MPLS,
+};
+#define TUNNEL_ENCAP_FLAG_CSUM (1 << 0)
+#define TUNNEL_ENCAP_FLAG_CSUM6 (1 << 1)
+#define TUNNEL_ENCAP_FLAG_REMCSUM (1 << 2)
+#define SIT_ISATAP 0x0001
+struct ip_tunnel_prl {
+  __be32 addr;
+  __u16 flags;
+  __u16 __reserved;
+  __u32 datalen;
+  __u32 __reserved2;
+};
+#define PRL_DEFAULT 0x0001
+struct ip_tunnel_6rd {
+  struct in6_addr prefix;
+  __be32 relay_prefix;
+  __u16 prefixlen;
+  __u16 relay_prefixlen;
+};
+enum {
+  IFLA_GRE_UNSPEC,
+  IFLA_GRE_LINK,
+  IFLA_GRE_IFLAGS,
+  IFLA_GRE_OFLAGS,
+  IFLA_GRE_IKEY,
+  IFLA_GRE_OKEY,
+  IFLA_GRE_LOCAL,
+  IFLA_GRE_REMOTE,
+  IFLA_GRE_TTL,
+  IFLA_GRE_TOS,
+  IFLA_GRE_PMTUDISC,
+  IFLA_GRE_ENCAP_LIMIT,
+  IFLA_GRE_FLOWINFO,
+  IFLA_GRE_FLAGS,
+  IFLA_GRE_ENCAP_TYPE,
+  IFLA_GRE_ENCAP_FLAGS,
+  IFLA_GRE_ENCAP_SPORT,
+  IFLA_GRE_ENCAP_DPORT,
+  IFLA_GRE_COLLECT_METADATA,
+  IFLA_GRE_IGNORE_DF,
+  IFLA_GRE_FWMARK,
+  IFLA_GRE_ERSPAN_INDEX,
+  IFLA_GRE_ERSPAN_VER,
+  IFLA_GRE_ERSPAN_DIR,
+  IFLA_GRE_ERSPAN_HWID,
+  __IFLA_GRE_MAX,
+};
+#define IFLA_GRE_MAX (__IFLA_GRE_MAX - 1)
+#define VTI_ISVTI ((__force __be16) 0x0001)
+enum {
+  IFLA_VTI_UNSPEC,
+  IFLA_VTI_LINK,
+  IFLA_VTI_IKEY,
+  IFLA_VTI_OKEY,
+  IFLA_VTI_LOCAL,
+  IFLA_VTI_REMOTE,
+  IFLA_VTI_FWMARK,
+  __IFLA_VTI_MAX,
+};
+#define IFLA_VTI_MAX (__IFLA_VTI_MAX - 1)
+#define TUNNEL_CSUM __cpu_to_be16(0x01)
+#define TUNNEL_ROUTING __cpu_to_be16(0x02)
+#define TUNNEL_KEY __cpu_to_be16(0x04)
+#define TUNNEL_SEQ __cpu_to_be16(0x08)
+#define TUNNEL_STRICT __cpu_to_be16(0x10)
+#define TUNNEL_REC __cpu_to_be16(0x20)
+#define TUNNEL_VERSION __cpu_to_be16(0x40)
+#define TUNNEL_NO_KEY __cpu_to_be16(0x80)
+#define TUNNEL_DONT_FRAGMENT __cpu_to_be16(0x0100)
+#define TUNNEL_OAM __cpu_to_be16(0x0200)
+#define TUNNEL_CRIT_OPT __cpu_to_be16(0x0400)
+#define TUNNEL_GENEVE_OPT __cpu_to_be16(0x0800)
+#define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000)
+#define TUNNEL_NOCACHE __cpu_to_be16(0x2000)
+#define TUNNEL_ERSPAN_OPT __cpu_to_be16(0x4000)
+#define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT)
+#endif
diff --git a/i686-linux-musl/include/linux/if_vlan.h b/i686-linux-musl/include/linux/if_vlan.h
new file mode 100644
index 0000000..8ca8900
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_vlan.h
@@ -0,0 +1,60 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IF_VLAN_H_
+#define _UAPI_LINUX_IF_VLAN_H_
+enum vlan_ioctl_cmds {
+  ADD_VLAN_CMD,
+  DEL_VLAN_CMD,
+  SET_VLAN_INGRESS_PRIORITY_CMD,
+  SET_VLAN_EGRESS_PRIORITY_CMD,
+  GET_VLAN_INGRESS_PRIORITY_CMD,
+  GET_VLAN_EGRESS_PRIORITY_CMD,
+  SET_VLAN_NAME_TYPE_CMD,
+  SET_VLAN_FLAG_CMD,
+  GET_VLAN_REALDEV_NAME_CMD,
+  GET_VLAN_VID_CMD
+};
+enum vlan_flags {
+  VLAN_FLAG_REORDER_HDR = 0x1,
+  VLAN_FLAG_GVRP = 0x2,
+  VLAN_FLAG_LOOSE_BINDING = 0x4,
+  VLAN_FLAG_MVRP = 0x8,
+  VLAN_FLAG_BRIDGE_BINDING = 0x10,
+};
+enum vlan_name_types {
+  VLAN_NAME_TYPE_PLUS_VID,
+  VLAN_NAME_TYPE_RAW_PLUS_VID,
+  VLAN_NAME_TYPE_PLUS_VID_NO_PAD,
+  VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD,
+  VLAN_NAME_TYPE_HIGHEST
+};
+struct vlan_ioctl_args {
+  int cmd;
+  char device1[24];
+  union {
+    char device2[24];
+    int VID;
+    unsigned int skb_priority;
+    unsigned int name_type;
+    unsigned int bind_type;
+    unsigned int flag;
+  } u;
+  short vlan_qos;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/if_x25.h b/i686-linux-musl/include/linux/if_x25.h
new file mode 100644
index 0000000..e266f5e
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_x25.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IF_X25_H
+#define _IF_X25_H
+#include <linux/types.h>
+#define X25_IFACE_DATA 0x00
+#define X25_IFACE_CONNECT 0x01
+#define X25_IFACE_DISCONNECT 0x02
+#define X25_IFACE_PARAMS 0x03
+#endif
diff --git a/i686-linux-musl/include/linux/if_xdp.h b/i686-linux-musl/include/linux/if_xdp.h
new file mode 100644
index 0000000..d2b6bfd
--- /dev/null
+++ b/i686-linux-musl/include/linux/if_xdp.h
@@ -0,0 +1,85 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_IF_XDP_H
+#define _LINUX_IF_XDP_H
+#include <linux/types.h>
+#define XDP_SHARED_UMEM (1 << 0)
+#define XDP_COPY (1 << 1)
+#define XDP_ZEROCOPY (1 << 2)
+#define XDP_USE_NEED_WAKEUP (1 << 3)
+#define XDP_UMEM_UNALIGNED_CHUNK_FLAG (1 << 0)
+struct sockaddr_xdp {
+  __u16 sxdp_family;
+  __u16 sxdp_flags;
+  __u32 sxdp_ifindex;
+  __u32 sxdp_queue_id;
+  __u32 sxdp_shared_umem_fd;
+};
+#define XDP_RING_NEED_WAKEUP (1 << 0)
+struct xdp_ring_offset {
+  __u64 producer;
+  __u64 consumer;
+  __u64 desc;
+  __u64 flags;
+};
+struct xdp_mmap_offsets {
+  struct xdp_ring_offset rx;
+  struct xdp_ring_offset tx;
+  struct xdp_ring_offset fr;
+  struct xdp_ring_offset cr;
+};
+#define XDP_MMAP_OFFSETS 1
+#define XDP_RX_RING 2
+#define XDP_TX_RING 3
+#define XDP_UMEM_REG 4
+#define XDP_UMEM_FILL_RING 5
+#define XDP_UMEM_COMPLETION_RING 6
+#define XDP_STATISTICS 7
+#define XDP_OPTIONS 8
+struct xdp_umem_reg {
+  __u64 addr;
+  __u64 len;
+  __u32 chunk_size;
+  __u32 headroom;
+  __u32 flags;
+};
+struct xdp_statistics {
+  __u64 rx_dropped;
+  __u64 rx_invalid_descs;
+  __u64 tx_invalid_descs;
+  __u64 rx_ring_full;
+  __u64 rx_fill_ring_empty_descs;
+  __u64 tx_ring_empty_descs;
+};
+struct xdp_options {
+  __u32 flags;
+};
+#define XDP_OPTIONS_ZEROCOPY (1 << 0)
+#define XDP_PGOFF_RX_RING 0
+#define XDP_PGOFF_TX_RING 0x80000000
+#define XDP_UMEM_PGOFF_FILL_RING 0x100000000ULL
+#define XDP_UMEM_PGOFF_COMPLETION_RING 0x180000000ULL
+#define XSK_UNALIGNED_BUF_OFFSET_SHIFT 48
+#define XSK_UNALIGNED_BUF_ADDR_MASK ((1ULL << XSK_UNALIGNED_BUF_OFFSET_SHIFT) - 1)
+struct xdp_desc {
+  __u64 addr;
+  __u32 len;
+  __u32 options;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/ife.h b/i686-linux-musl/include/linux/ife.h
new file mode 100644
index 0000000..0cfc583
--- /dev/null
+++ b/i686-linux-musl/include/linux/ife.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_IFE_H
+#define __UAPI_IFE_H
+#define IFE_METAHDRLEN 2
+enum {
+  IFE_META_SKBMARK = 1,
+  IFE_META_HASHID,
+  IFE_META_PRIO,
+  IFE_META_QMAP,
+  IFE_META_TCINDEX,
+  __IFE_META_MAX
+};
+#define IFE_META_MAX (__IFE_META_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/igmp.h b/i686-linux-musl/include/linux/igmp.h
new file mode 100644
index 0000000..885b0f8
--- /dev/null
+++ b/i686-linux-musl/include/linux/igmp.h
@@ -0,0 +1,91 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IGMP_H
+#define _UAPI_LINUX_IGMP_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+struct igmphdr {
+  __u8 type;
+  __u8 code;
+  __sum16 csum;
+  __be32 group;
+};
+#define IGMPV3_MODE_IS_INCLUDE 1
+#define IGMPV3_MODE_IS_EXCLUDE 2
+#define IGMPV3_CHANGE_TO_INCLUDE 3
+#define IGMPV3_CHANGE_TO_EXCLUDE 4
+#define IGMPV3_ALLOW_NEW_SOURCES 5
+#define IGMPV3_BLOCK_OLD_SOURCES 6
+struct igmpv3_grec {
+  __u8 grec_type;
+  __u8 grec_auxwords;
+  __be16 grec_nsrcs;
+  __be32 grec_mca;
+  __be32 grec_src[0];
+};
+struct igmpv3_report {
+  __u8 type;
+  __u8 resv1;
+  __sum16 csum;
+  __be16 resv2;
+  __be16 ngrec;
+  struct igmpv3_grec grec[0];
+};
+struct igmpv3_query {
+  __u8 type;
+  __u8 code;
+  __sum16 csum;
+  __be32 group;
+#ifdef __LITTLE_ENDIAN_BITFIELD
+  __u8 qrv : 3, suppress : 1, resv : 4;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+  __u8 resv : 4, suppress : 1, qrv : 3;
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif
+  __u8 qqic;
+  __be16 nsrcs;
+  __be32 srcs[0];
+};
+#define IGMP_HOST_MEMBERSHIP_QUERY 0x11
+#define IGMP_HOST_MEMBERSHIP_REPORT 0x12
+#define IGMP_DVMRP 0x13
+#define IGMP_PIM 0x14
+#define IGMP_TRACE 0x15
+#define IGMPV2_HOST_MEMBERSHIP_REPORT 0x16
+#define IGMP_HOST_LEAVE_MESSAGE 0x17
+#define IGMPV3_HOST_MEMBERSHIP_REPORT 0x22
+#define IGMP_MTRACE_RESP 0x1e
+#define IGMP_MTRACE 0x1f
+#define IGMP_MRDISC_ADV 0x30
+#define IGMP_DELAYING_MEMBER 0x01
+#define IGMP_IDLE_MEMBER 0x02
+#define IGMP_LAZY_MEMBER 0x03
+#define IGMP_SLEEPING_MEMBER 0x04
+#define IGMP_AWAKENING_MEMBER 0x05
+#define IGMP_MINLEN 8
+#define IGMP_MAX_HOST_REPORT_DELAY 10
+#define IGMP_TIMER_SCALE 10
+#define IGMP_AGE_THRESHOLD 400
+#define IGMP_ALL_HOSTS htonl(0xE0000001L)
+#define IGMP_ALL_ROUTER htonl(0xE0000002L)
+#define IGMPV3_ALL_MCR htonl(0xE0000016L)
+#define IGMP_LOCAL_GROUP htonl(0xE0000000L)
+#define IGMP_LOCAL_GROUP_MASK htonl(0xFFFFFF00L)
+#endif
diff --git a/i686-linux-musl/include/linux/iio/buffer.h b/i686-linux-musl/include/linux/iio/buffer.h
new file mode 100644
index 0000000..ba2f5e3
--- /dev/null
+++ b/i686-linux-musl/include/linux/iio/buffer.h
@@ -0,0 +1,22 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_IIO_BUFFER_H_
+#define _UAPI_IIO_BUFFER_H_
+#define IIO_BUFFER_GET_FD_IOCTL _IOWR('i', 0x91, int)
+#endif
diff --git a/i686-linux-musl/include/linux/iio/events.h b/i686-linux-musl/include/linux/iio/events.h
new file mode 100644
index 0000000..5a23eef
--- /dev/null
+++ b/i686-linux-musl/include/linux/iio/events.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_IIO_EVENTS_H_
+#define _UAPI_IIO_EVENTS_H_
+#include <linux/ioctl.h>
+#include <linux/types.h>
+struct iio_event_data {
+  __u64 id;
+  __s64 timestamp;
+};
+#define IIO_GET_EVENT_FD_IOCTL _IOR('i', 0x90, int)
+#define IIO_EVENT_CODE_EXTRACT_TYPE(mask) ((mask >> 56) & 0xFF)
+#define IIO_EVENT_CODE_EXTRACT_DIR(mask) ((mask >> 48) & 0x7F)
+#define IIO_EVENT_CODE_EXTRACT_CHAN_TYPE(mask) ((mask >> 32) & 0xFF)
+#define IIO_EVENT_CODE_EXTRACT_CHAN(mask) ((__s16) (mask & 0xFFFF))
+#define IIO_EVENT_CODE_EXTRACT_CHAN2(mask) ((__s16) (((mask) >> 16) & 0xFFFF))
+#define IIO_EVENT_CODE_EXTRACT_MODIFIER(mask) ((mask >> 40) & 0xFF)
+#define IIO_EVENT_CODE_EXTRACT_DIFF(mask) (((mask) >> 55) & 0x1)
+#endif
diff --git a/i686-linux-musl/include/linux/iio/types.h b/i686-linux-musl/include/linux/iio/types.h
new file mode 100644
index 0000000..22409a7
--- /dev/null
+++ b/i686-linux-musl/include/linux/iio/types.h
@@ -0,0 +1,119 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_IIO_TYPES_H_
+#define _UAPI_IIO_TYPES_H_
+enum iio_chan_type {
+  IIO_VOLTAGE,
+  IIO_CURRENT,
+  IIO_POWER,
+  IIO_ACCEL,
+  IIO_ANGL_VEL,
+  IIO_MAGN,
+  IIO_LIGHT,
+  IIO_INTENSITY,
+  IIO_PROXIMITY,
+  IIO_TEMP,
+  IIO_INCLI,
+  IIO_ROT,
+  IIO_ANGL,
+  IIO_TIMESTAMP,
+  IIO_CAPACITANCE,
+  IIO_ALTVOLTAGE,
+  IIO_CCT,
+  IIO_PRESSURE,
+  IIO_HUMIDITYRELATIVE,
+  IIO_ACTIVITY,
+  IIO_STEPS,
+  IIO_ENERGY,
+  IIO_DISTANCE,
+  IIO_VELOCITY,
+  IIO_CONCENTRATION,
+  IIO_RESISTANCE,
+  IIO_PH,
+  IIO_UVINDEX,
+  IIO_ELECTRICALCONDUCTIVITY,
+  IIO_COUNT,
+  IIO_INDEX,
+  IIO_GRAVITY,
+  IIO_POSITIONRELATIVE,
+  IIO_PHASE,
+  IIO_MASSCONCENTRATION,
+};
+enum iio_modifier {
+  IIO_NO_MOD,
+  IIO_MOD_X,
+  IIO_MOD_Y,
+  IIO_MOD_Z,
+  IIO_MOD_X_AND_Y,
+  IIO_MOD_X_AND_Z,
+  IIO_MOD_Y_AND_Z,
+  IIO_MOD_X_AND_Y_AND_Z,
+  IIO_MOD_X_OR_Y,
+  IIO_MOD_X_OR_Z,
+  IIO_MOD_Y_OR_Z,
+  IIO_MOD_X_OR_Y_OR_Z,
+  IIO_MOD_LIGHT_BOTH,
+  IIO_MOD_LIGHT_IR,
+  IIO_MOD_ROOT_SUM_SQUARED_X_Y,
+  IIO_MOD_SUM_SQUARED_X_Y_Z,
+  IIO_MOD_LIGHT_CLEAR,
+  IIO_MOD_LIGHT_RED,
+  IIO_MOD_LIGHT_GREEN,
+  IIO_MOD_LIGHT_BLUE,
+  IIO_MOD_QUATERNION,
+  IIO_MOD_TEMP_AMBIENT,
+  IIO_MOD_TEMP_OBJECT,
+  IIO_MOD_NORTH_MAGN,
+  IIO_MOD_NORTH_TRUE,
+  IIO_MOD_NORTH_MAGN_TILT_COMP,
+  IIO_MOD_NORTH_TRUE_TILT_COMP,
+  IIO_MOD_RUNNING,
+  IIO_MOD_JOGGING,
+  IIO_MOD_WALKING,
+  IIO_MOD_STILL,
+  IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z,
+  IIO_MOD_I,
+  IIO_MOD_Q,
+  IIO_MOD_CO2,
+  IIO_MOD_VOC,
+  IIO_MOD_LIGHT_UV,
+  IIO_MOD_LIGHT_DUV,
+  IIO_MOD_PM1,
+  IIO_MOD_PM2P5,
+  IIO_MOD_PM4,
+  IIO_MOD_PM10,
+  IIO_MOD_ETHANOL,
+  IIO_MOD_H2,
+  IIO_MOD_O2,
+};
+enum iio_event_type {
+  IIO_EV_TYPE_THRESH,
+  IIO_EV_TYPE_MAG,
+  IIO_EV_TYPE_ROC,
+  IIO_EV_TYPE_THRESH_ADAPTIVE,
+  IIO_EV_TYPE_MAG_ADAPTIVE,
+  IIO_EV_TYPE_CHANGE,
+};
+enum iio_event_direction {
+  IIO_EV_DIR_EITHER,
+  IIO_EV_DIR_RISING,
+  IIO_EV_DIR_FALLING,
+  IIO_EV_DIR_NONE,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/ila.h b/i686-linux-musl/include/linux/ila.h
new file mode 100644
index 0000000..75de8eb
--- /dev/null
+++ b/i686-linux-musl/include/linux/ila.h
@@ -0,0 +1,69 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ILA_H
+#define _UAPI_LINUX_ILA_H
+#define ILA_GENL_NAME "ila"
+#define ILA_GENL_VERSION 0x1
+enum {
+  ILA_ATTR_UNSPEC,
+  ILA_ATTR_LOCATOR,
+  ILA_ATTR_IDENTIFIER,
+  ILA_ATTR_LOCATOR_MATCH,
+  ILA_ATTR_IFINDEX,
+  ILA_ATTR_DIR,
+  ILA_ATTR_PAD,
+  ILA_ATTR_CSUM_MODE,
+  ILA_ATTR_IDENT_TYPE,
+  ILA_ATTR_HOOK_TYPE,
+  __ILA_ATTR_MAX,
+};
+#define ILA_ATTR_MAX (__ILA_ATTR_MAX - 1)
+enum {
+  ILA_CMD_UNSPEC,
+  ILA_CMD_ADD,
+  ILA_CMD_DEL,
+  ILA_CMD_GET,
+  ILA_CMD_FLUSH,
+  __ILA_CMD_MAX,
+};
+#define ILA_CMD_MAX (__ILA_CMD_MAX - 1)
+#define ILA_DIR_IN (1 << 0)
+#define ILA_DIR_OUT (1 << 1)
+enum {
+  ILA_CSUM_ADJUST_TRANSPORT,
+  ILA_CSUM_NEUTRAL_MAP,
+  ILA_CSUM_NO_ACTION,
+  ILA_CSUM_NEUTRAL_MAP_AUTO,
+};
+enum {
+  ILA_ATYPE_IID = 0,
+  ILA_ATYPE_LUID,
+  ILA_ATYPE_VIRT_V4,
+  ILA_ATYPE_VIRT_UNI_V6,
+  ILA_ATYPE_VIRT_MULTI_V6,
+  ILA_ATYPE_NONLOCAL_ADDR,
+  ILA_ATYPE_RSVD_1,
+  ILA_ATYPE_RSVD_2,
+  ILA_ATYPE_USE_FORMAT = 32,
+};
+enum {
+  ILA_HOOK_ROUTE_OUTPUT,
+  ILA_HOOK_ROUTE_INPUT,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/in.h b/i686-linux-musl/include/linux/in.h
new file mode 100644
index 0000000..d4060e7
--- /dev/null
+++ b/i686-linux-musl/include/linux/in.h
@@ -0,0 +1,239 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IN_H
+#define _UAPI_LINUX_IN_H
+#include <bits/ip_msfilter.h>
+#include <bits/ip_mreq_source.h>
+#include <bits/in_addr.h>
+#include <linux/types.h>
+#include <linux/libc-compat.h>
+#include <linux/socket.h>
+#if __UAPI_DEF_IN_IPPROTO
+enum {
+  IPPROTO_IP = 0,
+#define IPPROTO_IP IPPROTO_IP
+  IPPROTO_ICMP = 1,
+#define IPPROTO_ICMP IPPROTO_ICMP
+  IPPROTO_IGMP = 2,
+#define IPPROTO_IGMP IPPROTO_IGMP
+  IPPROTO_IPIP = 4,
+#define IPPROTO_IPIP IPPROTO_IPIP
+  IPPROTO_TCP = 6,
+#define IPPROTO_TCP IPPROTO_TCP
+  IPPROTO_EGP = 8,
+#define IPPROTO_EGP IPPROTO_EGP
+  IPPROTO_PUP = 12,
+#define IPPROTO_PUP IPPROTO_PUP
+  IPPROTO_UDP = 17,
+#define IPPROTO_UDP IPPROTO_UDP
+  IPPROTO_IDP = 22,
+#define IPPROTO_IDP IPPROTO_IDP
+  IPPROTO_TP = 29,
+#define IPPROTO_TP IPPROTO_TP
+  IPPROTO_DCCP = 33,
+#define IPPROTO_DCCP IPPROTO_DCCP
+  IPPROTO_IPV6 = 41,
+#define IPPROTO_IPV6 IPPROTO_IPV6
+  IPPROTO_RSVP = 46,
+#define IPPROTO_RSVP IPPROTO_RSVP
+  IPPROTO_GRE = 47,
+#define IPPROTO_GRE IPPROTO_GRE
+  IPPROTO_ESP = 50,
+#define IPPROTO_ESP IPPROTO_ESP
+  IPPROTO_AH = 51,
+#define IPPROTO_AH IPPROTO_AH
+  IPPROTO_MTP = 92,
+#define IPPROTO_MTP IPPROTO_MTP
+  IPPROTO_BEETPH = 94,
+#define IPPROTO_BEETPH IPPROTO_BEETPH
+  IPPROTO_ENCAP = 98,
+#define IPPROTO_ENCAP IPPROTO_ENCAP
+  IPPROTO_PIM = 103,
+#define IPPROTO_PIM IPPROTO_PIM
+  IPPROTO_COMP = 108,
+#define IPPROTO_COMP IPPROTO_COMP
+  IPPROTO_SCTP = 132,
+#define IPPROTO_SCTP IPPROTO_SCTP
+  IPPROTO_UDPLITE = 136,
+#define IPPROTO_UDPLITE IPPROTO_UDPLITE
+  IPPROTO_MPLS = 137,
+#define IPPROTO_MPLS IPPROTO_MPLS
+  IPPROTO_ETHERNET = 143,
+#define IPPROTO_ETHERNET IPPROTO_ETHERNET
+  IPPROTO_RAW = 255,
+#define IPPROTO_RAW IPPROTO_RAW
+  IPPROTO_MPTCP = 262,
+#define IPPROTO_MPTCP IPPROTO_MPTCP
+  IPPROTO_MAX
+};
+#endif
+#if __UAPI_DEF_IN_ADDR
+#endif
+#define IP_TOS 1
+#define IP_TTL 2
+#define IP_HDRINCL 3
+#define IP_OPTIONS 4
+#define IP_ROUTER_ALERT 5
+#define IP_RECVOPTS 6
+#define IP_RETOPTS 7
+#define IP_PKTINFO 8
+#define IP_PKTOPTIONS 9
+#define IP_MTU_DISCOVER 10
+#define IP_RECVERR 11
+#define IP_RECVTTL 12
+#define IP_RECVTOS 13
+#define IP_MTU 14
+#define IP_FREEBIND 15
+#define IP_IPSEC_POLICY 16
+#define IP_XFRM_POLICY 17
+#define IP_PASSSEC 18
+#define IP_TRANSPARENT 19
+#define IP_RECVRETOPTS IP_RETOPTS
+#define IP_ORIGDSTADDR 20
+#define IP_RECVORIGDSTADDR IP_ORIGDSTADDR
+#define IP_MINTTL 21
+#define IP_NODEFRAG 22
+#define IP_CHECKSUM 23
+#define IP_BIND_ADDRESS_NO_PORT 24
+#define IP_RECVFRAGSIZE 25
+#define IP_RECVERR_RFC4884 26
+#define IP_PMTUDISC_DONT 0
+#define IP_PMTUDISC_WANT 1
+#define IP_PMTUDISC_DO 2
+#define IP_PMTUDISC_PROBE 3
+#define IP_PMTUDISC_INTERFACE 4
+#define IP_PMTUDISC_OMIT 5
+#define IP_MULTICAST_IF 32
+#define IP_MULTICAST_TTL 33
+#define IP_MULTICAST_LOOP 34
+#define IP_ADD_MEMBERSHIP 35
+#define IP_DROP_MEMBERSHIP 36
+#define IP_UNBLOCK_SOURCE 37
+#define IP_BLOCK_SOURCE 38
+#define IP_ADD_SOURCE_MEMBERSHIP 39
+#define IP_DROP_SOURCE_MEMBERSHIP 40
+#define IP_MSFILTER 41
+#define MCAST_JOIN_GROUP 42
+#define MCAST_BLOCK_SOURCE 43
+#define MCAST_UNBLOCK_SOURCE 44
+#define MCAST_LEAVE_GROUP 45
+#define MCAST_JOIN_SOURCE_GROUP 46
+#define MCAST_LEAVE_SOURCE_GROUP 47
+#define MCAST_MSFILTER 48
+#define IP_MULTICAST_ALL 49
+#define IP_UNICAST_IF 50
+#define MCAST_EXCLUDE 0
+#define MCAST_INCLUDE 1
+#define IP_DEFAULT_MULTICAST_TTL 1
+#define IP_DEFAULT_MULTICAST_LOOP 1
+#if __UAPI_DEF_IP_MREQ
+struct ip_mreq {
+  struct in_addr imr_multiaddr;
+  struct in_addr imr_interface;
+};
+struct ip_mreqn {
+  struct in_addr imr_multiaddr;
+  struct in_addr imr_address;
+  int imr_ifindex;
+};
+#define IP_MSFILTER_SIZE(numsrc) (sizeof(struct ip_msfilter) - sizeof(__u32) + (numsrc) * sizeof(__u32))
+struct group_req {
+  __u32 gr_interface;
+  struct __kernel_sockaddr_storage gr_group;
+};
+struct group_source_req {
+  __u32 gsr_interface;
+  struct __kernel_sockaddr_storage gsr_group;
+  struct __kernel_sockaddr_storage gsr_source;
+};
+struct group_filter {
+  union {
+    struct {
+      __u32 gf_interface_aux;
+      struct __kernel_sockaddr_storage gf_group_aux;
+      __u32 gf_fmode_aux;
+      __u32 gf_numsrc_aux;
+      struct __kernel_sockaddr_storage gf_slist[1];
+    };
+    struct {
+      __u32 gf_interface;
+      struct __kernel_sockaddr_storage gf_group;
+      __u32 gf_fmode;
+      __u32 gf_numsrc;
+      struct __kernel_sockaddr_storage gf_slist_flex[];
+    };
+  };
+};
+#define GROUP_FILTER_SIZE(numsrc) (sizeof(struct group_filter) - sizeof(struct __kernel_sockaddr_storage) + (numsrc) * sizeof(struct __kernel_sockaddr_storage))
+#endif
+#if __UAPI_DEF_IN_PKTINFO
+struct in_pktinfo {
+  int ipi_ifindex;
+  struct in_addr ipi_spec_dst;
+  struct in_addr ipi_addr;
+};
+#endif
+#if __UAPI_DEF_SOCKADDR_IN
+#define __SOCK_SIZE__ 16
+struct sockaddr_in {
+  __kernel_sa_family_t sin_family;
+  __be16 sin_port;
+  struct in_addr sin_addr;
+  unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) - sizeof(unsigned short int) - sizeof(struct in_addr)];
+};
+#define sin_zero __pad
+#endif
+#if __UAPI_DEF_IN_CLASS
+#define IN_CLASSA(a) ((((long int) (a)) & 0x80000000) == 0)
+#define IN_CLASSA_NET 0xff000000
+#define IN_CLASSA_NSHIFT 24
+#define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET)
+#define IN_CLASSA_MAX 128
+#define IN_CLASSB(a) ((((long int) (a)) & 0xc0000000) == 0x80000000)
+#define IN_CLASSB_NET 0xffff0000
+#define IN_CLASSB_NSHIFT 16
+#define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET)
+#define IN_CLASSB_MAX 65536
+#define IN_CLASSC(a) ((((long int) (a)) & 0xe0000000) == 0xc0000000)
+#define IN_CLASSC_NET 0xffffff00
+#define IN_CLASSC_NSHIFT 8
+#define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET)
+#define IN_CLASSD(a) ((((long int) (a)) & 0xf0000000) == 0xe0000000)
+#define IN_MULTICAST(a) IN_CLASSD(a)
+#define IN_MULTICAST_NET 0xe0000000
+#define IN_BADCLASS(a) (((long int) (a)) == (long int) 0xffffffff)
+#define IN_EXPERIMENTAL(a) IN_BADCLASS((a))
+#define IN_CLASSE(a) ((((long int) (a)) & 0xf0000000) == 0xf0000000)
+#define IN_CLASSE_NET 0xffffffff
+#define IN_CLASSE_NSHIFT 0
+#define INADDR_ANY ((unsigned long int) 0x00000000)
+#define INADDR_BROADCAST ((unsigned long int) 0xffffffff)
+#define INADDR_NONE ((unsigned long int) 0xffffffff)
+#define INADDR_DUMMY ((unsigned long int) 0xc0000008)
+#define IN_LOOPBACKNET 127
+#define INADDR_LOOPBACK 0x7f000001
+#define IN_LOOPBACK(a) ((((long int) (a)) & 0xff000000) == 0x7f000000)
+#define INADDR_UNSPEC_GROUP 0xe0000000U
+#define INADDR_ALLHOSTS_GROUP 0xe0000001U
+#define INADDR_ALLRTRS_GROUP 0xe0000002U
+#define INADDR_ALLSNOOPERS_GROUP 0xe000006aU
+#define INADDR_MAX_LOCAL_GROUP 0xe00000ffU
+#endif
+#include <asm/byteorder.h>
+#endif
diff --git a/i686-linux-musl/include/linux/in6.h b/i686-linux-musl/include/linux/in6.h
new file mode 100644
index 0000000..49efe3c
--- /dev/null
+++ b/i686-linux-musl/include/linux/in6.h
@@ -0,0 +1,183 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IN6_H
+#define _UAPI_LINUX_IN6_H
+#include <linux/types.h>
+#include <linux/libc-compat.h>
+#if __UAPI_DEF_IN6_ADDR
+struct in6_addr {
+  union {
+    __u8 u6_addr8[16];
+#if __UAPI_DEF_IN6_ADDR_ALT
+    __be16 u6_addr16[8];
+    __be32 u6_addr32[4];
+#endif
+  } in6_u;
+#define s6_addr in6_u.u6_addr8
+#if __UAPI_DEF_IN6_ADDR_ALT
+#define s6_addr16 in6_u.u6_addr16
+#define s6_addr32 in6_u.u6_addr32
+#endif
+};
+#endif
+#if __UAPI_DEF_SOCKADDR_IN6
+struct sockaddr_in6 {
+  unsigned short int sin6_family;
+  __be16 sin6_port;
+  __be32 sin6_flowinfo;
+  struct in6_addr sin6_addr;
+  __u32 sin6_scope_id;
+};
+#endif
+#if __UAPI_DEF_IPV6_MREQ
+struct ipv6_mreq {
+  struct in6_addr ipv6mr_multiaddr;
+  int ipv6mr_ifindex;
+};
+#endif
+#define ipv6mr_acaddr ipv6mr_multiaddr
+struct in6_flowlabel_req {
+  struct in6_addr flr_dst;
+  __be32 flr_label;
+  __u8 flr_action;
+  __u8 flr_share;
+  __u16 flr_flags;
+  __u16 flr_expires;
+  __u16 flr_linger;
+  __u32 __flr_pad;
+};
+#define IPV6_FL_A_GET 0
+#define IPV6_FL_A_PUT 1
+#define IPV6_FL_A_RENEW 2
+#define IPV6_FL_F_CREATE 1
+#define IPV6_FL_F_EXCL 2
+#define IPV6_FL_F_REFLECT 4
+#define IPV6_FL_F_REMOTE 8
+#define IPV6_FL_S_NONE 0
+#define IPV6_FL_S_EXCL 1
+#define IPV6_FL_S_PROCESS 2
+#define IPV6_FL_S_USER 3
+#define IPV6_FL_S_ANY 255
+#define IPV6_FLOWINFO_FLOWLABEL 0x000fffff
+#define IPV6_FLOWINFO_PRIORITY 0x0ff00000
+#define IPV6_PRIORITY_UNCHARACTERIZED 0x0000
+#define IPV6_PRIORITY_FILLER 0x0100
+#define IPV6_PRIORITY_UNATTENDED 0x0200
+#define IPV6_PRIORITY_RESERVED1 0x0300
+#define IPV6_PRIORITY_BULK 0x0400
+#define IPV6_PRIORITY_RESERVED2 0x0500
+#define IPV6_PRIORITY_INTERACTIVE 0x0600
+#define IPV6_PRIORITY_CONTROL 0x0700
+#define IPV6_PRIORITY_8 0x0800
+#define IPV6_PRIORITY_9 0x0900
+#define IPV6_PRIORITY_10 0x0a00
+#define IPV6_PRIORITY_11 0x0b00
+#define IPV6_PRIORITY_12 0x0c00
+#define IPV6_PRIORITY_13 0x0d00
+#define IPV6_PRIORITY_14 0x0e00
+#define IPV6_PRIORITY_15 0x0f00
+#if __UAPI_DEF_IPPROTO_V6
+#define IPPROTO_HOPOPTS 0
+#define IPPROTO_ROUTING 43
+#define IPPROTO_FRAGMENT 44
+#define IPPROTO_ICMPV6 58
+#define IPPROTO_NONE 59
+#define IPPROTO_DSTOPTS 60
+#define IPPROTO_MH 135
+#endif
+#define IPV6_TLV_PAD1 0
+#define IPV6_TLV_PADN 1
+#define IPV6_TLV_ROUTERALERT 5
+#define IPV6_TLV_CALIPSO 7
+#define IPV6_TLV_IOAM 49
+#define IPV6_TLV_JUMBO 194
+#define IPV6_TLV_HAO 201
+#if __UAPI_DEF_IPV6_OPTIONS
+#define IPV6_ADDRFORM 1
+#define IPV6_2292PKTINFO 2
+#define IPV6_2292HOPOPTS 3
+#define IPV6_2292DSTOPTS 4
+#define IPV6_2292RTHDR 5
+#define IPV6_2292PKTOPTIONS 6
+#define IPV6_CHECKSUM 7
+#define IPV6_2292HOPLIMIT 8
+#define IPV6_NEXTHOP 9
+#define IPV6_AUTHHDR 10
+#define IPV6_FLOWINFO 11
+#define IPV6_UNICAST_HOPS 16
+#define IPV6_MULTICAST_IF 17
+#define IPV6_MULTICAST_HOPS 18
+#define IPV6_MULTICAST_LOOP 19
+#define IPV6_ADD_MEMBERSHIP 20
+#define IPV6_DROP_MEMBERSHIP 21
+#define IPV6_ROUTER_ALERT 22
+#define IPV6_MTU_DISCOVER 23
+#define IPV6_MTU 24
+#define IPV6_RECVERR 25
+#define IPV6_V6ONLY 26
+#define IPV6_JOIN_ANYCAST 27
+#define IPV6_LEAVE_ANYCAST 28
+#define IPV6_MULTICAST_ALL 29
+#define IPV6_ROUTER_ALERT_ISOLATE 30
+#define IPV6_RECVERR_RFC4884 31
+#define IPV6_PMTUDISC_DONT 0
+#define IPV6_PMTUDISC_WANT 1
+#define IPV6_PMTUDISC_DO 2
+#define IPV6_PMTUDISC_PROBE 3
+#define IPV6_PMTUDISC_INTERFACE 4
+#define IPV6_PMTUDISC_OMIT 5
+#define IPV6_FLOWLABEL_MGR 32
+#define IPV6_FLOWINFO_SEND 33
+#define IPV6_IPSEC_POLICY 34
+#define IPV6_XFRM_POLICY 35
+#define IPV6_HDRINCL 36
+#endif
+#define IPV6_RECVPKTINFO 49
+#define IPV6_PKTINFO 50
+#define IPV6_RECVHOPLIMIT 51
+#define IPV6_HOPLIMIT 52
+#define IPV6_RECVHOPOPTS 53
+#define IPV6_HOPOPTS 54
+#define IPV6_RTHDRDSTOPTS 55
+#define IPV6_RECVRTHDR 56
+#define IPV6_RTHDR 57
+#define IPV6_RECVDSTOPTS 58
+#define IPV6_DSTOPTS 59
+#define IPV6_RECVPATHMTU 60
+#define IPV6_PATHMTU 61
+#define IPV6_DONTFRAG 62
+#define IPV6_RECVTCLASS 66
+#define IPV6_TCLASS 67
+#define IPV6_AUTOFLOWLABEL 70
+#define IPV6_ADDR_PREFERENCES 72
+#define IPV6_PREFER_SRC_TMP 0x0001
+#define IPV6_PREFER_SRC_PUBLIC 0x0002
+#define IPV6_PREFER_SRC_PUBTMP_DEFAULT 0x0100
+#define IPV6_PREFER_SRC_COA 0x0004
+#define IPV6_PREFER_SRC_HOME 0x0400
+#define IPV6_PREFER_SRC_CGA 0x0008
+#define IPV6_PREFER_SRC_NONCGA 0x0800
+#define IPV6_MINHOPCOUNT 73
+#define IPV6_ORIGDSTADDR 74
+#define IPV6_RECVORIGDSTADDR IPV6_ORIGDSTADDR
+#define IPV6_TRANSPARENT 75
+#define IPV6_UNICAST_IF 76
+#define IPV6_RECVFRAGSIZE 77
+#define IPV6_FREEBIND 78
+#endif
diff --git a/i686-linux-musl/include/linux/in_route.h b/i686-linux-musl/include/linux/in_route.h
new file mode 100644
index 0000000..f7326e2
--- /dev/null
+++ b/i686-linux-musl/include/linux/in_route.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_IN_ROUTE_H
+#define _LINUX_IN_ROUTE_H
+#define RTCF_DEAD RTNH_F_DEAD
+#define RTCF_ONLINK RTNH_F_ONLINK
+#define RTCF_NOPMTUDISC RTM_F_NOPMTUDISC
+#define RTCF_NOTIFY 0x00010000
+#define RTCF_DIRECTDST 0x00020000
+#define RTCF_REDIRECTED 0x00040000
+#define RTCF_TPROXY 0x00080000
+#define RTCF_FAST 0x00200000
+#define RTCF_MASQ 0x00400000
+#define RTCF_SNAT 0x00800000
+#define RTCF_DOREDIRECT 0x01000000
+#define RTCF_DIRECTSRC 0x04000000
+#define RTCF_DNAT 0x08000000
+#define RTCF_BROADCAST 0x10000000
+#define RTCF_MULTICAST 0x20000000
+#define RTCF_REJECT 0x40000000
+#define RTCF_LOCAL 0x80000000
+#define RTCF_NAT (RTCF_DNAT | RTCF_SNAT)
+#define RT_TOS(tos) ((tos) & IPTOS_TOS_MASK)
+#endif
diff --git a/i686-linux-musl/include/linux/incrementalfs.h b/i686-linux-musl/include/linux/incrementalfs.h
new file mode 100644
index 0000000..0804cc2
--- /dev/null
+++ b/i686-linux-musl/include/linux/incrementalfs.h
@@ -0,0 +1,178 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_INCREMENTALFS_H
+#define _UAPI_LINUX_INCREMENTALFS_H
+#include <linux/limits.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/xattr.h>
+#define INCFS_NAME "incremental-fs"
+#define INCFS_MAGIC_NUMBER (0x5346434e49ul & ULONG_MAX)
+#define INCFS_DATA_FILE_BLOCK_SIZE 4096
+#define INCFS_HEADER_VER 1
+#define INCFS_MAX_HASH_SIZE 32
+#define INCFS_MAX_FILE_ATTR_SIZE 512
+#define INCFS_INDEX_NAME ".index"
+#define INCFS_INCOMPLETE_NAME ".incomplete"
+#define INCFS_PENDING_READS_FILENAME ".pending_reads"
+#define INCFS_LOG_FILENAME ".log"
+#define INCFS_BLOCKS_WRITTEN_FILENAME ".blocks_written"
+#define INCFS_XATTR_ID_NAME (XATTR_USER_PREFIX "incfs.id")
+#define INCFS_XATTR_SIZE_NAME (XATTR_USER_PREFIX "incfs.size")
+#define INCFS_XATTR_METADATA_NAME (XATTR_USER_PREFIX "incfs.metadata")
+#define INCFS_XATTR_VERITY_NAME (XATTR_USER_PREFIX "incfs.verity")
+#define INCFS_MAX_SIGNATURE_SIZE 8096
+#define INCFS_SIGNATURE_VERSION 2
+#define INCFS_SIGNATURE_SECTIONS 2
+#define INCFS_IOCTL_BASE_CODE 'g'
+#define INCFS_IOC_CREATE_FILE _IOWR(INCFS_IOCTL_BASE_CODE, 30, struct incfs_new_file_args)
+#define INCFS_IOC_READ_FILE_SIGNATURE _IOR(INCFS_IOCTL_BASE_CODE, 31, struct incfs_get_file_sig_args)
+#define INCFS_IOC_FILL_BLOCKS _IOR(INCFS_IOCTL_BASE_CODE, 32, struct incfs_fill_blocks)
+#define INCFS_IOC_PERMIT_FILL _IOW(INCFS_IOCTL_BASE_CODE, 33, struct incfs_permit_fill)
+#define INCFS_IOC_GET_FILLED_BLOCKS _IOR(INCFS_IOCTL_BASE_CODE, 34, struct incfs_get_filled_blocks_args)
+#define INCFS_IOC_CREATE_MAPPED_FILE _IOWR(INCFS_IOCTL_BASE_CODE, 35, struct incfs_create_mapped_file_args)
+#define INCFS_IOC_GET_BLOCK_COUNT _IOR(INCFS_IOCTL_BASE_CODE, 36, struct incfs_get_block_count_args)
+#define INCFS_IOC_GET_READ_TIMEOUTS _IOR(INCFS_IOCTL_BASE_CODE, 37, struct incfs_get_read_timeouts_args)
+#define INCFS_IOC_SET_READ_TIMEOUTS _IOW(INCFS_IOCTL_BASE_CODE, 38, struct incfs_set_read_timeouts_args)
+#define INCFS_IOC_GET_LAST_READ_ERROR _IOW(INCFS_IOCTL_BASE_CODE, 39, struct incfs_get_last_read_error_args)
+#define INCFS_FEATURE_FLAG_COREFS "corefs"
+#define INCFS_FEATURE_FLAG_ZSTD "zstd"
+#define INCFS_FEATURE_FLAG_V2 "v2"
+enum incfs_compression_alg {
+  COMPRESSION_NONE = 0,
+  COMPRESSION_LZ4 = 1,
+  COMPRESSION_ZSTD = 2,
+};
+enum incfs_block_flags {
+  INCFS_BLOCK_FLAGS_NONE = 0,
+  INCFS_BLOCK_FLAGS_HASH = 1,
+};
+typedef struct {
+  __u8 bytes[16];
+} incfs_uuid_t __attribute__((aligned(8)));
+struct incfs_pending_read_info {
+  incfs_uuid_t file_id;
+  __aligned_u64 timestamp_us;
+  __u32 block_index;
+  __u32 serial_number;
+};
+struct incfs_pending_read_info2 {
+  incfs_uuid_t file_id;
+  __aligned_u64 timestamp_us;
+  __u32 block_index;
+  __u32 serial_number;
+  __u32 uid;
+  __u32 reserved;
+};
+struct incfs_fill_block {
+  __u32 block_index;
+  __u32 data_len;
+  __aligned_u64 data;
+  __u8 compression;
+  __u8 flags;
+  __u16 reserved1;
+  __u32 reserved2;
+  __aligned_u64 reserved3;
+};
+struct incfs_fill_blocks {
+  __u64 count;
+  __aligned_u64 fill_blocks;
+};
+struct incfs_permit_fill {
+  __u32 file_descriptor;
+};
+enum incfs_hash_tree_algorithm {
+  INCFS_HASH_TREE_NONE = 0,
+  INCFS_HASH_TREE_SHA256 = 1
+};
+struct incfs_new_file_args {
+  incfs_uuid_t file_id;
+  __aligned_u64 size;
+  __u16 mode;
+  __u16 reserved1;
+  __u32 reserved2;
+  __aligned_u64 directory_path;
+  __aligned_u64 file_name;
+  __aligned_u64 file_attr;
+  __u32 file_attr_len;
+  __u32 reserved4;
+  __aligned_u64 signature_info;
+  __aligned_u64 signature_size;
+  __aligned_u64 reserved6;
+};
+struct incfs_get_file_sig_args {
+  __aligned_u64 file_signature;
+  __u32 file_signature_buf_size;
+  __u32 file_signature_len_out;
+};
+struct incfs_filled_range {
+  __u32 begin;
+  __u32 end;
+};
+struct incfs_get_filled_blocks_args {
+  __aligned_u64 range_buffer;
+  __u32 range_buffer_size;
+  __u32 start_index;
+  __u32 end_index;
+  __u32 total_blocks_out;
+  __u32 data_blocks_out;
+  __u32 range_buffer_size_out;
+  __u32 index_out;
+};
+struct incfs_create_mapped_file_args {
+  __aligned_u64 size;
+  __u16 mode;
+  __u16 reserved1;
+  __u32 reserved2;
+  __aligned_u64 directory_path;
+  __aligned_u64 file_name;
+  incfs_uuid_t source_file_id;
+  __aligned_u64 source_offset;
+};
+struct incfs_get_block_count_args {
+  __u32 total_data_blocks_out;
+  __u32 filled_data_blocks_out;
+  __u32 total_hash_blocks_out;
+  __u32 filled_hash_blocks_out;
+};
+struct incfs_per_uid_read_timeouts {
+  __u32 uid;
+  __u32 min_time_us;
+  __u32 min_pending_time_us;
+  __u32 max_pending_time_us;
+};
+struct incfs_get_read_timeouts_args {
+  __aligned_u64 timeouts_array;
+  __u32 timeouts_array_size;
+  __u32 timeouts_array_size_out;
+};
+struct incfs_set_read_timeouts_args {
+  __aligned_u64 timeouts_array;
+  __u32 timeouts_array_size;
+};
+struct incfs_get_last_read_error_args {
+  incfs_uuid_t file_id_out;
+  __u64 time_us_out;
+  __u32 page_out;
+  __u32 errno_out;
+  __u32 uid_out;
+  __u32 reserved1;
+  __u64 reserved2;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/inet_diag.h b/i686-linux-musl/include/linux/inet_diag.h
new file mode 100644
index 0000000..8656dd4
--- /dev/null
+++ b/i686-linux-musl/include/linux/inet_diag.h
@@ -0,0 +1,180 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_INET_DIAG_H_
+#define _UAPI_INET_DIAG_H_
+#include <linux/types.h>
+#define TCPDIAG_GETSOCK 18
+#define DCCPDIAG_GETSOCK 19
+#define INET_DIAG_GETSOCK_MAX 24
+struct inet_diag_sockid {
+  __be16 idiag_sport;
+  __be16 idiag_dport;
+  __be32 idiag_src[4];
+  __be32 idiag_dst[4];
+  __u32 idiag_if;
+  __u32 idiag_cookie[2];
+#define INET_DIAG_NOCOOKIE (~0U)
+};
+struct inet_diag_req {
+  __u8 idiag_family;
+  __u8 idiag_src_len;
+  __u8 idiag_dst_len;
+  __u8 idiag_ext;
+  struct inet_diag_sockid id;
+  __u32 idiag_states;
+  __u32 idiag_dbs;
+};
+struct inet_diag_req_v2 {
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
+  __u8 idiag_ext;
+  __u8 pad;
+  __u32 idiag_states;
+  struct inet_diag_sockid id;
+};
+struct inet_diag_req_raw {
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
+  __u8 idiag_ext;
+  __u8 sdiag_raw_protocol;
+  __u32 idiag_states;
+  struct inet_diag_sockid id;
+};
+enum {
+  INET_DIAG_REQ_NONE,
+  INET_DIAG_REQ_BYTECODE,
+  INET_DIAG_REQ_SK_BPF_STORAGES,
+  INET_DIAG_REQ_PROTOCOL,
+  __INET_DIAG_REQ_MAX,
+};
+#define INET_DIAG_REQ_MAX (__INET_DIAG_REQ_MAX - 1)
+struct inet_diag_bc_op {
+  unsigned char code;
+  unsigned char yes;
+  unsigned short no;
+};
+enum {
+  INET_DIAG_BC_NOP,
+  INET_DIAG_BC_JMP,
+  INET_DIAG_BC_S_GE,
+  INET_DIAG_BC_S_LE,
+  INET_DIAG_BC_D_GE,
+  INET_DIAG_BC_D_LE,
+  INET_DIAG_BC_AUTO,
+  INET_DIAG_BC_S_COND,
+  INET_DIAG_BC_D_COND,
+  INET_DIAG_BC_DEV_COND,
+  INET_DIAG_BC_MARK_COND,
+  INET_DIAG_BC_S_EQ,
+  INET_DIAG_BC_D_EQ,
+  INET_DIAG_BC_CGROUP_COND,
+};
+struct inet_diag_hostcond {
+  __u8 family;
+  __u8 prefix_len;
+  int port;
+  __be32 addr[0];
+};
+struct inet_diag_markcond {
+  __u32 mark;
+  __u32 mask;
+};
+struct inet_diag_msg {
+  __u8 idiag_family;
+  __u8 idiag_state;
+  __u8 idiag_timer;
+  __u8 idiag_retrans;
+  struct inet_diag_sockid id;
+  __u32 idiag_expires;
+  __u32 idiag_rqueue;
+  __u32 idiag_wqueue;
+  __u32 idiag_uid;
+  __u32 idiag_inode;
+};
+enum {
+  INET_DIAG_NONE,
+  INET_DIAG_MEMINFO,
+  INET_DIAG_INFO,
+  INET_DIAG_VEGASINFO,
+  INET_DIAG_CONG,
+  INET_DIAG_TOS,
+  INET_DIAG_TCLASS,
+  INET_DIAG_SKMEMINFO,
+  INET_DIAG_SHUTDOWN,
+  INET_DIAG_DCTCPINFO,
+  INET_DIAG_PROTOCOL,
+  INET_DIAG_SKV6ONLY,
+  INET_DIAG_LOCALS,
+  INET_DIAG_PEERS,
+  INET_DIAG_PAD,
+  INET_DIAG_MARK,
+  INET_DIAG_BBRINFO,
+  INET_DIAG_CLASS_ID,
+  INET_DIAG_MD5SIG,
+  INET_DIAG_ULP_INFO,
+  INET_DIAG_SK_BPF_STORAGES,
+  INET_DIAG_CGROUP_ID,
+  INET_DIAG_SOCKOPT,
+  __INET_DIAG_MAX,
+};
+#define INET_DIAG_MAX (__INET_DIAG_MAX - 1)
+enum {
+  INET_ULP_INFO_UNSPEC,
+  INET_ULP_INFO_NAME,
+  INET_ULP_INFO_TLS,
+  INET_ULP_INFO_MPTCP,
+  __INET_ULP_INFO_MAX,
+};
+#define INET_ULP_INFO_MAX (__INET_ULP_INFO_MAX - 1)
+struct inet_diag_meminfo {
+  __u32 idiag_rmem;
+  __u32 idiag_wmem;
+  __u32 idiag_fmem;
+  __u32 idiag_tmem;
+};
+struct inet_diag_sockopt {
+  __u8 recverr : 1, is_icsk : 1, freebind : 1, hdrincl : 1, mc_loop : 1, transparent : 1, mc_all : 1, nodefrag : 1;
+  __u8 bind_address_no_port : 1, recverr_rfc4884 : 1, defer_connect : 1, unused : 5;
+};
+struct tcpvegas_info {
+  __u32 tcpv_enabled;
+  __u32 tcpv_rttcnt;
+  __u32 tcpv_rtt;
+  __u32 tcpv_minrtt;
+};
+struct tcp_dctcp_info {
+  __u16 dctcp_enabled;
+  __u16 dctcp_ce_state;
+  __u32 dctcp_alpha;
+  __u32 dctcp_ab_ecn;
+  __u32 dctcp_ab_tot;
+};
+struct tcp_bbr_info {
+  __u32 bbr_bw_lo;
+  __u32 bbr_bw_hi;
+  __u32 bbr_min_rtt;
+  __u32 bbr_pacing_gain;
+  __u32 bbr_cwnd_gain;
+};
+union tcp_cc_info {
+  struct tcpvegas_info vegas;
+  struct tcp_dctcp_info dctcp;
+  struct tcp_bbr_info bbr;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/inotify.h b/i686-linux-musl/include/linux/inotify.h
new file mode 100644
index 0000000..eb9ac3c
--- /dev/null
+++ b/i686-linux-musl/include/linux/inotify.h
@@ -0,0 +1,58 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_INOTIFY_H
+#define _UAPI_LINUX_INOTIFY_H
+#include <linux/fcntl.h>
+#include <linux/types.h>
+struct inotify_event {
+  __s32 wd;
+  __u32 mask;
+  __u32 cookie;
+  __u32 len;
+  char name[0];
+};
+#define IN_ACCESS 0x00000001
+#define IN_MODIFY 0x00000002
+#define IN_ATTRIB 0x00000004
+#define IN_CLOSE_WRITE 0x00000008
+#define IN_CLOSE_NOWRITE 0x00000010
+#define IN_OPEN 0x00000020
+#define IN_MOVED_FROM 0x00000040
+#define IN_MOVED_TO 0x00000080
+#define IN_CREATE 0x00000100
+#define IN_DELETE 0x00000200
+#define IN_DELETE_SELF 0x00000400
+#define IN_MOVE_SELF 0x00000800
+#define IN_UNMOUNT 0x00002000
+#define IN_Q_OVERFLOW 0x00004000
+#define IN_IGNORED 0x00008000
+#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
+#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO)
+#define IN_ONLYDIR 0x01000000
+#define IN_DONT_FOLLOW 0x02000000
+#define IN_EXCL_UNLINK 0x04000000
+#define IN_MASK_CREATE 0x10000000
+#define IN_MASK_ADD 0x20000000
+#define IN_ISDIR 0x40000000
+#define IN_ONESHOT 0x80000000
+#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF | IN_MOVE_SELF)
+#define IN_CLOEXEC O_CLOEXEC
+#define IN_NONBLOCK O_NONBLOCK
+#define INOTIFY_IOC_SETNEXTWD _IOW('I', 0, __s32)
+#endif
diff --git a/i686-linux-musl/include/linux/input-event-codes.h b/i686-linux-musl/include/linux/input-event-codes.h
new file mode 100644
index 0000000..b283f56
--- /dev/null
+++ b/i686-linux-musl/include/linux/input-event-codes.h
@@ -0,0 +1,775 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_INPUT_EVENT_CODES_H
+#define _UAPI_INPUT_EVENT_CODES_H
+#define INPUT_PROP_POINTER 0x00
+#define INPUT_PROP_DIRECT 0x01
+#define INPUT_PROP_BUTTONPAD 0x02
+#define INPUT_PROP_SEMI_MT 0x03
+#define INPUT_PROP_TOPBUTTONPAD 0x04
+#define INPUT_PROP_POINTING_STICK 0x05
+#define INPUT_PROP_ACCELEROMETER 0x06
+#define INPUT_PROP_MAX 0x1f
+#define INPUT_PROP_CNT (INPUT_PROP_MAX + 1)
+#define EV_SYN 0x00
+#define EV_KEY 0x01
+#define EV_REL 0x02
+#define EV_ABS 0x03
+#define EV_MSC 0x04
+#define EV_SW 0x05
+#define EV_LED 0x11
+#define EV_SND 0x12
+#define EV_REP 0x14
+#define EV_FF 0x15
+#define EV_PWR 0x16
+#define EV_FF_STATUS 0x17
+#define EV_MAX 0x1f
+#define EV_CNT (EV_MAX + 1)
+#define SYN_REPORT 0
+#define SYN_CONFIG 1
+#define SYN_MT_REPORT 2
+#define SYN_DROPPED 3
+#define SYN_MAX 0xf
+#define SYN_CNT (SYN_MAX + 1)
+#define KEY_RESERVED 0
+#define KEY_ESC 1
+#define KEY_1 2
+#define KEY_2 3
+#define KEY_3 4
+#define KEY_4 5
+#define KEY_5 6
+#define KEY_6 7
+#define KEY_7 8
+#define KEY_8 9
+#define KEY_9 10
+#define KEY_0 11
+#define KEY_MINUS 12
+#define KEY_EQUAL 13
+#define KEY_BACKSPACE 14
+#define KEY_TAB 15
+#define KEY_Q 16
+#define KEY_W 17
+#define KEY_E 18
+#define KEY_R 19
+#define KEY_T 20
+#define KEY_Y 21
+#define KEY_U 22
+#define KEY_I 23
+#define KEY_O 24
+#define KEY_P 25
+#define KEY_LEFTBRACE 26
+#define KEY_RIGHTBRACE 27
+#define KEY_ENTER 28
+#define KEY_LEFTCTRL 29
+#define KEY_A 30
+#define KEY_S 31
+#define KEY_D 32
+#define KEY_F 33
+#define KEY_G 34
+#define KEY_H 35
+#define KEY_J 36
+#define KEY_K 37
+#define KEY_L 38
+#define KEY_SEMICOLON 39
+#define KEY_APOSTROPHE 40
+#define KEY_GRAVE 41
+#define KEY_LEFTSHIFT 42
+#define KEY_BACKSLASH 43
+#define KEY_Z 44
+#define KEY_X 45
+#define KEY_C 46
+#define KEY_V 47
+#define KEY_B 48
+#define KEY_N 49
+#define KEY_M 50
+#define KEY_COMMA 51
+#define KEY_DOT 52
+#define KEY_SLASH 53
+#define KEY_RIGHTSHIFT 54
+#define KEY_KPASTERISK 55
+#define KEY_LEFTALT 56
+#define KEY_SPACE 57
+#define KEY_CAPSLOCK 58
+#define KEY_F1 59
+#define KEY_F2 60
+#define KEY_F3 61
+#define KEY_F4 62
+#define KEY_F5 63
+#define KEY_F6 64
+#define KEY_F7 65
+#define KEY_F8 66
+#define KEY_F9 67
+#define KEY_F10 68
+#define KEY_NUMLOCK 69
+#define KEY_SCROLLLOCK 70
+#define KEY_KP7 71
+#define KEY_KP8 72
+#define KEY_KP9 73
+#define KEY_KPMINUS 74
+#define KEY_KP4 75
+#define KEY_KP5 76
+#define KEY_KP6 77
+#define KEY_KPPLUS 78
+#define KEY_KP1 79
+#define KEY_KP2 80
+#define KEY_KP3 81
+#define KEY_KP0 82
+#define KEY_KPDOT 83
+#define KEY_ZENKAKUHANKAKU 85
+#define KEY_102ND 86
+#define KEY_F11 87
+#define KEY_F12 88
+#define KEY_RO 89
+#define KEY_KATAKANA 90
+#define KEY_HIRAGANA 91
+#define KEY_HENKAN 92
+#define KEY_KATAKANAHIRAGANA 93
+#define KEY_MUHENKAN 94
+#define KEY_KPJPCOMMA 95
+#define KEY_KPENTER 96
+#define KEY_RIGHTCTRL 97
+#define KEY_KPSLASH 98
+#define KEY_SYSRQ 99
+#define KEY_RIGHTALT 100
+#define KEY_LINEFEED 101
+#define KEY_HOME 102
+#define KEY_UP 103
+#define KEY_PAGEUP 104
+#define KEY_LEFT 105
+#define KEY_RIGHT 106
+#define KEY_END 107
+#define KEY_DOWN 108
+#define KEY_PAGEDOWN 109
+#define KEY_INSERT 110
+#define KEY_DELETE 111
+#define KEY_MACRO 112
+#define KEY_MUTE 113
+#define KEY_VOLUMEDOWN 114
+#define KEY_VOLUMEUP 115
+#define KEY_POWER 116
+#define KEY_KPEQUAL 117
+#define KEY_KPPLUSMINUS 118
+#define KEY_PAUSE 119
+#define KEY_SCALE 120
+#define KEY_KPCOMMA 121
+#define KEY_HANGEUL 122
+#define KEY_HANGUEL KEY_HANGEUL
+#define KEY_HANJA 123
+#define KEY_YEN 124
+#define KEY_LEFTMETA 125
+#define KEY_RIGHTMETA 126
+#define KEY_COMPOSE 127
+#define KEY_STOP 128
+#define KEY_AGAIN 129
+#define KEY_PROPS 130
+#define KEY_UNDO 131
+#define KEY_FRONT 132
+#define KEY_COPY 133
+#define KEY_OPEN 134
+#define KEY_PASTE 135
+#define KEY_FIND 136
+#define KEY_CUT 137
+#define KEY_HELP 138
+#define KEY_MENU 139
+#define KEY_CALC 140
+#define KEY_SETUP 141
+#define KEY_SLEEP 142
+#define KEY_WAKEUP 143
+#define KEY_FILE 144
+#define KEY_SENDFILE 145
+#define KEY_DELETEFILE 146
+#define KEY_XFER 147
+#define KEY_PROG1 148
+#define KEY_PROG2 149
+#define KEY_WWW 150
+#define KEY_MSDOS 151
+#define KEY_COFFEE 152
+#define KEY_SCREENLOCK KEY_COFFEE
+#define KEY_ROTATE_DISPLAY 153
+#define KEY_DIRECTION KEY_ROTATE_DISPLAY
+#define KEY_CYCLEWINDOWS 154
+#define KEY_MAIL 155
+#define KEY_BOOKMARKS 156
+#define KEY_COMPUTER 157
+#define KEY_BACK 158
+#define KEY_FORWARD 159
+#define KEY_CLOSECD 160
+#define KEY_EJECTCD 161
+#define KEY_EJECTCLOSECD 162
+#define KEY_NEXTSONG 163
+#define KEY_PLAYPAUSE 164
+#define KEY_PREVIOUSSONG 165
+#define KEY_STOPCD 166
+#define KEY_RECORD 167
+#define KEY_REWIND 168
+#define KEY_PHONE 169
+#define KEY_ISO 170
+#define KEY_CONFIG 171
+#define KEY_HOMEPAGE 172
+#define KEY_REFRESH 173
+#define KEY_EXIT 174
+#define KEY_MOVE 175
+#define KEY_EDIT 176
+#define KEY_SCROLLUP 177
+#define KEY_SCROLLDOWN 178
+#define KEY_KPLEFTPAREN 179
+#define KEY_KPRIGHTPAREN 180
+#define KEY_NEW 181
+#define KEY_REDO 182
+#define KEY_F13 183
+#define KEY_F14 184
+#define KEY_F15 185
+#define KEY_F16 186
+#define KEY_F17 187
+#define KEY_F18 188
+#define KEY_F19 189
+#define KEY_F20 190
+#define KEY_F21 191
+#define KEY_F22 192
+#define KEY_F23 193
+#define KEY_F24 194
+#define KEY_PLAYCD 200
+#define KEY_PAUSECD 201
+#define KEY_PROG3 202
+#define KEY_PROG4 203
+#define KEY_DASHBOARD 204
+#define KEY_SUSPEND 205
+#define KEY_CLOSE 206
+#define KEY_PLAY 207
+#define KEY_FASTFORWARD 208
+#define KEY_BASSBOOST 209
+#define KEY_PRINT 210
+#define KEY_HP 211
+#define KEY_CAMERA 212
+#define KEY_SOUND 213
+#define KEY_QUESTION 214
+#define KEY_EMAIL 215
+#define KEY_CHAT 216
+#define KEY_SEARCH 217
+#define KEY_CONNECT 218
+#define KEY_FINANCE 219
+#define KEY_SPORT 220
+#define KEY_SHOP 221
+#define KEY_ALTERASE 222
+#define KEY_CANCEL 223
+#define KEY_BRIGHTNESSDOWN 224
+#define KEY_BRIGHTNESSUP 225
+#define KEY_MEDIA 226
+#define KEY_SWITCHVIDEOMODE 227
+#define KEY_KBDILLUMTOGGLE 228
+#define KEY_KBDILLUMDOWN 229
+#define KEY_KBDILLUMUP 230
+#define KEY_SEND 231
+#define KEY_REPLY 232
+#define KEY_FORWARDMAIL 233
+#define KEY_SAVE 234
+#define KEY_DOCUMENTS 235
+#define KEY_BATTERY 236
+#define KEY_BLUETOOTH 237
+#define KEY_WLAN 238
+#define KEY_UWB 239
+#define KEY_UNKNOWN 240
+#define KEY_VIDEO_NEXT 241
+#define KEY_VIDEO_PREV 242
+#define KEY_BRIGHTNESS_CYCLE 243
+#define KEY_BRIGHTNESS_AUTO 244
+#define KEY_BRIGHTNESS_ZERO KEY_BRIGHTNESS_AUTO
+#define KEY_DISPLAY_OFF 245
+#define KEY_WWAN 246
+#define KEY_WIMAX KEY_WWAN
+#define KEY_RFKILL 247
+#define KEY_MICMUTE 248
+#define BTN_MISC 0x100
+#define BTN_0 0x100
+#define BTN_1 0x101
+#define BTN_2 0x102
+#define BTN_3 0x103
+#define BTN_4 0x104
+#define BTN_5 0x105
+#define BTN_6 0x106
+#define BTN_7 0x107
+#define BTN_8 0x108
+#define BTN_9 0x109
+#define BTN_MOUSE 0x110
+#define BTN_LEFT 0x110
+#define BTN_RIGHT 0x111
+#define BTN_MIDDLE 0x112
+#define BTN_SIDE 0x113
+#define BTN_EXTRA 0x114
+#define BTN_FORWARD 0x115
+#define BTN_BACK 0x116
+#define BTN_TASK 0x117
+#define BTN_JOYSTICK 0x120
+#define BTN_TRIGGER 0x120
+#define BTN_THUMB 0x121
+#define BTN_THUMB2 0x122
+#define BTN_TOP 0x123
+#define BTN_TOP2 0x124
+#define BTN_PINKIE 0x125
+#define BTN_BASE 0x126
+#define BTN_BASE2 0x127
+#define BTN_BASE3 0x128
+#define BTN_BASE4 0x129
+#define BTN_BASE5 0x12a
+#define BTN_BASE6 0x12b
+#define BTN_DEAD 0x12f
+#define BTN_GAMEPAD 0x130
+#define BTN_SOUTH 0x130
+#define BTN_A BTN_SOUTH
+#define BTN_EAST 0x131
+#define BTN_B BTN_EAST
+#define BTN_C 0x132
+#define BTN_NORTH 0x133
+#define BTN_X BTN_NORTH
+#define BTN_WEST 0x134
+#define BTN_Y BTN_WEST
+#define BTN_Z 0x135
+#define BTN_TL 0x136
+#define BTN_TR 0x137
+#define BTN_TL2 0x138
+#define BTN_TR2 0x139
+#define BTN_SELECT 0x13a
+#define BTN_START 0x13b
+#define BTN_MODE 0x13c
+#define BTN_THUMBL 0x13d
+#define BTN_THUMBR 0x13e
+#define BTN_DIGI 0x140
+#define BTN_TOOL_PEN 0x140
+#define BTN_TOOL_RUBBER 0x141
+#define BTN_TOOL_BRUSH 0x142
+#define BTN_TOOL_PENCIL 0x143
+#define BTN_TOOL_AIRBRUSH 0x144
+#define BTN_TOOL_FINGER 0x145
+#define BTN_TOOL_MOUSE 0x146
+#define BTN_TOOL_LENS 0x147
+#define BTN_TOOL_QUINTTAP 0x148
+#define BTN_STYLUS3 0x149
+#define BTN_TOUCH 0x14a
+#define BTN_STYLUS 0x14b
+#define BTN_STYLUS2 0x14c
+#define BTN_TOOL_DOUBLETAP 0x14d
+#define BTN_TOOL_TRIPLETAP 0x14e
+#define BTN_TOOL_QUADTAP 0x14f
+#define BTN_WHEEL 0x150
+#define BTN_GEAR_DOWN 0x150
+#define BTN_GEAR_UP 0x151
+#define KEY_OK 0x160
+#define KEY_SELECT 0x161
+#define KEY_GOTO 0x162
+#define KEY_CLEAR 0x163
+#define KEY_POWER2 0x164
+#define KEY_OPTION 0x165
+#define KEY_INFO 0x166
+#define KEY_TIME 0x167
+#define KEY_VENDOR 0x168
+#define KEY_ARCHIVE 0x169
+#define KEY_PROGRAM 0x16a
+#define KEY_CHANNEL 0x16b
+#define KEY_FAVORITES 0x16c
+#define KEY_EPG 0x16d
+#define KEY_PVR 0x16e
+#define KEY_MHP 0x16f
+#define KEY_LANGUAGE 0x170
+#define KEY_TITLE 0x171
+#define KEY_SUBTITLE 0x172
+#define KEY_ANGLE 0x173
+#define KEY_FULL_SCREEN 0x174
+#define KEY_ZOOM KEY_FULL_SCREEN
+#define KEY_MODE 0x175
+#define KEY_KEYBOARD 0x176
+#define KEY_ASPECT_RATIO 0x177
+#define KEY_SCREEN KEY_ASPECT_RATIO
+#define KEY_PC 0x178
+#define KEY_TV 0x179
+#define KEY_TV2 0x17a
+#define KEY_VCR 0x17b
+#define KEY_VCR2 0x17c
+#define KEY_SAT 0x17d
+#define KEY_SAT2 0x17e
+#define KEY_CD 0x17f
+#define KEY_TAPE 0x180
+#define KEY_RADIO 0x181
+#define KEY_TUNER 0x182
+#define KEY_PLAYER 0x183
+#define KEY_TEXT 0x184
+#define KEY_DVD 0x185
+#define KEY_AUX 0x186
+#define KEY_MP3 0x187
+#define KEY_AUDIO 0x188
+#define KEY_VIDEO 0x189
+#define KEY_DIRECTORY 0x18a
+#define KEY_LIST 0x18b
+#define KEY_MEMO 0x18c
+#define KEY_CALENDAR 0x18d
+#define KEY_RED 0x18e
+#define KEY_GREEN 0x18f
+#define KEY_YELLOW 0x190
+#define KEY_BLUE 0x191
+#define KEY_CHANNELUP 0x192
+#define KEY_CHANNELDOWN 0x193
+#define KEY_FIRST 0x194
+#define KEY_LAST 0x195
+#define KEY_AB 0x196
+#define KEY_NEXT 0x197
+#define KEY_RESTART 0x198
+#define KEY_SLOW 0x199
+#define KEY_SHUFFLE 0x19a
+#define KEY_BREAK 0x19b
+#define KEY_PREVIOUS 0x19c
+#define KEY_DIGITS 0x19d
+#define KEY_TEEN 0x19e
+#define KEY_TWEN 0x19f
+#define KEY_VIDEOPHONE 0x1a0
+#define KEY_GAMES 0x1a1
+#define KEY_ZOOMIN 0x1a2
+#define KEY_ZOOMOUT 0x1a3
+#define KEY_ZOOMRESET 0x1a4
+#define KEY_WORDPROCESSOR 0x1a5
+#define KEY_EDITOR 0x1a6
+#define KEY_SPREADSHEET 0x1a7
+#define KEY_GRAPHICSEDITOR 0x1a8
+#define KEY_PRESENTATION 0x1a9
+#define KEY_DATABASE 0x1aa
+#define KEY_NEWS 0x1ab
+#define KEY_VOICEMAIL 0x1ac
+#define KEY_ADDRESSBOOK 0x1ad
+#define KEY_MESSENGER 0x1ae
+#define KEY_DISPLAYTOGGLE 0x1af
+#define KEY_BRIGHTNESS_TOGGLE KEY_DISPLAYTOGGLE
+#define KEY_SPELLCHECK 0x1b0
+#define KEY_LOGOFF 0x1b1
+#define KEY_DOLLAR 0x1b2
+#define KEY_EURO 0x1b3
+#define KEY_FRAMEBACK 0x1b4
+#define KEY_FRAMEFORWARD 0x1b5
+#define KEY_CONTEXT_MENU 0x1b6
+#define KEY_MEDIA_REPEAT 0x1b7
+#define KEY_10CHANNELSUP 0x1b8
+#define KEY_10CHANNELSDOWN 0x1b9
+#define KEY_IMAGES 0x1ba
+#define KEY_NOTIFICATION_CENTER 0x1bc
+#define KEY_PICKUP_PHONE 0x1bd
+#define KEY_HANGUP_PHONE 0x1be
+#define KEY_DEL_EOL 0x1c0
+#define KEY_DEL_EOS 0x1c1
+#define KEY_INS_LINE 0x1c2
+#define KEY_DEL_LINE 0x1c3
+#define KEY_FN 0x1d0
+#define KEY_FN_ESC 0x1d1
+#define KEY_FN_F1 0x1d2
+#define KEY_FN_F2 0x1d3
+#define KEY_FN_F3 0x1d4
+#define KEY_FN_F4 0x1d5
+#define KEY_FN_F5 0x1d6
+#define KEY_FN_F6 0x1d7
+#define KEY_FN_F7 0x1d8
+#define KEY_FN_F8 0x1d9
+#define KEY_FN_F9 0x1da
+#define KEY_FN_F10 0x1db
+#define KEY_FN_F11 0x1dc
+#define KEY_FN_F12 0x1dd
+#define KEY_FN_1 0x1de
+#define KEY_FN_2 0x1df
+#define KEY_FN_D 0x1e0
+#define KEY_FN_E 0x1e1
+#define KEY_FN_F 0x1e2
+#define KEY_FN_S 0x1e3
+#define KEY_FN_B 0x1e4
+#define KEY_FN_RIGHT_SHIFT 0x1e5
+#define KEY_BRL_DOT1 0x1f1
+#define KEY_BRL_DOT2 0x1f2
+#define KEY_BRL_DOT3 0x1f3
+#define KEY_BRL_DOT4 0x1f4
+#define KEY_BRL_DOT5 0x1f5
+#define KEY_BRL_DOT6 0x1f6
+#define KEY_BRL_DOT7 0x1f7
+#define KEY_BRL_DOT8 0x1f8
+#define KEY_BRL_DOT9 0x1f9
+#define KEY_BRL_DOT10 0x1fa
+#define KEY_NUMERIC_0 0x200
+#define KEY_NUMERIC_1 0x201
+#define KEY_NUMERIC_2 0x202
+#define KEY_NUMERIC_3 0x203
+#define KEY_NUMERIC_4 0x204
+#define KEY_NUMERIC_5 0x205
+#define KEY_NUMERIC_6 0x206
+#define KEY_NUMERIC_7 0x207
+#define KEY_NUMERIC_8 0x208
+#define KEY_NUMERIC_9 0x209
+#define KEY_NUMERIC_STAR 0x20a
+#define KEY_NUMERIC_POUND 0x20b
+#define KEY_NUMERIC_A 0x20c
+#define KEY_NUMERIC_B 0x20d
+#define KEY_NUMERIC_C 0x20e
+#define KEY_NUMERIC_D 0x20f
+#define KEY_CAMERA_FOCUS 0x210
+#define KEY_WPS_BUTTON 0x211
+#define KEY_TOUCHPAD_TOGGLE 0x212
+#define KEY_TOUCHPAD_ON 0x213
+#define KEY_TOUCHPAD_OFF 0x214
+#define KEY_CAMERA_ZOOMIN 0x215
+#define KEY_CAMERA_ZOOMOUT 0x216
+#define KEY_CAMERA_UP 0x217
+#define KEY_CAMERA_DOWN 0x218
+#define KEY_CAMERA_LEFT 0x219
+#define KEY_CAMERA_RIGHT 0x21a
+#define KEY_ATTENDANT_ON 0x21b
+#define KEY_ATTENDANT_OFF 0x21c
+#define KEY_ATTENDANT_TOGGLE 0x21d
+#define KEY_LIGHTS_TOGGLE 0x21e
+#define BTN_DPAD_UP 0x220
+#define BTN_DPAD_DOWN 0x221
+#define BTN_DPAD_LEFT 0x222
+#define BTN_DPAD_RIGHT 0x223
+#define KEY_ALS_TOGGLE 0x230
+#define KEY_ROTATE_LOCK_TOGGLE 0x231
+#define KEY_BUTTONCONFIG 0x240
+#define KEY_TASKMANAGER 0x241
+#define KEY_JOURNAL 0x242
+#define KEY_CONTROLPANEL 0x243
+#define KEY_APPSELECT 0x244
+#define KEY_SCREENSAVER 0x245
+#define KEY_VOICECOMMAND 0x246
+#define KEY_ASSISTANT 0x247
+#define KEY_KBD_LAYOUT_NEXT 0x248
+#define KEY_EMOJI_PICKER 0x249
+#define KEY_BRIGHTNESS_MIN 0x250
+#define KEY_BRIGHTNESS_MAX 0x251
+#define KEY_KBDINPUTASSIST_PREV 0x260
+#define KEY_KBDINPUTASSIST_NEXT 0x261
+#define KEY_KBDINPUTASSIST_PREVGROUP 0x262
+#define KEY_KBDINPUTASSIST_NEXTGROUP 0x263
+#define KEY_KBDINPUTASSIST_ACCEPT 0x264
+#define KEY_KBDINPUTASSIST_CANCEL 0x265
+#define KEY_RIGHT_UP 0x266
+#define KEY_RIGHT_DOWN 0x267
+#define KEY_LEFT_UP 0x268
+#define KEY_LEFT_DOWN 0x269
+#define KEY_ROOT_MENU 0x26a
+#define KEY_MEDIA_TOP_MENU 0x26b
+#define KEY_NUMERIC_11 0x26c
+#define KEY_NUMERIC_12 0x26d
+#define KEY_AUDIO_DESC 0x26e
+#define KEY_3D_MODE 0x26f
+#define KEY_NEXT_FAVORITE 0x270
+#define KEY_STOP_RECORD 0x271
+#define KEY_PAUSE_RECORD 0x272
+#define KEY_VOD 0x273
+#define KEY_UNMUTE 0x274
+#define KEY_FASTREVERSE 0x275
+#define KEY_SLOWREVERSE 0x276
+#define KEY_DATA 0x277
+#define KEY_ONSCREEN_KEYBOARD 0x278
+#define KEY_PRIVACY_SCREEN_TOGGLE 0x279
+#define KEY_SELECTIVE_SCREENSHOT 0x27a
+#define KEY_MACRO1 0x290
+#define KEY_MACRO2 0x291
+#define KEY_MACRO3 0x292
+#define KEY_MACRO4 0x293
+#define KEY_MACRO5 0x294
+#define KEY_MACRO6 0x295
+#define KEY_MACRO7 0x296
+#define KEY_MACRO8 0x297
+#define KEY_MACRO9 0x298
+#define KEY_MACRO10 0x299
+#define KEY_MACRO11 0x29a
+#define KEY_MACRO12 0x29b
+#define KEY_MACRO13 0x29c
+#define KEY_MACRO14 0x29d
+#define KEY_MACRO15 0x29e
+#define KEY_MACRO16 0x29f
+#define KEY_MACRO17 0x2a0
+#define KEY_MACRO18 0x2a1
+#define KEY_MACRO19 0x2a2
+#define KEY_MACRO20 0x2a3
+#define KEY_MACRO21 0x2a4
+#define KEY_MACRO22 0x2a5
+#define KEY_MACRO23 0x2a6
+#define KEY_MACRO24 0x2a7
+#define KEY_MACRO25 0x2a8
+#define KEY_MACRO26 0x2a9
+#define KEY_MACRO27 0x2aa
+#define KEY_MACRO28 0x2ab
+#define KEY_MACRO29 0x2ac
+#define KEY_MACRO30 0x2ad
+#define KEY_MACRO_RECORD_START 0x2b0
+#define KEY_MACRO_RECORD_STOP 0x2b1
+#define KEY_MACRO_PRESET_CYCLE 0x2b2
+#define KEY_MACRO_PRESET1 0x2b3
+#define KEY_MACRO_PRESET2 0x2b4
+#define KEY_MACRO_PRESET3 0x2b5
+#define KEY_KBD_LCD_MENU1 0x2b8
+#define KEY_KBD_LCD_MENU2 0x2b9
+#define KEY_KBD_LCD_MENU3 0x2ba
+#define KEY_KBD_LCD_MENU4 0x2bb
+#define KEY_KBD_LCD_MENU5 0x2bc
+#define BTN_TRIGGER_HAPPY 0x2c0
+#define BTN_TRIGGER_HAPPY1 0x2c0
+#define BTN_TRIGGER_HAPPY2 0x2c1
+#define BTN_TRIGGER_HAPPY3 0x2c2
+#define BTN_TRIGGER_HAPPY4 0x2c3
+#define BTN_TRIGGER_HAPPY5 0x2c4
+#define BTN_TRIGGER_HAPPY6 0x2c5
+#define BTN_TRIGGER_HAPPY7 0x2c6
+#define BTN_TRIGGER_HAPPY8 0x2c7
+#define BTN_TRIGGER_HAPPY9 0x2c8
+#define BTN_TRIGGER_HAPPY10 0x2c9
+#define BTN_TRIGGER_HAPPY11 0x2ca
+#define BTN_TRIGGER_HAPPY12 0x2cb
+#define BTN_TRIGGER_HAPPY13 0x2cc
+#define BTN_TRIGGER_HAPPY14 0x2cd
+#define BTN_TRIGGER_HAPPY15 0x2ce
+#define BTN_TRIGGER_HAPPY16 0x2cf
+#define BTN_TRIGGER_HAPPY17 0x2d0
+#define BTN_TRIGGER_HAPPY18 0x2d1
+#define BTN_TRIGGER_HAPPY19 0x2d2
+#define BTN_TRIGGER_HAPPY20 0x2d3
+#define BTN_TRIGGER_HAPPY21 0x2d4
+#define BTN_TRIGGER_HAPPY22 0x2d5
+#define BTN_TRIGGER_HAPPY23 0x2d6
+#define BTN_TRIGGER_HAPPY24 0x2d7
+#define BTN_TRIGGER_HAPPY25 0x2d8
+#define BTN_TRIGGER_HAPPY26 0x2d9
+#define BTN_TRIGGER_HAPPY27 0x2da
+#define BTN_TRIGGER_HAPPY28 0x2db
+#define BTN_TRIGGER_HAPPY29 0x2dc
+#define BTN_TRIGGER_HAPPY30 0x2dd
+#define BTN_TRIGGER_HAPPY31 0x2de
+#define BTN_TRIGGER_HAPPY32 0x2df
+#define BTN_TRIGGER_HAPPY33 0x2e0
+#define BTN_TRIGGER_HAPPY34 0x2e1
+#define BTN_TRIGGER_HAPPY35 0x2e2
+#define BTN_TRIGGER_HAPPY36 0x2e3
+#define BTN_TRIGGER_HAPPY37 0x2e4
+#define BTN_TRIGGER_HAPPY38 0x2e5
+#define BTN_TRIGGER_HAPPY39 0x2e6
+#define BTN_TRIGGER_HAPPY40 0x2e7
+#define KEY_MIN_INTERESTING KEY_MUTE
+#define KEY_MAX 0x2ff
+#define KEY_CNT (KEY_MAX + 1)
+#define REL_X 0x00
+#define REL_Y 0x01
+#define REL_Z 0x02
+#define REL_RX 0x03
+#define REL_RY 0x04
+#define REL_RZ 0x05
+#define REL_HWHEEL 0x06
+#define REL_DIAL 0x07
+#define REL_WHEEL 0x08
+#define REL_MISC 0x09
+#define REL_RESERVED 0x0a
+#define REL_WHEEL_HI_RES 0x0b
+#define REL_HWHEEL_HI_RES 0x0c
+#define REL_MAX 0x0f
+#define REL_CNT (REL_MAX + 1)
+#define ABS_X 0x00
+#define ABS_Y 0x01
+#define ABS_Z 0x02
+#define ABS_RX 0x03
+#define ABS_RY 0x04
+#define ABS_RZ 0x05
+#define ABS_THROTTLE 0x06
+#define ABS_RUDDER 0x07
+#define ABS_WHEEL 0x08
+#define ABS_GAS 0x09
+#define ABS_BRAKE 0x0a
+#define ABS_HAT0X 0x10
+#define ABS_HAT0Y 0x11
+#define ABS_HAT1X 0x12
+#define ABS_HAT1Y 0x13
+#define ABS_HAT2X 0x14
+#define ABS_HAT2Y 0x15
+#define ABS_HAT3X 0x16
+#define ABS_HAT3Y 0x17
+#define ABS_PRESSURE 0x18
+#define ABS_DISTANCE 0x19
+#define ABS_TILT_X 0x1a
+#define ABS_TILT_Y 0x1b
+#define ABS_TOOL_WIDTH 0x1c
+#define ABS_VOLUME 0x20
+#define ABS_MISC 0x28
+#define ABS_RESERVED 0x2e
+#define ABS_MT_SLOT 0x2f
+#define ABS_MT_TOUCH_MAJOR 0x30
+#define ABS_MT_TOUCH_MINOR 0x31
+#define ABS_MT_WIDTH_MAJOR 0x32
+#define ABS_MT_WIDTH_MINOR 0x33
+#define ABS_MT_ORIENTATION 0x34
+#define ABS_MT_POSITION_X 0x35
+#define ABS_MT_POSITION_Y 0x36
+#define ABS_MT_TOOL_TYPE 0x37
+#define ABS_MT_BLOB_ID 0x38
+#define ABS_MT_TRACKING_ID 0x39
+#define ABS_MT_PRESSURE 0x3a
+#define ABS_MT_DISTANCE 0x3b
+#define ABS_MT_TOOL_X 0x3c
+#define ABS_MT_TOOL_Y 0x3d
+#define ABS_MAX 0x3f
+#define ABS_CNT (ABS_MAX + 1)
+#define SW_LID 0x00
+#define SW_TABLET_MODE 0x01
+#define SW_HEADPHONE_INSERT 0x02
+#define SW_RFKILL_ALL 0x03
+#define SW_RADIO SW_RFKILL_ALL
+#define SW_MICROPHONE_INSERT 0x04
+#define SW_DOCK 0x05
+#define SW_LINEOUT_INSERT 0x06
+#define SW_JACK_PHYSICAL_INSERT 0x07
+#define SW_VIDEOOUT_INSERT 0x08
+#define SW_CAMERA_LENS_COVER 0x09
+#define SW_KEYPAD_SLIDE 0x0a
+#define SW_FRONT_PROXIMITY 0x0b
+#define SW_ROTATE_LOCK 0x0c
+#define SW_LINEIN_INSERT 0x0d
+#define SW_MUTE_DEVICE 0x0e
+#define SW_PEN_INSERTED 0x0f
+#define SW_MACHINE_COVER 0x10
+#define SW_MAX 0x10
+#define SW_CNT (SW_MAX + 1)
+#define MSC_SERIAL 0x00
+#define MSC_PULSELED 0x01
+#define MSC_GESTURE 0x02
+#define MSC_RAW 0x03
+#define MSC_SCAN 0x04
+#define MSC_TIMESTAMP 0x05
+#define MSC_MAX 0x07
+#define MSC_CNT (MSC_MAX + 1)
+#define LED_NUML 0x00
+#define LED_CAPSL 0x01
+#define LED_SCROLLL 0x02
+#define LED_COMPOSE 0x03
+#define LED_KANA 0x04
+#define LED_SLEEP 0x05
+#define LED_SUSPEND 0x06
+#define LED_MUTE 0x07
+#define LED_MISC 0x08
+#define LED_MAIL 0x09
+#define LED_CHARGING 0x0a
+#define LED_MAX 0x0f
+#define LED_CNT (LED_MAX + 1)
+#define REP_DELAY 0x00
+#define REP_PERIOD 0x01
+#define REP_MAX 0x01
+#define REP_CNT (REP_MAX + 1)
+#define SND_CLICK 0x00
+#define SND_BELL 0x01
+#define SND_TONE 0x02
+#define SND_MAX 0x07
+#define SND_CNT (SND_MAX + 1)
+#endif
diff --git a/i686-linux-musl/include/linux/input.h b/i686-linux-musl/include/linux/input.h
new file mode 100644
index 0000000..fe17226
--- /dev/null
+++ b/i686-linux-musl/include/linux/input.h
@@ -0,0 +1,218 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_INPUT_H
+#define _UAPI_INPUT_H
+#include <sys/time.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <linux/types.h>
+#include "input-event-codes.h"
+struct input_event {
+#if __BITS_PER_LONG != 32 || !defined(__USE_TIME_BITS64)
+  struct timeval time;
+#define input_event_sec time.tv_sec
+#define input_event_usec time.tv_usec
+#else
+  __kernel_ulong_t __sec;
+#if defined(__sparc__) && defined(__arch64__)
+  unsigned int __usec;
+  unsigned int __pad;
+#else
+  __kernel_ulong_t __usec;
+#endif
+#define input_event_sec __sec
+#define input_event_usec __usec
+#endif
+  __u16 type;
+  __u16 code;
+  __s32 value;
+};
+#define EV_VERSION 0x010001
+struct input_id {
+  __u16 bustype;
+  __u16 vendor;
+  __u16 product;
+  __u16 version;
+};
+struct input_absinfo {
+  __s32 value;
+  __s32 minimum;
+  __s32 maximum;
+  __s32 fuzz;
+  __s32 flat;
+  __s32 resolution;
+};
+struct input_keymap_entry {
+#define INPUT_KEYMAP_BY_INDEX (1 << 0)
+  __u8 flags;
+  __u8 len;
+  __u16 index;
+  __u32 keycode;
+  __u8 scancode[32];
+};
+struct input_mask {
+  __u32 type;
+  __u32 codes_size;
+  __u64 codes_ptr;
+};
+#define EVIOCGVERSION _IOR('E', 0x01, int)
+#define EVIOCGID _IOR('E', 0x02, struct input_id)
+#define EVIOCGREP _IOR('E', 0x03, unsigned int[2])
+#define EVIOCSREP _IOW('E', 0x03, unsigned int[2])
+#define EVIOCGKEYCODE _IOR('E', 0x04, unsigned int[2])
+#define EVIOCGKEYCODE_V2 _IOR('E', 0x04, struct input_keymap_entry)
+#define EVIOCSKEYCODE _IOW('E', 0x04, unsigned int[2])
+#define EVIOCSKEYCODE_V2 _IOW('E', 0x04, struct input_keymap_entry)
+#define EVIOCGNAME(len) _IOC(_IOC_READ, 'E', 0x06, len)
+#define EVIOCGPHYS(len) _IOC(_IOC_READ, 'E', 0x07, len)
+#define EVIOCGUNIQ(len) _IOC(_IOC_READ, 'E', 0x08, len)
+#define EVIOCGPROP(len) _IOC(_IOC_READ, 'E', 0x09, len)
+#define EVIOCGMTSLOTS(len) _IOC(_IOC_READ, 'E', 0x0a, len)
+#define EVIOCGKEY(len) _IOC(_IOC_READ, 'E', 0x18, len)
+#define EVIOCGLED(len) _IOC(_IOC_READ, 'E', 0x19, len)
+#define EVIOCGSND(len) _IOC(_IOC_READ, 'E', 0x1a, len)
+#define EVIOCGSW(len) _IOC(_IOC_READ, 'E', 0x1b, len)
+#define EVIOCGBIT(ev,len) _IOC(_IOC_READ, 'E', 0x20 + (ev), len)
+#define EVIOCGABS(abs) _IOR('E', 0x40 + (abs), struct input_absinfo)
+#define EVIOCSABS(abs) _IOW('E', 0xc0 + (abs), struct input_absinfo)
+#define EVIOCSFF _IOW('E', 0x80, struct ff_effect)
+#define EVIOCRMFF _IOW('E', 0x81, int)
+#define EVIOCGEFFECTS _IOR('E', 0x84, int)
+#define EVIOCGRAB _IOW('E', 0x90, int)
+#define EVIOCREVOKE _IOW('E', 0x91, int)
+#define EVIOCGMASK _IOR('E', 0x92, struct input_mask)
+#define EVIOCSMASK _IOW('E', 0x93, struct input_mask)
+#define EVIOCSCLOCKID _IOW('E', 0xa0, int)
+#define ID_BUS 0
+#define ID_VENDOR 1
+#define ID_PRODUCT 2
+#define ID_VERSION 3
+#define BUS_PCI 0x01
+#define BUS_ISAPNP 0x02
+#define BUS_USB 0x03
+#define BUS_HIL 0x04
+#define BUS_BLUETOOTH 0x05
+#define BUS_VIRTUAL 0x06
+#define BUS_ISA 0x10
+#define BUS_I8042 0x11
+#define BUS_XTKBD 0x12
+#define BUS_RS232 0x13
+#define BUS_GAMEPORT 0x14
+#define BUS_PARPORT 0x15
+#define BUS_AMIGA 0x16
+#define BUS_ADB 0x17
+#define BUS_I2C 0x18
+#define BUS_HOST 0x19
+#define BUS_GSC 0x1A
+#define BUS_ATARI 0x1B
+#define BUS_SPI 0x1C
+#define BUS_RMI 0x1D
+#define BUS_CEC 0x1E
+#define BUS_INTEL_ISHTP 0x1F
+#define MT_TOOL_FINGER 0x00
+#define MT_TOOL_PEN 0x01
+#define MT_TOOL_PALM 0x02
+#define MT_TOOL_DIAL 0x0a
+#define MT_TOOL_MAX 0x0f
+#define FF_STATUS_STOPPED 0x00
+#define FF_STATUS_PLAYING 0x01
+#define FF_STATUS_MAX 0x01
+struct ff_replay {
+  __u16 length;
+  __u16 delay;
+};
+struct ff_trigger {
+  __u16 button;
+  __u16 interval;
+};
+struct ff_envelope {
+  __u16 attack_length;
+  __u16 attack_level;
+  __u16 fade_length;
+  __u16 fade_level;
+};
+struct ff_constant_effect {
+  __s16 level;
+  struct ff_envelope envelope;
+};
+struct ff_ramp_effect {
+  __s16 start_level;
+  __s16 end_level;
+  struct ff_envelope envelope;
+};
+struct ff_condition_effect {
+  __u16 right_saturation;
+  __u16 left_saturation;
+  __s16 right_coeff;
+  __s16 left_coeff;
+  __u16 deadband;
+  __s16 center;
+};
+struct ff_periodic_effect {
+  __u16 waveform;
+  __u16 period;
+  __s16 magnitude;
+  __s16 offset;
+  __u16 phase;
+  struct ff_envelope envelope;
+  __u32 custom_len;
+  __s16 __user * custom_data;
+};
+struct ff_rumble_effect {
+  __u16 strong_magnitude;
+  __u16 weak_magnitude;
+};
+struct ff_effect {
+  __u16 type;
+  __s16 id;
+  __u16 direction;
+  struct ff_trigger trigger;
+  struct ff_replay replay;
+  union {
+    struct ff_constant_effect constant;
+    struct ff_ramp_effect ramp;
+    struct ff_periodic_effect periodic;
+    struct ff_condition_effect condition[2];
+    struct ff_rumble_effect rumble;
+  } u;
+};
+#define FF_RUMBLE 0x50
+#define FF_PERIODIC 0x51
+#define FF_CONSTANT 0x52
+#define FF_SPRING 0x53
+#define FF_FRICTION 0x54
+#define FF_DAMPER 0x55
+#define FF_INERTIA 0x56
+#define FF_RAMP 0x57
+#define FF_EFFECT_MIN FF_RUMBLE
+#define FF_EFFECT_MAX FF_RAMP
+#define FF_SQUARE 0x58
+#define FF_TRIANGLE 0x59
+#define FF_SINE 0x5a
+#define FF_SAW_UP 0x5b
+#define FF_SAW_DOWN 0x5c
+#define FF_CUSTOM 0x5d
+#define FF_WAVEFORM_MIN FF_SQUARE
+#define FF_WAVEFORM_MAX FF_CUSTOM
+#define FF_GAIN 0x60
+#define FF_AUTOCENTER 0x61
+#define FF_MAX_EFFECTS FF_GAIN
+#define FF_MAX 0x7f
+#define FF_CNT (FF_MAX + 1)
+#endif
diff --git a/i686-linux-musl/include/linux/io_uring.h b/i686-linux-musl/include/linux/io_uring.h
new file mode 100644
index 0000000..f6e8250
--- /dev/null
+++ b/i686-linux-musl/include/linux/io_uring.h
@@ -0,0 +1,299 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef LINUX_IO_URING_H
+#define LINUX_IO_URING_H
+#include <linux/fs.h>
+#include <linux/types.h>
+struct io_uring_sqe {
+  __u8 opcode;
+  __u8 flags;
+  __u16 ioprio;
+  __s32 fd;
+  union {
+    __u64 off;
+    __u64 addr2;
+  };
+  union {
+    __u64 addr;
+    __u64 splice_off_in;
+  };
+  __u32 len;
+  union {
+    __kernel_rwf_t rw_flags;
+    __u32 fsync_flags;
+    __u16 poll_events;
+    __u32 poll32_events;
+    __u32 sync_range_flags;
+    __u32 msg_flags;
+    __u32 timeout_flags;
+    __u32 accept_flags;
+    __u32 cancel_flags;
+    __u32 open_flags;
+    __u32 statx_flags;
+    __u32 fadvise_advice;
+    __u32 splice_flags;
+    __u32 rename_flags;
+    __u32 unlink_flags;
+    __u32 hardlink_flags;
+  };
+  __u64 user_data;
+  union {
+    __u16 buf_index;
+    __u16 buf_group;
+  } __attribute__((packed));
+  __u16 personality;
+  union {
+    __s32 splice_fd_in;
+    __u32 file_index;
+  };
+  __u64 __pad2[2];
+};
+enum {
+  IOSQE_FIXED_FILE_BIT,
+  IOSQE_IO_DRAIN_BIT,
+  IOSQE_IO_LINK_BIT,
+  IOSQE_IO_HARDLINK_BIT,
+  IOSQE_ASYNC_BIT,
+  IOSQE_BUFFER_SELECT_BIT,
+};
+#define IOSQE_FIXED_FILE (1U << IOSQE_FIXED_FILE_BIT)
+#define IOSQE_IO_DRAIN (1U << IOSQE_IO_DRAIN_BIT)
+#define IOSQE_IO_LINK (1U << IOSQE_IO_LINK_BIT)
+#define IOSQE_IO_HARDLINK (1U << IOSQE_IO_HARDLINK_BIT)
+#define IOSQE_ASYNC (1U << IOSQE_ASYNC_BIT)
+#define IOSQE_BUFFER_SELECT (1U << IOSQE_BUFFER_SELECT_BIT)
+#define IORING_SETUP_IOPOLL (1U << 0)
+#define IORING_SETUP_SQPOLL (1U << 1)
+#define IORING_SETUP_SQ_AFF (1U << 2)
+#define IORING_SETUP_CQSIZE (1U << 3)
+#define IORING_SETUP_CLAMP (1U << 4)
+#define IORING_SETUP_ATTACH_WQ (1U << 5)
+#define IORING_SETUP_R_DISABLED (1U << 6)
+enum {
+  IORING_OP_NOP,
+  IORING_OP_READV,
+  IORING_OP_WRITEV,
+  IORING_OP_FSYNC,
+  IORING_OP_READ_FIXED,
+  IORING_OP_WRITE_FIXED,
+  IORING_OP_POLL_ADD,
+  IORING_OP_POLL_REMOVE,
+  IORING_OP_SYNC_FILE_RANGE,
+  IORING_OP_SENDMSG,
+  IORING_OP_RECVMSG,
+  IORING_OP_TIMEOUT,
+  IORING_OP_TIMEOUT_REMOVE,
+  IORING_OP_ACCEPT,
+  IORING_OP_ASYNC_CANCEL,
+  IORING_OP_LINK_TIMEOUT,
+  IORING_OP_CONNECT,
+  IORING_OP_FALLOCATE,
+  IORING_OP_OPENAT,
+  IORING_OP_CLOSE,
+  IORING_OP_FILES_UPDATE,
+  IORING_OP_STATX,
+  IORING_OP_READ,
+  IORING_OP_WRITE,
+  IORING_OP_FADVISE,
+  IORING_OP_MADVISE,
+  IORING_OP_SEND,
+  IORING_OP_RECV,
+  IORING_OP_OPENAT2,
+  IORING_OP_EPOLL_CTL,
+  IORING_OP_SPLICE,
+  IORING_OP_PROVIDE_BUFFERS,
+  IORING_OP_REMOVE_BUFFERS,
+  IORING_OP_TEE,
+  IORING_OP_SHUTDOWN,
+  IORING_OP_RENAMEAT,
+  IORING_OP_UNLINKAT,
+  IORING_OP_MKDIRAT,
+  IORING_OP_SYMLINKAT,
+  IORING_OP_LINKAT,
+  IORING_OP_LAST,
+};
+#define IORING_FSYNC_DATASYNC (1U << 0)
+#define IORING_TIMEOUT_ABS (1U << 0)
+#define IORING_TIMEOUT_UPDATE (1U << 1)
+#define IORING_TIMEOUT_BOOTTIME (1U << 2)
+#define IORING_TIMEOUT_REALTIME (1U << 3)
+#define IORING_LINK_TIMEOUT_UPDATE (1U << 4)
+#define IORING_TIMEOUT_ETIME_SUCCESS (1U << 5)
+#define IORING_TIMEOUT_CLOCK_MASK (IORING_TIMEOUT_BOOTTIME | IORING_TIMEOUT_REALTIME)
+#define IORING_TIMEOUT_UPDATE_MASK (IORING_TIMEOUT_UPDATE | IORING_LINK_TIMEOUT_UPDATE)
+#define SPLICE_F_FD_IN_FIXED (1U << 31)
+#define IORING_POLL_ADD_MULTI (1U << 0)
+#define IORING_POLL_UPDATE_EVENTS (1U << 1)
+#define IORING_POLL_UPDATE_USER_DATA (1U << 2)
+struct io_uring_cqe {
+  __u64 user_data;
+  __s32 res;
+  __u32 flags;
+};
+#define IORING_CQE_F_BUFFER (1U << 0)
+#define IORING_CQE_F_MORE (1U << 1)
+enum {
+  IORING_CQE_BUFFER_SHIFT = 16,
+};
+#define IORING_OFF_SQ_RING 0ULL
+#define IORING_OFF_CQ_RING 0x8000000ULL
+#define IORING_OFF_SQES 0x10000000ULL
+struct io_sqring_offsets {
+  __u32 head;
+  __u32 tail;
+  __u32 ring_mask;
+  __u32 ring_entries;
+  __u32 flags;
+  __u32 dropped;
+  __u32 array;
+  __u32 resv1;
+  __u64 resv2;
+};
+#define IORING_SQ_NEED_WAKEUP (1U << 0)
+#define IORING_SQ_CQ_OVERFLOW (1U << 1)
+struct io_cqring_offsets {
+  __u32 head;
+  __u32 tail;
+  __u32 ring_mask;
+  __u32 ring_entries;
+  __u32 overflow;
+  __u32 cqes;
+  __u32 flags;
+  __u32 resv1;
+  __u64 resv2;
+};
+#define IORING_CQ_EVENTFD_DISABLED (1U << 0)
+#define IORING_ENTER_GETEVENTS (1U << 0)
+#define IORING_ENTER_SQ_WAKEUP (1U << 1)
+#define IORING_ENTER_SQ_WAIT (1U << 2)
+#define IORING_ENTER_EXT_ARG (1U << 3)
+struct io_uring_params {
+  __u32 sq_entries;
+  __u32 cq_entries;
+  __u32 flags;
+  __u32 sq_thread_cpu;
+  __u32 sq_thread_idle;
+  __u32 features;
+  __u32 wq_fd;
+  __u32 resv[3];
+  struct io_sqring_offsets sq_off;
+  struct io_cqring_offsets cq_off;
+};
+#define IORING_FEAT_SINGLE_MMAP (1U << 0)
+#define IORING_FEAT_NODROP (1U << 1)
+#define IORING_FEAT_SUBMIT_STABLE (1U << 2)
+#define IORING_FEAT_RW_CUR_POS (1U << 3)
+#define IORING_FEAT_CUR_PERSONALITY (1U << 4)
+#define IORING_FEAT_FAST_POLL (1U << 5)
+#define IORING_FEAT_POLL_32BITS (1U << 6)
+#define IORING_FEAT_SQPOLL_NONFIXED (1U << 7)
+#define IORING_FEAT_EXT_ARG (1U << 8)
+#define IORING_FEAT_NATIVE_WORKERS (1U << 9)
+#define IORING_FEAT_RSRC_TAGS (1U << 10)
+enum {
+  IORING_REGISTER_BUFFERS = 0,
+  IORING_UNREGISTER_BUFFERS = 1,
+  IORING_REGISTER_FILES = 2,
+  IORING_UNREGISTER_FILES = 3,
+  IORING_REGISTER_EVENTFD = 4,
+  IORING_UNREGISTER_EVENTFD = 5,
+  IORING_REGISTER_FILES_UPDATE = 6,
+  IORING_REGISTER_EVENTFD_ASYNC = 7,
+  IORING_REGISTER_PROBE = 8,
+  IORING_REGISTER_PERSONALITY = 9,
+  IORING_UNREGISTER_PERSONALITY = 10,
+  IORING_REGISTER_RESTRICTIONS = 11,
+  IORING_REGISTER_ENABLE_RINGS = 12,
+  IORING_REGISTER_FILES2 = 13,
+  IORING_REGISTER_FILES_UPDATE2 = 14,
+  IORING_REGISTER_BUFFERS2 = 15,
+  IORING_REGISTER_BUFFERS_UPDATE = 16,
+  IORING_REGISTER_IOWQ_AFF = 17,
+  IORING_UNREGISTER_IOWQ_AFF = 18,
+  IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
+  IORING_REGISTER_LAST
+};
+enum {
+  IO_WQ_BOUND,
+  IO_WQ_UNBOUND,
+};
+struct io_uring_files_update {
+  __u32 offset;
+  __u32 resv;
+  __aligned_u64 fds;
+};
+struct io_uring_rsrc_register {
+  __u32 nr;
+  __u32 resv;
+  __u64 resv2;
+  __aligned_u64 data;
+  __aligned_u64 tags;
+};
+struct io_uring_rsrc_update {
+  __u32 offset;
+  __u32 resv;
+  __aligned_u64 data;
+};
+struct io_uring_rsrc_update2 {
+  __u32 offset;
+  __u32 resv;
+  __aligned_u64 data;
+  __aligned_u64 tags;
+  __u32 nr;
+  __u32 resv2;
+};
+#define IORING_REGISTER_FILES_SKIP (- 2)
+#define IO_URING_OP_SUPPORTED (1U << 0)
+struct io_uring_probe_op {
+  __u8 op;
+  __u8 resv;
+  __u16 flags;
+  __u32 resv2;
+};
+struct io_uring_probe {
+  __u8 last_op;
+  __u8 ops_len;
+  __u16 resv;
+  __u32 resv2[3];
+  struct io_uring_probe_op ops[0];
+};
+struct io_uring_restriction {
+  __u16 opcode;
+  union {
+    __u8 register_op;
+    __u8 sqe_op;
+    __u8 sqe_flags;
+  };
+  __u8 resv;
+  __u32 resv2[3];
+};
+enum {
+  IORING_RESTRICTION_REGISTER_OP = 0,
+  IORING_RESTRICTION_SQE_OP = 1,
+  IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
+  IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
+  IORING_RESTRICTION_LAST
+};
+struct io_uring_getevents_arg {
+  __u64 sigmask;
+  __u32 sigmask_sz;
+  __u32 pad;
+  __u64 ts;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/ioam6.h b/i686-linux-musl/include/linux/ioam6.h
new file mode 100644
index 0000000..e32c8e9
--- /dev/null
+++ b/i686-linux-musl/include/linux/ioam6.h
@@ -0,0 +1,63 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IOAM6_H
+#define _UAPI_LINUX_IOAM6_H
+#include <asm/byteorder.h>
+#include <linux/types.h>
+#define IOAM6_U16_UNAVAILABLE U16_MAX
+#define IOAM6_U32_UNAVAILABLE U32_MAX
+#define IOAM6_U64_UNAVAILABLE U64_MAX
+#define IOAM6_DEFAULT_ID (IOAM6_U32_UNAVAILABLE >> 8)
+#define IOAM6_DEFAULT_ID_WIDE (IOAM6_U64_UNAVAILABLE >> 8)
+#define IOAM6_DEFAULT_IF_ID IOAM6_U16_UNAVAILABLE
+#define IOAM6_DEFAULT_IF_ID_WIDE IOAM6_U32_UNAVAILABLE
+struct ioam6_hdr {
+  __u8 opt_type;
+  __u8 opt_len;
+  __u8 : 8;
+#define IOAM6_TYPE_PREALLOC 0
+  __u8 type;
+} __attribute__((packed));
+struct ioam6_trace_hdr {
+  __be16 namespace_id;
+#ifdef __LITTLE_ENDIAN_BITFIELD
+  __u8 : 1, : 1, overflow : 1, nodelen : 5;
+  __u8 remlen : 7, : 1;
+  union {
+    __be32 type_be32;
+    struct {
+      __u32 bit7 : 1, bit6 : 1, bit5 : 1, bit4 : 1, bit3 : 1, bit2 : 1, bit1 : 1, bit0 : 1, bit15 : 1, bit14 : 1, bit13 : 1, bit12 : 1, bit11 : 1, bit10 : 1, bit9 : 1, bit8 : 1, bit23 : 1, bit22 : 1, bit21 : 1, bit20 : 1, bit19 : 1, bit18 : 1, bit17 : 1, bit16 : 1, : 8;
+    } type;
+  };
+#elif defined(__BIG_ENDIAN_BITFIELD)
+  __u8 nodelen : 5, overflow : 1, : 1, : 1;
+  __u8 : 1, remlen : 7;
+  union {
+    __be32 type_be32;
+    struct {
+      __u32 bit0 : 1, bit1 : 1, bit2 : 1, bit3 : 1, bit4 : 1, bit5 : 1, bit6 : 1, bit7 : 1, bit8 : 1, bit9 : 1, bit10 : 1, bit11 : 1, bit12 : 1, bit13 : 1, bit14 : 1, bit15 : 1, bit16 : 1, bit17 : 1, bit18 : 1, bit19 : 1, bit20 : 1, bit21 : 1, bit22 : 1, bit23 : 1, : 8;
+    } type;
+  };
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif
+#define IOAM6_TRACE_DATA_SIZE_MAX 244
+  __u8 data[0];
+} __attribute__((packed));
+#endif
diff --git a/i686-linux-musl/include/linux/ioam6_genl.h b/i686-linux-musl/include/linux/ioam6_genl.h
new file mode 100644
index 0000000..1d00c47
--- /dev/null
+++ b/i686-linux-musl/include/linux/ioam6_genl.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IOAM6_GENL_H
+#define _UAPI_LINUX_IOAM6_GENL_H
+#define IOAM6_GENL_NAME "IOAM6"
+#define IOAM6_GENL_VERSION 0x1
+enum {
+  IOAM6_ATTR_UNSPEC,
+  IOAM6_ATTR_NS_ID,
+  IOAM6_ATTR_NS_DATA,
+  IOAM6_ATTR_NS_DATA_WIDE,
+#define IOAM6_MAX_SCHEMA_DATA_LEN (255 * 4)
+  IOAM6_ATTR_SC_ID,
+  IOAM6_ATTR_SC_DATA,
+  IOAM6_ATTR_SC_NONE,
+  IOAM6_ATTR_PAD,
+  __IOAM6_ATTR_MAX,
+};
+#define IOAM6_ATTR_MAX (__IOAM6_ATTR_MAX - 1)
+enum {
+  IOAM6_CMD_UNSPEC,
+  IOAM6_CMD_ADD_NAMESPACE,
+  IOAM6_CMD_DEL_NAMESPACE,
+  IOAM6_CMD_DUMP_NAMESPACES,
+  IOAM6_CMD_ADD_SCHEMA,
+  IOAM6_CMD_DEL_SCHEMA,
+  IOAM6_CMD_DUMP_SCHEMAS,
+  IOAM6_CMD_NS_SET_SCHEMA,
+  __IOAM6_CMD_MAX,
+};
+#define IOAM6_CMD_MAX (__IOAM6_CMD_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/ioam6_iptunnel.h b/i686-linux-musl/include/linux/ioam6_iptunnel.h
new file mode 100644
index 0000000..7426225
--- /dev/null
+++ b/i686-linux-musl/include/linux/ioam6_iptunnel.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IOAM6_IPTUNNEL_H
+#define _UAPI_LINUX_IOAM6_IPTUNNEL_H
+enum {
+  __IOAM6_IPTUNNEL_MODE_MIN,
+  IOAM6_IPTUNNEL_MODE_INLINE,
+  IOAM6_IPTUNNEL_MODE_ENCAP,
+  IOAM6_IPTUNNEL_MODE_AUTO,
+  __IOAM6_IPTUNNEL_MODE_MAX,
+};
+#define IOAM6_IPTUNNEL_MODE_MIN (__IOAM6_IPTUNNEL_MODE_MIN + 1)
+#define IOAM6_IPTUNNEL_MODE_MAX (__IOAM6_IPTUNNEL_MODE_MAX - 1)
+enum {
+  IOAM6_IPTUNNEL_UNSPEC,
+  IOAM6_IPTUNNEL_MODE,
+  IOAM6_IPTUNNEL_DST,
+  IOAM6_IPTUNNEL_TRACE,
+  __IOAM6_IPTUNNEL_MAX,
+};
+#define IOAM6_IPTUNNEL_MAX (__IOAM6_IPTUNNEL_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/ioctl.h b/i686-linux-musl/include/linux/ioctl.h
new file mode 100644
index 0000000..98e3c06
--- /dev/null
+++ b/i686-linux-musl/include/linux/ioctl.h
@@ -0,0 +1,22 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_IOCTL_H
+#define _LINUX_IOCTL_H
+#include <asm/ioctl.h>
+#endif
diff --git a/i686-linux-musl/include/linux/iommu.h b/i686-linux-musl/include/linux/iommu.h
new file mode 100644
index 0000000..0a0af92
--- /dev/null
+++ b/i686-linux-musl/include/linux/iommu.h
@@ -0,0 +1,160 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_IOMMU_H
+#define _UAPI_IOMMU_H
+#include <linux/types.h>
+#define IOMMU_FAULT_PERM_READ (1 << 0)
+#define IOMMU_FAULT_PERM_WRITE (1 << 1)
+#define IOMMU_FAULT_PERM_EXEC (1 << 2)
+#define IOMMU_FAULT_PERM_PRIV (1 << 3)
+enum iommu_fault_type {
+  IOMMU_FAULT_DMA_UNRECOV = 1,
+  IOMMU_FAULT_PAGE_REQ,
+};
+enum iommu_fault_reason {
+  IOMMU_FAULT_REASON_UNKNOWN = 0,
+  IOMMU_FAULT_REASON_PASID_FETCH,
+  IOMMU_FAULT_REASON_BAD_PASID_ENTRY,
+  IOMMU_FAULT_REASON_PASID_INVALID,
+  IOMMU_FAULT_REASON_WALK_EABT,
+  IOMMU_FAULT_REASON_PTE_FETCH,
+  IOMMU_FAULT_REASON_PERMISSION,
+  IOMMU_FAULT_REASON_ACCESS,
+  IOMMU_FAULT_REASON_OOR_ADDRESS,
+};
+struct iommu_fault_unrecoverable {
+  __u32 reason;
+#define IOMMU_FAULT_UNRECOV_PASID_VALID (1 << 0)
+#define IOMMU_FAULT_UNRECOV_ADDR_VALID (1 << 1)
+#define IOMMU_FAULT_UNRECOV_FETCH_ADDR_VALID (1 << 2)
+  __u32 flags;
+  __u32 pasid;
+  __u32 perm;
+  __u64 addr;
+  __u64 fetch_addr;
+};
+struct iommu_fault_page_request {
+#define IOMMU_FAULT_PAGE_REQUEST_PASID_VALID (1 << 0)
+#define IOMMU_FAULT_PAGE_REQUEST_LAST_PAGE (1 << 1)
+#define IOMMU_FAULT_PAGE_REQUEST_PRIV_DATA (1 << 2)
+#define IOMMU_FAULT_PAGE_RESPONSE_NEEDS_PASID (1 << 3)
+  __u32 flags;
+  __u32 pasid;
+  __u32 grpid;
+  __u32 perm;
+  __u64 addr;
+  __u64 private_data[2];
+};
+struct iommu_fault {
+  __u32 type;
+  __u32 padding;
+  union {
+    struct iommu_fault_unrecoverable event;
+    struct iommu_fault_page_request prm;
+    __u8 padding2[56];
+  };
+};
+enum iommu_page_response_code {
+  IOMMU_PAGE_RESP_SUCCESS = 0,
+  IOMMU_PAGE_RESP_INVALID,
+  IOMMU_PAGE_RESP_FAILURE,
+};
+struct iommu_page_response {
+  __u32 argsz;
+#define IOMMU_PAGE_RESP_VERSION_1 1
+  __u32 version;
+#define IOMMU_PAGE_RESP_PASID_VALID (1 << 0)
+  __u32 flags;
+  __u32 pasid;
+  __u32 grpid;
+  __u32 code;
+};
+enum iommu_inv_granularity {
+  IOMMU_INV_GRANU_DOMAIN,
+  IOMMU_INV_GRANU_PASID,
+  IOMMU_INV_GRANU_ADDR,
+  IOMMU_INV_GRANU_NR,
+};
+struct iommu_inv_addr_info {
+#define IOMMU_INV_ADDR_FLAGS_PASID (1 << 0)
+#define IOMMU_INV_ADDR_FLAGS_ARCHID (1 << 1)
+#define IOMMU_INV_ADDR_FLAGS_LEAF (1 << 2)
+  __u32 flags;
+  __u32 archid;
+  __u64 pasid;
+  __u64 addr;
+  __u64 granule_size;
+  __u64 nb_granules;
+};
+struct iommu_inv_pasid_info {
+#define IOMMU_INV_PASID_FLAGS_PASID (1 << 0)
+#define IOMMU_INV_PASID_FLAGS_ARCHID (1 << 1)
+  __u32 flags;
+  __u32 archid;
+  __u64 pasid;
+};
+struct iommu_cache_invalidate_info {
+  __u32 argsz;
+#define IOMMU_CACHE_INVALIDATE_INFO_VERSION_1 1
+  __u32 version;
+#define IOMMU_CACHE_INV_TYPE_IOTLB (1 << 0)
+#define IOMMU_CACHE_INV_TYPE_DEV_IOTLB (1 << 1)
+#define IOMMU_CACHE_INV_TYPE_PASID (1 << 2)
+#define IOMMU_CACHE_INV_TYPE_NR (3)
+  __u8 cache;
+  __u8 granularity;
+  __u8 padding[6];
+  union {
+    struct iommu_inv_pasid_info pasid_info;
+    struct iommu_inv_addr_info addr_info;
+  } granu;
+};
+struct iommu_gpasid_bind_data_vtd {
+#define IOMMU_SVA_VTD_GPASID_SRE (1 << 0)
+#define IOMMU_SVA_VTD_GPASID_EAFE (1 << 1)
+#define IOMMU_SVA_VTD_GPASID_PCD (1 << 2)
+#define IOMMU_SVA_VTD_GPASID_PWT (1 << 3)
+#define IOMMU_SVA_VTD_GPASID_EMTE (1 << 4)
+#define IOMMU_SVA_VTD_GPASID_CD (1 << 5)
+#define IOMMU_SVA_VTD_GPASID_WPE (1 << 6)
+#define IOMMU_SVA_VTD_GPASID_LAST (1 << 7)
+  __u64 flags;
+  __u32 pat;
+  __u32 emt;
+};
+#define IOMMU_SVA_VTD_GPASID_MTS_MASK (IOMMU_SVA_VTD_GPASID_CD | IOMMU_SVA_VTD_GPASID_EMTE | IOMMU_SVA_VTD_GPASID_PCD | IOMMU_SVA_VTD_GPASID_PWT)
+struct iommu_gpasid_bind_data {
+  __u32 argsz;
+#define IOMMU_GPASID_BIND_VERSION_1 1
+  __u32 version;
+#define IOMMU_PASID_FORMAT_INTEL_VTD 1
+#define IOMMU_PASID_FORMAT_LAST 2
+  __u32 format;
+  __u32 addr_width;
+#define IOMMU_SVA_GPASID_VAL (1 << 0)
+  __u64 flags;
+  __u64 gpgd;
+  __u64 hpasid;
+  __u64 gpasid;
+  __u8 padding[8];
+  union {
+    struct iommu_gpasid_bind_data_vtd vtd;
+  } vendor;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/ioprio.h b/i686-linux-musl/include/linux/ioprio.h
new file mode 100644
index 0000000..7a90d87
--- /dev/null
+++ b/i686-linux-musl/include/linux/ioprio.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IOPRIO_H
+#define _UAPI_LINUX_IOPRIO_H
+#define IOPRIO_CLASS_SHIFT 13
+#define IOPRIO_CLASS_MASK 0x07
+#define IOPRIO_PRIO_MASK ((1UL << IOPRIO_CLASS_SHIFT) - 1)
+#define IOPRIO_PRIO_CLASS(ioprio) (((ioprio) >> IOPRIO_CLASS_SHIFT) & IOPRIO_CLASS_MASK)
+#define IOPRIO_PRIO_DATA(ioprio) ((ioprio) & IOPRIO_PRIO_MASK)
+#define IOPRIO_PRIO_VALUE(class,data) ((((class) & IOPRIO_CLASS_MASK) << IOPRIO_CLASS_SHIFT) | ((data) & IOPRIO_PRIO_MASK))
+enum {
+  IOPRIO_CLASS_NONE,
+  IOPRIO_CLASS_RT,
+  IOPRIO_CLASS_BE,
+  IOPRIO_CLASS_IDLE,
+};
+#define IOPRIO_NR_LEVELS 8
+#define IOPRIO_BE_NR IOPRIO_NR_LEVELS
+enum {
+  IOPRIO_WHO_PROCESS = 1,
+  IOPRIO_WHO_PGRP,
+  IOPRIO_WHO_USER,
+};
+#define IOPRIO_NORM 4
+#define IOPRIO_BE_NORM IOPRIO_NORM
+#endif
diff --git a/i686-linux-musl/include/linux/ip.h b/i686-linux-musl/include/linux/ip.h
new file mode 100644
index 0000000..9571cac
--- /dev/null
+++ b/i686-linux-musl/include/linux/ip.h
@@ -0,0 +1,153 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IP_H
+#define _UAPI_LINUX_IP_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+#define IPTOS_TOS_MASK 0x1E
+#define IPTOS_TOS(tos) ((tos) & IPTOS_TOS_MASK)
+#define IPTOS_LOWDELAY 0x10
+#define IPTOS_THROUGHPUT 0x08
+#define IPTOS_RELIABILITY 0x04
+#define IPTOS_MINCOST 0x02
+#define IPTOS_PREC_MASK 0xE0
+#define IPTOS_PREC(tos) ((tos) & IPTOS_PREC_MASK)
+#define IPTOS_PREC_NETCONTROL 0xe0
+#define IPTOS_PREC_INTERNETCONTROL 0xc0
+#define IPTOS_PREC_CRITIC_ECP 0xa0
+#define IPTOS_PREC_FLASHOVERRIDE 0x80
+#define IPTOS_PREC_FLASH 0x60
+#define IPTOS_PREC_IMMEDIATE 0x40
+#define IPTOS_PREC_PRIORITY 0x20
+#define IPTOS_PREC_ROUTINE 0x00
+#define IPOPT_COPY 0x80
+#define IPOPT_CLASS_MASK 0x60
+#define IPOPT_NUMBER_MASK 0x1f
+#define IPOPT_COPIED(o) ((o) & IPOPT_COPY)
+#define IPOPT_CLASS(o) ((o) & IPOPT_CLASS_MASK)
+#define IPOPT_NUMBER(o) ((o) & IPOPT_NUMBER_MASK)
+#define IPOPT_CONTROL 0x00
+#define IPOPT_RESERVED1 0x20
+#define IPOPT_MEASUREMENT 0x40
+#define IPOPT_RESERVED2 0x60
+#define IPOPT_END (0 | IPOPT_CONTROL)
+#define IPOPT_NOOP (1 | IPOPT_CONTROL)
+#define IPOPT_SEC (2 | IPOPT_CONTROL | IPOPT_COPY)
+#define IPOPT_LSRR (3 | IPOPT_CONTROL | IPOPT_COPY)
+#define IPOPT_TIMESTAMP (4 | IPOPT_MEASUREMENT)
+#define IPOPT_CIPSO (6 | IPOPT_CONTROL | IPOPT_COPY)
+#define IPOPT_RR (7 | IPOPT_CONTROL)
+#define IPOPT_SID (8 | IPOPT_CONTROL | IPOPT_COPY)
+#define IPOPT_SSRR (9 | IPOPT_CONTROL | IPOPT_COPY)
+#define IPOPT_RA (20 | IPOPT_CONTROL | IPOPT_COPY)
+#define IPVERSION 4
+#define MAXTTL 255
+#define IPDEFTTL 64
+#define IPOPT_OPTVAL 0
+#define IPOPT_OLEN 1
+#define IPOPT_OFFSET 2
+#define IPOPT_MINOFF 4
+#define MAX_IPOPTLEN 40
+#define IPOPT_NOP IPOPT_NOOP
+#define IPOPT_EOL IPOPT_END
+#define IPOPT_TS IPOPT_TIMESTAMP
+#define IPOPT_TS_TSONLY 0
+#define IPOPT_TS_TSANDADDR 1
+#define IPOPT_TS_PRESPEC 3
+#define IPV4_BEET_PHMAXLEN 8
+struct iphdr {
+#ifdef __LITTLE_ENDIAN_BITFIELD
+  __u8 ihl : 4, version : 4;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+  __u8 version : 4, ihl : 4;
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif
+  __u8 tos;
+  __be16 tot_len;
+  __be16 id;
+  __be16 frag_off;
+  __u8 ttl;
+  __u8 protocol;
+  __sum16 check;
+  __be32 saddr;
+  __be32 daddr;
+};
+struct ip_auth_hdr {
+  __u8 nexthdr;
+  __u8 hdrlen;
+  __be16 reserved;
+  __be32 spi;
+  __be32 seq_no;
+  __u8 auth_data[0];
+};
+struct ip_esp_hdr {
+  __be32 spi;
+  __be32 seq_no;
+  __u8 enc_data[0];
+};
+struct ip_comp_hdr {
+  __u8 nexthdr;
+  __u8 flags;
+  __be16 cpi;
+};
+struct ip_beet_phdr {
+  __u8 nexthdr;
+  __u8 hdrlen;
+  __u8 padlen;
+  __u8 reserved;
+};
+enum {
+  IPV4_DEVCONF_FORWARDING = 1,
+  IPV4_DEVCONF_MC_FORWARDING,
+  IPV4_DEVCONF_PROXY_ARP,
+  IPV4_DEVCONF_ACCEPT_REDIRECTS,
+  IPV4_DEVCONF_SECURE_REDIRECTS,
+  IPV4_DEVCONF_SEND_REDIRECTS,
+  IPV4_DEVCONF_SHARED_MEDIA,
+  IPV4_DEVCONF_RP_FILTER,
+  IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE,
+  IPV4_DEVCONF_BOOTP_RELAY,
+  IPV4_DEVCONF_LOG_MARTIANS,
+  IPV4_DEVCONF_TAG,
+  IPV4_DEVCONF_ARPFILTER,
+  IPV4_DEVCONF_MEDIUM_ID,
+  IPV4_DEVCONF_NOXFRM,
+  IPV4_DEVCONF_NOPOLICY,
+  IPV4_DEVCONF_FORCE_IGMP_VERSION,
+  IPV4_DEVCONF_ARP_ANNOUNCE,
+  IPV4_DEVCONF_ARP_IGNORE,
+  IPV4_DEVCONF_PROMOTE_SECONDARIES,
+  IPV4_DEVCONF_ARP_ACCEPT,
+  IPV4_DEVCONF_ARP_NOTIFY,
+  IPV4_DEVCONF_ACCEPT_LOCAL,
+  IPV4_DEVCONF_SRC_VMARK,
+  IPV4_DEVCONF_PROXY_ARP_PVLAN,
+  IPV4_DEVCONF_ROUTE_LOCALNET,
+  IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL,
+  IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL,
+  IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN,
+  IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
+  IPV4_DEVCONF_DROP_GRATUITOUS_ARP,
+  IPV4_DEVCONF_BC_FORWARDING,
+  IPV4_DEVCONF_ARP_EVICT_NOCARRIER,
+  __IPV4_DEVCONF_MAX
+};
+#define IPV4_DEVCONF_MAX (__IPV4_DEVCONF_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/ip6_tunnel.h b/i686-linux-musl/include/linux/ip6_tunnel.h
new file mode 100644
index 0000000..ba59235
--- /dev/null
+++ b/i686-linux-musl/include/linux/ip6_tunnel.h
@@ -0,0 +1,59 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IP6_TUNNEL_H
+#define _IP6_TUNNEL_H
+#include <linux/types.h>
+#include <linux/if.h>
+#include <linux/in6.h>
+#define IPV6_TLV_TNL_ENCAP_LIMIT 4
+#define IPV6_DEFAULT_TNL_ENCAP_LIMIT 4
+#define IP6_TNL_F_IGN_ENCAP_LIMIT 0x1
+#define IP6_TNL_F_USE_ORIG_TCLASS 0x2
+#define IP6_TNL_F_USE_ORIG_FLOWLABEL 0x4
+#define IP6_TNL_F_MIP6_DEV 0x8
+#define IP6_TNL_F_RCV_DSCP_COPY 0x10
+#define IP6_TNL_F_USE_ORIG_FWMARK 0x20
+#define IP6_TNL_F_ALLOW_LOCAL_REMOTE 0x40
+struct ip6_tnl_parm {
+  char name[IFNAMSIZ];
+  int link;
+  __u8 proto;
+  __u8 encap_limit;
+  __u8 hop_limit;
+  __be32 flowinfo;
+  __u32 flags;
+  struct in6_addr laddr;
+  struct in6_addr raddr;
+};
+struct ip6_tnl_parm2 {
+  char name[IFNAMSIZ];
+  int link;
+  __u8 proto;
+  __u8 encap_limit;
+  __u8 hop_limit;
+  __be32 flowinfo;
+  __u32 flags;
+  struct in6_addr laddr;
+  struct in6_addr raddr;
+  __be16 i_flags;
+  __be16 o_flags;
+  __be32 i_key;
+  __be32 o_key;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/ip_vs.h b/i686-linux-musl/include/linux/ip_vs.h
new file mode 100644
index 0000000..6e3defe
--- /dev/null
+++ b/i686-linux-musl/include/linux/ip_vs.h
@@ -0,0 +1,290 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IP_VS_H
+#define _IP_VS_H
+#include <linux/types.h>
+#define IP_VS_VERSION_CODE 0x010201
+#define NVERSION(version) (version >> 16) & 0xFF, (version >> 8) & 0xFF, version & 0xFF
+#define IP_VS_SVC_F_PERSISTENT 0x0001
+#define IP_VS_SVC_F_HASHED 0x0002
+#define IP_VS_SVC_F_ONEPACKET 0x0004
+#define IP_VS_SVC_F_SCHED1 0x0008
+#define IP_VS_SVC_F_SCHED2 0x0010
+#define IP_VS_SVC_F_SCHED3 0x0020
+#define IP_VS_SVC_F_SCHED_SH_FALLBACK IP_VS_SVC_F_SCHED1
+#define IP_VS_SVC_F_SCHED_SH_PORT IP_VS_SVC_F_SCHED2
+#define IP_VS_DEST_F_AVAILABLE 0x0001
+#define IP_VS_DEST_F_OVERLOAD 0x0002
+#define IP_VS_STATE_NONE 0x0000
+#define IP_VS_STATE_MASTER 0x0001
+#define IP_VS_STATE_BACKUP 0x0002
+#define IP_VS_BASE_CTL (64 + 1024 + 64)
+#define IP_VS_SO_SET_NONE IP_VS_BASE_CTL
+#define IP_VS_SO_SET_INSERT (IP_VS_BASE_CTL + 1)
+#define IP_VS_SO_SET_ADD (IP_VS_BASE_CTL + 2)
+#define IP_VS_SO_SET_EDIT (IP_VS_BASE_CTL + 3)
+#define IP_VS_SO_SET_DEL (IP_VS_BASE_CTL + 4)
+#define IP_VS_SO_SET_FLUSH (IP_VS_BASE_CTL + 5)
+#define IP_VS_SO_SET_LIST (IP_VS_BASE_CTL + 6)
+#define IP_VS_SO_SET_ADDDEST (IP_VS_BASE_CTL + 7)
+#define IP_VS_SO_SET_DELDEST (IP_VS_BASE_CTL + 8)
+#define IP_VS_SO_SET_EDITDEST (IP_VS_BASE_CTL + 9)
+#define IP_VS_SO_SET_TIMEOUT (IP_VS_BASE_CTL + 10)
+#define IP_VS_SO_SET_STARTDAEMON (IP_VS_BASE_CTL + 11)
+#define IP_VS_SO_SET_STOPDAEMON (IP_VS_BASE_CTL + 12)
+#define IP_VS_SO_SET_RESTORE (IP_VS_BASE_CTL + 13)
+#define IP_VS_SO_SET_SAVE (IP_VS_BASE_CTL + 14)
+#define IP_VS_SO_SET_ZERO (IP_VS_BASE_CTL + 15)
+#define IP_VS_SO_SET_MAX IP_VS_SO_SET_ZERO
+#define IP_VS_SO_GET_VERSION IP_VS_BASE_CTL
+#define IP_VS_SO_GET_INFO (IP_VS_BASE_CTL + 1)
+#define IP_VS_SO_GET_SERVICES (IP_VS_BASE_CTL + 2)
+#define IP_VS_SO_GET_SERVICE (IP_VS_BASE_CTL + 3)
+#define IP_VS_SO_GET_DESTS (IP_VS_BASE_CTL + 4)
+#define IP_VS_SO_GET_DEST (IP_VS_BASE_CTL + 5)
+#define IP_VS_SO_GET_TIMEOUT (IP_VS_BASE_CTL + 6)
+#define IP_VS_SO_GET_DAEMON (IP_VS_BASE_CTL + 7)
+#define IP_VS_SO_GET_MAX IP_VS_SO_GET_DAEMON
+#define IP_VS_CONN_F_FWD_MASK 0x0007
+#define IP_VS_CONN_F_MASQ 0x0000
+#define IP_VS_CONN_F_LOCALNODE 0x0001
+#define IP_VS_CONN_F_TUNNEL 0x0002
+#define IP_VS_CONN_F_DROUTE 0x0003
+#define IP_VS_CONN_F_BYPASS 0x0004
+#define IP_VS_CONN_F_SYNC 0x0020
+#define IP_VS_CONN_F_HASHED 0x0040
+#define IP_VS_CONN_F_NOOUTPUT 0x0080
+#define IP_VS_CONN_F_INACTIVE 0x0100
+#define IP_VS_CONN_F_OUT_SEQ 0x0200
+#define IP_VS_CONN_F_IN_SEQ 0x0400
+#define IP_VS_CONN_F_SEQ_MASK 0x0600
+#define IP_VS_CONN_F_NO_CPORT 0x0800
+#define IP_VS_CONN_F_TEMPLATE 0x1000
+#define IP_VS_CONN_F_ONE_PACKET 0x2000
+#define IP_VS_CONN_F_BACKUP_MASK (IP_VS_CONN_F_FWD_MASK | IP_VS_CONN_F_NOOUTPUT | IP_VS_CONN_F_INACTIVE | IP_VS_CONN_F_SEQ_MASK | IP_VS_CONN_F_NO_CPORT | IP_VS_CONN_F_TEMPLATE)
+#define IP_VS_CONN_F_BACKUP_UPD_MASK (IP_VS_CONN_F_INACTIVE | IP_VS_CONN_F_SEQ_MASK)
+#define IP_VS_CONN_F_NFCT (1 << 16)
+#define IP_VS_CONN_F_DEST_MASK (IP_VS_CONN_F_FWD_MASK | IP_VS_CONN_F_ONE_PACKET | IP_VS_CONN_F_NFCT | 0)
+#define IP_VS_SCHEDNAME_MAXLEN 16
+#define IP_VS_PENAME_MAXLEN 16
+#define IP_VS_IFNAME_MAXLEN 16
+#define IP_VS_PEDATA_MAXLEN 255
+enum {
+  IP_VS_CONN_F_TUNNEL_TYPE_IPIP = 0,
+  IP_VS_CONN_F_TUNNEL_TYPE_GUE,
+  IP_VS_CONN_F_TUNNEL_TYPE_GRE,
+  IP_VS_CONN_F_TUNNEL_TYPE_MAX,
+};
+#define IP_VS_TUNNEL_ENCAP_FLAG_NOCSUM (0)
+#define IP_VS_TUNNEL_ENCAP_FLAG_CSUM (1 << 0)
+#define IP_VS_TUNNEL_ENCAP_FLAG_REMCSUM (1 << 1)
+struct ip_vs_service_user {
+  __u16 protocol;
+  __be32 addr;
+  __be16 port;
+  __u32 fwmark;
+  char sched_name[IP_VS_SCHEDNAME_MAXLEN];
+  unsigned int flags;
+  unsigned int timeout;
+  __be32 netmask;
+};
+struct ip_vs_dest_user {
+  __be32 addr;
+  __be16 port;
+  unsigned int conn_flags;
+  int weight;
+  __u32 u_threshold;
+  __u32 l_threshold;
+};
+struct ip_vs_stats_user {
+  __u32 conns;
+  __u32 inpkts;
+  __u32 outpkts;
+  __u64 inbytes;
+  __u64 outbytes;
+  __u32 cps;
+  __u32 inpps;
+  __u32 outpps;
+  __u32 inbps;
+  __u32 outbps;
+};
+struct ip_vs_getinfo {
+  unsigned int version;
+  unsigned int size;
+  unsigned int num_services;
+};
+struct ip_vs_service_entry {
+  __u16 protocol;
+  __be32 addr;
+  __be16 port;
+  __u32 fwmark;
+  char sched_name[IP_VS_SCHEDNAME_MAXLEN];
+  unsigned int flags;
+  unsigned int timeout;
+  __be32 netmask;
+  unsigned int num_dests;
+  struct ip_vs_stats_user stats;
+};
+struct ip_vs_dest_entry {
+  __be32 addr;
+  __be16 port;
+  unsigned int conn_flags;
+  int weight;
+  __u32 u_threshold;
+  __u32 l_threshold;
+  __u32 activeconns;
+  __u32 inactconns;
+  __u32 persistconns;
+  struct ip_vs_stats_user stats;
+};
+struct ip_vs_get_dests {
+  __u16 protocol;
+  __be32 addr;
+  __be16 port;
+  __u32 fwmark;
+  unsigned int num_dests;
+  struct ip_vs_dest_entry entrytable[0];
+};
+struct ip_vs_get_services {
+  unsigned int num_services;
+  struct ip_vs_service_entry entrytable[0];
+};
+struct ip_vs_timeout_user {
+  int tcp_timeout;
+  int tcp_fin_timeout;
+  int udp_timeout;
+};
+struct ip_vs_daemon_user {
+  int state;
+  char mcast_ifn[IP_VS_IFNAME_MAXLEN];
+  int syncid;
+};
+#define IPVS_GENL_NAME "IPVS"
+#define IPVS_GENL_VERSION 0x1
+struct ip_vs_flags {
+  __u32 flags;
+  __u32 mask;
+};
+enum {
+  IPVS_CMD_UNSPEC = 0,
+  IPVS_CMD_NEW_SERVICE,
+  IPVS_CMD_SET_SERVICE,
+  IPVS_CMD_DEL_SERVICE,
+  IPVS_CMD_GET_SERVICE,
+  IPVS_CMD_NEW_DEST,
+  IPVS_CMD_SET_DEST,
+  IPVS_CMD_DEL_DEST,
+  IPVS_CMD_GET_DEST,
+  IPVS_CMD_NEW_DAEMON,
+  IPVS_CMD_DEL_DAEMON,
+  IPVS_CMD_GET_DAEMON,
+  IPVS_CMD_SET_CONFIG,
+  IPVS_CMD_GET_CONFIG,
+  IPVS_CMD_SET_INFO,
+  IPVS_CMD_GET_INFO,
+  IPVS_CMD_ZERO,
+  IPVS_CMD_FLUSH,
+  __IPVS_CMD_MAX,
+};
+#define IPVS_CMD_MAX (__IPVS_CMD_MAX - 1)
+enum {
+  IPVS_CMD_ATTR_UNSPEC = 0,
+  IPVS_CMD_ATTR_SERVICE,
+  IPVS_CMD_ATTR_DEST,
+  IPVS_CMD_ATTR_DAEMON,
+  IPVS_CMD_ATTR_TIMEOUT_TCP,
+  IPVS_CMD_ATTR_TIMEOUT_TCP_FIN,
+  IPVS_CMD_ATTR_TIMEOUT_UDP,
+  __IPVS_CMD_ATTR_MAX,
+};
+#define IPVS_CMD_ATTR_MAX (__IPVS_CMD_ATTR_MAX - 1)
+enum {
+  IPVS_SVC_ATTR_UNSPEC = 0,
+  IPVS_SVC_ATTR_AF,
+  IPVS_SVC_ATTR_PROTOCOL,
+  IPVS_SVC_ATTR_ADDR,
+  IPVS_SVC_ATTR_PORT,
+  IPVS_SVC_ATTR_FWMARK,
+  IPVS_SVC_ATTR_SCHED_NAME,
+  IPVS_SVC_ATTR_FLAGS,
+  IPVS_SVC_ATTR_TIMEOUT,
+  IPVS_SVC_ATTR_NETMASK,
+  IPVS_SVC_ATTR_STATS,
+  IPVS_SVC_ATTR_PE_NAME,
+  IPVS_SVC_ATTR_STATS64,
+  __IPVS_SVC_ATTR_MAX,
+};
+#define IPVS_SVC_ATTR_MAX (__IPVS_SVC_ATTR_MAX - 1)
+enum {
+  IPVS_DEST_ATTR_UNSPEC = 0,
+  IPVS_DEST_ATTR_ADDR,
+  IPVS_DEST_ATTR_PORT,
+  IPVS_DEST_ATTR_FWD_METHOD,
+  IPVS_DEST_ATTR_WEIGHT,
+  IPVS_DEST_ATTR_U_THRESH,
+  IPVS_DEST_ATTR_L_THRESH,
+  IPVS_DEST_ATTR_ACTIVE_CONNS,
+  IPVS_DEST_ATTR_INACT_CONNS,
+  IPVS_DEST_ATTR_PERSIST_CONNS,
+  IPVS_DEST_ATTR_STATS,
+  IPVS_DEST_ATTR_ADDR_FAMILY,
+  IPVS_DEST_ATTR_STATS64,
+  IPVS_DEST_ATTR_TUN_TYPE,
+  IPVS_DEST_ATTR_TUN_PORT,
+  IPVS_DEST_ATTR_TUN_FLAGS,
+  __IPVS_DEST_ATTR_MAX,
+};
+#define IPVS_DEST_ATTR_MAX (__IPVS_DEST_ATTR_MAX - 1)
+enum {
+  IPVS_DAEMON_ATTR_UNSPEC = 0,
+  IPVS_DAEMON_ATTR_STATE,
+  IPVS_DAEMON_ATTR_MCAST_IFN,
+  IPVS_DAEMON_ATTR_SYNC_ID,
+  IPVS_DAEMON_ATTR_SYNC_MAXLEN,
+  IPVS_DAEMON_ATTR_MCAST_GROUP,
+  IPVS_DAEMON_ATTR_MCAST_GROUP6,
+  IPVS_DAEMON_ATTR_MCAST_PORT,
+  IPVS_DAEMON_ATTR_MCAST_TTL,
+  __IPVS_DAEMON_ATTR_MAX,
+};
+#define IPVS_DAEMON_ATTR_MAX (__IPVS_DAEMON_ATTR_MAX - 1)
+enum {
+  IPVS_STATS_ATTR_UNSPEC = 0,
+  IPVS_STATS_ATTR_CONNS,
+  IPVS_STATS_ATTR_INPKTS,
+  IPVS_STATS_ATTR_OUTPKTS,
+  IPVS_STATS_ATTR_INBYTES,
+  IPVS_STATS_ATTR_OUTBYTES,
+  IPVS_STATS_ATTR_CPS,
+  IPVS_STATS_ATTR_INPPS,
+  IPVS_STATS_ATTR_OUTPPS,
+  IPVS_STATS_ATTR_INBPS,
+  IPVS_STATS_ATTR_OUTBPS,
+  IPVS_STATS_ATTR_PAD,
+  __IPVS_STATS_ATTR_MAX,
+};
+#define IPVS_STATS_ATTR_MAX (__IPVS_STATS_ATTR_MAX - 1)
+enum {
+  IPVS_INFO_ATTR_UNSPEC = 0,
+  IPVS_INFO_ATTR_VERSION,
+  IPVS_INFO_ATTR_CONN_TAB_SIZE,
+  __IPVS_INFO_ATTR_MAX,
+};
+#define IPVS_INFO_ATTR_MAX (__IPVS_INFO_ATTR_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/ipc.h b/i686-linux-musl/include/linux/ipc.h
new file mode 100644
index 0000000..a0699cf
--- /dev/null
+++ b/i686-linux-musl/include/linux/ipc.h
@@ -0,0 +1,62 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IPC_H
+#define _UAPI_LINUX_IPC_H
+#include <linux/types.h>
+#define IPC_PRIVATE ((__kernel_key_t) 0)
+struct __kernel_legacy_ipc_perm {
+  __kernel_key_t key;
+  __kernel_uid_t uid;
+  __kernel_gid_t gid;
+  __kernel_uid_t cuid;
+  __kernel_gid_t cgid;
+  __kernel_mode_t mode;
+  unsigned short seq;
+};
+#include <asm/ipcbuf.h>
+#define IPC_CREAT 00001000
+#define IPC_EXCL 00002000
+#define IPC_NOWAIT 00004000
+#define IPC_DIPC 00010000
+#define IPC_OWN 00020000
+#define IPC_RMID 0
+#define IPC_SET 1
+#define IPC_STAT 2
+#define IPC_INFO 3
+#define IPC_OLD 0
+#define IPC_64 0x0100
+struct ipc_kludge {
+  struct msgbuf __user * msgp;
+  long msgtyp;
+};
+#define SEMOP 1
+#define SEMGET 2
+#define SEMCTL 3
+#define SEMTIMEDOP 4
+#define MSGSND 11
+#define MSGRCV 12
+#define MSGGET 13
+#define MSGCTL 14
+#define SHMAT 21
+#define SHMDT 22
+#define SHMGET 23
+#define SHMCTL 24
+#define DIPC 25
+#define IPCCALL(version,op) ((version) << 16 | (op))
+#endif
diff --git a/i686-linux-musl/include/linux/ipmi.h b/i686-linux-musl/include/linux/ipmi.h
new file mode 100644
index 0000000..dd88f2f
--- /dev/null
+++ b/i686-linux-musl/include/linux/ipmi.h
@@ -0,0 +1,144 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_IPMI_H
+#define _UAPI__LINUX_IPMI_H
+#include <linux/ipmi_msgdefs.h>
+#include <linux/compiler.h>
+#define IPMI_MAX_ADDR_SIZE 32
+struct ipmi_addr {
+  int addr_type;
+  short channel;
+  char data[IPMI_MAX_ADDR_SIZE];
+};
+#define IPMI_SYSTEM_INTERFACE_ADDR_TYPE 0x0c
+struct ipmi_system_interface_addr {
+  int addr_type;
+  short channel;
+  unsigned char lun;
+};
+#define IPMI_IPMB_ADDR_TYPE 0x01
+#define IPMI_IPMB_BROADCAST_ADDR_TYPE 0x41
+struct ipmi_ipmb_addr {
+  int addr_type;
+  short channel;
+  unsigned char slave_addr;
+  unsigned char lun;
+};
+#define IPMI_IPMB_DIRECT_ADDR_TYPE 0x81
+struct ipmi_ipmb_direct_addr {
+  int addr_type;
+  short channel;
+  unsigned char slave_addr;
+  unsigned char rs_lun;
+  unsigned char rq_lun;
+};
+#define IPMI_LAN_ADDR_TYPE 0x04
+struct ipmi_lan_addr {
+  int addr_type;
+  short channel;
+  unsigned char privilege;
+  unsigned char session_handle;
+  unsigned char remote_SWID;
+  unsigned char local_SWID;
+  unsigned char lun;
+};
+#define IPMI_BMC_CHANNEL 0xf
+#define IPMI_NUM_CHANNELS 0x10
+#define IPMI_CHAN_ALL (~0)
+struct ipmi_msg {
+  unsigned char netfn;
+  unsigned char cmd;
+  unsigned short data_len;
+  unsigned char __user * data;
+};
+struct kernel_ipmi_msg {
+  unsigned char netfn;
+  unsigned char cmd;
+  unsigned short data_len;
+  unsigned char * data;
+};
+#define IPMI_INVALID_CMD_COMPLETION_CODE 0xC1
+#define IPMI_TIMEOUT_COMPLETION_CODE 0xC3
+#define IPMI_UNKNOWN_ERR_COMPLETION_CODE 0xff
+#define IPMI_RESPONSE_RECV_TYPE 1
+#define IPMI_ASYNC_EVENT_RECV_TYPE 2
+#define IPMI_CMD_RECV_TYPE 3
+#define IPMI_RESPONSE_RESPONSE_TYPE 4
+#define IPMI_OEM_RECV_TYPE 5
+#define IPMI_MAINTENANCE_MODE_AUTO 0
+#define IPMI_MAINTENANCE_MODE_OFF 1
+#define IPMI_MAINTENANCE_MODE_ON 2
+#define IPMI_IOC_MAGIC 'i'
+struct ipmi_req {
+  unsigned char __user * addr;
+  unsigned int addr_len;
+  long msgid;
+  struct ipmi_msg msg;
+};
+#define IPMICTL_SEND_COMMAND _IOR(IPMI_IOC_MAGIC, 13, struct ipmi_req)
+struct ipmi_req_settime {
+  struct ipmi_req req;
+  int retries;
+  unsigned int retry_time_ms;
+};
+#define IPMICTL_SEND_COMMAND_SETTIME _IOR(IPMI_IOC_MAGIC, 21, struct ipmi_req_settime)
+struct ipmi_recv {
+  int recv_type;
+  unsigned char __user * addr;
+  unsigned int addr_len;
+  long msgid;
+  struct ipmi_msg msg;
+};
+#define IPMICTL_RECEIVE_MSG _IOWR(IPMI_IOC_MAGIC, 12, struct ipmi_recv)
+#define IPMICTL_RECEIVE_MSG_TRUNC _IOWR(IPMI_IOC_MAGIC, 11, struct ipmi_recv)
+struct ipmi_cmdspec {
+  unsigned char netfn;
+  unsigned char cmd;
+};
+#define IPMICTL_REGISTER_FOR_CMD _IOR(IPMI_IOC_MAGIC, 14, struct ipmi_cmdspec)
+#define IPMICTL_UNREGISTER_FOR_CMD _IOR(IPMI_IOC_MAGIC, 15, struct ipmi_cmdspec)
+struct ipmi_cmdspec_chans {
+  unsigned int netfn;
+  unsigned int cmd;
+  unsigned int chans;
+};
+#define IPMICTL_REGISTER_FOR_CMD_CHANS _IOR(IPMI_IOC_MAGIC, 28, struct ipmi_cmdspec_chans)
+#define IPMICTL_UNREGISTER_FOR_CMD_CHANS _IOR(IPMI_IOC_MAGIC, 29, struct ipmi_cmdspec_chans)
+#define IPMICTL_SET_GETS_EVENTS_CMD _IOR(IPMI_IOC_MAGIC, 16, int)
+struct ipmi_channel_lun_address_set {
+  unsigned short channel;
+  unsigned char value;
+};
+#define IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD _IOR(IPMI_IOC_MAGIC, 24, struct ipmi_channel_lun_address_set)
+#define IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD _IOR(IPMI_IOC_MAGIC, 25, struct ipmi_channel_lun_address_set)
+#define IPMICTL_SET_MY_CHANNEL_LUN_CMD _IOR(IPMI_IOC_MAGIC, 26, struct ipmi_channel_lun_address_set)
+#define IPMICTL_GET_MY_CHANNEL_LUN_CMD _IOR(IPMI_IOC_MAGIC, 27, struct ipmi_channel_lun_address_set)
+#define IPMICTL_SET_MY_ADDRESS_CMD _IOR(IPMI_IOC_MAGIC, 17, unsigned int)
+#define IPMICTL_GET_MY_ADDRESS_CMD _IOR(IPMI_IOC_MAGIC, 18, unsigned int)
+#define IPMICTL_SET_MY_LUN_CMD _IOR(IPMI_IOC_MAGIC, 19, unsigned int)
+#define IPMICTL_GET_MY_LUN_CMD _IOR(IPMI_IOC_MAGIC, 20, unsigned int)
+struct ipmi_timing_parms {
+  int retries;
+  unsigned int retry_time_ms;
+};
+#define IPMICTL_SET_TIMING_PARMS_CMD _IOR(IPMI_IOC_MAGIC, 22, struct ipmi_timing_parms)
+#define IPMICTL_GET_TIMING_PARMS_CMD _IOR(IPMI_IOC_MAGIC, 23, struct ipmi_timing_parms)
+#define IPMICTL_GET_MAINTENANCE_MODE_CMD _IOR(IPMI_IOC_MAGIC, 30, int)
+#define IPMICTL_SET_MAINTENANCE_MODE_CMD _IOW(IPMI_IOC_MAGIC, 31, int)
+#endif
diff --git a/i686-linux-musl/include/linux/ipmi_bmc.h b/i686-linux-musl/include/linux/ipmi_bmc.h
new file mode 100644
index 0000000..18f8b9d
--- /dev/null
+++ b/i686-linux-musl/include/linux/ipmi_bmc.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IPMI_BMC_H
+#define _UAPI_LINUX_IPMI_BMC_H
+#include <linux/ioctl.h>
+#define __IPMI_BMC_IOCTL_MAGIC 0xB1
+#define IPMI_BMC_IOCTL_SET_SMS_ATN _IO(__IPMI_BMC_IOCTL_MAGIC, 0x00)
+#define IPMI_BMC_IOCTL_CLEAR_SMS_ATN _IO(__IPMI_BMC_IOCTL_MAGIC, 0x01)
+#define IPMI_BMC_IOCTL_FORCE_ABORT _IO(__IPMI_BMC_IOCTL_MAGIC, 0x02)
+#endif
diff --git a/i686-linux-musl/include/linux/ipmi_msgdefs.h b/i686-linux-musl/include/linux/ipmi_msgdefs.h
new file mode 100644
index 0000000..cfd435f
--- /dev/null
+++ b/i686-linux-musl/include/linux/ipmi_msgdefs.h
@@ -0,0 +1,85 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_IPMI_MSGDEFS_H
+#define __LINUX_IPMI_MSGDEFS_H
+#define IPMI_NETFN_SENSOR_EVENT_REQUEST 0x04
+#define IPMI_NETFN_SENSOR_EVENT_RESPONSE 0x05
+#define IPMI_GET_EVENT_RECEIVER_CMD 0x01
+#define IPMI_NETFN_APP_REQUEST 0x06
+#define IPMI_NETFN_APP_RESPONSE 0x07
+#define IPMI_GET_DEVICE_ID_CMD 0x01
+#define IPMI_COLD_RESET_CMD 0x02
+#define IPMI_WARM_RESET_CMD 0x03
+#define IPMI_CLEAR_MSG_FLAGS_CMD 0x30
+#define IPMI_GET_DEVICE_GUID_CMD 0x08
+#define IPMI_GET_MSG_FLAGS_CMD 0x31
+#define IPMI_SEND_MSG_CMD 0x34
+#define IPMI_GET_MSG_CMD 0x33
+#define IPMI_SET_BMC_GLOBAL_ENABLES_CMD 0x2e
+#define IPMI_GET_BMC_GLOBAL_ENABLES_CMD 0x2f
+#define IPMI_READ_EVENT_MSG_BUFFER_CMD 0x35
+#define IPMI_GET_CHANNEL_INFO_CMD 0x42
+#define IPMI_BMC_RCV_MSG_INTR 0x01
+#define IPMI_BMC_EVT_MSG_INTR 0x02
+#define IPMI_BMC_EVT_MSG_BUFF 0x04
+#define IPMI_BMC_SYS_LOG 0x08
+#define IPMI_NETFN_STORAGE_REQUEST 0x0a
+#define IPMI_NETFN_STORAGE_RESPONSE 0x0b
+#define IPMI_ADD_SEL_ENTRY_CMD 0x44
+#define IPMI_NETFN_FIRMWARE_REQUEST 0x08
+#define IPMI_NETFN_FIRMWARE_RESPONSE 0x09
+#define IPMI_BMC_SLAVE_ADDR 0x20
+#define IPMI_MAX_MSG_LENGTH 272
+#define IPMI_CC_NO_ERROR 0x00
+#define IPMI_NODE_BUSY_ERR 0xc0
+#define IPMI_INVALID_COMMAND_ERR 0xc1
+#define IPMI_TIMEOUT_ERR 0xc3
+#define IPMI_ERR_MSG_TRUNCATED 0xc6
+#define IPMI_REQ_LEN_INVALID_ERR 0xc7
+#define IPMI_REQ_LEN_EXCEEDED_ERR 0xc8
+#define IPMI_DEVICE_IN_FW_UPDATE_ERR 0xd1
+#define IPMI_DEVICE_IN_INIT_ERR 0xd2
+#define IPMI_NOT_IN_MY_STATE_ERR 0xd5
+#define IPMI_LOST_ARBITRATION_ERR 0x81
+#define IPMI_BUS_ERR 0x82
+#define IPMI_NAK_ON_WRITE_ERR 0x83
+#define IPMI_ERR_UNSPECIFIED 0xff
+#define IPMI_CHANNEL_PROTOCOL_IPMB 1
+#define IPMI_CHANNEL_PROTOCOL_ICMB 2
+#define IPMI_CHANNEL_PROTOCOL_SMBUS 4
+#define IPMI_CHANNEL_PROTOCOL_KCS 5
+#define IPMI_CHANNEL_PROTOCOL_SMIC 6
+#define IPMI_CHANNEL_PROTOCOL_BT10 7
+#define IPMI_CHANNEL_PROTOCOL_BT15 8
+#define IPMI_CHANNEL_PROTOCOL_TMODE 9
+#define IPMI_CHANNEL_MEDIUM_IPMB 1
+#define IPMI_CHANNEL_MEDIUM_ICMB10 2
+#define IPMI_CHANNEL_MEDIUM_ICMB09 3
+#define IPMI_CHANNEL_MEDIUM_8023LAN 4
+#define IPMI_CHANNEL_MEDIUM_ASYNC 5
+#define IPMI_CHANNEL_MEDIUM_OTHER_LAN 6
+#define IPMI_CHANNEL_MEDIUM_PCI_SMBUS 7
+#define IPMI_CHANNEL_MEDIUM_SMBUS1 8
+#define IPMI_CHANNEL_MEDIUM_SMBUS2 9
+#define IPMI_CHANNEL_MEDIUM_USB1 10
+#define IPMI_CHANNEL_MEDIUM_USB2 11
+#define IPMI_CHANNEL_MEDIUM_SYSINTF 12
+#define IPMI_CHANNEL_MEDIUM_OEM_MIN 0x60
+#define IPMI_CHANNEL_MEDIUM_OEM_MAX 0x7f
+#endif
diff --git a/i686-linux-musl/include/linux/ipsec.h b/i686-linux-musl/include/linux/ipsec.h
new file mode 100644
index 0000000..4fef750
--- /dev/null
+++ b/i686-linux-musl/include/linux/ipsec.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_IPSEC_H
+#define _LINUX_IPSEC_H
+#include <linux/pfkeyv2.h>
+#define IPSEC_PORT_ANY 0
+#define IPSEC_ULPROTO_ANY 255
+#define IPSEC_PROTO_ANY 255
+enum {
+  IPSEC_MODE_ANY = 0,
+  IPSEC_MODE_TRANSPORT = 1,
+  IPSEC_MODE_TUNNEL = 2,
+  IPSEC_MODE_BEET = 3
+};
+enum {
+  IPSEC_DIR_ANY = 0,
+  IPSEC_DIR_INBOUND = 1,
+  IPSEC_DIR_OUTBOUND = 2,
+  IPSEC_DIR_FWD = 3,
+  IPSEC_DIR_MAX = 4,
+  IPSEC_DIR_INVALID = 5
+};
+enum {
+  IPSEC_POLICY_DISCARD = 0,
+  IPSEC_POLICY_NONE = 1,
+  IPSEC_POLICY_IPSEC = 2,
+  IPSEC_POLICY_ENTRUST = 3,
+  IPSEC_POLICY_BYPASS = 4
+};
+enum {
+  IPSEC_LEVEL_DEFAULT = 0,
+  IPSEC_LEVEL_USE = 1,
+  IPSEC_LEVEL_REQUIRE = 2,
+  IPSEC_LEVEL_UNIQUE = 3
+};
+#define IPSEC_MANUAL_REQID_MAX 0x3fff
+#define IPSEC_REPLAYWSIZE 32
+#endif
diff --git a/i686-linux-musl/include/linux/ipv6.h b/i686-linux-musl/include/linux/ipv6.h
new file mode 100644
index 0000000..b3db9ce
--- /dev/null
+++ b/i686-linux-musl/include/linux/ipv6.h
@@ -0,0 +1,153 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_IPV6_H
+#define _UAPI_IPV6_H
+#include <linux/libc-compat.h>
+#include <linux/types.h>
+#include <linux/in6.h>
+#include <asm/byteorder.h>
+#define IPV6_MIN_MTU 1280
+#if __UAPI_DEF_IN6_PKTINFO
+struct in6_pktinfo {
+  struct in6_addr ipi6_addr;
+  int ipi6_ifindex;
+};
+#endif
+#if __UAPI_DEF_IP6_MTUINFO
+struct ip6_mtuinfo {
+  struct sockaddr_in6 ip6m_addr;
+  __u32 ip6m_mtu;
+};
+#endif
+struct in6_ifreq {
+  struct in6_addr ifr6_addr;
+  __u32 ifr6_prefixlen;
+  int ifr6_ifindex;
+};
+#define IPV6_SRCRT_STRICT 0x01
+#define IPV6_SRCRT_TYPE_0 0
+#define IPV6_SRCRT_TYPE_2 2
+#define IPV6_SRCRT_TYPE_3 3
+#define IPV6_SRCRT_TYPE_4 4
+struct ipv6_rt_hdr {
+  __u8 nexthdr;
+  __u8 hdrlen;
+  __u8 type;
+  __u8 segments_left;
+};
+struct ipv6_opt_hdr {
+  __u8 nexthdr;
+  __u8 hdrlen;
+} __attribute__((packed));
+#define ipv6_destopt_hdr ipv6_opt_hdr
+#define ipv6_hopopt_hdr ipv6_opt_hdr
+#define IPV6_OPT_ROUTERALERT_MLD 0x0000
+struct rt0_hdr {
+  struct ipv6_rt_hdr rt_hdr;
+  __u32 reserved;
+  struct in6_addr addr[0];
+#define rt0_type rt_hdr.type
+};
+struct rt2_hdr {
+  struct ipv6_rt_hdr rt_hdr;
+  __u32 reserved;
+  struct in6_addr addr;
+#define rt2_type rt_hdr.type
+};
+struct ipv6_destopt_hao {
+  __u8 type;
+  __u8 length;
+  struct in6_addr addr;
+} __attribute__((packed));
+struct ipv6hdr {
+#ifdef __LITTLE_ENDIAN_BITFIELD
+  __u8 priority : 4, version : 4;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+  __u8 version : 4, priority : 4;
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif
+  __u8 flow_lbl[3];
+  __be16 payload_len;
+  __u8 nexthdr;
+  __u8 hop_limit;
+  struct in6_addr saddr;
+  struct in6_addr daddr;
+};
+enum {
+  DEVCONF_FORWARDING = 0,
+  DEVCONF_HOPLIMIT,
+  DEVCONF_MTU6,
+  DEVCONF_ACCEPT_RA,
+  DEVCONF_ACCEPT_REDIRECTS,
+  DEVCONF_AUTOCONF,
+  DEVCONF_DAD_TRANSMITS,
+  DEVCONF_RTR_SOLICITS,
+  DEVCONF_RTR_SOLICIT_INTERVAL,
+  DEVCONF_RTR_SOLICIT_DELAY,
+  DEVCONF_USE_TEMPADDR,
+  DEVCONF_TEMP_VALID_LFT,
+  DEVCONF_TEMP_PREFERED_LFT,
+  DEVCONF_REGEN_MAX_RETRY,
+  DEVCONF_MAX_DESYNC_FACTOR,
+  DEVCONF_MAX_ADDRESSES,
+  DEVCONF_FORCE_MLD_VERSION,
+  DEVCONF_ACCEPT_RA_DEFRTR,
+  DEVCONF_ACCEPT_RA_PINFO,
+  DEVCONF_ACCEPT_RA_RTR_PREF,
+  DEVCONF_RTR_PROBE_INTERVAL,
+  DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
+  DEVCONF_PROXY_NDP,
+  DEVCONF_OPTIMISTIC_DAD,
+  DEVCONF_ACCEPT_SOURCE_ROUTE,
+  DEVCONF_MC_FORWARDING,
+  DEVCONF_DISABLE_IPV6,
+  DEVCONF_ACCEPT_DAD,
+  DEVCONF_FORCE_TLLAO,
+  DEVCONF_NDISC_NOTIFY,
+  DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL,
+  DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL,
+  DEVCONF_SUPPRESS_FRAG_NDISC,
+  DEVCONF_ACCEPT_RA_FROM_LOCAL,
+  DEVCONF_USE_OPTIMISTIC,
+  DEVCONF_ACCEPT_RA_MTU,
+  DEVCONF_STABLE_SECRET,
+  DEVCONF_USE_OIF_ADDRS_ONLY,
+  DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT,
+  DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN,
+  DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
+  DEVCONF_DROP_UNSOLICITED_NA,
+  DEVCONF_KEEP_ADDR_ON_DOWN,
+  DEVCONF_RTR_SOLICIT_MAX_INTERVAL,
+  DEVCONF_SEG6_ENABLED,
+  DEVCONF_SEG6_REQUIRE_HMAC,
+  DEVCONF_ENHANCED_DAD,
+  DEVCONF_ADDR_GEN_MODE,
+  DEVCONF_DISABLE_POLICY,
+  DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN,
+  DEVCONF_NDISC_TCLASS,
+  DEVCONF_RPL_SEG_ENABLED,
+  DEVCONF_RA_DEFRTR_METRIC,
+  DEVCONF_IOAM6_ENABLED,
+  DEVCONF_IOAM6_ID,
+  DEVCONF_IOAM6_ID_WIDE,
+  DEVCONF_NDISC_EVICT_NOCARRIER,
+  DEVCONF_MAX
+};
+#endif
diff --git a/i686-linux-musl/include/linux/ipv6_route.h b/i686-linux-musl/include/linux/ipv6_route.h
new file mode 100644
index 0000000..b7271a7
--- /dev/null
+++ b/i686-linux-musl/include/linux/ipv6_route.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_IPV6_ROUTE_H
+#define _UAPI_LINUX_IPV6_ROUTE_H
+#include <linux/types.h>
+#include <linux/in6.h>
+#define RTF_DEFAULT 0x00010000
+#define RTF_ALLONLINK 0x00020000
+#define RTF_ADDRCONF 0x00040000
+#define RTF_PREFIX_RT 0x00080000
+#define RTF_ANYCAST 0x00100000
+#define RTF_NONEXTHOP 0x00200000
+#define RTF_EXPIRES 0x00400000
+#define RTF_ROUTEINFO 0x00800000
+#define RTF_CACHE 0x01000000
+#define RTF_FLOW 0x02000000
+#define RTF_POLICY 0x04000000
+#define RTF_PREF(pref) ((pref) << 27)
+#define RTF_PREF_MASK 0x18000000
+#define RTF_PCPU 0x40000000
+#define RTF_LOCAL 0x80000000
+struct in6_rtmsg {
+  struct in6_addr rtmsg_dst;
+  struct in6_addr rtmsg_src;
+  struct in6_addr rtmsg_gateway;
+  __u32 rtmsg_type;
+  __u16 rtmsg_dst_len;
+  __u16 rtmsg_src_len;
+  __u32 rtmsg_metric;
+  unsigned long rtmsg_info;
+  __u32 rtmsg_flags;
+  int rtmsg_ifindex;
+};
+#define RTMSG_NEWDEVICE 0x11
+#define RTMSG_DELDEVICE 0x12
+#define RTMSG_NEWROUTE 0x21
+#define RTMSG_DELROUTE 0x22
+#define IP6_RT_PRIO_USER 1024
+#define IP6_RT_PRIO_ADDRCONF 256
+#endif
diff --git a/i686-linux-musl/include/linux/irqnr.h b/i686-linux-musl/include/linux/irqnr.h
new file mode 100644
index 0000000..878419c
--- /dev/null
+++ b/i686-linux-musl/include/linux/irqnr.h
@@ -0,0 +1,18 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
diff --git a/i686-linux-musl/include/linux/isdn/capicmd.h b/i686-linux-musl/include/linux/isdn/capicmd.h
new file mode 100644
index 0000000..419b278
--- /dev/null
+++ b/i686-linux-musl/include/linux/isdn/capicmd.h
@@ -0,0 +1,97 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __CAPICMD_H__
+#define __CAPICMD_H__
+#define CAPI_MSG_BASELEN 8
+#define CAPI_DATA_B3_REQ_LEN (CAPI_MSG_BASELEN + 4 + 4 + 2 + 2 + 2)
+#define CAPI_DATA_B3_RESP_LEN (CAPI_MSG_BASELEN + 4 + 2)
+#define CAPI_DISCONNECT_B3_RESP_LEN (CAPI_MSG_BASELEN + 4)
+#define CAPI_ALERT 0x01
+#define CAPI_CONNECT 0x02
+#define CAPI_CONNECT_ACTIVE 0x03
+#define CAPI_CONNECT_B3_ACTIVE 0x83
+#define CAPI_CONNECT_B3 0x82
+#define CAPI_CONNECT_B3_T90_ACTIVE 0x88
+#define CAPI_DATA_B3 0x86
+#define CAPI_DISCONNECT_B3 0x84
+#define CAPI_DISCONNECT 0x04
+#define CAPI_FACILITY 0x80
+#define CAPI_INFO 0x08
+#define CAPI_LISTEN 0x05
+#define CAPI_MANUFACTURER 0xff
+#define CAPI_RESET_B3 0x87
+#define CAPI_SELECT_B_PROTOCOL 0x41
+#define CAPI_REQ 0x80
+#define CAPI_CONF 0x81
+#define CAPI_IND 0x82
+#define CAPI_RESP 0x83
+#define CAPICMD(cmd,subcmd) (((cmd) << 8) | (subcmd))
+#define CAPI_DISCONNECT_REQ CAPICMD(CAPI_DISCONNECT, CAPI_REQ)
+#define CAPI_DISCONNECT_CONF CAPICMD(CAPI_DISCONNECT, CAPI_CONF)
+#define CAPI_DISCONNECT_IND CAPICMD(CAPI_DISCONNECT, CAPI_IND)
+#define CAPI_DISCONNECT_RESP CAPICMD(CAPI_DISCONNECT, CAPI_RESP)
+#define CAPI_ALERT_REQ CAPICMD(CAPI_ALERT, CAPI_REQ)
+#define CAPI_ALERT_CONF CAPICMD(CAPI_ALERT, CAPI_CONF)
+#define CAPI_CONNECT_REQ CAPICMD(CAPI_CONNECT, CAPI_REQ)
+#define CAPI_CONNECT_CONF CAPICMD(CAPI_CONNECT, CAPI_CONF)
+#define CAPI_CONNECT_IND CAPICMD(CAPI_CONNECT, CAPI_IND)
+#define CAPI_CONNECT_RESP CAPICMD(CAPI_CONNECT, CAPI_RESP)
+#define CAPI_CONNECT_ACTIVE_REQ CAPICMD(CAPI_CONNECT_ACTIVE, CAPI_REQ)
+#define CAPI_CONNECT_ACTIVE_CONF CAPICMD(CAPI_CONNECT_ACTIVE, CAPI_CONF)
+#define CAPI_CONNECT_ACTIVE_IND CAPICMD(CAPI_CONNECT_ACTIVE, CAPI_IND)
+#define CAPI_CONNECT_ACTIVE_RESP CAPICMD(CAPI_CONNECT_ACTIVE, CAPI_RESP)
+#define CAPI_SELECT_B_PROTOCOL_REQ CAPICMD(CAPI_SELECT_B_PROTOCOL, CAPI_REQ)
+#define CAPI_SELECT_B_PROTOCOL_CONF CAPICMD(CAPI_SELECT_B_PROTOCOL, CAPI_CONF)
+#define CAPI_CONNECT_B3_ACTIVE_REQ CAPICMD(CAPI_CONNECT_B3_ACTIVE, CAPI_REQ)
+#define CAPI_CONNECT_B3_ACTIVE_CONF CAPICMD(CAPI_CONNECT_B3_ACTIVE, CAPI_CONF)
+#define CAPI_CONNECT_B3_ACTIVE_IND CAPICMD(CAPI_CONNECT_B3_ACTIVE, CAPI_IND)
+#define CAPI_CONNECT_B3_ACTIVE_RESP CAPICMD(CAPI_CONNECT_B3_ACTIVE, CAPI_RESP)
+#define CAPI_CONNECT_B3_REQ CAPICMD(CAPI_CONNECT_B3, CAPI_REQ)
+#define CAPI_CONNECT_B3_CONF CAPICMD(CAPI_CONNECT_B3, CAPI_CONF)
+#define CAPI_CONNECT_B3_IND CAPICMD(CAPI_CONNECT_B3, CAPI_IND)
+#define CAPI_CONNECT_B3_RESP CAPICMD(CAPI_CONNECT_B3, CAPI_RESP)
+#define CAPI_CONNECT_B3_T90_ACTIVE_IND CAPICMD(CAPI_CONNECT_B3_T90_ACTIVE, CAPI_IND)
+#define CAPI_CONNECT_B3_T90_ACTIVE_RESP CAPICMD(CAPI_CONNECT_B3_T90_ACTIVE, CAPI_RESP)
+#define CAPI_DATA_B3_REQ CAPICMD(CAPI_DATA_B3, CAPI_REQ)
+#define CAPI_DATA_B3_CONF CAPICMD(CAPI_DATA_B3, CAPI_CONF)
+#define CAPI_DATA_B3_IND CAPICMD(CAPI_DATA_B3, CAPI_IND)
+#define CAPI_DATA_B3_RESP CAPICMD(CAPI_DATA_B3, CAPI_RESP)
+#define CAPI_DISCONNECT_B3_REQ CAPICMD(CAPI_DISCONNECT_B3, CAPI_REQ)
+#define CAPI_DISCONNECT_B3_CONF CAPICMD(CAPI_DISCONNECT_B3, CAPI_CONF)
+#define CAPI_DISCONNECT_B3_IND CAPICMD(CAPI_DISCONNECT_B3, CAPI_IND)
+#define CAPI_DISCONNECT_B3_RESP CAPICMD(CAPI_DISCONNECT_B3, CAPI_RESP)
+#define CAPI_RESET_B3_REQ CAPICMD(CAPI_RESET_B3, CAPI_REQ)
+#define CAPI_RESET_B3_CONF CAPICMD(CAPI_RESET_B3, CAPI_CONF)
+#define CAPI_RESET_B3_IND CAPICMD(CAPI_RESET_B3, CAPI_IND)
+#define CAPI_RESET_B3_RESP CAPICMD(CAPI_RESET_B3, CAPI_RESP)
+#define CAPI_LISTEN_REQ CAPICMD(CAPI_LISTEN, CAPI_REQ)
+#define CAPI_LISTEN_CONF CAPICMD(CAPI_LISTEN, CAPI_CONF)
+#define CAPI_MANUFACTURER_REQ CAPICMD(CAPI_MANUFACTURER, CAPI_REQ)
+#define CAPI_MANUFACTURER_CONF CAPICMD(CAPI_MANUFACTURER, CAPI_CONF)
+#define CAPI_MANUFACTURER_IND CAPICMD(CAPI_MANUFACTURER, CAPI_IND)
+#define CAPI_MANUFACTURER_RESP CAPICMD(CAPI_MANUFACTURER, CAPI_RESP)
+#define CAPI_FACILITY_REQ CAPICMD(CAPI_FACILITY, CAPI_REQ)
+#define CAPI_FACILITY_CONF CAPICMD(CAPI_FACILITY, CAPI_CONF)
+#define CAPI_FACILITY_IND CAPICMD(CAPI_FACILITY, CAPI_IND)
+#define CAPI_FACILITY_RESP CAPICMD(CAPI_FACILITY, CAPI_RESP)
+#define CAPI_INFO_REQ CAPICMD(CAPI_INFO, CAPI_REQ)
+#define CAPI_INFO_CONF CAPICMD(CAPI_INFO, CAPI_CONF)
+#define CAPI_INFO_IND CAPICMD(CAPI_INFO, CAPI_IND)
+#define CAPI_INFO_RESP CAPICMD(CAPI_INFO, CAPI_RESP)
+#endif
diff --git a/i686-linux-musl/include/linux/iso_fs.h b/i686-linux-musl/include/linux/iso_fs.h
new file mode 100644
index 0000000..8227031
--- /dev/null
+++ b/i686-linux-musl/include/linux/iso_fs.h
@@ -0,0 +1,154 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ISOFS_FS_H
+#define _ISOFS_FS_H
+#include <linux/types.h>
+#include <linux/magic.h>
+#define ISODCL(from,to) (to - from + 1)
+struct iso_volume_descriptor {
+  __u8 type[ISODCL(1, 1)];
+  char id[ISODCL(2, 6)];
+  __u8 version[ISODCL(7, 7)];
+  __u8 data[ISODCL(8, 2048)];
+};
+#define ISO_VD_PRIMARY 1
+#define ISO_VD_SUPPLEMENTARY 2
+#define ISO_VD_END 255
+#define ISO_STANDARD_ID "CD001"
+struct iso_primary_descriptor {
+  __u8 type[ISODCL(1, 1)];
+  char id[ISODCL(2, 6)];
+  __u8 version[ISODCL(7, 7)];
+  __u8 unused1[ISODCL(8, 8)];
+  char system_id[ISODCL(9, 40)];
+  char volume_id[ISODCL(41, 72)];
+  __u8 unused2[ISODCL(73, 80)];
+  __u8 volume_space_size[ISODCL(81, 88)];
+  __u8 unused3[ISODCL(89, 120)];
+  __u8 volume_set_size[ISODCL(121, 124)];
+  __u8 volume_sequence_number[ISODCL(125, 128)];
+  __u8 logical_block_size[ISODCL(129, 132)];
+  __u8 path_table_size[ISODCL(133, 140)];
+  __u8 type_l_path_table[ISODCL(141, 144)];
+  __u8 opt_type_l_path_table[ISODCL(145, 148)];
+  __u8 type_m_path_table[ISODCL(149, 152)];
+  __u8 opt_type_m_path_table[ISODCL(153, 156)];
+  __u8 root_directory_record[ISODCL(157, 190)];
+  char volume_set_id[ISODCL(191, 318)];
+  char publisher_id[ISODCL(319, 446)];
+  char preparer_id[ISODCL(447, 574)];
+  char application_id[ISODCL(575, 702)];
+  char copyright_file_id[ISODCL(703, 739)];
+  char abstract_file_id[ISODCL(740, 776)];
+  char bibliographic_file_id[ISODCL(777, 813)];
+  __u8 creation_date[ISODCL(814, 830)];
+  __u8 modification_date[ISODCL(831, 847)];
+  __u8 expiration_date[ISODCL(848, 864)];
+  __u8 effective_date[ISODCL(865, 881)];
+  __u8 file_structure_version[ISODCL(882, 882)];
+  __u8 unused4[ISODCL(883, 883)];
+  __u8 application_data[ISODCL(884, 1395)];
+  __u8 unused5[ISODCL(1396, 2048)];
+};
+struct iso_supplementary_descriptor {
+  __u8 type[ISODCL(1, 1)];
+  char id[ISODCL(2, 6)];
+  __u8 version[ISODCL(7, 7)];
+  __u8 flags[ISODCL(8, 8)];
+  char system_id[ISODCL(9, 40)];
+  char volume_id[ISODCL(41, 72)];
+  __u8 unused2[ISODCL(73, 80)];
+  __u8 volume_space_size[ISODCL(81, 88)];
+  __u8 escape[ISODCL(89, 120)];
+  __u8 volume_set_size[ISODCL(121, 124)];
+  __u8 volume_sequence_number[ISODCL(125, 128)];
+  __u8 logical_block_size[ISODCL(129, 132)];
+  __u8 path_table_size[ISODCL(133, 140)];
+  __u8 type_l_path_table[ISODCL(141, 144)];
+  __u8 opt_type_l_path_table[ISODCL(145, 148)];
+  __u8 type_m_path_table[ISODCL(149, 152)];
+  __u8 opt_type_m_path_table[ISODCL(153, 156)];
+  __u8 root_directory_record[ISODCL(157, 190)];
+  char volume_set_id[ISODCL(191, 318)];
+  char publisher_id[ISODCL(319, 446)];
+  char preparer_id[ISODCL(447, 574)];
+  char application_id[ISODCL(575, 702)];
+  char copyright_file_id[ISODCL(703, 739)];
+  char abstract_file_id[ISODCL(740, 776)];
+  char bibliographic_file_id[ISODCL(777, 813)];
+  __u8 creation_date[ISODCL(814, 830)];
+  __u8 modification_date[ISODCL(831, 847)];
+  __u8 expiration_date[ISODCL(848, 864)];
+  __u8 effective_date[ISODCL(865, 881)];
+  __u8 file_structure_version[ISODCL(882, 882)];
+  __u8 unused4[ISODCL(883, 883)];
+  __u8 application_data[ISODCL(884, 1395)];
+  __u8 unused5[ISODCL(1396, 2048)];
+};
+#define HS_STANDARD_ID "CDROM"
+struct hs_volume_descriptor {
+  __u8 foo[ISODCL(1, 8)];
+  __u8 type[ISODCL(9, 9)];
+  char id[ISODCL(10, 14)];
+  __u8 version[ISODCL(15, 15)];
+  __u8 data[ISODCL(16, 2048)];
+};
+struct hs_primary_descriptor {
+  __u8 foo[ISODCL(1, 8)];
+  __u8 type[ISODCL(9, 9)];
+  __u8 id[ISODCL(10, 14)];
+  __u8 version[ISODCL(15, 15)];
+  __u8 unused1[ISODCL(16, 16)];
+  char system_id[ISODCL(17, 48)];
+  char volume_id[ISODCL(49, 80)];
+  __u8 unused2[ISODCL(81, 88)];
+  __u8 volume_space_size[ISODCL(89, 96)];
+  __u8 unused3[ISODCL(97, 128)];
+  __u8 volume_set_size[ISODCL(129, 132)];
+  __u8 volume_sequence_number[ISODCL(133, 136)];
+  __u8 logical_block_size[ISODCL(137, 140)];
+  __u8 path_table_size[ISODCL(141, 148)];
+  __u8 type_l_path_table[ISODCL(149, 152)];
+  __u8 unused4[ISODCL(153, 180)];
+  __u8 root_directory_record[ISODCL(181, 214)];
+};
+struct iso_path_table {
+  __u8 name_len[2];
+  __u8 extent[4];
+  __u8 parent[2];
+  char name[0];
+} __attribute__((packed));
+struct iso_directory_record {
+  __u8 length[ISODCL(1, 1)];
+  __u8 ext_attr_length[ISODCL(2, 2)];
+  __u8 extent[ISODCL(3, 10)];
+  __u8 size[ISODCL(11, 18)];
+  __u8 date[ISODCL(19, 25)];
+  __u8 flags[ISODCL(26, 26)];
+  __u8 file_unit_size[ISODCL(27, 27)];
+  __u8 interleave[ISODCL(28, 28)];
+  __u8 volume_sequence_number[ISODCL(29, 32)];
+  __u8 name_len[ISODCL(33, 33)];
+  char name[0];
+} __attribute__((packed));
+#define ISOFS_BLOCK_BITS 11
+#define ISOFS_BLOCK_SIZE 2048
+#define ISOFS_BUFFER_SIZE(INODE) ((INODE)->i_sb->s_blocksize)
+#define ISOFS_BUFFER_BITS(INODE) ((INODE)->i_sb->s_blocksize_bits)
+#endif
diff --git a/i686-linux-musl/include/linux/isst_if.h b/i686-linux-musl/include/linux/isst_if.h
new file mode 100644
index 0000000..322f70d
--- /dev/null
+++ b/i686-linux-musl/include/linux/isst_if.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ISST_IF_H
+#define __ISST_IF_H
+#include <linux/types.h>
+struct isst_if_platform_info {
+  __u16 api_version;
+  __u16 driver_version;
+  __u16 max_cmds_per_ioctl;
+  __u8 mbox_supported;
+  __u8 mmio_supported;
+};
+struct isst_if_cpu_map {
+  __u32 logical_cpu;
+  __u32 physical_cpu;
+};
+struct isst_if_cpu_maps {
+  __u32 cmd_count;
+  struct isst_if_cpu_map cpu_map[1];
+};
+struct isst_if_io_reg {
+  __u32 read_write;
+  __u32 logical_cpu;
+  __u32 reg;
+  __u32 value;
+};
+struct isst_if_io_regs {
+  __u32 req_count;
+  struct isst_if_io_reg io_reg[1];
+};
+struct isst_if_mbox_cmd {
+  __u32 logical_cpu;
+  __u32 parameter;
+  __u32 req_data;
+  __u32 resp_data;
+  __u16 command;
+  __u16 sub_command;
+  __u32 reserved;
+};
+struct isst_if_mbox_cmds {
+  __u32 cmd_count;
+  struct isst_if_mbox_cmd mbox_cmd[1];
+};
+struct isst_if_msr_cmd {
+  __u32 read_write;
+  __u32 logical_cpu;
+  __u64 msr;
+  __u64 data;
+};
+struct isst_if_msr_cmds {
+  __u32 cmd_count;
+  struct isst_if_msr_cmd msr_cmd[1];
+};
+#define ISST_IF_MAGIC 0xFE
+#define ISST_IF_GET_PLATFORM_INFO _IOR(ISST_IF_MAGIC, 0, struct isst_if_platform_info *)
+#define ISST_IF_GET_PHY_ID _IOWR(ISST_IF_MAGIC, 1, struct isst_if_cpu_map *)
+#define ISST_IF_IO_CMD _IOW(ISST_IF_MAGIC, 2, struct isst_if_io_regs *)
+#define ISST_IF_MBOX_COMMAND _IOWR(ISST_IF_MAGIC, 3, struct isst_if_mbox_cmds *)
+#define ISST_IF_MSR_COMMAND _IOWR(ISST_IF_MAGIC, 4, struct isst_if_msr_cmds *)
+#endif
diff --git a/i686-linux-musl/include/linux/ivtv.h b/i686-linux-musl/include/linux/ivtv.h
new file mode 100644
index 0000000..549d6a8
--- /dev/null
+++ b/i686-linux-musl/include/linux/ivtv.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_IVTV_H__
+#define __LINUX_IVTV_H__
+#include <linux/compiler.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+struct ivtv_dma_frame {
+  enum v4l2_buf_type type;
+  __u32 pixelformat;
+  void __user * y_source;
+  void __user * uv_source;
+  struct v4l2_rect src;
+  struct v4l2_rect dst;
+  __u32 src_width;
+  __u32 src_height;
+};
+#define IVTV_IOC_DMA_FRAME _IOW('V', BASE_VIDIOC_PRIVATE + 0, struct ivtv_dma_frame)
+#define IVTV_IOC_PASSTHROUGH_MODE _IOW('V', BASE_VIDIOC_PRIVATE + 1, int)
+#define IVTV_SLICED_TYPE_TELETEXT_B V4L2_MPEG_VBI_IVTV_TELETEXT_B
+#define IVTV_SLICED_TYPE_CAPTION_525 V4L2_MPEG_VBI_IVTV_CAPTION_525
+#define IVTV_SLICED_TYPE_WSS_625 V4L2_MPEG_VBI_IVTV_WSS_625
+#define IVTV_SLICED_TYPE_VPS V4L2_MPEG_VBI_IVTV_VPS
+#endif
diff --git a/i686-linux-musl/include/linux/ivtvfb.h b/i686-linux-musl/include/linux/ivtvfb.h
new file mode 100644
index 0000000..9addcbf
--- /dev/null
+++ b/i686-linux-musl/include/linux/ivtvfb.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_IVTVFB_H__
+#define __LINUX_IVTVFB_H__
+#include <linux/compiler.h>
+#include <linux/types.h>
+struct ivtvfb_dma_frame {
+  void __user * source;
+  unsigned long dest_offset;
+  int count;
+};
+#define IVTVFB_IOC_DMA_FRAME _IOW('V', BASE_VIDIOC_PRIVATE + 0, struct ivtvfb_dma_frame)
+#endif
diff --git a/i686-linux-musl/include/linux/jffs2.h b/i686-linux-musl/include/linux/jffs2.h
new file mode 100644
index 0000000..698f953
--- /dev/null
+++ b/i686-linux-musl/include/linux/jffs2.h
@@ -0,0 +1,163 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_JFFS2_H__
+#define __LINUX_JFFS2_H__
+#include <linux/types.h>
+#include <linux/magic.h>
+#define JFFS2_OLD_MAGIC_BITMASK 0x1984
+#define JFFS2_MAGIC_BITMASK 0x1985
+#define KSAMTIB_CIGAM_2SFFJ 0x8519
+#define JFFS2_EMPTY_BITMASK 0xffff
+#define JFFS2_DIRTY_BITMASK 0x0000
+#define JFFS2_SUM_MAGIC 0x02851885
+#define JFFS2_MAX_NAME_LEN 254
+#define JFFS2_MIN_DATA_LEN 128
+#define JFFS2_COMPR_NONE 0x00
+#define JFFS2_COMPR_ZERO 0x01
+#define JFFS2_COMPR_RTIME 0x02
+#define JFFS2_COMPR_RUBINMIPS 0x03
+#define JFFS2_COMPR_COPY 0x04
+#define JFFS2_COMPR_DYNRUBIN 0x05
+#define JFFS2_COMPR_ZLIB 0x06
+#define JFFS2_COMPR_LZO 0x07
+#define JFFS2_COMPAT_MASK 0xc000
+#define JFFS2_NODE_ACCURATE 0x2000
+#define JFFS2_FEATURE_INCOMPAT 0xc000
+#define JFFS2_FEATURE_ROCOMPAT 0x8000
+#define JFFS2_FEATURE_RWCOMPAT_COPY 0x4000
+#define JFFS2_FEATURE_RWCOMPAT_DELETE 0x0000
+#define JFFS2_NODETYPE_DIRENT (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 1)
+#define JFFS2_NODETYPE_INODE (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 2)
+#define JFFS2_NODETYPE_CLEANMARKER (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 3)
+#define JFFS2_NODETYPE_PADDING (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 4)
+#define JFFS2_NODETYPE_SUMMARY (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 6)
+#define JFFS2_NODETYPE_XATTR (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 8)
+#define JFFS2_NODETYPE_XREF (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 9)
+#define JFFS2_XPREFIX_USER 1
+#define JFFS2_XPREFIX_SECURITY 2
+#define JFFS2_XPREFIX_ACL_ACCESS 3
+#define JFFS2_XPREFIX_ACL_DEFAULT 4
+#define JFFS2_XPREFIX_TRUSTED 5
+#define JFFS2_ACL_VERSION 0x0001
+#define JFFS2_INO_FLAG_PREREAD 1
+#define JFFS2_INO_FLAG_USERCOMPR 2
+typedef struct {
+  __u32 v32;
+} __attribute__((packed)) jint32_t;
+typedef struct {
+  __u32 m;
+} __attribute__((packed)) jmode_t;
+typedef struct {
+  __u16 v16;
+} __attribute__((packed)) jint16_t;
+struct jffs2_unknown_node {
+  jint16_t magic;
+  jint16_t nodetype;
+  jint32_t totlen;
+  jint32_t hdr_crc;
+};
+struct jffs2_raw_dirent {
+  jint16_t magic;
+  jint16_t nodetype;
+  jint32_t totlen;
+  jint32_t hdr_crc;
+  jint32_t pino;
+  jint32_t version;
+  jint32_t ino;
+  jint32_t mctime;
+  __u8 nsize;
+  __u8 type;
+  __u8 unused[2];
+  jint32_t node_crc;
+  jint32_t name_crc;
+  __u8 name[0];
+};
+struct jffs2_raw_inode {
+  jint16_t magic;
+  jint16_t nodetype;
+  jint32_t totlen;
+  jint32_t hdr_crc;
+  jint32_t ino;
+  jint32_t version;
+  jmode_t mode;
+  jint16_t uid;
+  jint16_t gid;
+  jint32_t isize;
+  jint32_t atime;
+  jint32_t mtime;
+  jint32_t ctime;
+  jint32_t offset;
+  jint32_t csize;
+  jint32_t dsize;
+  __u8 compr;
+  __u8 usercompr;
+  jint16_t flags;
+  jint32_t data_crc;
+  jint32_t node_crc;
+  __u8 data[0];
+};
+struct jffs2_raw_xattr {
+  jint16_t magic;
+  jint16_t nodetype;
+  jint32_t totlen;
+  jint32_t hdr_crc;
+  jint32_t xid;
+  jint32_t version;
+  __u8 xprefix;
+  __u8 name_len;
+  jint16_t value_len;
+  jint32_t data_crc;
+  jint32_t node_crc;
+  __u8 data[0];
+} __attribute__((packed));
+struct jffs2_raw_xref {
+  jint16_t magic;
+  jint16_t nodetype;
+  jint32_t totlen;
+  jint32_t hdr_crc;
+  jint32_t ino;
+  jint32_t xid;
+  jint32_t xseqno;
+  jint32_t node_crc;
+} __attribute__((packed));
+struct jffs2_raw_summary {
+  jint16_t magic;
+  jint16_t nodetype;
+  jint32_t totlen;
+  jint32_t hdr_crc;
+  jint32_t sum_num;
+  jint32_t cln_mkr;
+  jint32_t padded;
+  jint32_t sum_crc;
+  jint32_t node_crc;
+  jint32_t sum[0];
+};
+union jffs2_node_union {
+  struct jffs2_raw_inode i;
+  struct jffs2_raw_dirent d;
+  struct jffs2_raw_xattr x;
+  struct jffs2_raw_xref r;
+  struct jffs2_raw_summary s;
+  struct jffs2_unknown_node u;
+};
+union jffs2_device_node {
+  jint16_t old_id;
+  jint32_t new_id;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/joystick.h b/i686-linux-musl/include/linux/joystick.h
new file mode 100644
index 0000000..3f16f11
--- /dev/null
+++ b/i686-linux-musl/include/linux/joystick.h
@@ -0,0 +1,90 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_JOYSTICK_H
+#define _UAPI_LINUX_JOYSTICK_H
+#include <linux/types.h>
+#include <linux/input.h>
+#define JS_VERSION 0x020100
+#define JS_EVENT_BUTTON 0x01
+#define JS_EVENT_AXIS 0x02
+#define JS_EVENT_INIT 0x80
+struct js_event {
+  __u32 time;
+  __s16 value;
+  __u8 type;
+  __u8 number;
+};
+#define JSIOCGVERSION _IOR('j', 0x01, __u32)
+#define JSIOCGAXES _IOR('j', 0x11, __u8)
+#define JSIOCGBUTTONS _IOR('j', 0x12, __u8)
+#define JSIOCGNAME(len) _IOC(_IOC_READ, 'j', 0x13, len)
+#define JSIOCSCORR _IOW('j', 0x21, struct js_corr)
+#define JSIOCGCORR _IOR('j', 0x22, struct js_corr)
+#define JSIOCSAXMAP _IOW('j', 0x31, __u8[ABS_CNT])
+#define JSIOCGAXMAP _IOR('j', 0x32, __u8[ABS_CNT])
+#define JSIOCSBTNMAP _IOW('j', 0x33, __u16[KEY_MAX - BTN_MISC + 1])
+#define JSIOCGBTNMAP _IOR('j', 0x34, __u16[KEY_MAX - BTN_MISC + 1])
+#define JS_CORR_NONE 0x00
+#define JS_CORR_BROKEN 0x01
+struct js_corr {
+  __s32 coef[8];
+  __s16 prec;
+  __u16 type;
+};
+#define JS_RETURN sizeof(struct JS_DATA_TYPE)
+#define JS_TRUE 1
+#define JS_FALSE 0
+#define JS_X_0 0x01
+#define JS_Y_0 0x02
+#define JS_X_1 0x04
+#define JS_Y_1 0x08
+#define JS_MAX 2
+#define JS_DEF_TIMEOUT 0x1300
+#define JS_DEF_CORR 0
+#define JS_DEF_TIMELIMIT 10L
+#define JS_SET_CAL 1
+#define JS_GET_CAL 2
+#define JS_SET_TIMEOUT 3
+#define JS_GET_TIMEOUT 4
+#define JS_SET_TIMELIMIT 5
+#define JS_GET_TIMELIMIT 6
+#define JS_GET_ALL 7
+#define JS_SET_ALL 8
+struct JS_DATA_TYPE {
+  __s32 buttons;
+  __s32 x;
+  __s32 y;
+};
+struct JS_DATA_SAVE_TYPE_32 {
+  __s32 JS_TIMEOUT;
+  __s32 BUSY;
+  __s32 JS_EXPIRETIME;
+  __s32 JS_TIMELIMIT;
+  struct JS_DATA_TYPE JS_SAVE;
+  struct JS_DATA_TYPE JS_CORR;
+};
+struct JS_DATA_SAVE_TYPE_64 {
+  __s32 JS_TIMEOUT;
+  __s32 BUSY;
+  __s64 JS_EXPIRETIME;
+  __s64 JS_TIMELIMIT;
+  struct JS_DATA_TYPE JS_SAVE;
+  struct JS_DATA_TYPE JS_CORR;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/kcm.h b/i686-linux-musl/include/linux/kcm.h
new file mode 100644
index 0000000..04bf5f5
--- /dev/null
+++ b/i686-linux-musl/include/linux/kcm.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef KCM_KERNEL_H
+#define KCM_KERNEL_H
+struct kcm_attach {
+  int fd;
+  int bpf_fd;
+};
+struct kcm_unattach {
+  int fd;
+};
+struct kcm_clone {
+  int fd;
+};
+#define SIOCKCMATTACH (SIOCPROTOPRIVATE + 0)
+#define SIOCKCMUNATTACH (SIOCPROTOPRIVATE + 1)
+#define SIOCKCMCLONE (SIOCPROTOPRIVATE + 2)
+#define KCMPROTO_CONNECTED 0
+#define KCM_RECV_DISABLE 1
+#endif
diff --git a/i686-linux-musl/include/linux/kcmp.h b/i686-linux-musl/include/linux/kcmp.h
new file mode 100644
index 0000000..d185c0a
--- /dev/null
+++ b/i686-linux-musl/include/linux/kcmp.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_KCMP_H
+#define _UAPI_LINUX_KCMP_H
+#include <linux/types.h>
+enum kcmp_type {
+  KCMP_FILE,
+  KCMP_VM,
+  KCMP_FILES,
+  KCMP_FS,
+  KCMP_SIGHAND,
+  KCMP_IO,
+  KCMP_SYSVSEM,
+  KCMP_EPOLL_TFD,
+  KCMP_TYPES,
+};
+struct kcmp_epoll_slot {
+  __u32 efd;
+  __u32 tfd;
+  __u32 toff;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/kcov.h b/i686-linux-musl/include/linux/kcov.h
new file mode 100644
index 0000000..cf2660b
--- /dev/null
+++ b/i686-linux-musl/include/linux/kcov.h
@@ -0,0 +1,45 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_KCOV_IOCTLS_H
+#define _LINUX_KCOV_IOCTLS_H
+#include <linux/types.h>
+struct kcov_remote_arg {
+  __u32 trace_mode;
+  __u32 area_size;
+  __u32 num_handles;
+  __aligned_u64 common_handle;
+  __aligned_u64 handles[0];
+};
+#define KCOV_REMOTE_MAX_HANDLES 0x100
+#define KCOV_INIT_TRACE _IOR('c', 1, unsigned long)
+#define KCOV_ENABLE _IO('c', 100)
+#define KCOV_DISABLE _IO('c', 101)
+#define KCOV_REMOTE_ENABLE _IOW('c', 102, struct kcov_remote_arg)
+enum {
+  KCOV_TRACE_PC = 0,
+  KCOV_TRACE_CMP = 1,
+};
+#define KCOV_CMP_CONST (1 << 0)
+#define KCOV_CMP_SIZE(n) ((n) << 1)
+#define KCOV_CMP_MASK KCOV_CMP_SIZE(3)
+#define KCOV_SUBSYSTEM_COMMON (0x00ull << 56)
+#define KCOV_SUBSYSTEM_USB (0x01ull << 56)
+#define KCOV_SUBSYSTEM_MASK (0xffull << 56)
+#define KCOV_INSTANCE_MASK (0xffffffffull)
+#endif
diff --git a/i686-linux-musl/include/linux/kd.h b/i686-linux-musl/include/linux/kd.h
new file mode 100644
index 0000000..2385037
--- /dev/null
+++ b/i686-linux-musl/include/linux/kd.h
@@ -0,0 +1,162 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_KD_H
+#define _UAPI_LINUX_KD_H
+#include <linux/types.h>
+#include <linux/compiler.h>
+#define GIO_FONT 0x4B60
+#define PIO_FONT 0x4B61
+#define GIO_FONTX 0x4B6B
+#define PIO_FONTX 0x4B6C
+struct consolefontdesc {
+  unsigned short charcount;
+  unsigned short charheight;
+  char __user * chardata;
+};
+#define PIO_FONTRESET 0x4B6D
+#define GIO_CMAP 0x4B70
+#define PIO_CMAP 0x4B71
+#define KIOCSOUND 0x4B2F
+#define KDMKTONE 0x4B30
+#define KDGETLED 0x4B31
+#define KDSETLED 0x4B32
+#define LED_SCR 0x01
+#define LED_NUM 0x02
+#define LED_CAP 0x04
+#define KDGKBTYPE 0x4B33
+#define KB_84 0x01
+#define KB_101 0x02
+#define KB_OTHER 0x03
+#define KDADDIO 0x4B34
+#define KDDELIO 0x4B35
+#define KDENABIO 0x4B36
+#define KDDISABIO 0x4B37
+#define KDSETMODE 0x4B3A
+#define KD_TEXT 0x00
+#define KD_GRAPHICS 0x01
+#define KD_TEXT0 0x02
+#define KD_TEXT1 0x03
+#define KDGETMODE 0x4B3B
+#define KDMAPDISP 0x4B3C
+#define KDUNMAPDISP 0x4B3D
+typedef char scrnmap_t;
+#define E_TABSZ 256
+#define GIO_SCRNMAP 0x4B40
+#define PIO_SCRNMAP 0x4B41
+#define GIO_UNISCRNMAP 0x4B69
+#define PIO_UNISCRNMAP 0x4B6A
+#define GIO_UNIMAP 0x4B66
+struct unipair {
+  unsigned short unicode;
+  unsigned short fontpos;
+};
+struct unimapdesc {
+  unsigned short entry_ct;
+  struct unipair __user * entries;
+};
+#define PIO_UNIMAP 0x4B67
+#define PIO_UNIMAPCLR 0x4B68
+struct unimapinit {
+  unsigned short advised_hashsize;
+  unsigned short advised_hashstep;
+  unsigned short advised_hashlevel;
+};
+#define UNI_DIRECT_BASE 0xF000
+#define UNI_DIRECT_MASK 0x01FF
+#define K_RAW 0x00
+#define K_XLATE 0x01
+#define K_MEDIUMRAW 0x02
+#define K_UNICODE 0x03
+#define K_OFF 0x04
+#define KDGKBMODE 0x4B44
+#define KDSKBMODE 0x4B45
+#define K_METABIT 0x03
+#define K_ESCPREFIX 0x04
+#define KDGKBMETA 0x4B62
+#define KDSKBMETA 0x4B63
+#define K_SCROLLLOCK 0x01
+#define K_NUMLOCK 0x02
+#define K_CAPSLOCK 0x04
+#define KDGKBLED 0x4B64
+#define KDSKBLED 0x4B65
+struct kbentry {
+  unsigned char kb_table;
+  unsigned char kb_index;
+  unsigned short kb_value;
+};
+#define K_NORMTAB 0x00
+#define K_SHIFTTAB 0x01
+#define K_ALTTAB 0x02
+#define K_ALTSHIFTTAB 0x03
+#define KDGKBENT 0x4B46
+#define KDSKBENT 0x4B47
+struct kbsentry {
+  unsigned char kb_func;
+  unsigned char kb_string[512];
+};
+#define KDGKBSENT 0x4B48
+#define KDSKBSENT 0x4B49
+struct kbdiacr {
+  unsigned char diacr, base, result;
+};
+struct kbdiacrs {
+  unsigned int kb_cnt;
+  struct kbdiacr kbdiacr[256];
+};
+#define KDGKBDIACR 0x4B4A
+#define KDSKBDIACR 0x4B4B
+struct kbdiacruc {
+  unsigned int diacr, base, result;
+};
+struct kbdiacrsuc {
+  unsigned int kb_cnt;
+  struct kbdiacruc kbdiacruc[256];
+};
+#define KDGKBDIACRUC 0x4BFA
+#define KDSKBDIACRUC 0x4BFB
+struct kbkeycode {
+  unsigned int scancode, keycode;
+};
+#define KDGETKEYCODE 0x4B4C
+#define KDSETKEYCODE 0x4B4D
+#define KDSIGACCEPT 0x4B4E
+struct kbd_repeat {
+  int delay;
+  int period;
+};
+#define KDKBDREP 0x4B52
+#define KDFONTOP 0x4B72
+struct console_font_op {
+  unsigned int op;
+  unsigned int flags;
+  unsigned int width, height;
+  unsigned int charcount;
+  unsigned char __user * data;
+};
+struct console_font {
+  unsigned int width, height;
+  unsigned int charcount;
+  unsigned char * data;
+};
+#define KD_FONT_OP_SET 0
+#define KD_FONT_OP_GET 1
+#define KD_FONT_OP_SET_DEFAULT 2
+#define KD_FONT_OP_COPY 3
+#define KD_FONT_FLAG_DONT_RECALC 1
+#endif
diff --git a/i686-linux-musl/include/linux/kdev_t.h b/i686-linux-musl/include/linux/kdev_t.h
new file mode 100644
index 0000000..7dfceca
--- /dev/null
+++ b/i686-linux-musl/include/linux/kdev_t.h
@@ -0,0 +1,24 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_KDEV_T_H
+#define _UAPI_LINUX_KDEV_T_H
+#define MAJOR(dev) ((dev) >> 8)
+#define MINOR(dev) ((dev) & 0xff)
+#define MKDEV(ma,mi) ((ma) << 8 | (mi))
+#endif
diff --git a/i686-linux-musl/include/linux/kernel-page-flags.h b/i686-linux-musl/include/linux/kernel-page-flags.h
new file mode 100644
index 0000000..d66cd7f
--- /dev/null
+++ b/i686-linux-musl/include/linux/kernel-page-flags.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPILINUX_KERNEL_PAGE_FLAGS_H
+#define _UAPILINUX_KERNEL_PAGE_FLAGS_H
+#define KPF_LOCKED 0
+#define KPF_ERROR 1
+#define KPF_REFERENCED 2
+#define KPF_UPTODATE 3
+#define KPF_DIRTY 4
+#define KPF_LRU 5
+#define KPF_ACTIVE 6
+#define KPF_SLAB 7
+#define KPF_WRITEBACK 8
+#define KPF_RECLAIM 9
+#define KPF_BUDDY 10
+#define KPF_MMAP 11
+#define KPF_ANON 12
+#define KPF_SWAPCACHE 13
+#define KPF_SWAPBACKED 14
+#define KPF_COMPOUND_HEAD 15
+#define KPF_COMPOUND_TAIL 16
+#define KPF_HUGE 17
+#define KPF_UNEVICTABLE 18
+#define KPF_HWPOISON 19
+#define KPF_NOPAGE 20
+#define KPF_KSM 21
+#define KPF_THP 22
+#define KPF_OFFLINE 23
+#define KPF_ZERO_PAGE 24
+#define KPF_IDLE 25
+#define KPF_PGTABLE 26
+#endif
diff --git a/i686-linux-musl/include/linux/kernel.h b/i686-linux-musl/include/linux/kernel.h
new file mode 100644
index 0000000..7506a41
--- /dev/null
+++ b/i686-linux-musl/include/linux/kernel.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_KERNEL_H
+#define _UAPI_LINUX_KERNEL_H
+#include <linux/sysinfo.h>
+#include <linux/const.h>
+#endif
diff --git a/i686-linux-musl/include/linux/kernelcapi.h b/i686-linux-musl/include/linux/kernelcapi.h
new file mode 100644
index 0000000..519a043
--- /dev/null
+++ b/i686-linux-musl/include/linux/kernelcapi.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__KERNELCAPI_H__
+#define _UAPI__KERNELCAPI_H__
+#define CAPI_MAXAPPL 240
+#define CAPI_MAXCONTR 32
+#define CAPI_MAXDATAWINDOW 8
+typedef struct kcapi_flagdef {
+  int contr;
+  int flag;
+} kcapi_flagdef;
+typedef struct kcapi_carddef {
+  char driver[32];
+  unsigned int port;
+  unsigned irq;
+  unsigned int membase;
+  int cardnr;
+} kcapi_carddef;
+#define KCAPI_CMD_TRACE 10
+#define KCAPI_CMD_ADDCARD 11
+#define KCAPI_TRACE_OFF 0
+#define KCAPI_TRACE_SHORT_NO_DATA 1
+#define KCAPI_TRACE_FULL_NO_DATA 2
+#define KCAPI_TRACE_SHORT 3
+#define KCAPI_TRACE_FULL 4
+#endif
diff --git a/i686-linux-musl/include/linux/kexec.h b/i686-linux-musl/include/linux/kexec.h
new file mode 100644
index 0000000..2e3bd0c
--- /dev/null
+++ b/i686-linux-musl/include/linux/kexec.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPILINUX_KEXEC_H
+#define _UAPILINUX_KEXEC_H
+#include <linux/types.h>
+#define KEXEC_ON_CRASH 0x00000001
+#define KEXEC_PRESERVE_CONTEXT 0x00000002
+#define KEXEC_ARCH_MASK 0xffff0000
+#define KEXEC_FILE_UNLOAD 0x00000001
+#define KEXEC_FILE_ON_CRASH 0x00000002
+#define KEXEC_FILE_NO_INITRAMFS 0x00000004
+#define KEXEC_ARCH_DEFAULT (0 << 16)
+#define KEXEC_ARCH_386 (3 << 16)
+#define KEXEC_ARCH_68K (4 << 16)
+#define KEXEC_ARCH_PARISC (15 << 16)
+#define KEXEC_ARCH_X86_64 (62 << 16)
+#define KEXEC_ARCH_PPC (20 << 16)
+#define KEXEC_ARCH_PPC64 (21 << 16)
+#define KEXEC_ARCH_IA_64 (50 << 16)
+#define KEXEC_ARCH_ARM (40 << 16)
+#define KEXEC_ARCH_S390 (22 << 16)
+#define KEXEC_ARCH_SH (42 << 16)
+#define KEXEC_ARCH_MIPS_LE (10 << 16)
+#define KEXEC_ARCH_MIPS (8 << 16)
+#define KEXEC_ARCH_AARCH64 (183 << 16)
+#define KEXEC_ARCH_RISCV (243 << 16)
+#define KEXEC_SEGMENT_MAX 16
+struct kexec_segment {
+  const void * buf;
+  size_t bufsz;
+  const void * mem;
+  size_t memsz;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/keyboard.h b/i686-linux-musl/include/linux/keyboard.h
new file mode 100644
index 0000000..a05438b
--- /dev/null
+++ b/i686-linux-musl/include/linux/keyboard.h
@@ -0,0 +1,454 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_KEYBOARD_H
+#define _UAPI__LINUX_KEYBOARD_H
+#include <linux/wait.h>
+#define KG_SHIFT 0
+#define KG_CTRL 2
+#define KG_ALT 3
+#define KG_ALTGR 1
+#define KG_SHIFTL 4
+#define KG_KANASHIFT 4
+#define KG_SHIFTR 5
+#define KG_CTRLL 6
+#define KG_CTRLR 7
+#define KG_CAPSSHIFT 8
+#define NR_SHIFT 9
+#define NR_KEYS 256
+#define MAX_NR_KEYMAPS 256
+#define MAX_NR_OF_USER_KEYMAPS 256
+#define MAX_NR_FUNC 256
+#define KT_LATIN 0
+#define KT_FN 1
+#define KT_SPEC 2
+#define KT_PAD 3
+#define KT_DEAD 4
+#define KT_CONS 5
+#define KT_CUR 6
+#define KT_SHIFT 7
+#define KT_META 8
+#define KT_ASCII 9
+#define KT_LOCK 10
+#define KT_LETTER 11
+#define KT_SLOCK 12
+#define KT_DEAD2 13
+#define KT_BRL 14
+#define K(t,v) (((t) << 8) | (v))
+#define KTYP(x) ((x) >> 8)
+#define KVAL(x) ((x) & 0xff)
+#define K_F1 K(KT_FN, 0)
+#define K_F2 K(KT_FN, 1)
+#define K_F3 K(KT_FN, 2)
+#define K_F4 K(KT_FN, 3)
+#define K_F5 K(KT_FN, 4)
+#define K_F6 K(KT_FN, 5)
+#define K_F7 K(KT_FN, 6)
+#define K_F8 K(KT_FN, 7)
+#define K_F9 K(KT_FN, 8)
+#define K_F10 K(KT_FN, 9)
+#define K_F11 K(KT_FN, 10)
+#define K_F12 K(KT_FN, 11)
+#define K_F13 K(KT_FN, 12)
+#define K_F14 K(KT_FN, 13)
+#define K_F15 K(KT_FN, 14)
+#define K_F16 K(KT_FN, 15)
+#define K_F17 K(KT_FN, 16)
+#define K_F18 K(KT_FN, 17)
+#define K_F19 K(KT_FN, 18)
+#define K_F20 K(KT_FN, 19)
+#define K_FIND K(KT_FN, 20)
+#define K_INSERT K(KT_FN, 21)
+#define K_REMOVE K(KT_FN, 22)
+#define K_SELECT K(KT_FN, 23)
+#define K_PGUP K(KT_FN, 24)
+#define K_PGDN K(KT_FN, 25)
+#define K_MACRO K(KT_FN, 26)
+#define K_HELP K(KT_FN, 27)
+#define K_DO K(KT_FN, 28)
+#define K_PAUSE K(KT_FN, 29)
+#define K_F21 K(KT_FN, 30)
+#define K_F22 K(KT_FN, 31)
+#define K_F23 K(KT_FN, 32)
+#define K_F24 K(KT_FN, 33)
+#define K_F25 K(KT_FN, 34)
+#define K_F26 K(KT_FN, 35)
+#define K_F27 K(KT_FN, 36)
+#define K_F28 K(KT_FN, 37)
+#define K_F29 K(KT_FN, 38)
+#define K_F30 K(KT_FN, 39)
+#define K_F31 K(KT_FN, 40)
+#define K_F32 K(KT_FN, 41)
+#define K_F33 K(KT_FN, 42)
+#define K_F34 K(KT_FN, 43)
+#define K_F35 K(KT_FN, 44)
+#define K_F36 K(KT_FN, 45)
+#define K_F37 K(KT_FN, 46)
+#define K_F38 K(KT_FN, 47)
+#define K_F39 K(KT_FN, 48)
+#define K_F40 K(KT_FN, 49)
+#define K_F41 K(KT_FN, 50)
+#define K_F42 K(KT_FN, 51)
+#define K_F43 K(KT_FN, 52)
+#define K_F44 K(KT_FN, 53)
+#define K_F45 K(KT_FN, 54)
+#define K_F46 K(KT_FN, 55)
+#define K_F47 K(KT_FN, 56)
+#define K_F48 K(KT_FN, 57)
+#define K_F49 K(KT_FN, 58)
+#define K_F50 K(KT_FN, 59)
+#define K_F51 K(KT_FN, 60)
+#define K_F52 K(KT_FN, 61)
+#define K_F53 K(KT_FN, 62)
+#define K_F54 K(KT_FN, 63)
+#define K_F55 K(KT_FN, 64)
+#define K_F56 K(KT_FN, 65)
+#define K_F57 K(KT_FN, 66)
+#define K_F58 K(KT_FN, 67)
+#define K_F59 K(KT_FN, 68)
+#define K_F60 K(KT_FN, 69)
+#define K_F61 K(KT_FN, 70)
+#define K_F62 K(KT_FN, 71)
+#define K_F63 K(KT_FN, 72)
+#define K_F64 K(KT_FN, 73)
+#define K_F65 K(KT_FN, 74)
+#define K_F66 K(KT_FN, 75)
+#define K_F67 K(KT_FN, 76)
+#define K_F68 K(KT_FN, 77)
+#define K_F69 K(KT_FN, 78)
+#define K_F70 K(KT_FN, 79)
+#define K_F71 K(KT_FN, 80)
+#define K_F72 K(KT_FN, 81)
+#define K_F73 K(KT_FN, 82)
+#define K_F74 K(KT_FN, 83)
+#define K_F75 K(KT_FN, 84)
+#define K_F76 K(KT_FN, 85)
+#define K_F77 K(KT_FN, 86)
+#define K_F78 K(KT_FN, 87)
+#define K_F79 K(KT_FN, 88)
+#define K_F80 K(KT_FN, 89)
+#define K_F81 K(KT_FN, 90)
+#define K_F82 K(KT_FN, 91)
+#define K_F83 K(KT_FN, 92)
+#define K_F84 K(KT_FN, 93)
+#define K_F85 K(KT_FN, 94)
+#define K_F86 K(KT_FN, 95)
+#define K_F87 K(KT_FN, 96)
+#define K_F88 K(KT_FN, 97)
+#define K_F89 K(KT_FN, 98)
+#define K_F90 K(KT_FN, 99)
+#define K_F91 K(KT_FN, 100)
+#define K_F92 K(KT_FN, 101)
+#define K_F93 K(KT_FN, 102)
+#define K_F94 K(KT_FN, 103)
+#define K_F95 K(KT_FN, 104)
+#define K_F96 K(KT_FN, 105)
+#define K_F97 K(KT_FN, 106)
+#define K_F98 K(KT_FN, 107)
+#define K_F99 K(KT_FN, 108)
+#define K_F100 K(KT_FN, 109)
+#define K_F101 K(KT_FN, 110)
+#define K_F102 K(KT_FN, 111)
+#define K_F103 K(KT_FN, 112)
+#define K_F104 K(KT_FN, 113)
+#define K_F105 K(KT_FN, 114)
+#define K_F106 K(KT_FN, 115)
+#define K_F107 K(KT_FN, 116)
+#define K_F108 K(KT_FN, 117)
+#define K_F109 K(KT_FN, 118)
+#define K_F110 K(KT_FN, 119)
+#define K_F111 K(KT_FN, 120)
+#define K_F112 K(KT_FN, 121)
+#define K_F113 K(KT_FN, 122)
+#define K_F114 K(KT_FN, 123)
+#define K_F115 K(KT_FN, 124)
+#define K_F116 K(KT_FN, 125)
+#define K_F117 K(KT_FN, 126)
+#define K_F118 K(KT_FN, 127)
+#define K_F119 K(KT_FN, 128)
+#define K_F120 K(KT_FN, 129)
+#define K_F121 K(KT_FN, 130)
+#define K_F122 K(KT_FN, 131)
+#define K_F123 K(KT_FN, 132)
+#define K_F124 K(KT_FN, 133)
+#define K_F125 K(KT_FN, 134)
+#define K_F126 K(KT_FN, 135)
+#define K_F127 K(KT_FN, 136)
+#define K_F128 K(KT_FN, 137)
+#define K_F129 K(KT_FN, 138)
+#define K_F130 K(KT_FN, 139)
+#define K_F131 K(KT_FN, 140)
+#define K_F132 K(KT_FN, 141)
+#define K_F133 K(KT_FN, 142)
+#define K_F134 K(KT_FN, 143)
+#define K_F135 K(KT_FN, 144)
+#define K_F136 K(KT_FN, 145)
+#define K_F137 K(KT_FN, 146)
+#define K_F138 K(KT_FN, 147)
+#define K_F139 K(KT_FN, 148)
+#define K_F140 K(KT_FN, 149)
+#define K_F141 K(KT_FN, 150)
+#define K_F142 K(KT_FN, 151)
+#define K_F143 K(KT_FN, 152)
+#define K_F144 K(KT_FN, 153)
+#define K_F145 K(KT_FN, 154)
+#define K_F146 K(KT_FN, 155)
+#define K_F147 K(KT_FN, 156)
+#define K_F148 K(KT_FN, 157)
+#define K_F149 K(KT_FN, 158)
+#define K_F150 K(KT_FN, 159)
+#define K_F151 K(KT_FN, 160)
+#define K_F152 K(KT_FN, 161)
+#define K_F153 K(KT_FN, 162)
+#define K_F154 K(KT_FN, 163)
+#define K_F155 K(KT_FN, 164)
+#define K_F156 K(KT_FN, 165)
+#define K_F157 K(KT_FN, 166)
+#define K_F158 K(KT_FN, 167)
+#define K_F159 K(KT_FN, 168)
+#define K_F160 K(KT_FN, 169)
+#define K_F161 K(KT_FN, 170)
+#define K_F162 K(KT_FN, 171)
+#define K_F163 K(KT_FN, 172)
+#define K_F164 K(KT_FN, 173)
+#define K_F165 K(KT_FN, 174)
+#define K_F166 K(KT_FN, 175)
+#define K_F167 K(KT_FN, 176)
+#define K_F168 K(KT_FN, 177)
+#define K_F169 K(KT_FN, 178)
+#define K_F170 K(KT_FN, 179)
+#define K_F171 K(KT_FN, 180)
+#define K_F172 K(KT_FN, 181)
+#define K_F173 K(KT_FN, 182)
+#define K_F174 K(KT_FN, 183)
+#define K_F175 K(KT_FN, 184)
+#define K_F176 K(KT_FN, 185)
+#define K_F177 K(KT_FN, 186)
+#define K_F178 K(KT_FN, 187)
+#define K_F179 K(KT_FN, 188)
+#define K_F180 K(KT_FN, 189)
+#define K_F181 K(KT_FN, 190)
+#define K_F182 K(KT_FN, 191)
+#define K_F183 K(KT_FN, 192)
+#define K_F184 K(KT_FN, 193)
+#define K_F185 K(KT_FN, 194)
+#define K_F186 K(KT_FN, 195)
+#define K_F187 K(KT_FN, 196)
+#define K_F188 K(KT_FN, 197)
+#define K_F189 K(KT_FN, 198)
+#define K_F190 K(KT_FN, 199)
+#define K_F191 K(KT_FN, 200)
+#define K_F192 K(KT_FN, 201)
+#define K_F193 K(KT_FN, 202)
+#define K_F194 K(KT_FN, 203)
+#define K_F195 K(KT_FN, 204)
+#define K_F196 K(KT_FN, 205)
+#define K_F197 K(KT_FN, 206)
+#define K_F198 K(KT_FN, 207)
+#define K_F199 K(KT_FN, 208)
+#define K_F200 K(KT_FN, 209)
+#define K_F201 K(KT_FN, 210)
+#define K_F202 K(KT_FN, 211)
+#define K_F203 K(KT_FN, 212)
+#define K_F204 K(KT_FN, 213)
+#define K_F205 K(KT_FN, 214)
+#define K_F206 K(KT_FN, 215)
+#define K_F207 K(KT_FN, 216)
+#define K_F208 K(KT_FN, 217)
+#define K_F209 K(KT_FN, 218)
+#define K_F210 K(KT_FN, 219)
+#define K_F211 K(KT_FN, 220)
+#define K_F212 K(KT_FN, 221)
+#define K_F213 K(KT_FN, 222)
+#define K_F214 K(KT_FN, 223)
+#define K_F215 K(KT_FN, 224)
+#define K_F216 K(KT_FN, 225)
+#define K_F217 K(KT_FN, 226)
+#define K_F218 K(KT_FN, 227)
+#define K_F219 K(KT_FN, 228)
+#define K_F220 K(KT_FN, 229)
+#define K_F221 K(KT_FN, 230)
+#define K_F222 K(KT_FN, 231)
+#define K_F223 K(KT_FN, 232)
+#define K_F224 K(KT_FN, 233)
+#define K_F225 K(KT_FN, 234)
+#define K_F226 K(KT_FN, 235)
+#define K_F227 K(KT_FN, 236)
+#define K_F228 K(KT_FN, 237)
+#define K_F229 K(KT_FN, 238)
+#define K_F230 K(KT_FN, 239)
+#define K_F231 K(KT_FN, 240)
+#define K_F232 K(KT_FN, 241)
+#define K_F233 K(KT_FN, 242)
+#define K_F234 K(KT_FN, 243)
+#define K_F235 K(KT_FN, 244)
+#define K_F236 K(KT_FN, 245)
+#define K_F237 K(KT_FN, 246)
+#define K_F238 K(KT_FN, 247)
+#define K_F239 K(KT_FN, 248)
+#define K_F240 K(KT_FN, 249)
+#define K_F241 K(KT_FN, 250)
+#define K_F242 K(KT_FN, 251)
+#define K_F243 K(KT_FN, 252)
+#define K_F244 K(KT_FN, 253)
+#define K_F245 K(KT_FN, 254)
+#define K_UNDO K(KT_FN, 255)
+#define K_HOLE K(KT_SPEC, 0)
+#define K_ENTER K(KT_SPEC, 1)
+#define K_SH_REGS K(KT_SPEC, 2)
+#define K_SH_MEM K(KT_SPEC, 3)
+#define K_SH_STAT K(KT_SPEC, 4)
+#define K_BREAK K(KT_SPEC, 5)
+#define K_CONS K(KT_SPEC, 6)
+#define K_CAPS K(KT_SPEC, 7)
+#define K_NUM K(KT_SPEC, 8)
+#define K_HOLD K(KT_SPEC, 9)
+#define K_SCROLLFORW K(KT_SPEC, 10)
+#define K_SCROLLBACK K(KT_SPEC, 11)
+#define K_BOOT K(KT_SPEC, 12)
+#define K_CAPSON K(KT_SPEC, 13)
+#define K_COMPOSE K(KT_SPEC, 14)
+#define K_SAK K(KT_SPEC, 15)
+#define K_DECRCONSOLE K(KT_SPEC, 16)
+#define K_INCRCONSOLE K(KT_SPEC, 17)
+#define K_SPAWNCONSOLE K(KT_SPEC, 18)
+#define K_BARENUMLOCK K(KT_SPEC, 19)
+#define K_ALLOCATED K(KT_SPEC, 126)
+#define K_NOSUCHMAP K(KT_SPEC, 127)
+#define K_P0 K(KT_PAD, 0)
+#define K_P1 K(KT_PAD, 1)
+#define K_P2 K(KT_PAD, 2)
+#define K_P3 K(KT_PAD, 3)
+#define K_P4 K(KT_PAD, 4)
+#define K_P5 K(KT_PAD, 5)
+#define K_P6 K(KT_PAD, 6)
+#define K_P7 K(KT_PAD, 7)
+#define K_P8 K(KT_PAD, 8)
+#define K_P9 K(KT_PAD, 9)
+#define K_PPLUS K(KT_PAD, 10)
+#define K_PMINUS K(KT_PAD, 11)
+#define K_PSTAR K(KT_PAD, 12)
+#define K_PSLASH K(KT_PAD, 13)
+#define K_PENTER K(KT_PAD, 14)
+#define K_PCOMMA K(KT_PAD, 15)
+#define K_PDOT K(KT_PAD, 16)
+#define K_PPLUSMINUS K(KT_PAD, 17)
+#define K_PPARENL K(KT_PAD, 18)
+#define K_PPARENR K(KT_PAD, 19)
+#define NR_PAD 20
+#define K_DGRAVE K(KT_DEAD, 0)
+#define K_DACUTE K(KT_DEAD, 1)
+#define K_DCIRCM K(KT_DEAD, 2)
+#define K_DTILDE K(KT_DEAD, 3)
+#define K_DDIERE K(KT_DEAD, 4)
+#define K_DCEDIL K(KT_DEAD, 5)
+#define K_DMACRON K(KT_DEAD, 6)
+#define K_DBREVE K(KT_DEAD, 7)
+#define K_DABDOT K(KT_DEAD, 8)
+#define K_DABRING K(KT_DEAD, 9)
+#define K_DDBACUTE K(KT_DEAD, 10)
+#define K_DCARON K(KT_DEAD, 11)
+#define K_DOGONEK K(KT_DEAD, 12)
+#define K_DIOTA K(KT_DEAD, 13)
+#define K_DVOICED K(KT_DEAD, 14)
+#define K_DSEMVOICED K(KT_DEAD, 15)
+#define K_DBEDOT K(KT_DEAD, 16)
+#define K_DHOOK K(KT_DEAD, 17)
+#define K_DHORN K(KT_DEAD, 18)
+#define K_DSTROKE K(KT_DEAD, 19)
+#define K_DABCOMMA K(KT_DEAD, 20)
+#define K_DABREVCOMMA K(KT_DEAD, 21)
+#define K_DDBGRAVE K(KT_DEAD, 22)
+#define K_DINVBREVE K(KT_DEAD, 23)
+#define K_DBECOMMA K(KT_DEAD, 24)
+#define K_DCURRENCY K(KT_DEAD, 25)
+#define K_DGREEK K(KT_DEAD, 26)
+#define NR_DEAD 27
+#define K_DOWN K(KT_CUR, 0)
+#define K_LEFT K(KT_CUR, 1)
+#define K_RIGHT K(KT_CUR, 2)
+#define K_UP K(KT_CUR, 3)
+#define K_SHIFT K(KT_SHIFT, KG_SHIFT)
+#define K_CTRL K(KT_SHIFT, KG_CTRL)
+#define K_ALT K(KT_SHIFT, KG_ALT)
+#define K_ALTGR K(KT_SHIFT, KG_ALTGR)
+#define K_SHIFTL K(KT_SHIFT, KG_SHIFTL)
+#define K_SHIFTR K(KT_SHIFT, KG_SHIFTR)
+#define K_CTRLL K(KT_SHIFT, KG_CTRLL)
+#define K_CTRLR K(KT_SHIFT, KG_CTRLR)
+#define K_CAPSSHIFT K(KT_SHIFT, KG_CAPSSHIFT)
+#define K_ASC0 K(KT_ASCII, 0)
+#define K_ASC1 K(KT_ASCII, 1)
+#define K_ASC2 K(KT_ASCII, 2)
+#define K_ASC3 K(KT_ASCII, 3)
+#define K_ASC4 K(KT_ASCII, 4)
+#define K_ASC5 K(KT_ASCII, 5)
+#define K_ASC6 K(KT_ASCII, 6)
+#define K_ASC7 K(KT_ASCII, 7)
+#define K_ASC8 K(KT_ASCII, 8)
+#define K_ASC9 K(KT_ASCII, 9)
+#define K_HEX0 K(KT_ASCII, 10)
+#define K_HEX1 K(KT_ASCII, 11)
+#define K_HEX2 K(KT_ASCII, 12)
+#define K_HEX3 K(KT_ASCII, 13)
+#define K_HEX4 K(KT_ASCII, 14)
+#define K_HEX5 K(KT_ASCII, 15)
+#define K_HEX6 K(KT_ASCII, 16)
+#define K_HEX7 K(KT_ASCII, 17)
+#define K_HEX8 K(KT_ASCII, 18)
+#define K_HEX9 K(KT_ASCII, 19)
+#define K_HEXa K(KT_ASCII, 20)
+#define K_HEXb K(KT_ASCII, 21)
+#define K_HEXc K(KT_ASCII, 22)
+#define K_HEXd K(KT_ASCII, 23)
+#define K_HEXe K(KT_ASCII, 24)
+#define K_HEXf K(KT_ASCII, 25)
+#define NR_ASCII 26
+#define K_SHIFTLOCK K(KT_LOCK, KG_SHIFT)
+#define K_CTRLLOCK K(KT_LOCK, KG_CTRL)
+#define K_ALTLOCK K(KT_LOCK, KG_ALT)
+#define K_ALTGRLOCK K(KT_LOCK, KG_ALTGR)
+#define K_SHIFTLLOCK K(KT_LOCK, KG_SHIFTL)
+#define K_SHIFTRLOCK K(KT_LOCK, KG_SHIFTR)
+#define K_CTRLLLOCK K(KT_LOCK, KG_CTRLL)
+#define K_CTRLRLOCK K(KT_LOCK, KG_CTRLR)
+#define K_CAPSSHIFTLOCK K(KT_LOCK, KG_CAPSSHIFT)
+#define K_SHIFT_SLOCK K(KT_SLOCK, KG_SHIFT)
+#define K_CTRL_SLOCK K(KT_SLOCK, KG_CTRL)
+#define K_ALT_SLOCK K(KT_SLOCK, KG_ALT)
+#define K_ALTGR_SLOCK K(KT_SLOCK, KG_ALTGR)
+#define K_SHIFTL_SLOCK K(KT_SLOCK, KG_SHIFTL)
+#define K_SHIFTR_SLOCK K(KT_SLOCK, KG_SHIFTR)
+#define K_CTRLL_SLOCK K(KT_SLOCK, KG_CTRLL)
+#define K_CTRLR_SLOCK K(KT_SLOCK, KG_CTRLR)
+#define K_CAPSSHIFT_SLOCK K(KT_SLOCK, KG_CAPSSHIFT)
+#define NR_LOCK 9
+#define K_BRL_BLANK K(KT_BRL, 0)
+#define K_BRL_DOT1 K(KT_BRL, 1)
+#define K_BRL_DOT2 K(KT_BRL, 2)
+#define K_BRL_DOT3 K(KT_BRL, 3)
+#define K_BRL_DOT4 K(KT_BRL, 4)
+#define K_BRL_DOT5 K(KT_BRL, 5)
+#define K_BRL_DOT6 K(KT_BRL, 6)
+#define K_BRL_DOT7 K(KT_BRL, 7)
+#define K_BRL_DOT8 K(KT_BRL, 8)
+#define K_BRL_DOT9 K(KT_BRL, 9)
+#define K_BRL_DOT10 K(KT_BRL, 10)
+#define NR_BRL 11
+#define MAX_DIACR 256
+#endif
diff --git a/i686-linux-musl/include/linux/keyctl.h b/i686-linux-musl/include/linux/keyctl.h
new file mode 100644
index 0000000..01ea576
--- /dev/null
+++ b/i686-linux-musl/include/linux/keyctl.h
@@ -0,0 +1,122 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_KEYCTL_H
+#define _LINUX_KEYCTL_H
+#include <linux/types.h>
+#define KEY_SPEC_THREAD_KEYRING - 1
+#define KEY_SPEC_PROCESS_KEYRING - 2
+#define KEY_SPEC_SESSION_KEYRING - 3
+#define KEY_SPEC_USER_KEYRING - 4
+#define KEY_SPEC_USER_SESSION_KEYRING - 5
+#define KEY_SPEC_GROUP_KEYRING - 6
+#define KEY_SPEC_REQKEY_AUTH_KEY - 7
+#define KEY_SPEC_REQUESTOR_KEYRING - 8
+#define KEY_REQKEY_DEFL_NO_CHANGE - 1
+#define KEY_REQKEY_DEFL_DEFAULT 0
+#define KEY_REQKEY_DEFL_THREAD_KEYRING 1
+#define KEY_REQKEY_DEFL_PROCESS_KEYRING 2
+#define KEY_REQKEY_DEFL_SESSION_KEYRING 3
+#define KEY_REQKEY_DEFL_USER_KEYRING 4
+#define KEY_REQKEY_DEFL_USER_SESSION_KEYRING 5
+#define KEY_REQKEY_DEFL_GROUP_KEYRING 6
+#define KEY_REQKEY_DEFL_REQUESTOR_KEYRING 7
+#define KEYCTL_GET_KEYRING_ID 0
+#define KEYCTL_JOIN_SESSION_KEYRING 1
+#define KEYCTL_UPDATE 2
+#define KEYCTL_REVOKE 3
+#define KEYCTL_CHOWN 4
+#define KEYCTL_SETPERM 5
+#define KEYCTL_DESCRIBE 6
+#define KEYCTL_CLEAR 7
+#define KEYCTL_LINK 8
+#define KEYCTL_UNLINK 9
+#define KEYCTL_SEARCH 10
+#define KEYCTL_READ 11
+#define KEYCTL_INSTANTIATE 12
+#define KEYCTL_NEGATE 13
+#define KEYCTL_SET_REQKEY_KEYRING 14
+#define KEYCTL_SET_TIMEOUT 15
+#define KEYCTL_ASSUME_AUTHORITY 16
+#define KEYCTL_GET_SECURITY 17
+#define KEYCTL_SESSION_TO_PARENT 18
+#define KEYCTL_REJECT 19
+#define KEYCTL_INSTANTIATE_IOV 20
+#define KEYCTL_INVALIDATE 21
+#define KEYCTL_GET_PERSISTENT 22
+#define KEYCTL_DH_COMPUTE 23
+#define KEYCTL_PKEY_QUERY 24
+#define KEYCTL_PKEY_ENCRYPT 25
+#define KEYCTL_PKEY_DECRYPT 26
+#define KEYCTL_PKEY_SIGN 27
+#define KEYCTL_PKEY_VERIFY 28
+#define KEYCTL_RESTRICT_KEYRING 29
+#define KEYCTL_MOVE 30
+#define KEYCTL_CAPABILITIES 31
+#define KEYCTL_WATCH_KEY 32
+struct keyctl_dh_params {
+  union {
+#ifndef __cplusplus
+    __s32 __linux_private;
+#endif
+    __s32 priv;
+  };
+  __s32 prime;
+  __s32 base;
+};
+struct keyctl_kdf_params {
+  char __user * hashname;
+  char __user * otherinfo;
+  __u32 otherinfolen;
+  __u32 __spare[8];
+};
+#define KEYCTL_SUPPORTS_ENCRYPT 0x01
+#define KEYCTL_SUPPORTS_DECRYPT 0x02
+#define KEYCTL_SUPPORTS_SIGN 0x04
+#define KEYCTL_SUPPORTS_VERIFY 0x08
+struct keyctl_pkey_query {
+  __u32 supported_ops;
+  __u32 key_size;
+  __u16 max_data_size;
+  __u16 max_sig_size;
+  __u16 max_enc_size;
+  __u16 max_dec_size;
+  __u32 __spare[10];
+};
+struct keyctl_pkey_params {
+  __s32 key_id;
+  __u32 in_len;
+  union {
+    __u32 out_len;
+    __u32 in2_len;
+  };
+  __u32 __spare[7];
+};
+#define KEYCTL_MOVE_EXCL 0x00000001
+#define KEYCTL_CAPS0_CAPABILITIES 0x01
+#define KEYCTL_CAPS0_PERSISTENT_KEYRINGS 0x02
+#define KEYCTL_CAPS0_DIFFIE_HELLMAN 0x04
+#define KEYCTL_CAPS0_PUBLIC_KEY 0x08
+#define KEYCTL_CAPS0_BIG_KEY 0x10
+#define KEYCTL_CAPS0_INVALIDATE 0x20
+#define KEYCTL_CAPS0_RESTRICT_KEYRING 0x40
+#define KEYCTL_CAPS0_MOVE 0x80
+#define KEYCTL_CAPS1_NS_KEYRING_NAME 0x01
+#define KEYCTL_CAPS1_NS_KEY_TAG 0x02
+#define KEYCTL_CAPS1_NOTIFICATIONS 0x04
+#endif
diff --git a/i686-linux-musl/include/linux/kfd_ioctl.h b/i686-linux-musl/include/linux/kfd_ioctl.h
new file mode 100644
index 0000000..c52ac64
--- /dev/null
+++ b/i686-linux-musl/include/linux/kfd_ioctl.h
@@ -0,0 +1,385 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef KFD_IOCTL_H_INCLUDED
+#define KFD_IOCTL_H_INCLUDED
+#include <drm/drm.h>
+#include <linux/ioctl.h>
+#define KFD_IOCTL_MAJOR_VERSION 1
+#define KFD_IOCTL_MINOR_VERSION 6
+struct kfd_ioctl_get_version_args {
+  __u32 major_version;
+  __u32 minor_version;
+};
+#define KFD_IOC_QUEUE_TYPE_COMPUTE 0x0
+#define KFD_IOC_QUEUE_TYPE_SDMA 0x1
+#define KFD_IOC_QUEUE_TYPE_COMPUTE_AQL 0x2
+#define KFD_IOC_QUEUE_TYPE_SDMA_XGMI 0x3
+#define KFD_MAX_QUEUE_PERCENTAGE 100
+#define KFD_MAX_QUEUE_PRIORITY 15
+struct kfd_ioctl_create_queue_args {
+  __u64 ring_base_address;
+  __u64 write_pointer_address;
+  __u64 read_pointer_address;
+  __u64 doorbell_offset;
+  __u32 ring_size;
+  __u32 gpu_id;
+  __u32 queue_type;
+  __u32 queue_percentage;
+  __u32 queue_priority;
+  __u32 queue_id;
+  __u64 eop_buffer_address;
+  __u64 eop_buffer_size;
+  __u64 ctx_save_restore_address;
+  __u32 ctx_save_restore_size;
+  __u32 ctl_stack_size;
+};
+struct kfd_ioctl_destroy_queue_args {
+  __u32 queue_id;
+  __u32 pad;
+};
+struct kfd_ioctl_update_queue_args {
+  __u64 ring_base_address;
+  __u32 queue_id;
+  __u32 ring_size;
+  __u32 queue_percentage;
+  __u32 queue_priority;
+};
+struct kfd_ioctl_set_cu_mask_args {
+  __u32 queue_id;
+  __u32 num_cu_mask;
+  __u64 cu_mask_ptr;
+};
+struct kfd_ioctl_get_queue_wave_state_args {
+  __u64 ctl_stack_address;
+  __u32 ctl_stack_used_size;
+  __u32 save_area_used_size;
+  __u32 queue_id;
+  __u32 pad;
+};
+#define KFD_IOC_CACHE_POLICY_COHERENT 0
+#define KFD_IOC_CACHE_POLICY_NONCOHERENT 1
+struct kfd_ioctl_set_memory_policy_args {
+  __u64 alternate_aperture_base;
+  __u64 alternate_aperture_size;
+  __u32 gpu_id;
+  __u32 default_policy;
+  __u32 alternate_policy;
+  __u32 pad;
+};
+struct kfd_ioctl_get_clock_counters_args {
+  __u64 gpu_clock_counter;
+  __u64 cpu_clock_counter;
+  __u64 system_clock_counter;
+  __u64 system_clock_freq;
+  __u32 gpu_id;
+  __u32 pad;
+};
+struct kfd_process_device_apertures {
+  __u64 lds_base;
+  __u64 lds_limit;
+  __u64 scratch_base;
+  __u64 scratch_limit;
+  __u64 gpuvm_base;
+  __u64 gpuvm_limit;
+  __u32 gpu_id;
+  __u32 pad;
+};
+#define NUM_OF_SUPPORTED_GPUS 7
+struct kfd_ioctl_get_process_apertures_args {
+  struct kfd_process_device_apertures process_apertures[NUM_OF_SUPPORTED_GPUS];
+  __u32 num_of_nodes;
+  __u32 pad;
+};
+struct kfd_ioctl_get_process_apertures_new_args {
+  __u64 kfd_process_device_apertures_ptr;
+  __u32 num_of_nodes;
+  __u32 pad;
+};
+#define MAX_ALLOWED_NUM_POINTS 100
+#define MAX_ALLOWED_AW_BUFF_SIZE 4096
+#define MAX_ALLOWED_WAC_BUFF_SIZE 128
+struct kfd_ioctl_dbg_register_args {
+  __u32 gpu_id;
+  __u32 pad;
+};
+struct kfd_ioctl_dbg_unregister_args {
+  __u32 gpu_id;
+  __u32 pad;
+};
+struct kfd_ioctl_dbg_address_watch_args {
+  __u64 content_ptr;
+  __u32 gpu_id;
+  __u32 buf_size_in_bytes;
+};
+struct kfd_ioctl_dbg_wave_control_args {
+  __u64 content_ptr;
+  __u32 gpu_id;
+  __u32 buf_size_in_bytes;
+};
+#define KFD_IOC_EVENT_SIGNAL 0
+#define KFD_IOC_EVENT_NODECHANGE 1
+#define KFD_IOC_EVENT_DEVICESTATECHANGE 2
+#define KFD_IOC_EVENT_HW_EXCEPTION 3
+#define KFD_IOC_EVENT_SYSTEM_EVENT 4
+#define KFD_IOC_EVENT_DEBUG_EVENT 5
+#define KFD_IOC_EVENT_PROFILE_EVENT 6
+#define KFD_IOC_EVENT_QUEUE_EVENT 7
+#define KFD_IOC_EVENT_MEMORY 8
+#define KFD_IOC_WAIT_RESULT_COMPLETE 0
+#define KFD_IOC_WAIT_RESULT_TIMEOUT 1
+#define KFD_IOC_WAIT_RESULT_FAIL 2
+#define KFD_SIGNAL_EVENT_LIMIT 4096
+#define KFD_HW_EXCEPTION_WHOLE_GPU_RESET 0
+#define KFD_HW_EXCEPTION_PER_ENGINE_RESET 1
+#define KFD_HW_EXCEPTION_GPU_HANG 0
+#define KFD_HW_EXCEPTION_ECC 1
+#define KFD_MEM_ERR_NO_RAS 0
+#define KFD_MEM_ERR_SRAM_ECC 1
+#define KFD_MEM_ERR_POISON_CONSUMED 2
+#define KFD_MEM_ERR_GPU_HANG 3
+struct kfd_ioctl_create_event_args {
+  __u64 event_page_offset;
+  __u32 event_trigger_data;
+  __u32 event_type;
+  __u32 auto_reset;
+  __u32 node_id;
+  __u32 event_id;
+  __u32 event_slot_index;
+};
+struct kfd_ioctl_destroy_event_args {
+  __u32 event_id;
+  __u32 pad;
+};
+struct kfd_ioctl_set_event_args {
+  __u32 event_id;
+  __u32 pad;
+};
+struct kfd_ioctl_reset_event_args {
+  __u32 event_id;
+  __u32 pad;
+};
+struct kfd_memory_exception_failure {
+  __u32 NotPresent;
+  __u32 ReadOnly;
+  __u32 NoExecute;
+  __u32 imprecise;
+};
+struct kfd_hsa_memory_exception_data {
+  struct kfd_memory_exception_failure failure;
+  __u64 va;
+  __u32 gpu_id;
+  __u32 ErrorType;
+};
+struct kfd_hsa_hw_exception_data {
+  __u32 reset_type;
+  __u32 reset_cause;
+  __u32 memory_lost;
+  __u32 gpu_id;
+};
+struct kfd_event_data {
+  union {
+    struct kfd_hsa_memory_exception_data memory_exception_data;
+    struct kfd_hsa_hw_exception_data hw_exception_data;
+  };
+  __u64 kfd_event_data_ext;
+  __u32 event_id;
+  __u32 pad;
+};
+struct kfd_ioctl_wait_events_args {
+  __u64 events_ptr;
+  __u32 num_events;
+  __u32 wait_for_all;
+  __u32 timeout;
+  __u32 wait_result;
+};
+struct kfd_ioctl_set_scratch_backing_va_args {
+  __u64 va_addr;
+  __u32 gpu_id;
+  __u32 pad;
+};
+struct kfd_ioctl_get_tile_config_args {
+  __u64 tile_config_ptr;
+  __u64 macro_tile_config_ptr;
+  __u32 num_tile_configs;
+  __u32 num_macro_tile_configs;
+  __u32 gpu_id;
+  __u32 gb_addr_config;
+  __u32 num_banks;
+  __u32 num_ranks;
+};
+struct kfd_ioctl_set_trap_handler_args {
+  __u64 tba_addr;
+  __u64 tma_addr;
+  __u32 gpu_id;
+  __u32 pad;
+};
+struct kfd_ioctl_acquire_vm_args {
+  __u32 drm_fd;
+  __u32 gpu_id;
+};
+#define KFD_IOC_ALLOC_MEM_FLAGS_VRAM (1 << 0)
+#define KFD_IOC_ALLOC_MEM_FLAGS_GTT (1 << 1)
+#define KFD_IOC_ALLOC_MEM_FLAGS_USERPTR (1 << 2)
+#define KFD_IOC_ALLOC_MEM_FLAGS_DOORBELL (1 << 3)
+#define KFD_IOC_ALLOC_MEM_FLAGS_MMIO_REMAP (1 << 4)
+#define KFD_IOC_ALLOC_MEM_FLAGS_WRITABLE (1 << 31)
+#define KFD_IOC_ALLOC_MEM_FLAGS_EXECUTABLE (1 << 30)
+#define KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC (1 << 29)
+#define KFD_IOC_ALLOC_MEM_FLAGS_NO_SUBSTITUTE (1 << 28)
+#define KFD_IOC_ALLOC_MEM_FLAGS_AQL_QUEUE_MEM (1 << 27)
+#define KFD_IOC_ALLOC_MEM_FLAGS_COHERENT (1 << 26)
+#define KFD_IOC_ALLOC_MEM_FLAGS_UNCACHED (1 << 25)
+struct kfd_ioctl_alloc_memory_of_gpu_args {
+  __u64 va_addr;
+  __u64 size;
+  __u64 handle;
+  __u64 mmap_offset;
+  __u32 gpu_id;
+  __u32 flags;
+};
+struct kfd_ioctl_free_memory_of_gpu_args {
+  __u64 handle;
+};
+struct kfd_ioctl_map_memory_to_gpu_args {
+  __u64 handle;
+  __u64 device_ids_array_ptr;
+  __u32 n_devices;
+  __u32 n_success;
+};
+struct kfd_ioctl_unmap_memory_from_gpu_args {
+  __u64 handle;
+  __u64 device_ids_array_ptr;
+  __u32 n_devices;
+  __u32 n_success;
+};
+struct kfd_ioctl_alloc_queue_gws_args {
+  __u32 queue_id;
+  __u32 num_gws;
+  __u32 first_gws;
+  __u32 pad;
+};
+struct kfd_ioctl_get_dmabuf_info_args {
+  __u64 size;
+  __u64 metadata_ptr;
+  __u32 metadata_size;
+  __u32 gpu_id;
+  __u32 flags;
+  __u32 dmabuf_fd;
+};
+struct kfd_ioctl_import_dmabuf_args {
+  __u64 va_addr;
+  __u64 handle;
+  __u32 gpu_id;
+  __u32 dmabuf_fd;
+};
+enum kfd_smi_event {
+  KFD_SMI_EVENT_NONE = 0,
+  KFD_SMI_EVENT_VMFAULT = 1,
+  KFD_SMI_EVENT_THERMAL_THROTTLE = 2,
+  KFD_SMI_EVENT_GPU_PRE_RESET = 3,
+  KFD_SMI_EVENT_GPU_POST_RESET = 4,
+};
+#define KFD_SMI_EVENT_MASK_FROM_INDEX(i) (1ULL << ((i) - 1))
+struct kfd_ioctl_smi_events_args {
+  __u32 gpuid;
+  __u32 anon_fd;
+};
+enum kfd_mmio_remap {
+  KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL = 0,
+  KFD_MMIO_REMAP_HDP_REG_FLUSH_CNTL = 4,
+};
+#define KFD_IOCTL_SVM_FLAG_HOST_ACCESS 0x00000001
+#define KFD_IOCTL_SVM_FLAG_COHERENT 0x00000002
+#define KFD_IOCTL_SVM_FLAG_HIVE_LOCAL 0x00000004
+#define KFD_IOCTL_SVM_FLAG_GPU_RO 0x00000008
+#define KFD_IOCTL_SVM_FLAG_GPU_EXEC 0x00000010
+#define KFD_IOCTL_SVM_FLAG_GPU_READ_MOSTLY 0x00000020
+enum kfd_ioctl_svm_op {
+  KFD_IOCTL_SVM_OP_SET_ATTR,
+  KFD_IOCTL_SVM_OP_GET_ATTR
+};
+enum kfd_ioctl_svm_location {
+  KFD_IOCTL_SVM_LOCATION_SYSMEM = 0,
+  KFD_IOCTL_SVM_LOCATION_UNDEFINED = 0xffffffff
+};
+enum kfd_ioctl_svm_attr_type {
+  KFD_IOCTL_SVM_ATTR_PREFERRED_LOC,
+  KFD_IOCTL_SVM_ATTR_PREFETCH_LOC,
+  KFD_IOCTL_SVM_ATTR_ACCESS,
+  KFD_IOCTL_SVM_ATTR_ACCESS_IN_PLACE,
+  KFD_IOCTL_SVM_ATTR_NO_ACCESS,
+  KFD_IOCTL_SVM_ATTR_SET_FLAGS,
+  KFD_IOCTL_SVM_ATTR_CLR_FLAGS,
+  KFD_IOCTL_SVM_ATTR_GRANULARITY
+};
+struct kfd_ioctl_svm_attribute {
+  __u32 type;
+  __u32 value;
+};
+struct kfd_ioctl_svm_args {
+  __u64 start_addr;
+  __u64 size;
+  __u32 op;
+  __u32 nattr;
+  struct kfd_ioctl_svm_attribute attrs[0];
+};
+struct kfd_ioctl_set_xnack_mode_args {
+  __s32 xnack_enabled;
+};
+#define AMDKFD_IOCTL_BASE 'K'
+#define AMDKFD_IO(nr) _IO(AMDKFD_IOCTL_BASE, nr)
+#define AMDKFD_IOR(nr,type) _IOR(AMDKFD_IOCTL_BASE, nr, type)
+#define AMDKFD_IOW(nr,type) _IOW(AMDKFD_IOCTL_BASE, nr, type)
+#define AMDKFD_IOWR(nr,type) _IOWR(AMDKFD_IOCTL_BASE, nr, type)
+#define AMDKFD_IOC_GET_VERSION AMDKFD_IOR(0x01, struct kfd_ioctl_get_version_args)
+#define AMDKFD_IOC_CREATE_QUEUE AMDKFD_IOWR(0x02, struct kfd_ioctl_create_queue_args)
+#define AMDKFD_IOC_DESTROY_QUEUE AMDKFD_IOWR(0x03, struct kfd_ioctl_destroy_queue_args)
+#define AMDKFD_IOC_SET_MEMORY_POLICY AMDKFD_IOW(0x04, struct kfd_ioctl_set_memory_policy_args)
+#define AMDKFD_IOC_GET_CLOCK_COUNTERS AMDKFD_IOWR(0x05, struct kfd_ioctl_get_clock_counters_args)
+#define AMDKFD_IOC_GET_PROCESS_APERTURES AMDKFD_IOR(0x06, struct kfd_ioctl_get_process_apertures_args)
+#define AMDKFD_IOC_UPDATE_QUEUE AMDKFD_IOW(0x07, struct kfd_ioctl_update_queue_args)
+#define AMDKFD_IOC_CREATE_EVENT AMDKFD_IOWR(0x08, struct kfd_ioctl_create_event_args)
+#define AMDKFD_IOC_DESTROY_EVENT AMDKFD_IOW(0x09, struct kfd_ioctl_destroy_event_args)
+#define AMDKFD_IOC_SET_EVENT AMDKFD_IOW(0x0A, struct kfd_ioctl_set_event_args)
+#define AMDKFD_IOC_RESET_EVENT AMDKFD_IOW(0x0B, struct kfd_ioctl_reset_event_args)
+#define AMDKFD_IOC_WAIT_EVENTS AMDKFD_IOWR(0x0C, struct kfd_ioctl_wait_events_args)
+#define AMDKFD_IOC_DBG_REGISTER AMDKFD_IOW(0x0D, struct kfd_ioctl_dbg_register_args)
+#define AMDKFD_IOC_DBG_UNREGISTER AMDKFD_IOW(0x0E, struct kfd_ioctl_dbg_unregister_args)
+#define AMDKFD_IOC_DBG_ADDRESS_WATCH AMDKFD_IOW(0x0F, struct kfd_ioctl_dbg_address_watch_args)
+#define AMDKFD_IOC_DBG_WAVE_CONTROL AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args)
+#define AMDKFD_IOC_SET_SCRATCH_BACKING_VA AMDKFD_IOWR(0x11, struct kfd_ioctl_set_scratch_backing_va_args)
+#define AMDKFD_IOC_GET_TILE_CONFIG AMDKFD_IOWR(0x12, struct kfd_ioctl_get_tile_config_args)
+#define AMDKFD_IOC_SET_TRAP_HANDLER AMDKFD_IOW(0x13, struct kfd_ioctl_set_trap_handler_args)
+#define AMDKFD_IOC_GET_PROCESS_APERTURES_NEW AMDKFD_IOWR(0x14, struct kfd_ioctl_get_process_apertures_new_args)
+#define AMDKFD_IOC_ACQUIRE_VM AMDKFD_IOW(0x15, struct kfd_ioctl_acquire_vm_args)
+#define AMDKFD_IOC_ALLOC_MEMORY_OF_GPU AMDKFD_IOWR(0x16, struct kfd_ioctl_alloc_memory_of_gpu_args)
+#define AMDKFD_IOC_FREE_MEMORY_OF_GPU AMDKFD_IOW(0x17, struct kfd_ioctl_free_memory_of_gpu_args)
+#define AMDKFD_IOC_MAP_MEMORY_TO_GPU AMDKFD_IOWR(0x18, struct kfd_ioctl_map_memory_to_gpu_args)
+#define AMDKFD_IOC_UNMAP_MEMORY_FROM_GPU AMDKFD_IOWR(0x19, struct kfd_ioctl_unmap_memory_from_gpu_args)
+#define AMDKFD_IOC_SET_CU_MASK AMDKFD_IOW(0x1A, struct kfd_ioctl_set_cu_mask_args)
+#define AMDKFD_IOC_GET_QUEUE_WAVE_STATE AMDKFD_IOWR(0x1B, struct kfd_ioctl_get_queue_wave_state_args)
+#define AMDKFD_IOC_GET_DMABUF_INFO AMDKFD_IOWR(0x1C, struct kfd_ioctl_get_dmabuf_info_args)
+#define AMDKFD_IOC_IMPORT_DMABUF AMDKFD_IOWR(0x1D, struct kfd_ioctl_import_dmabuf_args)
+#define AMDKFD_IOC_ALLOC_QUEUE_GWS AMDKFD_IOWR(0x1E, struct kfd_ioctl_alloc_queue_gws_args)
+#define AMDKFD_IOC_SMI_EVENTS AMDKFD_IOWR(0x1F, struct kfd_ioctl_smi_events_args)
+#define AMDKFD_IOC_SVM AMDKFD_IOWR(0x20, struct kfd_ioctl_svm_args)
+#define AMDKFD_IOC_SET_XNACK_MODE AMDKFD_IOWR(0x21, struct kfd_ioctl_set_xnack_mode_args)
+#define AMDKFD_COMMAND_START 0x01
+#define AMDKFD_COMMAND_END 0x22
+#endif
diff --git a/i686-linux-musl/include/linux/kvm.h b/i686-linux-musl/include/linux/kvm.h
new file mode 100644
index 0000000..4e815cc
--- /dev/null
+++ b/i686-linux-musl/include/linux/kvm.h
@@ -0,0 +1,1507 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_KVM_H
+#define __LINUX_KVM_H
+#include <linux/const.h>
+#include <linux/types.h>
+#include <linux/compiler.h>
+#include <linux/ioctl.h>
+#include <asm/kvm.h>
+#define KVM_API_VERSION 12
+#define KVM_TRC_SHIFT 16
+#define KVM_TRC_ENTRYEXIT (1 << KVM_TRC_SHIFT)
+#define KVM_TRC_HANDLER (1 << (KVM_TRC_SHIFT + 1))
+#define KVM_TRC_VMENTRY (KVM_TRC_ENTRYEXIT + 0x01)
+#define KVM_TRC_VMEXIT (KVM_TRC_ENTRYEXIT + 0x02)
+#define KVM_TRC_PAGE_FAULT (KVM_TRC_HANDLER + 0x01)
+#define KVM_TRC_HEAD_SIZE 12
+#define KVM_TRC_CYCLE_SIZE 8
+#define KVM_TRC_EXTRA_MAX 7
+#define KVM_TRC_INJ_VIRQ (KVM_TRC_HANDLER + 0x02)
+#define KVM_TRC_REDELIVER_EVT (KVM_TRC_HANDLER + 0x03)
+#define KVM_TRC_PEND_INTR (KVM_TRC_HANDLER + 0x04)
+#define KVM_TRC_IO_READ (KVM_TRC_HANDLER + 0x05)
+#define KVM_TRC_IO_WRITE (KVM_TRC_HANDLER + 0x06)
+#define KVM_TRC_CR_READ (KVM_TRC_HANDLER + 0x07)
+#define KVM_TRC_CR_WRITE (KVM_TRC_HANDLER + 0x08)
+#define KVM_TRC_DR_READ (KVM_TRC_HANDLER + 0x09)
+#define KVM_TRC_DR_WRITE (KVM_TRC_HANDLER + 0x0A)
+#define KVM_TRC_MSR_READ (KVM_TRC_HANDLER + 0x0B)
+#define KVM_TRC_MSR_WRITE (KVM_TRC_HANDLER + 0x0C)
+#define KVM_TRC_CPUID (KVM_TRC_HANDLER + 0x0D)
+#define KVM_TRC_INTR (KVM_TRC_HANDLER + 0x0E)
+#define KVM_TRC_NMI (KVM_TRC_HANDLER + 0x0F)
+#define KVM_TRC_VMMCALL (KVM_TRC_HANDLER + 0x10)
+#define KVM_TRC_HLT (KVM_TRC_HANDLER + 0x11)
+#define KVM_TRC_CLTS (KVM_TRC_HANDLER + 0x12)
+#define KVM_TRC_LMSW (KVM_TRC_HANDLER + 0x13)
+#define KVM_TRC_APIC_ACCESS (KVM_TRC_HANDLER + 0x14)
+#define KVM_TRC_TDP_FAULT (KVM_TRC_HANDLER + 0x15)
+#define KVM_TRC_GTLB_WRITE (KVM_TRC_HANDLER + 0x16)
+#define KVM_TRC_STLB_WRITE (KVM_TRC_HANDLER + 0x17)
+#define KVM_TRC_STLB_INVAL (KVM_TRC_HANDLER + 0x18)
+#define KVM_TRC_PPC_INSTR (KVM_TRC_HANDLER + 0x19)
+struct kvm_user_trace_setup {
+  __u32 buf_size;
+  __u32 buf_nr;
+};
+#define __KVM_DEPRECATED_MAIN_W_0x06 _IOW(KVMIO, 0x06, struct kvm_user_trace_setup)
+#define __KVM_DEPRECATED_MAIN_0x07 _IO(KVMIO, 0x07)
+#define __KVM_DEPRECATED_MAIN_0x08 _IO(KVMIO, 0x08)
+#define __KVM_DEPRECATED_VM_R_0x70 _IOR(KVMIO, 0x70, struct kvm_assigned_irq)
+struct kvm_breakpoint {
+  __u32 enabled;
+  __u32 padding;
+  __u64 address;
+};
+struct kvm_debug_guest {
+  __u32 enabled;
+  __u32 pad;
+  struct kvm_breakpoint breakpoints[4];
+  __u32 singlestep;
+};
+#define __KVM_DEPRECATED_VCPU_W_0x87 _IOW(KVMIO, 0x87, struct kvm_debug_guest)
+struct kvm_memory_region {
+  __u32 slot;
+  __u32 flags;
+  __u64 guest_phys_addr;
+  __u64 memory_size;
+};
+struct kvm_userspace_memory_region {
+  __u32 slot;
+  __u32 flags;
+  __u64 guest_phys_addr;
+  __u64 memory_size;
+  __u64 userspace_addr;
+};
+#define KVM_MEM_LOG_DIRTY_PAGES (1UL << 0)
+#define KVM_MEM_READONLY (1UL << 1)
+struct kvm_irq_level {
+  union {
+    __u32 irq;
+    __s32 status;
+  };
+  __u32 level;
+};
+struct kvm_irqchip {
+  __u32 chip_id;
+  __u32 pad;
+  union {
+    char dummy[512];
+#ifdef __KVM_HAVE_PIT
+    struct kvm_pic_state pic;
+#endif
+#ifdef __KVM_HAVE_IOAPIC
+    struct kvm_ioapic_state ioapic;
+#endif
+  } chip;
+};
+struct kvm_pit_config {
+  __u32 flags;
+  __u32 pad[15];
+};
+#define KVM_PIT_SPEAKER_DUMMY 1
+struct kvm_s390_skeys {
+  __u64 start_gfn;
+  __u64 count;
+  __u64 skeydata_addr;
+  __u32 flags;
+  __u32 reserved[9];
+};
+#define KVM_S390_CMMA_PEEK (1 << 0)
+struct kvm_s390_cmma_log {
+  __u64 start_gfn;
+  __u32 count;
+  __u32 flags;
+  union {
+    __u64 remaining;
+    __u64 mask;
+  };
+  __u64 values;
+};
+struct kvm_hyperv_exit {
+#define KVM_EXIT_HYPERV_SYNIC 1
+#define KVM_EXIT_HYPERV_HCALL 2
+#define KVM_EXIT_HYPERV_SYNDBG 3
+  __u32 type;
+  __u32 pad1;
+  union {
+    struct {
+      __u32 msr;
+      __u32 pad2;
+      __u64 control;
+      __u64 evt_page;
+      __u64 msg_page;
+    } synic;
+    struct {
+      __u64 input;
+      __u64 result;
+      __u64 params[2];
+    } hcall;
+    struct {
+      __u32 msr;
+      __u32 pad2;
+      __u64 control;
+      __u64 status;
+      __u64 send_page;
+      __u64 recv_page;
+      __u64 pending_page;
+    } syndbg;
+  } u;
+};
+struct kvm_xen_exit {
+#define KVM_EXIT_XEN_HCALL 1
+  __u32 type;
+  union {
+    struct {
+      __u32 longmode;
+      __u32 cpl;
+      __u64 input;
+      __u64 result;
+      __u64 params[6];
+    } hcall;
+  } u;
+};
+#define KVM_S390_GET_SKEYS_NONE 1
+#define KVM_S390_SKEYS_MAX 1048576
+#define KVM_EXIT_UNKNOWN 0
+#define KVM_EXIT_EXCEPTION 1
+#define KVM_EXIT_IO 2
+#define KVM_EXIT_HYPERCALL 3
+#define KVM_EXIT_DEBUG 4
+#define KVM_EXIT_HLT 5
+#define KVM_EXIT_MMIO 6
+#define KVM_EXIT_IRQ_WINDOW_OPEN 7
+#define KVM_EXIT_SHUTDOWN 8
+#define KVM_EXIT_FAIL_ENTRY 9
+#define KVM_EXIT_INTR 10
+#define KVM_EXIT_SET_TPR 11
+#define KVM_EXIT_TPR_ACCESS 12
+#define KVM_EXIT_S390_SIEIC 13
+#define KVM_EXIT_S390_RESET 14
+#define KVM_EXIT_DCR 15
+#define KVM_EXIT_NMI 16
+#define KVM_EXIT_INTERNAL_ERROR 17
+#define KVM_EXIT_OSI 18
+#define KVM_EXIT_PAPR_HCALL 19
+#define KVM_EXIT_S390_UCONTROL 20
+#define KVM_EXIT_WATCHDOG 21
+#define KVM_EXIT_S390_TSCH 22
+#define KVM_EXIT_EPR 23
+#define KVM_EXIT_SYSTEM_EVENT 24
+#define KVM_EXIT_S390_STSI 25
+#define KVM_EXIT_IOAPIC_EOI 26
+#define KVM_EXIT_HYPERV 27
+#define KVM_EXIT_ARM_NISV 28
+#define KVM_EXIT_X86_RDMSR 29
+#define KVM_EXIT_X86_WRMSR 30
+#define KVM_EXIT_DIRTY_RING_FULL 31
+#define KVM_EXIT_AP_RESET_HOLD 32
+#define KVM_EXIT_X86_BUS_LOCK 33
+#define KVM_EXIT_XEN 34
+#define KVM_EXIT_RISCV_SBI 35
+#define KVM_INTERNAL_ERROR_EMULATION 1
+#define KVM_INTERNAL_ERROR_SIMUL_EX 2
+#define KVM_INTERNAL_ERROR_DELIVERY_EV 3
+#define KVM_INTERNAL_ERROR_UNEXPECTED_EXIT_REASON 4
+#define KVM_INTERNAL_ERROR_EMULATION_FLAG_INSTRUCTION_BYTES (1ULL << 0)
+struct kvm_run {
+  __u8 request_interrupt_window;
+  __u8 immediate_exit;
+  __u8 padding1[6];
+  __u32 exit_reason;
+  __u8 ready_for_interrupt_injection;
+  __u8 if_flag;
+  __u16 flags;
+  __u64 cr8;
+  __u64 apic_base;
+#ifdef __KVM_S390
+  __u64 psw_mask;
+  __u64 psw_addr;
+#endif
+  union {
+    struct {
+      __u64 hardware_exit_reason;
+    } hw;
+    struct {
+      __u64 hardware_entry_failure_reason;
+      __u32 cpu;
+    } fail_entry;
+    struct {
+      __u32 exception;
+      __u32 error_code;
+    } ex;
+    struct {
+#define KVM_EXIT_IO_IN 0
+#define KVM_EXIT_IO_OUT 1
+      __u8 direction;
+      __u8 size;
+      __u16 port;
+      __u32 count;
+      __u64 data_offset;
+    } io;
+    struct {
+      struct kvm_debug_exit_arch arch;
+    } debug;
+    struct {
+      __u64 phys_addr;
+      __u8 data[8];
+      __u32 len;
+      __u8 is_write;
+    } mmio;
+    struct {
+      __u64 nr;
+      __u64 args[6];
+      __u64 ret;
+      __u32 longmode;
+      __u32 pad;
+    } hypercall;
+    struct {
+      __u64 rip;
+      __u32 is_write;
+      __u32 pad;
+    } tpr_access;
+    struct {
+      __u8 icptcode;
+      __u16 ipa;
+      __u32 ipb;
+    } s390_sieic;
+#define KVM_S390_RESET_POR 1
+#define KVM_S390_RESET_CLEAR 2
+#define KVM_S390_RESET_SUBSYSTEM 4
+#define KVM_S390_RESET_CPU_INIT 8
+#define KVM_S390_RESET_IPL 16
+    __u64 s390_reset_flags;
+    struct {
+      __u64 trans_exc_code;
+      __u32 pgm_code;
+    } s390_ucontrol;
+    struct {
+      __u32 dcrn;
+      __u32 data;
+      __u8 is_write;
+    } dcr;
+    struct {
+      __u32 suberror;
+      __u32 ndata;
+      __u64 data[16];
+    } internal;
+    struct {
+      __u32 suberror;
+      __u32 ndata;
+      __u64 flags;
+      union {
+        struct {
+          __u8 insn_size;
+          __u8 insn_bytes[15];
+        };
+      };
+    } emulation_failure;
+    struct {
+      __u64 gprs[32];
+    } osi;
+    struct {
+      __u64 nr;
+      __u64 ret;
+      __u64 args[9];
+    } papr_hcall;
+    struct {
+      __u16 subchannel_id;
+      __u16 subchannel_nr;
+      __u32 io_int_parm;
+      __u32 io_int_word;
+      __u32 ipb;
+      __u8 dequeued;
+    } s390_tsch;
+    struct {
+      __u32 epr;
+    } epr;
+    struct {
+#define KVM_SYSTEM_EVENT_SHUTDOWN 1
+#define KVM_SYSTEM_EVENT_RESET 2
+#define KVM_SYSTEM_EVENT_CRASH 3
+      __u32 type;
+      __u64 flags;
+    } system_event;
+    struct {
+      __u64 addr;
+      __u8 ar;
+      __u8 reserved;
+      __u8 fc;
+      __u8 sel1;
+      __u16 sel2;
+    } s390_stsi;
+    struct {
+      __u8 vector;
+    } eoi;
+    struct kvm_hyperv_exit hyperv;
+    struct {
+      __u64 esr_iss;
+      __u64 fault_ipa;
+    } arm_nisv;
+    struct {
+      __u8 error;
+      __u8 pad[7];
+#define KVM_MSR_EXIT_REASON_INVAL (1 << 0)
+#define KVM_MSR_EXIT_REASON_UNKNOWN (1 << 1)
+#define KVM_MSR_EXIT_REASON_FILTER (1 << 2)
+      __u32 reason;
+      __u32 index;
+      __u64 data;
+    } msr;
+    struct kvm_xen_exit xen;
+    struct {
+      unsigned long extension_id;
+      unsigned long function_id;
+      unsigned long args[6];
+      unsigned long ret[2];
+    } riscv_sbi;
+    char padding[256];
+  };
+#define SYNC_REGS_SIZE_BYTES 2048
+  __u64 kvm_valid_regs;
+  __u64 kvm_dirty_regs;
+  union {
+    struct kvm_sync_regs regs;
+    char padding[SYNC_REGS_SIZE_BYTES];
+  } s;
+};
+struct kvm_coalesced_mmio_zone {
+  __u64 addr;
+  __u32 size;
+  union {
+    __u32 pad;
+    __u32 pio;
+  };
+};
+struct kvm_coalesced_mmio {
+  __u64 phys_addr;
+  __u32 len;
+  union {
+    __u32 pad;
+    __u32 pio;
+  };
+  __u8 data[8];
+};
+struct kvm_coalesced_mmio_ring {
+  __u32 first, last;
+  struct kvm_coalesced_mmio coalesced_mmio[0];
+};
+#define KVM_COALESCED_MMIO_MAX ((PAGE_SIZE - sizeof(struct kvm_coalesced_mmio_ring)) / sizeof(struct kvm_coalesced_mmio))
+struct kvm_translation {
+  __u64 linear_address;
+  __u64 physical_address;
+  __u8 valid;
+  __u8 writeable;
+  __u8 usermode;
+  __u8 pad[5];
+};
+struct kvm_s390_mem_op {
+  __u64 gaddr;
+  __u64 flags;
+  __u32 size;
+  __u32 op;
+  __u64 buf;
+  union {
+    __u8 ar;
+    __u32 sida_offset;
+    __u8 reserved[32];
+  };
+};
+#define KVM_S390_MEMOP_LOGICAL_READ 0
+#define KVM_S390_MEMOP_LOGICAL_WRITE 1
+#define KVM_S390_MEMOP_SIDA_READ 2
+#define KVM_S390_MEMOP_SIDA_WRITE 3
+#define KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0)
+#define KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1)
+struct kvm_interrupt {
+  __u32 irq;
+};
+struct kvm_dirty_log {
+  __u32 slot;
+  __u32 padding1;
+  union {
+    void __user * dirty_bitmap;
+    __u64 padding2;
+  };
+};
+struct kvm_clear_dirty_log {
+  __u32 slot;
+  __u32 num_pages;
+  __u64 first_page;
+  union {
+    void __user * dirty_bitmap;
+    __u64 padding2;
+  };
+};
+struct kvm_signal_mask {
+  __u32 len;
+  __u8 sigset[0];
+};
+struct kvm_tpr_access_ctl {
+  __u32 enabled;
+  __u32 flags;
+  __u32 reserved[8];
+};
+struct kvm_vapic_addr {
+  __u64 vapic_addr;
+};
+#define KVM_MP_STATE_RUNNABLE 0
+#define KVM_MP_STATE_UNINITIALIZED 1
+#define KVM_MP_STATE_INIT_RECEIVED 2
+#define KVM_MP_STATE_HALTED 3
+#define KVM_MP_STATE_SIPI_RECEIVED 4
+#define KVM_MP_STATE_STOPPED 5
+#define KVM_MP_STATE_CHECK_STOP 6
+#define KVM_MP_STATE_OPERATING 7
+#define KVM_MP_STATE_LOAD 8
+#define KVM_MP_STATE_AP_RESET_HOLD 9
+struct kvm_mp_state {
+  __u32 mp_state;
+};
+struct kvm_s390_psw {
+  __u64 mask;
+  __u64 addr;
+};
+#define KVM_S390_SIGP_STOP 0xfffe0000u
+#define KVM_S390_PROGRAM_INT 0xfffe0001u
+#define KVM_S390_SIGP_SET_PREFIX 0xfffe0002u
+#define KVM_S390_RESTART 0xfffe0003u
+#define KVM_S390_INT_PFAULT_INIT 0xfffe0004u
+#define KVM_S390_INT_PFAULT_DONE 0xfffe0005u
+#define KVM_S390_MCHK 0xfffe1000u
+#define KVM_S390_INT_CLOCK_COMP 0xffff1004u
+#define KVM_S390_INT_CPU_TIMER 0xffff1005u
+#define KVM_S390_INT_VIRTIO 0xffff2603u
+#define KVM_S390_INT_SERVICE 0xffff2401u
+#define KVM_S390_INT_EMERGENCY 0xffff1201u
+#define KVM_S390_INT_EXTERNAL_CALL 0xffff1202u
+#define KVM_S390_INT_IO(ai,cssid,ssid,schid) (((schid)) | ((ssid) << 16) | ((cssid) << 18) | ((ai) << 26))
+#define KVM_S390_INT_IO_MIN 0x00000000u
+#define KVM_S390_INT_IO_MAX 0xfffdffffu
+#define KVM_S390_INT_IO_AI_MASK 0x04000000u
+struct kvm_s390_interrupt {
+  __u32 type;
+  __u32 parm;
+  __u64 parm64;
+};
+struct kvm_s390_io_info {
+  __u16 subchannel_id;
+  __u16 subchannel_nr;
+  __u32 io_int_parm;
+  __u32 io_int_word;
+};
+struct kvm_s390_ext_info {
+  __u32 ext_params;
+  __u32 pad;
+  __u64 ext_params2;
+};
+struct kvm_s390_pgm_info {
+  __u64 trans_exc_code;
+  __u64 mon_code;
+  __u64 per_address;
+  __u32 data_exc_code;
+  __u16 code;
+  __u16 mon_class_nr;
+  __u8 per_code;
+  __u8 per_atmid;
+  __u8 exc_access_id;
+  __u8 per_access_id;
+  __u8 op_access_id;
+#define KVM_S390_PGM_FLAGS_ILC_VALID 0x01
+#define KVM_S390_PGM_FLAGS_ILC_0 0x02
+#define KVM_S390_PGM_FLAGS_ILC_1 0x04
+#define KVM_S390_PGM_FLAGS_ILC_MASK 0x06
+#define KVM_S390_PGM_FLAGS_NO_REWIND 0x08
+  __u8 flags;
+  __u8 pad[2];
+};
+struct kvm_s390_prefix_info {
+  __u32 address;
+};
+struct kvm_s390_extcall_info {
+  __u16 code;
+};
+struct kvm_s390_emerg_info {
+  __u16 code;
+};
+#define KVM_S390_STOP_FLAG_STORE_STATUS 0x01
+struct kvm_s390_stop_info {
+  __u32 flags;
+};
+struct kvm_s390_mchk_info {
+  __u64 cr14;
+  __u64 mcic;
+  __u64 failing_storage_address;
+  __u32 ext_damage_code;
+  __u32 pad;
+  __u8 fixed_logout[16];
+};
+struct kvm_s390_irq {
+  __u64 type;
+  union {
+    struct kvm_s390_io_info io;
+    struct kvm_s390_ext_info ext;
+    struct kvm_s390_pgm_info pgm;
+    struct kvm_s390_emerg_info emerg;
+    struct kvm_s390_extcall_info extcall;
+    struct kvm_s390_prefix_info prefix;
+    struct kvm_s390_stop_info stop;
+    struct kvm_s390_mchk_info mchk;
+    char reserved[64];
+  } u;
+};
+struct kvm_s390_irq_state {
+  __u64 buf;
+  __u32 flags;
+  __u32 len;
+  __u32 reserved[4];
+};
+#define KVM_GUESTDBG_ENABLE 0x00000001
+#define KVM_GUESTDBG_SINGLESTEP 0x00000002
+struct kvm_guest_debug {
+  __u32 control;
+  __u32 pad;
+  struct kvm_guest_debug_arch arch;
+};
+enum {
+  kvm_ioeventfd_flag_nr_datamatch,
+  kvm_ioeventfd_flag_nr_pio,
+  kvm_ioeventfd_flag_nr_deassign,
+  kvm_ioeventfd_flag_nr_virtio_ccw_notify,
+  kvm_ioeventfd_flag_nr_fast_mmio,
+  kvm_ioeventfd_flag_nr_max,
+};
+#define KVM_IOEVENTFD_FLAG_DATAMATCH (1 << kvm_ioeventfd_flag_nr_datamatch)
+#define KVM_IOEVENTFD_FLAG_PIO (1 << kvm_ioeventfd_flag_nr_pio)
+#define KVM_IOEVENTFD_FLAG_DEASSIGN (1 << kvm_ioeventfd_flag_nr_deassign)
+#define KVM_IOEVENTFD_FLAG_VIRTIO_CCW_NOTIFY (1 << kvm_ioeventfd_flag_nr_virtio_ccw_notify)
+#define KVM_IOEVENTFD_VALID_FLAG_MASK ((1 << kvm_ioeventfd_flag_nr_max) - 1)
+struct kvm_ioeventfd {
+  __u64 datamatch;
+  __u64 addr;
+  __u32 len;
+  __s32 fd;
+  __u32 flags;
+  __u8 pad[36];
+};
+#define KVM_X86_DISABLE_EXITS_MWAIT (1 << 0)
+#define KVM_X86_DISABLE_EXITS_HLT (1 << 1)
+#define KVM_X86_DISABLE_EXITS_PAUSE (1 << 2)
+#define KVM_X86_DISABLE_EXITS_CSTATE (1 << 3)
+#define KVM_X86_DISABLE_VALID_EXITS (KVM_X86_DISABLE_EXITS_MWAIT | KVM_X86_DISABLE_EXITS_HLT | KVM_X86_DISABLE_EXITS_PAUSE | KVM_X86_DISABLE_EXITS_CSTATE)
+struct kvm_enable_cap {
+  __u32 cap;
+  __u32 flags;
+  __u64 args[4];
+  __u8 pad[64];
+};
+#define KVM_PPC_PVINFO_FLAGS_EV_IDLE (1 << 0)
+struct kvm_ppc_pvinfo {
+  __u32 flags;
+  __u32 hcall[4];
+  __u8 pad[108];
+};
+#define KVM_PPC_PAGE_SIZES_MAX_SZ 8
+struct kvm_ppc_one_page_size {
+  __u32 page_shift;
+  __u32 pte_enc;
+};
+struct kvm_ppc_one_seg_page_size {
+  __u32 page_shift;
+  __u32 slb_enc;
+  struct kvm_ppc_one_page_size enc[KVM_PPC_PAGE_SIZES_MAX_SZ];
+};
+#define KVM_PPC_PAGE_SIZES_REAL 0x00000001
+#define KVM_PPC_1T_SEGMENTS 0x00000002
+#define KVM_PPC_NO_HASH 0x00000004
+struct kvm_ppc_smmu_info {
+  __u64 flags;
+  __u32 slb_size;
+  __u16 data_keys;
+  __u16 instr_keys;
+  struct kvm_ppc_one_seg_page_size sps[KVM_PPC_PAGE_SIZES_MAX_SZ];
+};
+struct kvm_ppc_resize_hpt {
+  __u64 flags;
+  __u32 shift;
+  __u32 pad;
+};
+#define KVMIO 0xAE
+#define KVM_VM_S390_UCONTROL 1
+#define KVM_VM_PPC_HV 1
+#define KVM_VM_PPC_PR 2
+#define KVM_VM_MIPS_AUTO 0
+#define KVM_VM_MIPS_VZ 1
+#define KVM_VM_MIPS_TE 2
+#define KVM_S390_SIE_PAGE_OFFSET 1
+#define KVM_VM_TYPE_ARM_IPA_SIZE_MASK 0xffULL
+#define KVM_VM_TYPE_ARM_IPA_SIZE(x) ((x) & KVM_VM_TYPE_ARM_IPA_SIZE_MASK)
+#define KVM_GET_API_VERSION _IO(KVMIO, 0x00)
+#define KVM_CREATE_VM _IO(KVMIO, 0x01)
+#define KVM_GET_MSR_INDEX_LIST _IOWR(KVMIO, 0x02, struct kvm_msr_list)
+#define KVM_S390_ENABLE_SIE _IO(KVMIO, 0x06)
+#define KVM_CHECK_EXTENSION _IO(KVMIO, 0x03)
+#define KVM_GET_VCPU_MMAP_SIZE _IO(KVMIO, 0x04)
+#define KVM_GET_SUPPORTED_CPUID _IOWR(KVMIO, 0x05, struct kvm_cpuid2)
+#define KVM_TRACE_ENABLE __KVM_DEPRECATED_MAIN_W_0x06
+#define KVM_TRACE_PAUSE __KVM_DEPRECATED_MAIN_0x07
+#define KVM_TRACE_DISABLE __KVM_DEPRECATED_MAIN_0x08
+#define KVM_GET_EMULATED_CPUID _IOWR(KVMIO, 0x09, struct kvm_cpuid2)
+#define KVM_GET_MSR_FEATURE_INDEX_LIST _IOWR(KVMIO, 0x0a, struct kvm_msr_list)
+#define KVM_CAP_IRQCHIP 0
+#define KVM_CAP_HLT 1
+#define KVM_CAP_MMU_SHADOW_CACHE_CONTROL 2
+#define KVM_CAP_USER_MEMORY 3
+#define KVM_CAP_SET_TSS_ADDR 4
+#define KVM_CAP_VAPIC 6
+#define KVM_CAP_EXT_CPUID 7
+#define KVM_CAP_CLOCKSOURCE 8
+#define KVM_CAP_NR_VCPUS 9
+#define KVM_CAP_NR_MEMSLOTS 10
+#define KVM_CAP_PIT 11
+#define KVM_CAP_NOP_IO_DELAY 12
+#define KVM_CAP_PV_MMU 13
+#define KVM_CAP_MP_STATE 14
+#define KVM_CAP_COALESCED_MMIO 15
+#define KVM_CAP_SYNC_MMU 16
+#define KVM_CAP_IOMMU 18
+#define KVM_CAP_DESTROY_MEMORY_REGION_WORKS 21
+#define KVM_CAP_USER_NMI 22
+#ifdef __KVM_HAVE_GUEST_DEBUG
+#define KVM_CAP_SET_GUEST_DEBUG 23
+#endif
+#ifdef __KVM_HAVE_PIT
+#define KVM_CAP_REINJECT_CONTROL 24
+#endif
+#define KVM_CAP_IRQ_ROUTING 25
+#define KVM_CAP_IRQ_INJECT_STATUS 26
+#define KVM_CAP_ASSIGN_DEV_IRQ 29
+#define KVM_CAP_JOIN_MEMORY_REGIONS_WORKS 30
+#ifdef __KVM_HAVE_MCE
+#define KVM_CAP_MCE 31
+#endif
+#define KVM_CAP_IRQFD 32
+#ifdef __KVM_HAVE_PIT
+#define KVM_CAP_PIT2 33
+#endif
+#define KVM_CAP_SET_BOOT_CPU_ID 34
+#ifdef __KVM_HAVE_PIT_STATE2
+#define KVM_CAP_PIT_STATE2 35
+#endif
+#define KVM_CAP_IOEVENTFD 36
+#define KVM_CAP_SET_IDENTITY_MAP_ADDR 37
+#ifdef __KVM_HAVE_XEN_HVM
+#define KVM_CAP_XEN_HVM 38
+#endif
+#define KVM_CAP_ADJUST_CLOCK 39
+#define KVM_CAP_INTERNAL_ERROR_DATA 40
+#ifdef __KVM_HAVE_VCPU_EVENTS
+#define KVM_CAP_VCPU_EVENTS 41
+#endif
+#define KVM_CAP_S390_PSW 42
+#define KVM_CAP_PPC_SEGSTATE 43
+#define KVM_CAP_HYPERV 44
+#define KVM_CAP_HYPERV_VAPIC 45
+#define KVM_CAP_HYPERV_SPIN 46
+#define KVM_CAP_PCI_SEGMENT 47
+#define KVM_CAP_PPC_PAIRED_SINGLES 48
+#define KVM_CAP_INTR_SHADOW 49
+#ifdef __KVM_HAVE_DEBUGREGS
+#define KVM_CAP_DEBUGREGS 50
+#endif
+#define KVM_CAP_X86_ROBUST_SINGLESTEP 51
+#define KVM_CAP_PPC_OSI 52
+#define KVM_CAP_PPC_UNSET_IRQ 53
+#define KVM_CAP_ENABLE_CAP 54
+#ifdef __KVM_HAVE_XSAVE
+#define KVM_CAP_XSAVE 55
+#endif
+#ifdef __KVM_HAVE_XCRS
+#define KVM_CAP_XCRS 56
+#endif
+#define KVM_CAP_PPC_GET_PVINFO 57
+#define KVM_CAP_PPC_IRQ_LEVEL 58
+#define KVM_CAP_ASYNC_PF 59
+#define KVM_CAP_TSC_CONTROL 60
+#define KVM_CAP_GET_TSC_KHZ 61
+#define KVM_CAP_PPC_BOOKE_SREGS 62
+#define KVM_CAP_SPAPR_TCE 63
+#define KVM_CAP_PPC_SMT 64
+#define KVM_CAP_PPC_RMA 65
+#define KVM_CAP_MAX_VCPUS 66
+#define KVM_CAP_PPC_HIOR 67
+#define KVM_CAP_PPC_PAPR 68
+#define KVM_CAP_SW_TLB 69
+#define KVM_CAP_ONE_REG 70
+#define KVM_CAP_S390_GMAP 71
+#define KVM_CAP_TSC_DEADLINE_TIMER 72
+#define KVM_CAP_S390_UCONTROL 73
+#define KVM_CAP_SYNC_REGS 74
+#define KVM_CAP_PCI_2_3 75
+#define KVM_CAP_KVMCLOCK_CTRL 76
+#define KVM_CAP_SIGNAL_MSI 77
+#define KVM_CAP_PPC_GET_SMMU_INFO 78
+#define KVM_CAP_S390_COW 79
+#define KVM_CAP_PPC_ALLOC_HTAB 80
+#define KVM_CAP_READONLY_MEM 81
+#define KVM_CAP_IRQFD_RESAMPLE 82
+#define KVM_CAP_PPC_BOOKE_WATCHDOG 83
+#define KVM_CAP_PPC_HTAB_FD 84
+#define KVM_CAP_S390_CSS_SUPPORT 85
+#define KVM_CAP_PPC_EPR 86
+#define KVM_CAP_ARM_PSCI 87
+#define KVM_CAP_ARM_SET_DEVICE_ADDR 88
+#define KVM_CAP_DEVICE_CTRL 89
+#define KVM_CAP_IRQ_MPIC 90
+#define KVM_CAP_PPC_RTAS 91
+#define KVM_CAP_IRQ_XICS 92
+#define KVM_CAP_ARM_EL1_32BIT 93
+#define KVM_CAP_SPAPR_MULTITCE 94
+#define KVM_CAP_EXT_EMUL_CPUID 95
+#define KVM_CAP_HYPERV_TIME 96
+#define KVM_CAP_IOAPIC_POLARITY_IGNORED 97
+#define KVM_CAP_ENABLE_CAP_VM 98
+#define KVM_CAP_S390_IRQCHIP 99
+#define KVM_CAP_IOEVENTFD_NO_LENGTH 100
+#define KVM_CAP_VM_ATTRIBUTES 101
+#define KVM_CAP_ARM_PSCI_0_2 102
+#define KVM_CAP_PPC_FIXUP_HCALL 103
+#define KVM_CAP_PPC_ENABLE_HCALL 104
+#define KVM_CAP_CHECK_EXTENSION_VM 105
+#define KVM_CAP_S390_USER_SIGP 106
+#define KVM_CAP_S390_VECTOR_REGISTERS 107
+#define KVM_CAP_S390_MEM_OP 108
+#define KVM_CAP_S390_USER_STSI 109
+#define KVM_CAP_S390_SKEYS 110
+#define KVM_CAP_MIPS_FPU 111
+#define KVM_CAP_MIPS_MSA 112
+#define KVM_CAP_S390_INJECT_IRQ 113
+#define KVM_CAP_S390_IRQ_STATE 114
+#define KVM_CAP_PPC_HWRNG 115
+#define KVM_CAP_DISABLE_QUIRKS 116
+#define KVM_CAP_X86_SMM 117
+#define KVM_CAP_MULTI_ADDRESS_SPACE 118
+#define KVM_CAP_GUEST_DEBUG_HW_BPS 119
+#define KVM_CAP_GUEST_DEBUG_HW_WPS 120
+#define KVM_CAP_SPLIT_IRQCHIP 121
+#define KVM_CAP_IOEVENTFD_ANY_LENGTH 122
+#define KVM_CAP_HYPERV_SYNIC 123
+#define KVM_CAP_S390_RI 124
+#define KVM_CAP_SPAPR_TCE_64 125
+#define KVM_CAP_ARM_PMU_V3 126
+#define KVM_CAP_VCPU_ATTRIBUTES 127
+#define KVM_CAP_MAX_VCPU_ID 128
+#define KVM_CAP_X2APIC_API 129
+#define KVM_CAP_S390_USER_INSTR0 130
+#define KVM_CAP_MSI_DEVID 131
+#define KVM_CAP_PPC_HTM 132
+#define KVM_CAP_SPAPR_RESIZE_HPT 133
+#define KVM_CAP_PPC_MMU_RADIX 134
+#define KVM_CAP_PPC_MMU_HASH_V3 135
+#define KVM_CAP_IMMEDIATE_EXIT 136
+#define KVM_CAP_MIPS_VZ 137
+#define KVM_CAP_MIPS_TE 138
+#define KVM_CAP_MIPS_64BIT 139
+#define KVM_CAP_S390_GS 140
+#define KVM_CAP_S390_AIS 141
+#define KVM_CAP_SPAPR_TCE_VFIO 142
+#define KVM_CAP_X86_DISABLE_EXITS 143
+#define KVM_CAP_ARM_USER_IRQ 144
+#define KVM_CAP_S390_CMMA_MIGRATION 145
+#define KVM_CAP_PPC_FWNMI 146
+#define KVM_CAP_PPC_SMT_POSSIBLE 147
+#define KVM_CAP_HYPERV_SYNIC2 148
+#define KVM_CAP_HYPERV_VP_INDEX 149
+#define KVM_CAP_S390_AIS_MIGRATION 150
+#define KVM_CAP_PPC_GET_CPU_CHAR 151
+#define KVM_CAP_S390_BPB 152
+#define KVM_CAP_GET_MSR_FEATURES 153
+#define KVM_CAP_HYPERV_EVENTFD 154
+#define KVM_CAP_HYPERV_TLBFLUSH 155
+#define KVM_CAP_S390_HPAGE_1M 156
+#define KVM_CAP_NESTED_STATE 157
+#define KVM_CAP_ARM_INJECT_SERROR_ESR 158
+#define KVM_CAP_MSR_PLATFORM_INFO 159
+#define KVM_CAP_PPC_NESTED_HV 160
+#define KVM_CAP_HYPERV_SEND_IPI 161
+#define KVM_CAP_COALESCED_PIO 162
+#define KVM_CAP_HYPERV_ENLIGHTENED_VMCS 163
+#define KVM_CAP_EXCEPTION_PAYLOAD 164
+#define KVM_CAP_ARM_VM_IPA_SIZE 165
+#define KVM_CAP_MANUAL_DIRTY_LOG_PROTECT 166
+#define KVM_CAP_HYPERV_CPUID 167
+#define KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2 168
+#define KVM_CAP_PPC_IRQ_XIVE 169
+#define KVM_CAP_ARM_SVE 170
+#define KVM_CAP_ARM_PTRAUTH_ADDRESS 171
+#define KVM_CAP_ARM_PTRAUTH_GENERIC 172
+#define KVM_CAP_PMU_EVENT_FILTER 173
+#define KVM_CAP_ARM_IRQ_LINE_LAYOUT_2 174
+#define KVM_CAP_HYPERV_DIRECT_TLBFLUSH 175
+#define KVM_CAP_PPC_GUEST_DEBUG_SSTEP 176
+#define KVM_CAP_ARM_NISV_TO_USER 177
+#define KVM_CAP_ARM_INJECT_EXT_DABT 178
+#define KVM_CAP_S390_VCPU_RESETS 179
+#define KVM_CAP_S390_PROTECTED 180
+#define KVM_CAP_PPC_SECURE_GUEST 181
+#define KVM_CAP_HALT_POLL 182
+#define KVM_CAP_ASYNC_PF_INT 183
+#define KVM_CAP_LAST_CPU 184
+#define KVM_CAP_SMALLER_MAXPHYADDR 185
+#define KVM_CAP_S390_DIAG318 186
+#define KVM_CAP_STEAL_TIME 187
+#define KVM_CAP_X86_USER_SPACE_MSR 188
+#define KVM_CAP_X86_MSR_FILTER 189
+#define KVM_CAP_ENFORCE_PV_FEATURE_CPUID 190
+#define KVM_CAP_SYS_HYPERV_CPUID 191
+#define KVM_CAP_DIRTY_LOG_RING 192
+#define KVM_CAP_X86_BUS_LOCK_EXIT 193
+#define KVM_CAP_PPC_DAWR1 194
+#define KVM_CAP_SET_GUEST_DEBUG2 195
+#define KVM_CAP_SGX_ATTRIBUTE 196
+#define KVM_CAP_VM_COPY_ENC_CONTEXT_FROM 197
+#define KVM_CAP_PTP_KVM 198
+#define KVM_CAP_HYPERV_ENFORCE_CPUID 199
+#define KVM_CAP_SREGS2 200
+#define KVM_CAP_EXIT_HYPERCALL 201
+#define KVM_CAP_PPC_RPT_INVALIDATE 202
+#define KVM_CAP_BINARY_STATS_FD 203
+#define KVM_CAP_EXIT_ON_EMULATION_FAILURE 204
+#define KVM_CAP_ARM_MTE 205
+#define KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM 206
+#ifdef KVM_CAP_IRQ_ROUTING
+struct kvm_irq_routing_irqchip {
+  __u32 irqchip;
+  __u32 pin;
+};
+struct kvm_irq_routing_msi {
+  __u32 address_lo;
+  __u32 address_hi;
+  __u32 data;
+  union {
+    __u32 pad;
+    __u32 devid;
+  };
+};
+struct kvm_irq_routing_s390_adapter {
+  __u64 ind_addr;
+  __u64 summary_addr;
+  __u64 ind_offset;
+  __u32 summary_offset;
+  __u32 adapter_id;
+};
+struct kvm_irq_routing_hv_sint {
+  __u32 vcpu;
+  __u32 sint;
+};
+#define KVM_IRQ_ROUTING_IRQCHIP 1
+#define KVM_IRQ_ROUTING_MSI 2
+#define KVM_IRQ_ROUTING_S390_ADAPTER 3
+#define KVM_IRQ_ROUTING_HV_SINT 4
+struct kvm_irq_routing_entry {
+  __u32 gsi;
+  __u32 type;
+  __u32 flags;
+  __u32 pad;
+  union {
+    struct kvm_irq_routing_irqchip irqchip;
+    struct kvm_irq_routing_msi msi;
+    struct kvm_irq_routing_s390_adapter adapter;
+    struct kvm_irq_routing_hv_sint hv_sint;
+    __u32 pad[8];
+  } u;
+};
+struct kvm_irq_routing {
+  __u32 nr;
+  __u32 flags;
+  struct kvm_irq_routing_entry entries[0];
+};
+#endif
+#ifdef KVM_CAP_MCE
+struct kvm_x86_mce {
+  __u64 status;
+  __u64 addr;
+  __u64 misc;
+  __u64 mcg_status;
+  __u8 bank;
+  __u8 pad1[7];
+  __u64 pad2[3];
+};
+#endif
+#ifdef KVM_CAP_XEN_HVM
+#define KVM_XEN_HVM_CONFIG_HYPERCALL_MSR (1 << 0)
+#define KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL (1 << 1)
+#define KVM_XEN_HVM_CONFIG_SHARED_INFO (1 << 2)
+#define KVM_XEN_HVM_CONFIG_RUNSTATE (1 << 3)
+struct kvm_xen_hvm_config {
+  __u32 flags;
+  __u32 msr;
+  __u64 blob_addr_32;
+  __u64 blob_addr_64;
+  __u8 blob_size_32;
+  __u8 blob_size_64;
+  __u8 pad2[30];
+};
+#endif
+#define KVM_IRQFD_FLAG_DEASSIGN (1 << 0)
+#define KVM_IRQFD_FLAG_RESAMPLE (1 << 1)
+struct kvm_irqfd {
+  __u32 fd;
+  __u32 gsi;
+  __u32 flags;
+  __u32 resamplefd;
+  __u8 pad[16];
+};
+#define KVM_CLOCK_TSC_STABLE 2
+#define KVM_CLOCK_REALTIME (1 << 2)
+#define KVM_CLOCK_HOST_TSC (1 << 3)
+struct kvm_clock_data {
+  __u64 clock;
+  __u32 flags;
+  __u32 pad0;
+  __u64 realtime;
+  __u64 host_tsc;
+  __u32 pad[4];
+};
+#define KVM_MMU_FSL_BOOKE_NOHV 0
+#define KVM_MMU_FSL_BOOKE_HV 1
+struct kvm_config_tlb {
+  __u64 params;
+  __u64 array;
+  __u32 mmu_type;
+  __u32 array_len;
+};
+struct kvm_dirty_tlb {
+  __u64 bitmap;
+  __u32 num_dirty;
+};
+#define KVM_REG_ARCH_MASK 0xff00000000000000ULL
+#define KVM_REG_GENERIC 0x0000000000000000ULL
+#define KVM_REG_PPC 0x1000000000000000ULL
+#define KVM_REG_X86 0x2000000000000000ULL
+#define KVM_REG_IA64 0x3000000000000000ULL
+#define KVM_REG_ARM 0x4000000000000000ULL
+#define KVM_REG_S390 0x5000000000000000ULL
+#define KVM_REG_ARM64 0x6000000000000000ULL
+#define KVM_REG_MIPS 0x7000000000000000ULL
+#define KVM_REG_RISCV 0x8000000000000000ULL
+#define KVM_REG_SIZE_SHIFT 52
+#define KVM_REG_SIZE_MASK 0x00f0000000000000ULL
+#define KVM_REG_SIZE_U8 0x0000000000000000ULL
+#define KVM_REG_SIZE_U16 0x0010000000000000ULL
+#define KVM_REG_SIZE_U32 0x0020000000000000ULL
+#define KVM_REG_SIZE_U64 0x0030000000000000ULL
+#define KVM_REG_SIZE_U128 0x0040000000000000ULL
+#define KVM_REG_SIZE_U256 0x0050000000000000ULL
+#define KVM_REG_SIZE_U512 0x0060000000000000ULL
+#define KVM_REG_SIZE_U1024 0x0070000000000000ULL
+#define KVM_REG_SIZE_U2048 0x0080000000000000ULL
+struct kvm_reg_list {
+  __u64 n;
+  __u64 reg[0];
+};
+struct kvm_one_reg {
+  __u64 id;
+  __u64 addr;
+};
+#define KVM_MSI_VALID_DEVID (1U << 0)
+struct kvm_msi {
+  __u32 address_lo;
+  __u32 address_hi;
+  __u32 data;
+  __u32 flags;
+  __u32 devid;
+  __u8 pad[12];
+};
+struct kvm_arm_device_addr {
+  __u64 id;
+  __u64 addr;
+};
+#define KVM_CREATE_DEVICE_TEST 1
+struct kvm_create_device {
+  __u32 type;
+  __u32 fd;
+  __u32 flags;
+};
+struct kvm_device_attr {
+  __u32 flags;
+  __u32 group;
+  __u64 attr;
+  __u64 addr;
+};
+#define KVM_DEV_VFIO_GROUP 1
+#define KVM_DEV_VFIO_GROUP_ADD 1
+#define KVM_DEV_VFIO_GROUP_DEL 2
+#define KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE 3
+enum kvm_device_type {
+  KVM_DEV_TYPE_FSL_MPIC_20 = 1,
+#define KVM_DEV_TYPE_FSL_MPIC_20 KVM_DEV_TYPE_FSL_MPIC_20
+  KVM_DEV_TYPE_FSL_MPIC_42,
+#define KVM_DEV_TYPE_FSL_MPIC_42 KVM_DEV_TYPE_FSL_MPIC_42
+  KVM_DEV_TYPE_XICS,
+#define KVM_DEV_TYPE_XICS KVM_DEV_TYPE_XICS
+  KVM_DEV_TYPE_VFIO,
+#define KVM_DEV_TYPE_VFIO KVM_DEV_TYPE_VFIO
+  KVM_DEV_TYPE_ARM_VGIC_V2,
+#define KVM_DEV_TYPE_ARM_VGIC_V2 KVM_DEV_TYPE_ARM_VGIC_V2
+  KVM_DEV_TYPE_FLIC,
+#define KVM_DEV_TYPE_FLIC KVM_DEV_TYPE_FLIC
+  KVM_DEV_TYPE_ARM_VGIC_V3,
+#define KVM_DEV_TYPE_ARM_VGIC_V3 KVM_DEV_TYPE_ARM_VGIC_V3
+  KVM_DEV_TYPE_ARM_VGIC_ITS,
+#define KVM_DEV_TYPE_ARM_VGIC_ITS KVM_DEV_TYPE_ARM_VGIC_ITS
+  KVM_DEV_TYPE_XIVE,
+#define KVM_DEV_TYPE_XIVE KVM_DEV_TYPE_XIVE
+  KVM_DEV_TYPE_ARM_PV_TIME,
+#define KVM_DEV_TYPE_ARM_PV_TIME KVM_DEV_TYPE_ARM_PV_TIME
+  KVM_DEV_TYPE_MAX,
+};
+struct kvm_vfio_spapr_tce {
+  __s32 groupfd;
+  __s32 tablefd;
+};
+#define KVM_SET_MEMORY_REGION _IOW(KVMIO, 0x40, struct kvm_memory_region)
+#define KVM_CREATE_VCPU _IO(KVMIO, 0x41)
+#define KVM_GET_DIRTY_LOG _IOW(KVMIO, 0x42, struct kvm_dirty_log)
+#define KVM_SET_MEMORY_ALIAS _IOW(KVMIO, 0x43, struct kvm_memory_alias)
+#define KVM_SET_NR_MMU_PAGES _IO(KVMIO, 0x44)
+#define KVM_GET_NR_MMU_PAGES _IO(KVMIO, 0x45)
+#define KVM_SET_USER_MEMORY_REGION _IOW(KVMIO, 0x46, struct kvm_userspace_memory_region)
+#define KVM_SET_TSS_ADDR _IO(KVMIO, 0x47)
+#define KVM_SET_IDENTITY_MAP_ADDR _IOW(KVMIO, 0x48, __u64)
+struct kvm_s390_ucas_mapping {
+  __u64 user_addr;
+  __u64 vcpu_addr;
+  __u64 length;
+};
+#define KVM_S390_UCAS_MAP _IOW(KVMIO, 0x50, struct kvm_s390_ucas_mapping)
+#define KVM_S390_UCAS_UNMAP _IOW(KVMIO, 0x51, struct kvm_s390_ucas_mapping)
+#define KVM_S390_VCPU_FAULT _IOW(KVMIO, 0x52, unsigned long)
+#define KVM_CREATE_IRQCHIP _IO(KVMIO, 0x60)
+#define KVM_IRQ_LINE _IOW(KVMIO, 0x61, struct kvm_irq_level)
+#define KVM_GET_IRQCHIP _IOWR(KVMIO, 0x62, struct kvm_irqchip)
+#define KVM_SET_IRQCHIP _IOR(KVMIO, 0x63, struct kvm_irqchip)
+#define KVM_CREATE_PIT _IO(KVMIO, 0x64)
+#define KVM_GET_PIT _IOWR(KVMIO, 0x65, struct kvm_pit_state)
+#define KVM_SET_PIT _IOR(KVMIO, 0x66, struct kvm_pit_state)
+#define KVM_IRQ_LINE_STATUS _IOWR(KVMIO, 0x67, struct kvm_irq_level)
+#define KVM_REGISTER_COALESCED_MMIO _IOW(KVMIO, 0x67, struct kvm_coalesced_mmio_zone)
+#define KVM_UNREGISTER_COALESCED_MMIO _IOW(KVMIO, 0x68, struct kvm_coalesced_mmio_zone)
+#define KVM_ASSIGN_PCI_DEVICE _IOR(KVMIO, 0x69, struct kvm_assigned_pci_dev)
+#define KVM_SET_GSI_ROUTING _IOW(KVMIO, 0x6a, struct kvm_irq_routing)
+#define KVM_ASSIGN_IRQ __KVM_DEPRECATED_VM_R_0x70
+#define KVM_ASSIGN_DEV_IRQ _IOW(KVMIO, 0x70, struct kvm_assigned_irq)
+#define KVM_REINJECT_CONTROL _IO(KVMIO, 0x71)
+#define KVM_DEASSIGN_PCI_DEVICE _IOW(KVMIO, 0x72, struct kvm_assigned_pci_dev)
+#define KVM_ASSIGN_SET_MSIX_NR _IOW(KVMIO, 0x73, struct kvm_assigned_msix_nr)
+#define KVM_ASSIGN_SET_MSIX_ENTRY _IOW(KVMIO, 0x74, struct kvm_assigned_msix_entry)
+#define KVM_DEASSIGN_DEV_IRQ _IOW(KVMIO, 0x75, struct kvm_assigned_irq)
+#define KVM_IRQFD _IOW(KVMIO, 0x76, struct kvm_irqfd)
+#define KVM_CREATE_PIT2 _IOW(KVMIO, 0x77, struct kvm_pit_config)
+#define KVM_SET_BOOT_CPU_ID _IO(KVMIO, 0x78)
+#define KVM_IOEVENTFD _IOW(KVMIO, 0x79, struct kvm_ioeventfd)
+#define KVM_XEN_HVM_CONFIG _IOW(KVMIO, 0x7a, struct kvm_xen_hvm_config)
+#define KVM_SET_CLOCK _IOW(KVMIO, 0x7b, struct kvm_clock_data)
+#define KVM_GET_CLOCK _IOR(KVMIO, 0x7c, struct kvm_clock_data)
+#define KVM_GET_PIT2 _IOR(KVMIO, 0x9f, struct kvm_pit_state2)
+#define KVM_SET_PIT2 _IOW(KVMIO, 0xa0, struct kvm_pit_state2)
+#define KVM_PPC_GET_PVINFO _IOW(KVMIO, 0xa1, struct kvm_ppc_pvinfo)
+#define KVM_SET_TSC_KHZ _IO(KVMIO, 0xa2)
+#define KVM_GET_TSC_KHZ _IO(KVMIO, 0xa3)
+#define KVM_ASSIGN_SET_INTX_MASK _IOW(KVMIO, 0xa4, struct kvm_assigned_pci_dev)
+#define KVM_SIGNAL_MSI _IOW(KVMIO, 0xa5, struct kvm_msi)
+#define KVM_PPC_GET_SMMU_INFO _IOR(KVMIO, 0xa6, struct kvm_ppc_smmu_info)
+#define KVM_PPC_ALLOCATE_HTAB _IOWR(KVMIO, 0xa7, __u32)
+#define KVM_CREATE_SPAPR_TCE _IOW(KVMIO, 0xa8, struct kvm_create_spapr_tce)
+#define KVM_CREATE_SPAPR_TCE_64 _IOW(KVMIO, 0xa8, struct kvm_create_spapr_tce_64)
+#define KVM_ALLOCATE_RMA _IOR(KVMIO, 0xa9, struct kvm_allocate_rma)
+#define KVM_PPC_GET_HTAB_FD _IOW(KVMIO, 0xaa, struct kvm_get_htab_fd)
+#define KVM_ARM_SET_DEVICE_ADDR _IOW(KVMIO, 0xab, struct kvm_arm_device_addr)
+#define KVM_PPC_RTAS_DEFINE_TOKEN _IOW(KVMIO, 0xac, struct kvm_rtas_token_args)
+#define KVM_PPC_RESIZE_HPT_PREPARE _IOR(KVMIO, 0xad, struct kvm_ppc_resize_hpt)
+#define KVM_PPC_RESIZE_HPT_COMMIT _IOR(KVMIO, 0xae, struct kvm_ppc_resize_hpt)
+#define KVM_PPC_CONFIGURE_V3_MMU _IOW(KVMIO, 0xaf, struct kvm_ppc_mmuv3_cfg)
+#define KVM_PPC_GET_RMMU_INFO _IOW(KVMIO, 0xb0, struct kvm_ppc_rmmu_info)
+#define KVM_PPC_GET_CPU_CHAR _IOR(KVMIO, 0xb1, struct kvm_ppc_cpu_char)
+#define KVM_SET_PMU_EVENT_FILTER _IOW(KVMIO, 0xb2, struct kvm_pmu_event_filter)
+#define KVM_PPC_SVM_OFF _IO(KVMIO, 0xb3)
+#define KVM_ARM_MTE_COPY_TAGS _IOR(KVMIO, 0xb4, struct kvm_arm_copy_mte_tags)
+#define KVM_CREATE_DEVICE _IOWR(KVMIO, 0xe0, struct kvm_create_device)
+#define KVM_SET_DEVICE_ATTR _IOW(KVMIO, 0xe1, struct kvm_device_attr)
+#define KVM_GET_DEVICE_ATTR _IOW(KVMIO, 0xe2, struct kvm_device_attr)
+#define KVM_HAS_DEVICE_ATTR _IOW(KVMIO, 0xe3, struct kvm_device_attr)
+#define KVM_RUN _IO(KVMIO, 0x80)
+#define KVM_GET_REGS _IOR(KVMIO, 0x81, struct kvm_regs)
+#define KVM_SET_REGS _IOW(KVMIO, 0x82, struct kvm_regs)
+#define KVM_GET_SREGS _IOR(KVMIO, 0x83, struct kvm_sregs)
+#define KVM_SET_SREGS _IOW(KVMIO, 0x84, struct kvm_sregs)
+#define KVM_TRANSLATE _IOWR(KVMIO, 0x85, struct kvm_translation)
+#define KVM_INTERRUPT _IOW(KVMIO, 0x86, struct kvm_interrupt)
+#define KVM_DEBUG_GUEST __KVM_DEPRECATED_VCPU_W_0x87
+#define KVM_GET_MSRS _IOWR(KVMIO, 0x88, struct kvm_msrs)
+#define KVM_SET_MSRS _IOW(KVMIO, 0x89, struct kvm_msrs)
+#define KVM_SET_CPUID _IOW(KVMIO, 0x8a, struct kvm_cpuid)
+#define KVM_SET_SIGNAL_MASK _IOW(KVMIO, 0x8b, struct kvm_signal_mask)
+#define KVM_GET_FPU _IOR(KVMIO, 0x8c, struct kvm_fpu)
+#define KVM_SET_FPU _IOW(KVMIO, 0x8d, struct kvm_fpu)
+#define KVM_GET_LAPIC _IOR(KVMIO, 0x8e, struct kvm_lapic_state)
+#define KVM_SET_LAPIC _IOW(KVMIO, 0x8f, struct kvm_lapic_state)
+#define KVM_SET_CPUID2 _IOW(KVMIO, 0x90, struct kvm_cpuid2)
+#define KVM_GET_CPUID2 _IOWR(KVMIO, 0x91, struct kvm_cpuid2)
+#define KVM_TPR_ACCESS_REPORTING _IOWR(KVMIO, 0x92, struct kvm_tpr_access_ctl)
+#define KVM_SET_VAPIC_ADDR _IOW(KVMIO, 0x93, struct kvm_vapic_addr)
+#define KVM_S390_INTERRUPT _IOW(KVMIO, 0x94, struct kvm_s390_interrupt)
+#define KVM_S390_STORE_STATUS_NOADDR (- 1ul)
+#define KVM_S390_STORE_STATUS_PREFIXED (- 2ul)
+#define KVM_S390_STORE_STATUS _IOW(KVMIO, 0x95, unsigned long)
+#define KVM_S390_SET_INITIAL_PSW _IOW(KVMIO, 0x96, struct kvm_s390_psw)
+#define KVM_S390_INITIAL_RESET _IO(KVMIO, 0x97)
+#define KVM_GET_MP_STATE _IOR(KVMIO, 0x98, struct kvm_mp_state)
+#define KVM_SET_MP_STATE _IOW(KVMIO, 0x99, struct kvm_mp_state)
+#define KVM_NMI _IO(KVMIO, 0x9a)
+#define KVM_SET_GUEST_DEBUG _IOW(KVMIO, 0x9b, struct kvm_guest_debug)
+#define KVM_X86_SETUP_MCE _IOW(KVMIO, 0x9c, __u64)
+#define KVM_X86_GET_MCE_CAP_SUPPORTED _IOR(KVMIO, 0x9d, __u64)
+#define KVM_X86_SET_MCE _IOW(KVMIO, 0x9e, struct kvm_x86_mce)
+#define KVM_GET_VCPU_EVENTS _IOR(KVMIO, 0x9f, struct kvm_vcpu_events)
+#define KVM_SET_VCPU_EVENTS _IOW(KVMIO, 0xa0, struct kvm_vcpu_events)
+#define KVM_GET_DEBUGREGS _IOR(KVMIO, 0xa1, struct kvm_debugregs)
+#define KVM_SET_DEBUGREGS _IOW(KVMIO, 0xa2, struct kvm_debugregs)
+#define KVM_ENABLE_CAP _IOW(KVMIO, 0xa3, struct kvm_enable_cap)
+#define KVM_GET_XSAVE _IOR(KVMIO, 0xa4, struct kvm_xsave)
+#define KVM_SET_XSAVE _IOW(KVMIO, 0xa5, struct kvm_xsave)
+#define KVM_GET_XCRS _IOR(KVMIO, 0xa6, struct kvm_xcrs)
+#define KVM_SET_XCRS _IOW(KVMIO, 0xa7, struct kvm_xcrs)
+#define KVM_DIRTY_TLB _IOW(KVMIO, 0xaa, struct kvm_dirty_tlb)
+#define KVM_GET_ONE_REG _IOW(KVMIO, 0xab, struct kvm_one_reg)
+#define KVM_SET_ONE_REG _IOW(KVMIO, 0xac, struct kvm_one_reg)
+#define KVM_KVMCLOCK_CTRL _IO(KVMIO, 0xad)
+#define KVM_ARM_VCPU_INIT _IOW(KVMIO, 0xae, struct kvm_vcpu_init)
+#define KVM_ARM_PREFERRED_TARGET _IOR(KVMIO, 0xaf, struct kvm_vcpu_init)
+#define KVM_GET_REG_LIST _IOWR(KVMIO, 0xb0, struct kvm_reg_list)
+#define KVM_S390_MEM_OP _IOW(KVMIO, 0xb1, struct kvm_s390_mem_op)
+#define KVM_S390_GET_SKEYS _IOW(KVMIO, 0xb2, struct kvm_s390_skeys)
+#define KVM_S390_SET_SKEYS _IOW(KVMIO, 0xb3, struct kvm_s390_skeys)
+#define KVM_S390_IRQ _IOW(KVMIO, 0xb4, struct kvm_s390_irq)
+#define KVM_S390_SET_IRQ_STATE _IOW(KVMIO, 0xb5, struct kvm_s390_irq_state)
+#define KVM_S390_GET_IRQ_STATE _IOW(KVMIO, 0xb6, struct kvm_s390_irq_state)
+#define KVM_SMI _IO(KVMIO, 0xb7)
+#define KVM_S390_GET_CMMA_BITS _IOWR(KVMIO, 0xb8, struct kvm_s390_cmma_log)
+#define KVM_S390_SET_CMMA_BITS _IOW(KVMIO, 0xb9, struct kvm_s390_cmma_log)
+#define KVM_MEMORY_ENCRYPT_OP _IOWR(KVMIO, 0xba, unsigned long)
+struct kvm_enc_region {
+  __u64 addr;
+  __u64 size;
+};
+#define KVM_MEMORY_ENCRYPT_REG_REGION _IOR(KVMIO, 0xbb, struct kvm_enc_region)
+#define KVM_MEMORY_ENCRYPT_UNREG_REGION _IOR(KVMIO, 0xbc, struct kvm_enc_region)
+#define KVM_HYPERV_EVENTFD _IOW(KVMIO, 0xbd, struct kvm_hyperv_eventfd)
+#define KVM_GET_NESTED_STATE _IOWR(KVMIO, 0xbe, struct kvm_nested_state)
+#define KVM_SET_NESTED_STATE _IOW(KVMIO, 0xbf, struct kvm_nested_state)
+#define KVM_CLEAR_DIRTY_LOG _IOWR(KVMIO, 0xc0, struct kvm_clear_dirty_log)
+#define KVM_GET_SUPPORTED_HV_CPUID _IOWR(KVMIO, 0xc1, struct kvm_cpuid2)
+#define KVM_ARM_VCPU_FINALIZE _IOW(KVMIO, 0xc2, int)
+#define KVM_S390_NORMAL_RESET _IO(KVMIO, 0xc3)
+#define KVM_S390_CLEAR_RESET _IO(KVMIO, 0xc4)
+struct kvm_s390_pv_sec_parm {
+  __u64 origin;
+  __u64 length;
+};
+struct kvm_s390_pv_unp {
+  __u64 addr;
+  __u64 size;
+  __u64 tweak;
+};
+enum pv_cmd_id {
+  KVM_PV_ENABLE,
+  KVM_PV_DISABLE,
+  KVM_PV_SET_SEC_PARMS,
+  KVM_PV_UNPACK,
+  KVM_PV_VERIFY,
+  KVM_PV_PREP_RESET,
+  KVM_PV_UNSHARE_ALL,
+};
+struct kvm_pv_cmd {
+  __u32 cmd;
+  __u16 rc;
+  __u16 rrc;
+  __u64 data;
+  __u32 flags;
+  __u32 reserved[3];
+};
+#define KVM_S390_PV_COMMAND _IOWR(KVMIO, 0xc5, struct kvm_pv_cmd)
+#define KVM_X86_SET_MSR_FILTER _IOW(KVMIO, 0xc6, struct kvm_msr_filter)
+#define KVM_RESET_DIRTY_RINGS _IO(KVMIO, 0xc7)
+#define KVM_XEN_HVM_GET_ATTR _IOWR(KVMIO, 0xc8, struct kvm_xen_hvm_attr)
+#define KVM_XEN_HVM_SET_ATTR _IOW(KVMIO, 0xc9, struct kvm_xen_hvm_attr)
+struct kvm_xen_hvm_attr {
+  __u16 type;
+  __u16 pad[3];
+  union {
+    __u8 long_mode;
+    __u8 vector;
+    struct {
+      __u64 gfn;
+    } shared_info;
+    __u64 pad[8];
+  } u;
+};
+#define KVM_XEN_ATTR_TYPE_LONG_MODE 0x0
+#define KVM_XEN_ATTR_TYPE_SHARED_INFO 0x1
+#define KVM_XEN_ATTR_TYPE_UPCALL_VECTOR 0x2
+#define KVM_XEN_VCPU_GET_ATTR _IOWR(KVMIO, 0xca, struct kvm_xen_vcpu_attr)
+#define KVM_XEN_VCPU_SET_ATTR _IOW(KVMIO, 0xcb, struct kvm_xen_vcpu_attr)
+#define KVM_GET_SREGS2 _IOR(KVMIO, 0xcc, struct kvm_sregs2)
+#define KVM_SET_SREGS2 _IOW(KVMIO, 0xcd, struct kvm_sregs2)
+struct kvm_xen_vcpu_attr {
+  __u16 type;
+  __u16 pad[3];
+  union {
+    __u64 gpa;
+    __u64 pad[8];
+    struct {
+      __u64 state;
+      __u64 state_entry_time;
+      __u64 time_running;
+      __u64 time_runnable;
+      __u64 time_blocked;
+      __u64 time_offline;
+    } runstate;
+  } u;
+};
+#define KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO 0x0
+#define KVM_XEN_VCPU_ATTR_TYPE_VCPU_TIME_INFO 0x1
+#define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADDR 0x2
+#define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT 0x3
+#define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA 0x4
+#define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST 0x5
+enum sev_cmd_id {
+  KVM_SEV_INIT = 0,
+  KVM_SEV_ES_INIT,
+  KVM_SEV_LAUNCH_START,
+  KVM_SEV_LAUNCH_UPDATE_DATA,
+  KVM_SEV_LAUNCH_UPDATE_VMSA,
+  KVM_SEV_LAUNCH_SECRET,
+  KVM_SEV_LAUNCH_MEASURE,
+  KVM_SEV_LAUNCH_FINISH,
+  KVM_SEV_SEND_START,
+  KVM_SEV_SEND_UPDATE_DATA,
+  KVM_SEV_SEND_UPDATE_VMSA,
+  KVM_SEV_SEND_FINISH,
+  KVM_SEV_RECEIVE_START,
+  KVM_SEV_RECEIVE_UPDATE_DATA,
+  KVM_SEV_RECEIVE_UPDATE_VMSA,
+  KVM_SEV_RECEIVE_FINISH,
+  KVM_SEV_GUEST_STATUS,
+  KVM_SEV_DBG_DECRYPT,
+  KVM_SEV_DBG_ENCRYPT,
+  KVM_SEV_CERT_EXPORT,
+  KVM_SEV_GET_ATTESTATION_REPORT,
+  KVM_SEV_SEND_CANCEL,
+  KVM_SEV_NR_MAX,
+};
+struct kvm_sev_cmd {
+  __u32 id;
+  __u64 data;
+  __u32 error;
+  __u32 sev_fd;
+};
+struct kvm_sev_launch_start {
+  __u32 handle;
+  __u32 policy;
+  __u64 dh_uaddr;
+  __u32 dh_len;
+  __u64 session_uaddr;
+  __u32 session_len;
+};
+struct kvm_sev_launch_update_data {
+  __u64 uaddr;
+  __u32 len;
+};
+struct kvm_sev_launch_secret {
+  __u64 hdr_uaddr;
+  __u32 hdr_len;
+  __u64 guest_uaddr;
+  __u32 guest_len;
+  __u64 trans_uaddr;
+  __u32 trans_len;
+};
+struct kvm_sev_launch_measure {
+  __u64 uaddr;
+  __u32 len;
+};
+struct kvm_sev_guest_status {
+  __u32 handle;
+  __u32 policy;
+  __u32 state;
+};
+struct kvm_sev_dbg {
+  __u64 src_uaddr;
+  __u64 dst_uaddr;
+  __u32 len;
+};
+struct kvm_sev_attestation_report {
+  __u8 mnonce[16];
+  __u64 uaddr;
+  __u32 len;
+};
+struct kvm_sev_send_start {
+  __u32 policy;
+  __u64 pdh_cert_uaddr;
+  __u32 pdh_cert_len;
+  __u64 plat_certs_uaddr;
+  __u32 plat_certs_len;
+  __u64 amd_certs_uaddr;
+  __u32 amd_certs_len;
+  __u64 session_uaddr;
+  __u32 session_len;
+};
+struct kvm_sev_send_update_data {
+  __u64 hdr_uaddr;
+  __u32 hdr_len;
+  __u64 guest_uaddr;
+  __u32 guest_len;
+  __u64 trans_uaddr;
+  __u32 trans_len;
+};
+struct kvm_sev_receive_start {
+  __u32 handle;
+  __u32 policy;
+  __u64 pdh_uaddr;
+  __u32 pdh_len;
+  __u64 session_uaddr;
+  __u32 session_len;
+};
+struct kvm_sev_receive_update_data {
+  __u64 hdr_uaddr;
+  __u32 hdr_len;
+  __u64 guest_uaddr;
+  __u32 guest_len;
+  __u64 trans_uaddr;
+  __u32 trans_len;
+};
+#define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0)
+#define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1)
+#define KVM_DEV_ASSIGN_MASK_INTX (1 << 2)
+struct kvm_assigned_pci_dev {
+  __u32 assigned_dev_id;
+  __u32 busnr;
+  __u32 devfn;
+  __u32 flags;
+  __u32 segnr;
+  union {
+    __u32 reserved[11];
+  };
+};
+#define KVM_DEV_IRQ_HOST_INTX (1 << 0)
+#define KVM_DEV_IRQ_HOST_MSI (1 << 1)
+#define KVM_DEV_IRQ_HOST_MSIX (1 << 2)
+#define KVM_DEV_IRQ_GUEST_INTX (1 << 8)
+#define KVM_DEV_IRQ_GUEST_MSI (1 << 9)
+#define KVM_DEV_IRQ_GUEST_MSIX (1 << 10)
+#define KVM_DEV_IRQ_HOST_MASK 0x00ff
+#define KVM_DEV_IRQ_GUEST_MASK 0xff00
+struct kvm_assigned_irq {
+  __u32 assigned_dev_id;
+  __u32 host_irq;
+  __u32 guest_irq;
+  __u32 flags;
+  union {
+    __u32 reserved[12];
+  };
+};
+struct kvm_assigned_msix_nr {
+  __u32 assigned_dev_id;
+  __u16 entry_nr;
+  __u16 padding;
+};
+#define KVM_MAX_MSIX_PER_DEV 256
+struct kvm_assigned_msix_entry {
+  __u32 assigned_dev_id;
+  __u32 gsi;
+  __u16 entry;
+  __u16 padding[3];
+};
+#define KVM_X2APIC_API_USE_32BIT_IDS (1ULL << 0)
+#define KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK (1ULL << 1)
+#define KVM_ARM_DEV_EL1_VTIMER (1 << 0)
+#define KVM_ARM_DEV_EL1_PTIMER (1 << 1)
+#define KVM_ARM_DEV_PMU (1 << 2)
+struct kvm_hyperv_eventfd {
+  __u32 conn_id;
+  __s32 fd;
+  __u32 flags;
+  __u32 padding[3];
+};
+#define KVM_HYPERV_CONN_ID_MASK 0x00ffffff
+#define KVM_HYPERV_EVENTFD_DEASSIGN (1 << 0)
+#define KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE (1 << 0)
+#define KVM_DIRTY_LOG_INITIALLY_SET (1 << 1)
+#ifndef KVM_DIRTY_LOG_PAGE_OFFSET
+#define KVM_DIRTY_LOG_PAGE_OFFSET 0
+#endif
+#define KVM_DIRTY_GFN_F_DIRTY _BITUL(0)
+#define KVM_DIRTY_GFN_F_RESET _BITUL(1)
+#define KVM_DIRTY_GFN_F_MASK 0x3
+struct kvm_dirty_gfn {
+  __u32 flags;
+  __u32 slot;
+  __u64 offset;
+};
+#define KVM_BUS_LOCK_DETECTION_OFF (1 << 0)
+#define KVM_BUS_LOCK_DETECTION_EXIT (1 << 1)
+struct kvm_stats_header {
+  __u32 flags;
+  __u32 name_size;
+  __u32 num_desc;
+  __u32 id_offset;
+  __u32 desc_offset;
+  __u32 data_offset;
+};
+#define KVM_STATS_TYPE_SHIFT 0
+#define KVM_STATS_TYPE_MASK (0xF << KVM_STATS_TYPE_SHIFT)
+#define KVM_STATS_TYPE_CUMULATIVE (0x0 << KVM_STATS_TYPE_SHIFT)
+#define KVM_STATS_TYPE_INSTANT (0x1 << KVM_STATS_TYPE_SHIFT)
+#define KVM_STATS_TYPE_PEAK (0x2 << KVM_STATS_TYPE_SHIFT)
+#define KVM_STATS_TYPE_LINEAR_HIST (0x3 << KVM_STATS_TYPE_SHIFT)
+#define KVM_STATS_TYPE_LOG_HIST (0x4 << KVM_STATS_TYPE_SHIFT)
+#define KVM_STATS_TYPE_MAX KVM_STATS_TYPE_LOG_HIST
+#define KVM_STATS_UNIT_SHIFT 4
+#define KVM_STATS_UNIT_MASK (0xF << KVM_STATS_UNIT_SHIFT)
+#define KVM_STATS_UNIT_NONE (0x0 << KVM_STATS_UNIT_SHIFT)
+#define KVM_STATS_UNIT_BYTES (0x1 << KVM_STATS_UNIT_SHIFT)
+#define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT)
+#define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT)
+#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_CYCLES
+#define KVM_STATS_BASE_SHIFT 8
+#define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
+#define KVM_STATS_BASE_POW10 (0x0 << KVM_STATS_BASE_SHIFT)
+#define KVM_STATS_BASE_POW2 (0x1 << KVM_STATS_BASE_SHIFT)
+#define KVM_STATS_BASE_MAX KVM_STATS_BASE_POW2
+struct kvm_stats_desc {
+  __u32 flags;
+  __s16 exponent;
+  __u16 size;
+  __u32 offset;
+  __u32 bucket_size;
+  char name[];
+};
+#define KVM_GET_STATS_FD _IO(KVMIO, 0xce)
+#endif
diff --git a/i686-linux-musl/include/linux/kvm_para.h b/i686-linux-musl/include/linux/kvm_para.h
new file mode 100644
index 0000000..85084c2
--- /dev/null
+++ b/i686-linux-musl/include/linux/kvm_para.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_KVM_PARA_H
+#define _UAPI__LINUX_KVM_PARA_H
+#define KVM_ENOSYS 1000
+#define KVM_EFAULT EFAULT
+#define KVM_EINVAL EINVAL
+#define KVM_E2BIG E2BIG
+#define KVM_EPERM EPERM
+#define KVM_EOPNOTSUPP 95
+#define KVM_HC_VAPIC_POLL_IRQ 1
+#define KVM_HC_MMU_OP 2
+#define KVM_HC_FEATURES 3
+#define KVM_HC_PPC_MAP_MAGIC_PAGE 4
+#define KVM_HC_KICK_CPU 5
+#define KVM_HC_MIPS_GET_CLOCK_FREQ 6
+#define KVM_HC_MIPS_EXIT_VM 7
+#define KVM_HC_MIPS_CONSOLE_OUTPUT 8
+#define KVM_HC_CLOCK_PAIRING 9
+#define KVM_HC_SEND_IPI 10
+#define KVM_HC_SCHED_YIELD 11
+#define KVM_HC_MAP_GPA_RANGE 12
+#include <asm/kvm_para.h>
+#endif
diff --git a/i686-linux-musl/include/linux/l2tp.h b/i686-linux-musl/include/linux/l2tp.h
new file mode 100644
index 0000000..a054819
--- /dev/null
+++ b/i686-linux-musl/include/linux/l2tp.h
@@ -0,0 +1,142 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_L2TP_H_
+#define _UAPI_LINUX_L2TP_H_
+#include <linux/types.h>
+#include <linux/socket.h>
+#include <linux/in.h>
+#include <linux/in6.h>
+#define IPPROTO_L2TP 115
+#define __SOCK_SIZE__ 16
+struct sockaddr_l2tpip {
+  __kernel_sa_family_t l2tp_family;
+  __be16 l2tp_unused;
+  struct in_addr l2tp_addr;
+  __u32 l2tp_conn_id;
+  unsigned char __pad[__SOCK_SIZE__ - sizeof(__kernel_sa_family_t) - sizeof(__be16) - sizeof(struct in_addr) - sizeof(__u32)];
+};
+struct sockaddr_l2tpip6 {
+  __kernel_sa_family_t l2tp_family;
+  __be16 l2tp_unused;
+  __be32 l2tp_flowinfo;
+  struct in6_addr l2tp_addr;
+  __u32 l2tp_scope_id;
+  __u32 l2tp_conn_id;
+};
+enum {
+  L2TP_CMD_NOOP,
+  L2TP_CMD_TUNNEL_CREATE,
+  L2TP_CMD_TUNNEL_DELETE,
+  L2TP_CMD_TUNNEL_MODIFY,
+  L2TP_CMD_TUNNEL_GET,
+  L2TP_CMD_SESSION_CREATE,
+  L2TP_CMD_SESSION_DELETE,
+  L2TP_CMD_SESSION_MODIFY,
+  L2TP_CMD_SESSION_GET,
+  __L2TP_CMD_MAX,
+};
+#define L2TP_CMD_MAX (__L2TP_CMD_MAX - 1)
+enum {
+  L2TP_ATTR_NONE,
+  L2TP_ATTR_PW_TYPE,
+  L2TP_ATTR_ENCAP_TYPE,
+  L2TP_ATTR_OFFSET,
+  L2TP_ATTR_DATA_SEQ,
+  L2TP_ATTR_L2SPEC_TYPE,
+  L2TP_ATTR_L2SPEC_LEN,
+  L2TP_ATTR_PROTO_VERSION,
+  L2TP_ATTR_IFNAME,
+  L2TP_ATTR_CONN_ID,
+  L2TP_ATTR_PEER_CONN_ID,
+  L2TP_ATTR_SESSION_ID,
+  L2TP_ATTR_PEER_SESSION_ID,
+  L2TP_ATTR_UDP_CSUM,
+  L2TP_ATTR_VLAN_ID,
+  L2TP_ATTR_COOKIE,
+  L2TP_ATTR_PEER_COOKIE,
+  L2TP_ATTR_DEBUG,
+  L2TP_ATTR_RECV_SEQ,
+  L2TP_ATTR_SEND_SEQ,
+  L2TP_ATTR_LNS_MODE,
+  L2TP_ATTR_USING_IPSEC,
+  L2TP_ATTR_RECV_TIMEOUT,
+  L2TP_ATTR_FD,
+  L2TP_ATTR_IP_SADDR,
+  L2TP_ATTR_IP_DADDR,
+  L2TP_ATTR_UDP_SPORT,
+  L2TP_ATTR_UDP_DPORT,
+  L2TP_ATTR_MTU,
+  L2TP_ATTR_MRU,
+  L2TP_ATTR_STATS,
+  L2TP_ATTR_IP6_SADDR,
+  L2TP_ATTR_IP6_DADDR,
+  L2TP_ATTR_UDP_ZERO_CSUM6_TX,
+  L2TP_ATTR_UDP_ZERO_CSUM6_RX,
+  L2TP_ATTR_PAD,
+  __L2TP_ATTR_MAX,
+};
+#define L2TP_ATTR_MAX (__L2TP_ATTR_MAX - 1)
+enum {
+  L2TP_ATTR_STATS_NONE,
+  L2TP_ATTR_TX_PACKETS,
+  L2TP_ATTR_TX_BYTES,
+  L2TP_ATTR_TX_ERRORS,
+  L2TP_ATTR_RX_PACKETS,
+  L2TP_ATTR_RX_BYTES,
+  L2TP_ATTR_RX_SEQ_DISCARDS,
+  L2TP_ATTR_RX_OOS_PACKETS,
+  L2TP_ATTR_RX_ERRORS,
+  L2TP_ATTR_STATS_PAD,
+  L2TP_ATTR_RX_COOKIE_DISCARDS,
+  L2TP_ATTR_RX_INVALID,
+  __L2TP_ATTR_STATS_MAX,
+};
+#define L2TP_ATTR_STATS_MAX (__L2TP_ATTR_STATS_MAX - 1)
+enum l2tp_pwtype {
+  L2TP_PWTYPE_NONE = 0x0000,
+  L2TP_PWTYPE_ETH_VLAN = 0x0004,
+  L2TP_PWTYPE_ETH = 0x0005,
+  L2TP_PWTYPE_PPP = 0x0007,
+  L2TP_PWTYPE_PPP_AC = 0x0008,
+  L2TP_PWTYPE_IP = 0x000b,
+  __L2TP_PWTYPE_MAX
+};
+enum l2tp_l2spec_type {
+  L2TP_L2SPECTYPE_NONE,
+  L2TP_L2SPECTYPE_DEFAULT,
+};
+enum l2tp_encap_type {
+  L2TP_ENCAPTYPE_UDP,
+  L2TP_ENCAPTYPE_IP,
+};
+enum l2tp_seqmode {
+  L2TP_SEQ_NONE = 0,
+  L2TP_SEQ_IP = 1,
+  L2TP_SEQ_ALL = 2,
+};
+enum l2tp_debug_flags {
+  L2TP_MSG_DEBUG = (1 << 0),
+  L2TP_MSG_CONTROL = (1 << 1),
+  L2TP_MSG_SEQ = (1 << 2),
+  L2TP_MSG_DATA = (1 << 3),
+};
+#define L2TP_GENL_NAME "l2tp"
+#define L2TP_GENL_VERSION 0x1
+#define L2TP_GENL_MCGROUP "l2tp"
+#endif
diff --git a/i686-linux-musl/include/linux/landlock.h b/i686-linux-musl/include/linux/landlock.h
new file mode 100644
index 0000000..50d79d8
--- /dev/null
+++ b/i686-linux-musl/include/linux/landlock.h
@@ -0,0 +1,46 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_LANDLOCK_H
+#define _UAPI_LINUX_LANDLOCK_H
+#include <linux/types.h>
+struct landlock_ruleset_attr {
+  __u64 handled_access_fs;
+};
+#define LANDLOCK_CREATE_RULESET_VERSION (1U << 0)
+enum landlock_rule_type {
+  LANDLOCK_RULE_PATH_BENEATH = 1,
+};
+struct landlock_path_beneath_attr {
+  __u64 allowed_access;
+  __s32 parent_fd;
+} __attribute__((packed));
+#define LANDLOCK_ACCESS_FS_EXECUTE (1ULL << 0)
+#define LANDLOCK_ACCESS_FS_WRITE_FILE (1ULL << 1)
+#define LANDLOCK_ACCESS_FS_READ_FILE (1ULL << 2)
+#define LANDLOCK_ACCESS_FS_READ_DIR (1ULL << 3)
+#define LANDLOCK_ACCESS_FS_REMOVE_DIR (1ULL << 4)
+#define LANDLOCK_ACCESS_FS_REMOVE_FILE (1ULL << 5)
+#define LANDLOCK_ACCESS_FS_MAKE_CHAR (1ULL << 6)
+#define LANDLOCK_ACCESS_FS_MAKE_DIR (1ULL << 7)
+#define LANDLOCK_ACCESS_FS_MAKE_REG (1ULL << 8)
+#define LANDLOCK_ACCESS_FS_MAKE_SOCK (1ULL << 9)
+#define LANDLOCK_ACCESS_FS_MAKE_FIFO (1ULL << 10)
+#define LANDLOCK_ACCESS_FS_MAKE_BLOCK (1ULL << 11)
+#define LANDLOCK_ACCESS_FS_MAKE_SYM (1ULL << 12)
+#endif
diff --git a/i686-linux-musl/include/linux/libc-compat.h b/i686-linux-musl/include/linux/libc-compat.h
new file mode 100644
index 0000000..447a46a
--- /dev/null
+++ b/i686-linux-musl/include/linux/libc-compat.h
@@ -0,0 +1,172 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LIBC_COMPAT_H
+#define _UAPI_LIBC_COMPAT_H
+#ifdef __GLIBC__
+#if defined(_NET_IF_H) && defined(__USE_MISC)
+#define __UAPI_DEF_IF_IFCONF 0
+#define __UAPI_DEF_IF_IFMAP 0
+#define __UAPI_DEF_IF_IFNAMSIZ 0
+#define __UAPI_DEF_IF_IFREQ 0
+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 0
+#ifndef __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
+#endif
+#else
+#define __UAPI_DEF_IF_IFCONF 1
+#define __UAPI_DEF_IF_IFMAP 1
+#define __UAPI_DEF_IF_IFNAMSIZ 1
+#define __UAPI_DEF_IF_IFREQ 1
+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 1
+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
+#endif
+#ifdef _NETINET_IN_H
+#define __UAPI_DEF_IN_ADDR 0
+#define __UAPI_DEF_IN_IPPROTO 0
+#define __UAPI_DEF_IN_PKTINFO 0
+#define __UAPI_DEF_IP_MREQ 0
+#define __UAPI_DEF_SOCKADDR_IN 0
+#define __UAPI_DEF_IN_CLASS 0
+#define __UAPI_DEF_IN6_ADDR 0
+#if defined(__USE_MISC) || defined(__USE_GNU)
+#define __UAPI_DEF_IN6_ADDR_ALT 0
+#else
+#define __UAPI_DEF_IN6_ADDR_ALT 1
+#endif
+#define __UAPI_DEF_SOCKADDR_IN6 0
+#define __UAPI_DEF_IPV6_MREQ 0
+#define __UAPI_DEF_IPPROTO_V6 0
+#define __UAPI_DEF_IPV6_OPTIONS 0
+#define __UAPI_DEF_IN6_PKTINFO 0
+#define __UAPI_DEF_IP6_MTUINFO 0
+#else
+#define __UAPI_DEF_IN_ADDR 1
+#define __UAPI_DEF_IN_IPPROTO 1
+#define __UAPI_DEF_IN_PKTINFO 1
+#define __UAPI_DEF_IP_MREQ 1
+#define __UAPI_DEF_SOCKADDR_IN 1
+#define __UAPI_DEF_IN_CLASS 1
+#define __UAPI_DEF_IN6_ADDR 1
+#define __UAPI_DEF_IN6_ADDR_ALT 1
+#define __UAPI_DEF_SOCKADDR_IN6 1
+#define __UAPI_DEF_IPV6_MREQ 1
+#define __UAPI_DEF_IPPROTO_V6 1
+#define __UAPI_DEF_IPV6_OPTIONS 1
+#define __UAPI_DEF_IN6_PKTINFO 1
+#define __UAPI_DEF_IP6_MTUINFO 1
+#endif
+#ifdef __NETIPX_IPX_H
+#define __UAPI_DEF_SOCKADDR_IPX 0
+#define __UAPI_DEF_IPX_ROUTE_DEFINITION 0
+#define __UAPI_DEF_IPX_INTERFACE_DEFINITION 0
+#define __UAPI_DEF_IPX_CONFIG_DATA 0
+#define __UAPI_DEF_IPX_ROUTE_DEF 0
+#else
+#define __UAPI_DEF_SOCKADDR_IPX 1
+#define __UAPI_DEF_IPX_ROUTE_DEFINITION 1
+#define __UAPI_DEF_IPX_INTERFACE_DEFINITION 1
+#define __UAPI_DEF_IPX_CONFIG_DATA 1
+#define __UAPI_DEF_IPX_ROUTE_DEF 1
+#endif
+#ifdef _SYS_XATTR_H
+#define __UAPI_DEF_XATTR 0
+#else
+#define __UAPI_DEF_XATTR 1
+#endif
+#else
+#ifndef __UAPI_DEF_IF_IFCONF
+#define __UAPI_DEF_IF_IFCONF 1
+#endif
+#ifndef __UAPI_DEF_IF_IFMAP
+#define __UAPI_DEF_IF_IFMAP 1
+#endif
+#ifndef __UAPI_DEF_IF_IFNAMSIZ
+#define __UAPI_DEF_IF_IFNAMSIZ 1
+#endif
+#ifndef __UAPI_DEF_IF_IFREQ
+#define __UAPI_DEF_IF_IFREQ 1
+#endif
+#ifndef __UAPI_DEF_IF_NET_DEVICE_FLAGS
+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 1
+#endif
+#ifndef __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
+#endif
+#ifndef __UAPI_DEF_IN_ADDR
+#define __UAPI_DEF_IN_ADDR 1
+#endif
+#ifndef __UAPI_DEF_IN_IPPROTO
+#define __UAPI_DEF_IN_IPPROTO 1
+#endif
+#ifndef __UAPI_DEF_IN_PKTINFO
+#define __UAPI_DEF_IN_PKTINFO 1
+#endif
+#ifndef __UAPI_DEF_IP_MREQ
+#define __UAPI_DEF_IP_MREQ 1
+#endif
+#ifndef __UAPI_DEF_SOCKADDR_IN
+#define __UAPI_DEF_SOCKADDR_IN 1
+#endif
+#ifndef __UAPI_DEF_IN_CLASS
+#define __UAPI_DEF_IN_CLASS 1
+#endif
+#ifndef __UAPI_DEF_IN6_ADDR
+#define __UAPI_DEF_IN6_ADDR 1
+#endif
+#ifndef __UAPI_DEF_IN6_ADDR_ALT
+#define __UAPI_DEF_IN6_ADDR_ALT 1
+#endif
+#ifndef __UAPI_DEF_SOCKADDR_IN6
+#define __UAPI_DEF_SOCKADDR_IN6 1
+#endif
+#ifndef __UAPI_DEF_IPV6_MREQ
+#define __UAPI_DEF_IPV6_MREQ 1
+#endif
+#ifndef __UAPI_DEF_IPPROTO_V6
+#define __UAPI_DEF_IPPROTO_V6 1
+#endif
+#ifndef __UAPI_DEF_IPV6_OPTIONS
+#define __UAPI_DEF_IPV6_OPTIONS 1
+#endif
+#ifndef __UAPI_DEF_IN6_PKTINFO
+#define __UAPI_DEF_IN6_PKTINFO 1
+#endif
+#ifndef __UAPI_DEF_IP6_MTUINFO
+#define __UAPI_DEF_IP6_MTUINFO 1
+#endif
+#ifndef __UAPI_DEF_SOCKADDR_IPX
+#define __UAPI_DEF_SOCKADDR_IPX 1
+#endif
+#ifndef __UAPI_DEF_IPX_ROUTE_DEFINITION
+#define __UAPI_DEF_IPX_ROUTE_DEFINITION 1
+#endif
+#ifndef __UAPI_DEF_IPX_INTERFACE_DEFINITION
+#define __UAPI_DEF_IPX_INTERFACE_DEFINITION 1
+#endif
+#ifndef __UAPI_DEF_IPX_CONFIG_DATA
+#define __UAPI_DEF_IPX_CONFIG_DATA 1
+#endif
+#ifndef __UAPI_DEF_IPX_ROUTE_DEF
+#define __UAPI_DEF_IPX_ROUTE_DEF 1
+#endif
+#ifndef __UAPI_DEF_XATTR
+#define __UAPI_DEF_XATTR 1
+#endif
+#endif
+#endif
diff --git a/i686-linux-musl/include/linux/limits.h b/i686-linux-musl/include/linux/limits.h
new file mode 100644
index 0000000..101b7aa
--- /dev/null
+++ b/i686-linux-musl/include/linux/limits.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_LIMITS_H
+#define _UAPI_LINUX_LIMITS_H
+#define NR_OPEN 1024
+#define NGROUPS_MAX 65536
+#define ARG_MAX 131072
+#define LINK_MAX 127
+#define MAX_CANON 255
+#define MAX_INPUT 255
+#define NAME_MAX 255
+#define PATH_MAX 4096
+#define PIPE_BUF 4096
+#define XATTR_NAME_MAX 255
+#define XATTR_SIZE_MAX 65536
+#define XATTR_LIST_MAX 65536
+#define RTSIG_MAX 32
+#endif
diff --git a/i686-linux-musl/include/linux/lirc.h b/i686-linux-musl/include/linux/lirc.h
new file mode 100644
index 0000000..a0ac24a
--- /dev/null
+++ b/i686-linux-musl/include/linux/lirc.h
@@ -0,0 +1,136 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_LIRC_H
+#define _LINUX_LIRC_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define PULSE_BIT 0x01000000
+#define PULSE_MASK 0x00FFFFFF
+#define LIRC_MODE2_SPACE 0x00000000
+#define LIRC_MODE2_PULSE 0x01000000
+#define LIRC_MODE2_FREQUENCY 0x02000000
+#define LIRC_MODE2_TIMEOUT 0x03000000
+#define LIRC_VALUE_MASK 0x00FFFFFF
+#define LIRC_MODE2_MASK 0xFF000000
+#define LIRC_SPACE(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_SPACE)
+#define LIRC_PULSE(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_PULSE)
+#define LIRC_FREQUENCY(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_FREQUENCY)
+#define LIRC_TIMEOUT(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_TIMEOUT)
+#define LIRC_VALUE(val) ((val) & LIRC_VALUE_MASK)
+#define LIRC_MODE2(val) ((val) & LIRC_MODE2_MASK)
+#define LIRC_IS_SPACE(val) (LIRC_MODE2(val) == LIRC_MODE2_SPACE)
+#define LIRC_IS_PULSE(val) (LIRC_MODE2(val) == LIRC_MODE2_PULSE)
+#define LIRC_IS_FREQUENCY(val) (LIRC_MODE2(val) == LIRC_MODE2_FREQUENCY)
+#define LIRC_IS_TIMEOUT(val) (LIRC_MODE2(val) == LIRC_MODE2_TIMEOUT)
+#define lirc_t int
+#define LIRC_MODE2SEND(x) (x)
+#define LIRC_SEND2MODE(x) (x)
+#define LIRC_MODE2REC(x) ((x) << 16)
+#define LIRC_REC2MODE(x) ((x) >> 16)
+#define LIRC_MODE_RAW 0x00000001
+#define LIRC_MODE_PULSE 0x00000002
+#define LIRC_MODE_MODE2 0x00000004
+#define LIRC_MODE_SCANCODE 0x00000008
+#define LIRC_MODE_LIRCCODE 0x00000010
+#define LIRC_CAN_SEND_RAW LIRC_MODE2SEND(LIRC_MODE_RAW)
+#define LIRC_CAN_SEND_PULSE LIRC_MODE2SEND(LIRC_MODE_PULSE)
+#define LIRC_CAN_SEND_MODE2 LIRC_MODE2SEND(LIRC_MODE_MODE2)
+#define LIRC_CAN_SEND_LIRCCODE LIRC_MODE2SEND(LIRC_MODE_LIRCCODE)
+#define LIRC_CAN_SEND_MASK 0x0000003f
+#define LIRC_CAN_SET_SEND_CARRIER 0x00000100
+#define LIRC_CAN_SET_SEND_DUTY_CYCLE 0x00000200
+#define LIRC_CAN_SET_TRANSMITTER_MASK 0x00000400
+#define LIRC_CAN_REC_RAW LIRC_MODE2REC(LIRC_MODE_RAW)
+#define LIRC_CAN_REC_PULSE LIRC_MODE2REC(LIRC_MODE_PULSE)
+#define LIRC_CAN_REC_MODE2 LIRC_MODE2REC(LIRC_MODE_MODE2)
+#define LIRC_CAN_REC_SCANCODE LIRC_MODE2REC(LIRC_MODE_SCANCODE)
+#define LIRC_CAN_REC_LIRCCODE LIRC_MODE2REC(LIRC_MODE_LIRCCODE)
+#define LIRC_CAN_REC_MASK LIRC_MODE2REC(LIRC_CAN_SEND_MASK)
+#define LIRC_CAN_SET_REC_CARRIER (LIRC_CAN_SET_SEND_CARRIER << 16)
+#define LIRC_CAN_SET_REC_DUTY_CYCLE (LIRC_CAN_SET_SEND_DUTY_CYCLE << 16)
+#define LIRC_CAN_SET_REC_DUTY_CYCLE_RANGE 0x40000000
+#define LIRC_CAN_SET_REC_CARRIER_RANGE 0x80000000
+#define LIRC_CAN_GET_REC_RESOLUTION 0x20000000
+#define LIRC_CAN_SET_REC_TIMEOUT 0x10000000
+#define LIRC_CAN_SET_REC_FILTER 0x08000000
+#define LIRC_CAN_MEASURE_CARRIER 0x02000000
+#define LIRC_CAN_USE_WIDEBAND_RECEIVER 0x04000000
+#define LIRC_CAN_SEND(x) ((x) & LIRC_CAN_SEND_MASK)
+#define LIRC_CAN_REC(x) ((x) & LIRC_CAN_REC_MASK)
+#define LIRC_CAN_NOTIFY_DECODE 0x01000000
+#define LIRC_GET_FEATURES _IOR('i', 0x00000000, __u32)
+#define LIRC_GET_SEND_MODE _IOR('i', 0x00000001, __u32)
+#define LIRC_GET_REC_MODE _IOR('i', 0x00000002, __u32)
+#define LIRC_GET_REC_RESOLUTION _IOR('i', 0x00000007, __u32)
+#define LIRC_GET_MIN_TIMEOUT _IOR('i', 0x00000008, __u32)
+#define LIRC_GET_MAX_TIMEOUT _IOR('i', 0x00000009, __u32)
+#define LIRC_GET_LENGTH _IOR('i', 0x0000000f, __u32)
+#define LIRC_SET_SEND_MODE _IOW('i', 0x00000011, __u32)
+#define LIRC_SET_REC_MODE _IOW('i', 0x00000012, __u32)
+#define LIRC_SET_SEND_CARRIER _IOW('i', 0x00000013, __u32)
+#define LIRC_SET_REC_CARRIER _IOW('i', 0x00000014, __u32)
+#define LIRC_SET_SEND_DUTY_CYCLE _IOW('i', 0x00000015, __u32)
+#define LIRC_SET_TRANSMITTER_MASK _IOW('i', 0x00000017, __u32)
+#define LIRC_SET_REC_TIMEOUT _IOW('i', 0x00000018, __u32)
+#define LIRC_SET_REC_TIMEOUT_REPORTS _IOW('i', 0x00000019, __u32)
+#define LIRC_SET_MEASURE_CARRIER_MODE _IOW('i', 0x0000001d, __u32)
+#define LIRC_SET_REC_CARRIER_RANGE _IOW('i', 0x0000001f, __u32)
+#define LIRC_SET_WIDEBAND_RECEIVER _IOW('i', 0x00000023, __u32)
+#define LIRC_GET_REC_TIMEOUT _IOR('i', 0x00000024, __u32)
+struct lirc_scancode {
+  __u64 timestamp;
+  __u16 flags;
+  __u16 rc_proto;
+  __u32 keycode;
+  __u64 scancode;
+};
+#define LIRC_SCANCODE_FLAG_TOGGLE 1
+#define LIRC_SCANCODE_FLAG_REPEAT 2
+enum rc_proto {
+  RC_PROTO_UNKNOWN = 0,
+  RC_PROTO_OTHER = 1,
+  RC_PROTO_RC5 = 2,
+  RC_PROTO_RC5X_20 = 3,
+  RC_PROTO_RC5_SZ = 4,
+  RC_PROTO_JVC = 5,
+  RC_PROTO_SONY12 = 6,
+  RC_PROTO_SONY15 = 7,
+  RC_PROTO_SONY20 = 8,
+  RC_PROTO_NEC = 9,
+  RC_PROTO_NECX = 10,
+  RC_PROTO_NEC32 = 11,
+  RC_PROTO_SANYO = 12,
+  RC_PROTO_MCIR2_KBD = 13,
+  RC_PROTO_MCIR2_MSE = 14,
+  RC_PROTO_RC6_0 = 15,
+  RC_PROTO_RC6_6A_20 = 16,
+  RC_PROTO_RC6_6A_24 = 17,
+  RC_PROTO_RC6_6A_32 = 18,
+  RC_PROTO_RC6_MCE = 19,
+  RC_PROTO_SHARP = 20,
+  RC_PROTO_XMP = 21,
+  RC_PROTO_CEC = 22,
+  RC_PROTO_IMON = 23,
+  RC_PROTO_RCMM12 = 24,
+  RC_PROTO_RCMM24 = 25,
+  RC_PROTO_RCMM32 = 26,
+  RC_PROTO_XBOX_DVD = 27,
+  RC_PROTO_MAX = RC_PROTO_XBOX_DVD,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/llc.h b/i686-linux-musl/include/linux/llc.h
new file mode 100644
index 0000000..e6f778f
--- /dev/null
+++ b/i686-linux-musl/include/linux/llc.h
@@ -0,0 +1,80 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_LLC_H
+#define _UAPI__LINUX_LLC_H
+#include <linux/socket.h>
+#include <linux/if.h>
+#define __LLC_SOCK_SIZE__ 16
+struct sockaddr_llc {
+  __kernel_sa_family_t sllc_family;
+  __kernel_sa_family_t sllc_arphrd;
+  unsigned char sllc_test;
+  unsigned char sllc_xid;
+  unsigned char sllc_ua;
+  unsigned char sllc_sap;
+  unsigned char sllc_mac[IFHWADDRLEN];
+  unsigned char __pad[__LLC_SOCK_SIZE__ - sizeof(__kernel_sa_family_t) * 2 - sizeof(unsigned char) * 4 - IFHWADDRLEN];
+};
+enum llc_sockopts {
+  LLC_OPT_UNKNOWN = 0,
+  LLC_OPT_RETRY,
+  LLC_OPT_SIZE,
+  LLC_OPT_ACK_TMR_EXP,
+  LLC_OPT_P_TMR_EXP,
+  LLC_OPT_REJ_TMR_EXP,
+  LLC_OPT_BUSY_TMR_EXP,
+  LLC_OPT_TX_WIN,
+  LLC_OPT_RX_WIN,
+  LLC_OPT_PKTINFO,
+  LLC_OPT_MAX
+};
+#define LLC_OPT_MAX_RETRY 100
+#define LLC_OPT_MAX_SIZE 4196
+#define LLC_OPT_MAX_WIN 127
+#define LLC_OPT_MAX_ACK_TMR_EXP 60
+#define LLC_OPT_MAX_P_TMR_EXP 60
+#define LLC_OPT_MAX_REJ_TMR_EXP 60
+#define LLC_OPT_MAX_BUSY_TMR_EXP 60
+#define LLC_SAP_NULL 0x00
+#define LLC_SAP_LLC 0x02
+#define LLC_SAP_SNA 0x04
+#define LLC_SAP_PNM 0x0E
+#define LLC_SAP_IP 0x06
+#define LLC_SAP_BSPAN 0x42
+#define LLC_SAP_MMS 0x4E
+#define LLC_SAP_8208 0x7E
+#define LLC_SAP_3COM 0x80
+#define LLC_SAP_PRO 0x8E
+#define LLC_SAP_SNAP 0xAA
+#define LLC_SAP_BANYAN 0xBC
+#define LLC_SAP_IPX 0xE0
+#define LLC_SAP_NETBEUI 0xF0
+#define LLC_SAP_LANMGR 0xF4
+#define LLC_SAP_IMPL 0xF8
+#define LLC_SAP_DISC 0xFC
+#define LLC_SAP_OSI 0xFE
+#define LLC_SAP_LAR 0xDC
+#define LLC_SAP_RM 0xD4
+#define LLC_SAP_GLOBAL 0xFF
+struct llc_pktinfo {
+  int lpi_ifindex;
+  unsigned char lpi_sap;
+  unsigned char lpi_mac[IFHWADDRLEN];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/loop.h b/i686-linux-musl/include/linux/loop.h
new file mode 100644
index 0000000..56eba91
--- /dev/null
+++ b/i686-linux-musl/include/linux/loop.h
@@ -0,0 +1,94 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_LOOP_H
+#define _UAPI_LINUX_LOOP_H
+#define LO_NAME_SIZE 64
+#define LO_KEY_SIZE 32
+enum {
+  LO_FLAGS_READ_ONLY = 1,
+  LO_FLAGS_AUTOCLEAR = 4,
+  LO_FLAGS_PARTSCAN = 8,
+  LO_FLAGS_DIRECT_IO = 16,
+};
+#define LOOP_SET_STATUS_SETTABLE_FLAGS (LO_FLAGS_AUTOCLEAR | LO_FLAGS_PARTSCAN)
+#define LOOP_SET_STATUS_CLEARABLE_FLAGS (LO_FLAGS_AUTOCLEAR)
+#define LOOP_CONFIGURE_SETTABLE_FLAGS (LO_FLAGS_READ_ONLY | LO_FLAGS_AUTOCLEAR | LO_FLAGS_PARTSCAN | LO_FLAGS_DIRECT_IO)
+#include <asm/posix_types.h>
+#include <linux/types.h>
+struct loop_info {
+  int lo_number;
+  __kernel_old_dev_t lo_device;
+  unsigned long lo_inode;
+  __kernel_old_dev_t lo_rdevice;
+  int lo_offset;
+  int lo_encrypt_type;
+  int lo_encrypt_key_size;
+  int lo_flags;
+  char lo_name[LO_NAME_SIZE];
+  unsigned char lo_encrypt_key[LO_KEY_SIZE];
+  unsigned long lo_init[2];
+  char reserved[4];
+};
+struct loop_info64 {
+  __u64 lo_device;
+  __u64 lo_inode;
+  __u64 lo_rdevice;
+  __u64 lo_offset;
+  __u64 lo_sizelimit;
+  __u32 lo_number;
+  __u32 lo_encrypt_type;
+  __u32 lo_encrypt_key_size;
+  __u32 lo_flags;
+  __u8 lo_file_name[LO_NAME_SIZE];
+  __u8 lo_crypt_name[LO_NAME_SIZE];
+  __u8 lo_encrypt_key[LO_KEY_SIZE];
+  __u64 lo_init[2];
+};
+struct loop_config {
+  __u32 fd;
+  __u32 block_size;
+  struct loop_info64 info;
+  __u64 __reserved[8];
+};
+#define LO_CRYPT_NONE 0
+#define LO_CRYPT_XOR 1
+#define LO_CRYPT_DES 2
+#define LO_CRYPT_FISH2 3
+#define LO_CRYPT_BLOW 4
+#define LO_CRYPT_CAST128 5
+#define LO_CRYPT_IDEA 6
+#define LO_CRYPT_DUMMY 9
+#define LO_CRYPT_SKIPJACK 10
+#define LO_CRYPT_CRYPTOAPI 18
+#define MAX_LO_CRYPT 20
+#define LOOP_SET_FD 0x4C00
+#define LOOP_CLR_FD 0x4C01
+#define LOOP_SET_STATUS 0x4C02
+#define LOOP_GET_STATUS 0x4C03
+#define LOOP_SET_STATUS64 0x4C04
+#define LOOP_GET_STATUS64 0x4C05
+#define LOOP_CHANGE_FD 0x4C06
+#define LOOP_SET_CAPACITY 0x4C07
+#define LOOP_SET_DIRECT_IO 0x4C08
+#define LOOP_SET_BLOCK_SIZE 0x4C09
+#define LOOP_CONFIGURE 0x4C0A
+#define LOOP_CTL_ADD 0x4C80
+#define LOOP_CTL_REMOVE 0x4C81
+#define LOOP_CTL_GET_FREE 0x4C82
+#endif
diff --git a/i686-linux-musl/include/linux/lp.h b/i686-linux-musl/include/linux/lp.h
new file mode 100644
index 0000000..35d5d5a
--- /dev/null
+++ b/i686-linux-musl/include/linux/lp.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_LP_H
+#define _UAPI_LINUX_LP_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define LP_EXIST 0x0001
+#define LP_SELEC 0x0002
+#define LP_BUSY 0x0004
+#define LP_BUSY_BIT_POS 2
+#define LP_OFFL 0x0008
+#define LP_NOPA 0x0010
+#define LP_ERR 0x0020
+#define LP_ABORT 0x0040
+#define LP_CAREFUL 0x0080
+#define LP_ABORTOPEN 0x0100
+#define LP_TRUST_IRQ_ 0x0200
+#define LP_NO_REVERSE 0x0400
+#define LP_DATA_AVAIL 0x0800
+#define LP_PBUSY 0x80
+#define LP_PACK 0x40
+#define LP_POUTPA 0x20
+#define LP_PSELECD 0x10
+#define LP_PERRORP 0x08
+#define LP_INIT_CHAR 1000
+#define LP_INIT_WAIT 1
+#define LP_INIT_TIME 2
+#define LPCHAR 0x0601
+#define LPTIME 0x0602
+#define LPABORT 0x0604
+#define LPSETIRQ 0x0605
+#define LPGETIRQ 0x0606
+#define LPWAIT 0x0608
+#define LPCAREFUL 0x0609
+#define LPABORTOPEN 0x060a
+#define LPGETSTATUS 0x060b
+#define LPRESET 0x060c
+#ifdef LP_STATS
+#define LPGETSTATS 0x060d
+#endif
+#define LPGETFLAGS 0x060e
+#define LPSETTIMEOUT_OLD 0x060f
+#define LPSETTIMEOUT_NEW _IOW(0x6, 0xf, __s64[2])
+#if __BITS_PER_LONG == 64
+#define LPSETTIMEOUT LPSETTIMEOUT_OLD
+#else
+#define LPSETTIMEOUT (sizeof(time_t) > sizeof(__kernel_long_t) ? LPSETTIMEOUT_NEW : LPSETTIMEOUT_OLD)
+#endif
+#define LP_TIMEOUT_INTERRUPT (60 * HZ)
+#define LP_TIMEOUT_POLLED (10 * HZ)
+#endif
diff --git a/i686-linux-musl/include/linux/lwtunnel.h b/i686-linux-musl/include/linux/lwtunnel.h
new file mode 100644
index 0000000..e6fb536
--- /dev/null
+++ b/i686-linux-musl/include/linux/lwtunnel.h
@@ -0,0 +1,110 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LWTUNNEL_H_
+#define _UAPI_LWTUNNEL_H_
+#include <linux/types.h>
+enum lwtunnel_encap_types {
+  LWTUNNEL_ENCAP_NONE,
+  LWTUNNEL_ENCAP_MPLS,
+  LWTUNNEL_ENCAP_IP,
+  LWTUNNEL_ENCAP_ILA,
+  LWTUNNEL_ENCAP_IP6,
+  LWTUNNEL_ENCAP_SEG6,
+  LWTUNNEL_ENCAP_BPF,
+  LWTUNNEL_ENCAP_SEG6_LOCAL,
+  LWTUNNEL_ENCAP_RPL,
+  LWTUNNEL_ENCAP_IOAM6,
+  __LWTUNNEL_ENCAP_MAX,
+};
+#define LWTUNNEL_ENCAP_MAX (__LWTUNNEL_ENCAP_MAX - 1)
+enum lwtunnel_ip_t {
+  LWTUNNEL_IP_UNSPEC,
+  LWTUNNEL_IP_ID,
+  LWTUNNEL_IP_DST,
+  LWTUNNEL_IP_SRC,
+  LWTUNNEL_IP_TTL,
+  LWTUNNEL_IP_TOS,
+  LWTUNNEL_IP_FLAGS,
+  LWTUNNEL_IP_PAD,
+  LWTUNNEL_IP_OPTS,
+  __LWTUNNEL_IP_MAX,
+};
+#define LWTUNNEL_IP_MAX (__LWTUNNEL_IP_MAX - 1)
+enum lwtunnel_ip6_t {
+  LWTUNNEL_IP6_UNSPEC,
+  LWTUNNEL_IP6_ID,
+  LWTUNNEL_IP6_DST,
+  LWTUNNEL_IP6_SRC,
+  LWTUNNEL_IP6_HOPLIMIT,
+  LWTUNNEL_IP6_TC,
+  LWTUNNEL_IP6_FLAGS,
+  LWTUNNEL_IP6_PAD,
+  LWTUNNEL_IP6_OPTS,
+  __LWTUNNEL_IP6_MAX,
+};
+#define LWTUNNEL_IP6_MAX (__LWTUNNEL_IP6_MAX - 1)
+enum {
+  LWTUNNEL_IP_OPTS_UNSPEC,
+  LWTUNNEL_IP_OPTS_GENEVE,
+  LWTUNNEL_IP_OPTS_VXLAN,
+  LWTUNNEL_IP_OPTS_ERSPAN,
+  __LWTUNNEL_IP_OPTS_MAX,
+};
+#define LWTUNNEL_IP_OPTS_MAX (__LWTUNNEL_IP_OPTS_MAX - 1)
+enum {
+  LWTUNNEL_IP_OPT_GENEVE_UNSPEC,
+  LWTUNNEL_IP_OPT_GENEVE_CLASS,
+  LWTUNNEL_IP_OPT_GENEVE_TYPE,
+  LWTUNNEL_IP_OPT_GENEVE_DATA,
+  __LWTUNNEL_IP_OPT_GENEVE_MAX,
+};
+#define LWTUNNEL_IP_OPT_GENEVE_MAX (__LWTUNNEL_IP_OPT_GENEVE_MAX - 1)
+enum {
+  LWTUNNEL_IP_OPT_VXLAN_UNSPEC,
+  LWTUNNEL_IP_OPT_VXLAN_GBP,
+  __LWTUNNEL_IP_OPT_VXLAN_MAX,
+};
+#define LWTUNNEL_IP_OPT_VXLAN_MAX (__LWTUNNEL_IP_OPT_VXLAN_MAX - 1)
+enum {
+  LWTUNNEL_IP_OPT_ERSPAN_UNSPEC,
+  LWTUNNEL_IP_OPT_ERSPAN_VER,
+  LWTUNNEL_IP_OPT_ERSPAN_INDEX,
+  LWTUNNEL_IP_OPT_ERSPAN_DIR,
+  LWTUNNEL_IP_OPT_ERSPAN_HWID,
+  __LWTUNNEL_IP_OPT_ERSPAN_MAX,
+};
+#define LWTUNNEL_IP_OPT_ERSPAN_MAX (__LWTUNNEL_IP_OPT_ERSPAN_MAX - 1)
+enum {
+  LWT_BPF_PROG_UNSPEC,
+  LWT_BPF_PROG_FD,
+  LWT_BPF_PROG_NAME,
+  __LWT_BPF_PROG_MAX,
+};
+#define LWT_BPF_PROG_MAX (__LWT_BPF_PROG_MAX - 1)
+enum {
+  LWT_BPF_UNSPEC,
+  LWT_BPF_IN,
+  LWT_BPF_OUT,
+  LWT_BPF_XMIT,
+  LWT_BPF_XMIT_HEADROOM,
+  __LWT_BPF_MAX,
+};
+#define LWT_BPF_MAX (__LWT_BPF_MAX - 1)
+#define LWT_BPF_MAX_HEADROOM 256
+#endif
diff --git a/i686-linux-musl/include/linux/magic.h b/i686-linux-musl/include/linux/magic.h
new file mode 100644
index 0000000..6d583f3
--- /dev/null
+++ b/i686-linux-musl/include/linux/magic.h
@@ -0,0 +1,104 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_MAGIC_H__
+#define __LINUX_MAGIC_H__
+#define ADFS_SUPER_MAGIC 0xadf5
+#define AFFS_SUPER_MAGIC 0xadff
+#define AFS_SUPER_MAGIC 0x5346414F
+#define AUTOFS_SUPER_MAGIC 0x0187
+#define CODA_SUPER_MAGIC 0x73757245
+#define CRAMFS_MAGIC 0x28cd3d45
+#define CRAMFS_MAGIC_WEND 0x453dcd28
+#define DEBUGFS_MAGIC 0x64626720
+#define SECURITYFS_MAGIC 0x73636673
+#define SELINUX_MAGIC 0xf97cff8c
+#define SMACK_MAGIC 0x43415d53
+#define RAMFS_MAGIC 0x858458f6
+#define TMPFS_MAGIC 0x01021994
+#define HUGETLBFS_MAGIC 0x958458f6
+#define SQUASHFS_MAGIC 0x73717368
+#define ECRYPTFS_SUPER_MAGIC 0xf15f
+#define EFS_SUPER_MAGIC 0x414A53
+#define EROFS_SUPER_MAGIC_V1 0xE0F5E1E2
+#define EXT2_SUPER_MAGIC 0xEF53
+#define EXT3_SUPER_MAGIC 0xEF53
+#define XENFS_SUPER_MAGIC 0xabba1974
+#define EXT4_SUPER_MAGIC 0xEF53
+#define BTRFS_SUPER_MAGIC 0x9123683E
+#define NILFS_SUPER_MAGIC 0x3434
+#define F2FS_SUPER_MAGIC 0xF2F52010
+#define HPFS_SUPER_MAGIC 0xf995e849
+#define ISOFS_SUPER_MAGIC 0x9660
+#define JFFS2_SUPER_MAGIC 0x72b6
+#define XFS_SUPER_MAGIC 0x58465342
+#define PSTOREFS_MAGIC 0x6165676C
+#define EFIVARFS_MAGIC 0xde5e81e4
+#define HOSTFS_SUPER_MAGIC 0x00c0ffee
+#define OVERLAYFS_SUPER_MAGIC 0x794c7630
+#define MINIX_SUPER_MAGIC 0x137F
+#define MINIX_SUPER_MAGIC2 0x138F
+#define MINIX2_SUPER_MAGIC 0x2468
+#define MINIX2_SUPER_MAGIC2 0x2478
+#define MINIX3_SUPER_MAGIC 0x4d5a
+#define MSDOS_SUPER_MAGIC 0x4d44
+#define NCP_SUPER_MAGIC 0x564c
+#define NFS_SUPER_MAGIC 0x6969
+#define OCFS2_SUPER_MAGIC 0x7461636f
+#define OPENPROM_SUPER_MAGIC 0x9fa1
+#define QNX4_SUPER_MAGIC 0x002f
+#define QNX6_SUPER_MAGIC 0x68191122
+#define AFS_FS_MAGIC 0x6B414653
+#define REISERFS_SUPER_MAGIC 0x52654973
+#define REISERFS_SUPER_MAGIC_STRING "ReIsErFs"
+#define REISER2FS_SUPER_MAGIC_STRING "ReIsEr2Fs"
+#define REISER2FS_JR_SUPER_MAGIC_STRING "ReIsEr3Fs"
+#define SMB_SUPER_MAGIC 0x517B
+#define CGROUP_SUPER_MAGIC 0x27e0eb
+#define CGROUP2_SUPER_MAGIC 0x63677270
+#define RDTGROUP_SUPER_MAGIC 0x7655821
+#define STACK_END_MAGIC 0x57AC6E9D
+#define TRACEFS_MAGIC 0x74726163
+#define V9FS_MAGIC 0x01021997
+#define BDEVFS_MAGIC 0x62646576
+#define DAXFS_MAGIC 0x64646178
+#define BINFMTFS_MAGIC 0x42494e4d
+#define DEVPTS_SUPER_MAGIC 0x1cd1
+#define BINDERFS_SUPER_MAGIC 0x6c6f6f70
+#define FUTEXFS_SUPER_MAGIC 0xBAD1DEA
+#define PIPEFS_MAGIC 0x50495045
+#define PROC_SUPER_MAGIC 0x9fa0
+#define SOCKFS_MAGIC 0x534F434B
+#define SYSFS_MAGIC 0x62656572
+#define USBDEVICE_SUPER_MAGIC 0x9fa2
+#define MTD_INODE_FS_MAGIC 0x11307854
+#define ANON_INODE_FS_MAGIC 0x09041934
+#define BTRFS_TEST_MAGIC 0x73727279
+#define NSFS_MAGIC 0x6e736673
+#define BPF_FS_MAGIC 0xcafe4a11
+#define AAFS_MAGIC 0x5a3c69f0
+#define ZONEFS_MAGIC 0x5a4f4653
+#define UDF_SUPER_MAGIC 0x15013346
+#define BALLOON_KVM_MAGIC 0x13661366
+#define ZSMALLOC_MAGIC 0x58295829
+#define DMA_BUF_MAGIC 0x444d4142
+#define DEVMEM_MAGIC 0x454d444d
+#define Z3FOLD_MAGIC 0x33
+#define PPC_CMM_MAGIC 0xc7571590
+#define SECRETMEM_MAGIC 0x5345434d
+#endif
diff --git a/i686-linux-musl/include/linux/major.h b/i686-linux-musl/include/linux/major.h
new file mode 100644
index 0000000..f5e2cfb
--- /dev/null
+++ b/i686-linux-musl/include/linux/major.h
@@ -0,0 +1,160 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_MAJOR_H
+#define _LINUX_MAJOR_H
+#define UNNAMED_MAJOR 0
+#define MEM_MAJOR 1
+#define RAMDISK_MAJOR 1
+#define FLOPPY_MAJOR 2
+#define PTY_MASTER_MAJOR 2
+#define IDE0_MAJOR 3
+#define HD_MAJOR IDE0_MAJOR
+#define PTY_SLAVE_MAJOR 3
+#define TTY_MAJOR 4
+#define TTYAUX_MAJOR 5
+#define LP_MAJOR 6
+#define VCS_MAJOR 7
+#define LOOP_MAJOR 7
+#define SCSI_DISK0_MAJOR 8
+#define SCSI_TAPE_MAJOR 9
+#define MD_MAJOR 9
+#define MISC_MAJOR 10
+#define SCSI_CDROM_MAJOR 11
+#define MUX_MAJOR 11
+#define XT_DISK_MAJOR 13
+#define INPUT_MAJOR 13
+#define SOUND_MAJOR 14
+#define CDU31A_CDROM_MAJOR 15
+#define JOYSTICK_MAJOR 15
+#define GOLDSTAR_CDROM_MAJOR 16
+#define OPTICS_CDROM_MAJOR 17
+#define SANYO_CDROM_MAJOR 18
+#define MITSUMI_X_CDROM_MAJOR 20
+#define MFM_ACORN_MAJOR 21
+#define SCSI_GENERIC_MAJOR 21
+#define IDE1_MAJOR 22
+#define DIGICU_MAJOR 22
+#define DIGI_MAJOR 23
+#define MITSUMI_CDROM_MAJOR 23
+#define CDU535_CDROM_MAJOR 24
+#define STL_SERIALMAJOR 24
+#define MATSUSHITA_CDROM_MAJOR 25
+#define STL_CALLOUTMAJOR 25
+#define MATSUSHITA_CDROM2_MAJOR 26
+#define QIC117_TAPE_MAJOR 27
+#define MATSUSHITA_CDROM3_MAJOR 27
+#define MATSUSHITA_CDROM4_MAJOR 28
+#define STL_SIOMEMMAJOR 28
+#define ACSI_MAJOR 28
+#define AZTECH_CDROM_MAJOR 29
+#define FB_MAJOR 29
+#define MTD_BLOCK_MAJOR 31
+#define CM206_CDROM_MAJOR 32
+#define IDE2_MAJOR 33
+#define IDE3_MAJOR 34
+#define Z8530_MAJOR 34
+#define XPRAM_MAJOR 35
+#define NETLINK_MAJOR 36
+#define PS2ESDI_MAJOR 36
+#define IDETAPE_MAJOR 37
+#define Z2RAM_MAJOR 37
+#define APBLOCK_MAJOR 38
+#define DDV_MAJOR 39
+#define NBD_MAJOR 43
+#define RISCOM8_NORMAL_MAJOR 48
+#define DAC960_MAJOR 48
+#define RISCOM8_CALLOUT_MAJOR 49
+#define MKISS_MAJOR 55
+#define DSP56K_MAJOR 55
+#define IDE4_MAJOR 56
+#define IDE5_MAJOR 57
+#define SCSI_DISK1_MAJOR 65
+#define SCSI_DISK2_MAJOR 66
+#define SCSI_DISK3_MAJOR 67
+#define SCSI_DISK4_MAJOR 68
+#define SCSI_DISK5_MAJOR 69
+#define SCSI_DISK6_MAJOR 70
+#define SCSI_DISK7_MAJOR 71
+#define COMPAQ_SMART2_MAJOR 72
+#define COMPAQ_SMART2_MAJOR1 73
+#define COMPAQ_SMART2_MAJOR2 74
+#define COMPAQ_SMART2_MAJOR3 75
+#define COMPAQ_SMART2_MAJOR4 76
+#define COMPAQ_SMART2_MAJOR5 77
+#define COMPAQ_SMART2_MAJOR6 78
+#define COMPAQ_SMART2_MAJOR7 79
+#define SPECIALIX_NORMAL_MAJOR 75
+#define SPECIALIX_CALLOUT_MAJOR 76
+#define AURORA_MAJOR 79
+#define I2O_MAJOR 80
+#define SHMIQ_MAJOR 85
+#define SCSI_CHANGER_MAJOR 86
+#define IDE6_MAJOR 88
+#define IDE7_MAJOR 89
+#define IDE8_MAJOR 90
+#define MTD_CHAR_MAJOR 90
+#define IDE9_MAJOR 91
+#define DASD_MAJOR 94
+#define MDISK_MAJOR 95
+#define UBD_MAJOR 98
+#define PP_MAJOR 99
+#define JSFD_MAJOR 99
+#define PHONE_MAJOR 100
+#define COMPAQ_CISS_MAJOR 104
+#define COMPAQ_CISS_MAJOR1 105
+#define COMPAQ_CISS_MAJOR2 106
+#define COMPAQ_CISS_MAJOR3 107
+#define COMPAQ_CISS_MAJOR4 108
+#define COMPAQ_CISS_MAJOR5 109
+#define COMPAQ_CISS_MAJOR6 110
+#define COMPAQ_CISS_MAJOR7 111
+#define VIODASD_MAJOR 112
+#define VIOCD_MAJOR 113
+#define ATARAID_MAJOR 114
+#define SCSI_DISK8_MAJOR 128
+#define SCSI_DISK9_MAJOR 129
+#define SCSI_DISK10_MAJOR 130
+#define SCSI_DISK11_MAJOR 131
+#define SCSI_DISK12_MAJOR 132
+#define SCSI_DISK13_MAJOR 133
+#define SCSI_DISK14_MAJOR 134
+#define SCSI_DISK15_MAJOR 135
+#define UNIX98_PTY_MASTER_MAJOR 128
+#define UNIX98_PTY_MAJOR_COUNT 8
+#define UNIX98_PTY_SLAVE_MAJOR (UNIX98_PTY_MASTER_MAJOR + UNIX98_PTY_MAJOR_COUNT)
+#define DRBD_MAJOR 147
+#define RTF_MAJOR 150
+#define RAW_MAJOR 162
+#define USB_ACM_MAJOR 166
+#define USB_ACM_AUX_MAJOR 167
+#define USB_CHAR_MAJOR 180
+#define MMC_BLOCK_MAJOR 179
+#define VXVM_MAJOR 199
+#define VXSPEC_MAJOR 200
+#define VXDMP_MAJOR 201
+#define XENVBD_MAJOR 202
+#define MSR_MAJOR 202
+#define CPUID_MAJOR 203
+#define OSST_MAJOR 206
+#define IBM_TTY3270_MAJOR 227
+#define IBM_FS3270_MAJOR 228
+#define VIOTAPE_MAJOR 230
+#define BLOCK_EXT_MAJOR 259
+#define SCSI_OSD_MAJOR 260
+#endif
diff --git a/i686-linux-musl/include/linux/map_to_14segment.h b/i686-linux-musl/include/linux/map_to_14segment.h
new file mode 100644
index 0000000..657df6c
--- /dev/null
+++ b/i686-linux-musl/include/linux/map_to_14segment.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef MAP_TO_14SEGMENT_H
+#define MAP_TO_14SEGMENT_H
+#include <linux/errno.h>
+#include <linux/types.h>
+#include <asm/byteorder.h>
+#define BIT_SEG14_A 0
+#define BIT_SEG14_B 1
+#define BIT_SEG14_C 2
+#define BIT_SEG14_D 3
+#define BIT_SEG14_E 4
+#define BIT_SEG14_F 5
+#define BIT_SEG14_G1 6
+#define BIT_SEG14_G2 7
+#define BIT_SEG14_H 8
+#define BIT_SEG14_I 9
+#define BIT_SEG14_J 10
+#define BIT_SEG14_K 11
+#define BIT_SEG14_L 12
+#define BIT_SEG14_M 13
+#define BIT_SEG14_RESERVED1 14
+#define BIT_SEG14_RESERVED2 15
+struct seg14_conversion_map {
+  __be16 table[128];
+};
+#define SEG14_CONVERSION_MAP(_name,_map) struct seg14_conversion_map _name = {.table = { _map } }
+#define MAP_TO_SEG14_SYSFS_FILE "map_seg14"
+#define _SEG14(sym,a,b,c,d,e,f,g1,g2,h,j,k,l,m,n) __cpu_to_be16(a << BIT_SEG14_A | b << BIT_SEG14_B | c << BIT_SEG14_C | d << BIT_SEG14_D | e << BIT_SEG14_E | f << BIT_SEG14_F | g1 << BIT_SEG14_G1 | g2 << BIT_SEG14_G2 | h << BIT_SEG14_H | j << BIT_SEG14_I | k << BIT_SEG14_J | l << BIT_SEG14_K | m << BIT_SEG14_L | n << BIT_SEG14_M)
+#define _MAP_0_32_ASCII_SEG14_NON_PRINTABLE 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+#define _MAP_33_47_ASCII_SEG14_SYMBOL _SEG14('!', 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), _SEG14('"', 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0), _SEG14('#', 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0), _SEG14('$', 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0), _SEG14('%', 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0), _SEG14('&', 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1), _SEG14('\'', 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0), _SEG14('(', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1), _SEG14(')', 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0), _SEG14('*', 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1), _SEG14('+', 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0), _SEG14(',', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0), _SEG14('-', 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0), _SEG14('.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1), _SEG14('/', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0),
+#define _MAP_48_57_ASCII_SEG14_NUMERIC _SEG14('0', 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0), _SEG14('1', 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0), _SEG14('2', 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0), _SEG14('3', 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0), _SEG14('4', 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0), _SEG14('5', 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1), _SEG14('6', 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0), _SEG14('7', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0), _SEG14('8', 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0), _SEG14('9', 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0),
+#define _MAP_58_64_ASCII_SEG14_SYMBOL _SEG14(':', 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0), _SEG14(';', 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0), _SEG14('<', 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1), _SEG14('=', 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0), _SEG14('>', 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0), _SEG14('?', 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0), _SEG14('@', 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0),
+#define _MAP_65_90_ASCII_SEG14_ALPHA_UPPER _SEG14('A', 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0), _SEG14('B', 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0), _SEG14('C', 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0), _SEG14('D', 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0), _SEG14('E', 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0), _SEG14('F', 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0), _SEG14('G', 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0), _SEG14('H', 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0), _SEG14('I', 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0), _SEG14('J', 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), _SEG14('K', 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1), _SEG14('L', 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0), _SEG14('M', 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0), _SEG14('N', 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1), _SEG14('O', 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0), _SEG14('P', 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0), _SEG14('Q', 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1), _SEG14('R', 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1), _SEG14('S', 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0), _SEG14('T', 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0), _SEG14('U', 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0), _SEG14('V', 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0), _SEG14('W', 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1), _SEG14('X', 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1), _SEG14('Y', 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0), _SEG14('Z', 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0),
+#define _MAP_91_96_ASCII_SEG14_SYMBOL _SEG14('[', 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0), _SEG14('\\', 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1), _SEG14(']', 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), _SEG14('^', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1), _SEG14('_', 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), _SEG14('`', 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0),
+#define _MAP_97_122_ASCII_SEG14_ALPHA_LOWER _SEG14('a', 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0), _SEG14('b', 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1), _SEG14('c', 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0), _SEG14('d', 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0), _SEG14('e', 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0), _SEG14('f', 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0), _SEG14('g', 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0), _SEG14('h', 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0), _SEG14('i', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0), _SEG14('j', 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0), _SEG14('k', 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1), _SEG14('l', 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0), _SEG14('m', 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0), _SEG14('n', 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0), _SEG14('o', 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0), _SEG14('p', 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0), _SEG14('q', 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0), _SEG14('r', 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0), _SEG14('s', 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1), _SEG14('t', 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0), _SEG14('u', 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0), _SEG14('v', 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0), _SEG14('w', 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1), _SEG14('x', 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1), _SEG14('y', 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0), _SEG14('z', 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0),
+#define _MAP_123_126_ASCII_SEG14_SYMBOL _SEG14('{', 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0), _SEG14('|', 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0), _SEG14('}', 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1), _SEG14('~', 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0),
+#define MAP_ASCII14SEG_ALPHANUM _MAP_0_32_ASCII_SEG14_NON_PRINTABLE _MAP_33_47_ASCII_SEG14_SYMBOL _MAP_48_57_ASCII_SEG14_NUMERIC _MAP_58_64_ASCII_SEG14_SYMBOL _MAP_65_90_ASCII_SEG14_ALPHA_UPPER _MAP_91_96_ASCII_SEG14_SYMBOL _MAP_97_122_ASCII_SEG14_ALPHA_LOWER _MAP_123_126_ASCII_SEG14_SYMBOL
+#define SEG14_DEFAULT_MAP(_name) SEG14_CONVERSION_MAP(_name, MAP_ASCII14SEG_ALPHANUM)
+#endif
diff --git a/i686-linux-musl/include/linux/map_to_7segment.h b/i686-linux-musl/include/linux/map_to_7segment.h
new file mode 100644
index 0000000..ccb76d3
--- /dev/null
+++ b/i686-linux-musl/include/linux/map_to_7segment.h
@@ -0,0 +1,47 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef MAP_TO_7SEGMENT_H
+#define MAP_TO_7SEGMENT_H
+#include <linux/errno.h>
+#define BIT_SEG7_A 0
+#define BIT_SEG7_B 1
+#define BIT_SEG7_C 2
+#define BIT_SEG7_D 3
+#define BIT_SEG7_E 4
+#define BIT_SEG7_F 5
+#define BIT_SEG7_G 6
+#define BIT_SEG7_RESERVED 7
+struct seg7_conversion_map {
+  unsigned char table[128];
+};
+#define SEG7_CONVERSION_MAP(_name,_map) struct seg7_conversion_map _name = {.table = { _map } }
+#define MAP_TO_SEG7_SYSFS_FILE "map_seg7"
+#define _SEG7(l,a,b,c,d,e,f,g) (a << BIT_SEG7_A | b << BIT_SEG7_B | c << BIT_SEG7_C | d << BIT_SEG7_D | e << BIT_SEG7_E | f << BIT_SEG7_F | g << BIT_SEG7_G)
+#define _MAP_0_32_ASCII_SEG7_NON_PRINTABLE 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+#define _MAP_33_47_ASCII_SEG7_SYMBOL _SEG7('!', 0, 0, 0, 0, 1, 1, 0), _SEG7('"', 0, 1, 0, 0, 0, 1, 0), _SEG7('#', 0, 1, 1, 0, 1, 1, 0), _SEG7('$', 1, 0, 1, 1, 0, 1, 1), _SEG7('%', 0, 0, 1, 0, 0, 1, 0), _SEG7('&', 1, 0, 1, 1, 1, 1, 1), _SEG7('\'', 0, 0, 0, 0, 0, 1, 0), _SEG7('(', 1, 0, 0, 1, 1, 1, 0), _SEG7(')', 1, 1, 1, 1, 0, 0, 0), _SEG7('*', 0, 1, 1, 0, 1, 1, 1), _SEG7('+', 0, 1, 1, 0, 0, 0, 1), _SEG7(',', 0, 0, 0, 0, 1, 0, 0), _SEG7('-', 0, 0, 0, 0, 0, 0, 1), _SEG7('.', 0, 0, 0, 0, 1, 0, 0), _SEG7('/', 0, 1, 0, 0, 1, 0, 1),
+#define _MAP_48_57_ASCII_SEG7_NUMERIC _SEG7('0', 1, 1, 1, 1, 1, 1, 0), _SEG7('1', 0, 1, 1, 0, 0, 0, 0), _SEG7('2', 1, 1, 0, 1, 1, 0, 1), _SEG7('3', 1, 1, 1, 1, 0, 0, 1), _SEG7('4', 0, 1, 1, 0, 0, 1, 1), _SEG7('5', 1, 0, 1, 1, 0, 1, 1), _SEG7('6', 1, 0, 1, 1, 1, 1, 1), _SEG7('7', 1, 1, 1, 0, 0, 0, 0), _SEG7('8', 1, 1, 1, 1, 1, 1, 1), _SEG7('9', 1, 1, 1, 1, 0, 1, 1),
+#define _MAP_58_64_ASCII_SEG7_SYMBOL _SEG7(':', 0, 0, 0, 1, 0, 0, 1), _SEG7(';', 0, 0, 0, 1, 0, 0, 1), _SEG7('<', 1, 0, 0, 0, 0, 1, 1), _SEG7('=', 0, 0, 0, 1, 0, 0, 1), _SEG7('>', 1, 1, 0, 0, 0, 0, 1), _SEG7('?', 1, 1, 1, 0, 0, 1, 0), _SEG7('@', 1, 1, 0, 1, 1, 1, 1),
+#define _MAP_65_90_ASCII_SEG7_ALPHA_UPPR _SEG7('A', 1, 1, 1, 0, 1, 1, 1), _SEG7('B', 1, 1, 1, 1, 1, 1, 1), _SEG7('C', 1, 0, 0, 1, 1, 1, 0), _SEG7('D', 1, 1, 1, 1, 1, 1, 0), _SEG7('E', 1, 0, 0, 1, 1, 1, 1), _SEG7('F', 1, 0, 0, 0, 1, 1, 1), _SEG7('G', 1, 1, 1, 1, 0, 1, 1), _SEG7('H', 0, 1, 1, 0, 1, 1, 1), _SEG7('I', 0, 1, 1, 0, 0, 0, 0), _SEG7('J', 0, 1, 1, 1, 0, 0, 0), _SEG7('K', 0, 1, 1, 0, 1, 1, 1), _SEG7('L', 0, 0, 0, 1, 1, 1, 0), _SEG7('M', 1, 1, 1, 0, 1, 1, 0), _SEG7('N', 1, 1, 1, 0, 1, 1, 0), _SEG7('O', 1, 1, 1, 1, 1, 1, 0), _SEG7('P', 1, 1, 0, 0, 1, 1, 1), _SEG7('Q', 1, 1, 1, 1, 1, 1, 0), _SEG7('R', 1, 1, 1, 0, 1, 1, 1), _SEG7('S', 1, 0, 1, 1, 0, 1, 1), _SEG7('T', 0, 0, 0, 1, 1, 1, 1), _SEG7('U', 0, 1, 1, 1, 1, 1, 0), _SEG7('V', 0, 1, 1, 1, 1, 1, 0), _SEG7('W', 0, 1, 1, 1, 1, 1, 1), _SEG7('X', 0, 1, 1, 0, 1, 1, 1), _SEG7('Y', 0, 1, 1, 0, 0, 1, 1), _SEG7('Z', 1, 1, 0, 1, 1, 0, 1),
+#define _MAP_91_96_ASCII_SEG7_SYMBOL _SEG7('[', 1, 0, 0, 1, 1, 1, 0), _SEG7('\\', 0, 0, 1, 0, 0, 1, 1), _SEG7(']', 1, 1, 1, 1, 0, 0, 0), _SEG7('^', 1, 1, 0, 0, 0, 1, 0), _SEG7('_', 0, 0, 0, 1, 0, 0, 0), _SEG7('`', 0, 1, 0, 0, 0, 0, 0),
+#define _MAP_97_122_ASCII_SEG7_ALPHA_LOWER _SEG7('A', 1, 1, 1, 0, 1, 1, 1), _SEG7('b', 0, 0, 1, 1, 1, 1, 1), _SEG7('c', 0, 0, 0, 1, 1, 0, 1), _SEG7('d', 0, 1, 1, 1, 1, 0, 1), _SEG7('E', 1, 0, 0, 1, 1, 1, 1), _SEG7('F', 1, 0, 0, 0, 1, 1, 1), _SEG7('G', 1, 1, 1, 1, 0, 1, 1), _SEG7('h', 0, 0, 1, 0, 1, 1, 1), _SEG7('i', 0, 0, 1, 0, 0, 0, 0), _SEG7('j', 0, 0, 1, 1, 0, 0, 0), _SEG7('k', 0, 0, 1, 0, 1, 1, 1), _SEG7('L', 0, 0, 0, 1, 1, 1, 0), _SEG7('M', 1, 1, 1, 0, 1, 1, 0), _SEG7('n', 0, 0, 1, 0, 1, 0, 1), _SEG7('o', 0, 0, 1, 1, 1, 0, 1), _SEG7('P', 1, 1, 0, 0, 1, 1, 1), _SEG7('q', 1, 1, 1, 0, 0, 1, 1), _SEG7('r', 0, 0, 0, 0, 1, 0, 1), _SEG7('S', 1, 0, 1, 1, 0, 1, 1), _SEG7('T', 0, 0, 0, 1, 1, 1, 1), _SEG7('u', 0, 0, 1, 1, 1, 0, 0), _SEG7('v', 0, 0, 1, 1, 1, 0, 0), _SEG7('W', 0, 1, 1, 1, 1, 1, 1), _SEG7('X', 0, 1, 1, 0, 1, 1, 1), _SEG7('y', 0, 1, 1, 1, 0, 1, 1), _SEG7('Z', 1, 1, 0, 1, 1, 0, 1),
+#define _MAP_123_126_ASCII_SEG7_SYMBOL _SEG7('{', 1, 0, 0, 1, 1, 1, 0), _SEG7('|', 0, 0, 0, 0, 1, 1, 0), _SEG7('}', 1, 1, 1, 1, 0, 0, 0), _SEG7('~', 1, 0, 0, 0, 0, 0, 0),
+#define MAP_ASCII7SEG_ALPHANUM _MAP_0_32_ASCII_SEG7_NON_PRINTABLE _MAP_33_47_ASCII_SEG7_SYMBOL _MAP_48_57_ASCII_SEG7_NUMERIC _MAP_58_64_ASCII_SEG7_SYMBOL _MAP_65_90_ASCII_SEG7_ALPHA_UPPR _MAP_91_96_ASCII_SEG7_SYMBOL _MAP_97_122_ASCII_SEG7_ALPHA_LOWER _MAP_123_126_ASCII_SEG7_SYMBOL
+#define MAP_ASCII7SEG_ALPHANUM_LC _MAP_0_32_ASCII_SEG7_NON_PRINTABLE _MAP_33_47_ASCII_SEG7_SYMBOL _MAP_48_57_ASCII_SEG7_NUMERIC _MAP_58_64_ASCII_SEG7_SYMBOL _MAP_97_122_ASCII_SEG7_ALPHA_LOWER _MAP_91_96_ASCII_SEG7_SYMBOL _MAP_97_122_ASCII_SEG7_ALPHA_LOWER _MAP_123_126_ASCII_SEG7_SYMBOL
+#define SEG7_DEFAULT_MAP(_name) SEG7_CONVERSION_MAP(_name, MAP_ASCII7SEG_ALPHANUM)
+#endif
diff --git a/i686-linux-musl/include/linux/matroxfb.h b/i686-linux-musl/include/linux/matroxfb.h
new file mode 100644
index 0000000..37f6322
--- /dev/null
+++ b/i686-linux-musl/include/linux/matroxfb.h
@@ -0,0 +1,49 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_MATROXFB_H__
+#define __LINUX_MATROXFB_H__
+#include <asm/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+#include <linux/fb.h>
+struct matroxioc_output_mode {
+  __u32 output;
+#define MATROXFB_OUTPUT_PRIMARY 0x0000
+#define MATROXFB_OUTPUT_SECONDARY 0x0001
+#define MATROXFB_OUTPUT_DFP 0x0002
+  __u32 mode;
+#define MATROXFB_OUTPUT_MODE_PAL 0x0001
+#define MATROXFB_OUTPUT_MODE_NTSC 0x0002
+#define MATROXFB_OUTPUT_MODE_MONITOR 0x0080
+};
+#define MATROXFB_SET_OUTPUT_MODE _IOW('n', 0xFA, size_t)
+#define MATROXFB_GET_OUTPUT_MODE _IOWR('n', 0xFA, size_t)
+#define MATROXFB_OUTPUT_CONN_PRIMARY (1 << MATROXFB_OUTPUT_PRIMARY)
+#define MATROXFB_OUTPUT_CONN_SECONDARY (1 << MATROXFB_OUTPUT_SECONDARY)
+#define MATROXFB_OUTPUT_CONN_DFP (1 << MATROXFB_OUTPUT_DFP)
+#define MATROXFB_SET_OUTPUT_CONNECTION _IOW('n', 0xF8, size_t)
+#define MATROXFB_GET_OUTPUT_CONNECTION _IOR('n', 0xF8, size_t)
+#define MATROXFB_GET_AVAILABLE_OUTPUTS _IOR('n', 0xF9, size_t)
+#define MATROXFB_GET_ALL_OUTPUTS _IOR('n', 0xFB, size_t)
+enum matroxfb_ctrl_id {
+  MATROXFB_CID_TESTOUT = V4L2_CID_PRIVATE_BASE,
+  MATROXFB_CID_DEFLICKER,
+  MATROXFB_CID_LAST
+};
+#endif
diff --git a/i686-linux-musl/include/linux/max2175.h b/i686-linux-musl/include/linux/max2175.h
new file mode 100644
index 0000000..e6998e1
--- /dev/null
+++ b/i686-linux-musl/include/linux/max2175.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_MAX2175_H_
+#define __UAPI_MAX2175_H_
+#include <linux/v4l2-controls.h>
+#define V4L2_CID_MAX2175_I2S_ENABLE (V4L2_CID_USER_MAX217X_BASE + 0x01)
+#define V4L2_CID_MAX2175_HSLS (V4L2_CID_USER_MAX217X_BASE + 0x02)
+#define V4L2_CID_MAX2175_RX_MODE (V4L2_CID_USER_MAX217X_BASE + 0x03)
+#endif
diff --git a/i686-linux-musl/include/linux/mctp.h b/i686-linux-musl/include/linux/mctp.h
new file mode 100644
index 0000000..21a9a14
--- /dev/null
+++ b/i686-linux-musl/include/linux/mctp.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_MCTP_H
+#define __UAPI_MCTP_H
+#include <linux/types.h>
+#include <linux/socket.h>
+#include <linux/netdevice.h>
+typedef __u8 mctp_eid_t;
+struct mctp_addr {
+  mctp_eid_t s_addr;
+};
+struct sockaddr_mctp {
+  __kernel_sa_family_t smctp_family;
+  __u16 __smctp_pad0;
+  unsigned int smctp_network;
+  struct mctp_addr smctp_addr;
+  __u8 smctp_type;
+  __u8 smctp_tag;
+  __u8 __smctp_pad1;
+};
+struct sockaddr_mctp_ext {
+  struct sockaddr_mctp smctp_base;
+  int smctp_ifindex;
+  __u8 smctp_halen;
+  __u8 __smctp_pad0[3];
+  __u8 smctp_haddr[MAX_ADDR_LEN];
+};
+#define MCTP_NET_ANY 0x0
+#define MCTP_ADDR_NULL 0x00
+#define MCTP_ADDR_ANY 0xff
+#define MCTP_TAG_MASK 0x07
+#define MCTP_TAG_OWNER 0x08
+#define MCTP_OPT_ADDR_EXT 1
+#endif
diff --git a/i686-linux-musl/include/linux/mdio.h b/i686-linux-musl/include/linux/mdio.h
new file mode 100644
index 0000000..d5c9da8
--- /dev/null
+++ b/i686-linux-musl/include/linux/mdio.h
@@ -0,0 +1,280 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_MDIO_H__
+#define _UAPI__LINUX_MDIO_H__
+#include <linux/types.h>
+#include <linux/mii.h>
+#define MDIO_MMD_PMAPMD 1
+#define MDIO_MMD_WIS 2
+#define MDIO_MMD_PCS 3
+#define MDIO_MMD_PHYXS 4
+#define MDIO_MMD_DTEXS 5
+#define MDIO_MMD_TC 6
+#define MDIO_MMD_AN 7
+#define MDIO_MMD_C22EXT 29
+#define MDIO_MMD_VEND1 30
+#define MDIO_MMD_VEND2 31
+#define MDIO_CTRL1 MII_BMCR
+#define MDIO_STAT1 MII_BMSR
+#define MDIO_DEVID1 MII_PHYSID1
+#define MDIO_DEVID2 MII_PHYSID2
+#define MDIO_SPEED 4
+#define MDIO_DEVS1 5
+#define MDIO_DEVS2 6
+#define MDIO_CTRL2 7
+#define MDIO_STAT2 8
+#define MDIO_PMA_TXDIS 9
+#define MDIO_PMA_RXDET 10
+#define MDIO_PMA_EXTABLE 11
+#define MDIO_PKGID1 14
+#define MDIO_PKGID2 15
+#define MDIO_AN_ADVERTISE 16
+#define MDIO_AN_LPA 19
+#define MDIO_PCS_EEE_ABLE 20
+#define MDIO_PCS_EEE_ABLE2 21
+#define MDIO_PMA_NG_EXTABLE 21
+#define MDIO_PCS_EEE_WK_ERR 22
+#define MDIO_PHYXS_LNSTAT 24
+#define MDIO_AN_EEE_ADV 60
+#define MDIO_AN_EEE_LPABLE 61
+#define MDIO_AN_EEE_ADV2 62
+#define MDIO_AN_EEE_LPABLE2 63
+#define MDIO_AN_CTRL2 64
+#define MDIO_PMA_10GBT_SWAPPOL 130
+#define MDIO_PMA_10GBT_TXPWR 131
+#define MDIO_PMA_10GBT_SNR 133
+#define MDIO_PMA_10GBR_FSRT_CSR 147
+#define MDIO_PMA_10GBR_FECABLE 170
+#define MDIO_PCS_10GBX_STAT1 24
+#define MDIO_PCS_10GBRT_STAT1 32
+#define MDIO_PCS_10GBRT_STAT2 33
+#define MDIO_AN_10GBT_CTRL 32
+#define MDIO_AN_10GBT_STAT 33
+#define MDIO_PMA_LASI_RXCTRL 0x9000
+#define MDIO_PMA_LASI_TXCTRL 0x9001
+#define MDIO_PMA_LASI_CTRL 0x9002
+#define MDIO_PMA_LASI_RXSTAT 0x9003
+#define MDIO_PMA_LASI_TXSTAT 0x9004
+#define MDIO_PMA_LASI_STAT 0x9005
+#define MDIO_CTRL1_SPEEDSELEXT (BMCR_SPEED1000 | BMCR_SPEED100)
+#define MDIO_CTRL1_SPEEDSEL (MDIO_CTRL1_SPEEDSELEXT | 0x003c)
+#define MDIO_CTRL1_FULLDPLX BMCR_FULLDPLX
+#define MDIO_CTRL1_LPOWER BMCR_PDOWN
+#define MDIO_CTRL1_RESET BMCR_RESET
+#define MDIO_PMA_CTRL1_LOOPBACK 0x0001
+#define MDIO_PMA_CTRL1_SPEED1000 BMCR_SPEED1000
+#define MDIO_PMA_CTRL1_SPEED100 BMCR_SPEED100
+#define MDIO_PCS_CTRL1_LOOPBACK BMCR_LOOPBACK
+#define MDIO_PHYXS_CTRL1_LOOPBACK BMCR_LOOPBACK
+#define MDIO_AN_CTRL1_RESTART BMCR_ANRESTART
+#define MDIO_AN_CTRL1_ENABLE BMCR_ANENABLE
+#define MDIO_AN_CTRL1_XNP 0x2000
+#define MDIO_PCS_CTRL1_CLKSTOP_EN 0x400
+#define MDIO_CTRL1_SPEED10G (MDIO_CTRL1_SPEEDSELEXT | 0x00)
+#define MDIO_CTRL1_SPEED10P2B (MDIO_CTRL1_SPEEDSELEXT | 0x04)
+#define MDIO_CTRL1_SPEED2_5G (MDIO_CTRL1_SPEEDSELEXT | 0x18)
+#define MDIO_CTRL1_SPEED5G (MDIO_CTRL1_SPEEDSELEXT | 0x1c)
+#define MDIO_STAT1_LPOWERABLE 0x0002
+#define MDIO_STAT1_LSTATUS BMSR_LSTATUS
+#define MDIO_STAT1_FAULT 0x0080
+#define MDIO_AN_STAT1_LPABLE 0x0001
+#define MDIO_AN_STAT1_ABLE BMSR_ANEGCAPABLE
+#define MDIO_AN_STAT1_RFAULT BMSR_RFAULT
+#define MDIO_AN_STAT1_COMPLETE BMSR_ANEGCOMPLETE
+#define MDIO_AN_STAT1_PAGE 0x0040
+#define MDIO_AN_STAT1_XNP 0x0080
+#define MDIO_SPEED_10G 0x0001
+#define MDIO_PMA_SPEED_2B 0x0002
+#define MDIO_PMA_SPEED_10P 0x0004
+#define MDIO_PMA_SPEED_1000 0x0010
+#define MDIO_PMA_SPEED_100 0x0020
+#define MDIO_PMA_SPEED_10 0x0040
+#define MDIO_PCS_SPEED_10P2B 0x0002
+#define MDIO_PCS_SPEED_2_5G 0x0040
+#define MDIO_PCS_SPEED_5G 0x0080
+#define MDIO_DEVS_PRESENT(devad) (1 << (devad))
+#define MDIO_DEVS_C22PRESENT MDIO_DEVS_PRESENT(0)
+#define MDIO_DEVS_PMAPMD MDIO_DEVS_PRESENT(MDIO_MMD_PMAPMD)
+#define MDIO_DEVS_WIS MDIO_DEVS_PRESENT(MDIO_MMD_WIS)
+#define MDIO_DEVS_PCS MDIO_DEVS_PRESENT(MDIO_MMD_PCS)
+#define MDIO_DEVS_PHYXS MDIO_DEVS_PRESENT(MDIO_MMD_PHYXS)
+#define MDIO_DEVS_DTEXS MDIO_DEVS_PRESENT(MDIO_MMD_DTEXS)
+#define MDIO_DEVS_TC MDIO_DEVS_PRESENT(MDIO_MMD_TC)
+#define MDIO_DEVS_AN MDIO_DEVS_PRESENT(MDIO_MMD_AN)
+#define MDIO_DEVS_C22EXT MDIO_DEVS_PRESENT(MDIO_MMD_C22EXT)
+#define MDIO_DEVS_VEND1 MDIO_DEVS_PRESENT(MDIO_MMD_VEND1)
+#define MDIO_DEVS_VEND2 MDIO_DEVS_PRESENT(MDIO_MMD_VEND2)
+#define MDIO_PMA_CTRL2_TYPE 0x000f
+#define MDIO_PMA_CTRL2_10GBCX4 0x0000
+#define MDIO_PMA_CTRL2_10GBEW 0x0001
+#define MDIO_PMA_CTRL2_10GBLW 0x0002
+#define MDIO_PMA_CTRL2_10GBSW 0x0003
+#define MDIO_PMA_CTRL2_10GBLX4 0x0004
+#define MDIO_PMA_CTRL2_10GBER 0x0005
+#define MDIO_PMA_CTRL2_10GBLR 0x0006
+#define MDIO_PMA_CTRL2_10GBSR 0x0007
+#define MDIO_PMA_CTRL2_10GBLRM 0x0008
+#define MDIO_PMA_CTRL2_10GBT 0x0009
+#define MDIO_PMA_CTRL2_10GBKX4 0x000a
+#define MDIO_PMA_CTRL2_10GBKR 0x000b
+#define MDIO_PMA_CTRL2_1000BT 0x000c
+#define MDIO_PMA_CTRL2_1000BKX 0x000d
+#define MDIO_PMA_CTRL2_100BTX 0x000e
+#define MDIO_PMA_CTRL2_10BT 0x000f
+#define MDIO_PMA_CTRL2_2_5GBT 0x0030
+#define MDIO_PMA_CTRL2_5GBT 0x0031
+#define MDIO_PCS_CTRL2_TYPE 0x0003
+#define MDIO_PCS_CTRL2_10GBR 0x0000
+#define MDIO_PCS_CTRL2_10GBX 0x0001
+#define MDIO_PCS_CTRL2_10GBW 0x0002
+#define MDIO_PCS_CTRL2_10GBT 0x0003
+#define MDIO_STAT2_RXFAULT 0x0400
+#define MDIO_STAT2_TXFAULT 0x0800
+#define MDIO_STAT2_DEVPRST 0xc000
+#define MDIO_STAT2_DEVPRST_VAL 0x8000
+#define MDIO_PMA_STAT2_LBABLE 0x0001
+#define MDIO_PMA_STAT2_10GBEW 0x0002
+#define MDIO_PMA_STAT2_10GBLW 0x0004
+#define MDIO_PMA_STAT2_10GBSW 0x0008
+#define MDIO_PMA_STAT2_10GBLX4 0x0010
+#define MDIO_PMA_STAT2_10GBER 0x0020
+#define MDIO_PMA_STAT2_10GBLR 0x0040
+#define MDIO_PMA_STAT2_10GBSR 0x0080
+#define MDIO_PMD_STAT2_TXDISAB 0x0100
+#define MDIO_PMA_STAT2_EXTABLE 0x0200
+#define MDIO_PMA_STAT2_RXFLTABLE 0x1000
+#define MDIO_PMA_STAT2_TXFLTABLE 0x2000
+#define MDIO_PCS_STAT2_10GBR 0x0001
+#define MDIO_PCS_STAT2_10GBX 0x0002
+#define MDIO_PCS_STAT2_10GBW 0x0004
+#define MDIO_PCS_STAT2_RXFLTABLE 0x1000
+#define MDIO_PCS_STAT2_TXFLTABLE 0x2000
+#define MDIO_PMD_TXDIS_GLOBAL 0x0001
+#define MDIO_PMD_TXDIS_0 0x0002
+#define MDIO_PMD_TXDIS_1 0x0004
+#define MDIO_PMD_TXDIS_2 0x0008
+#define MDIO_PMD_TXDIS_3 0x0010
+#define MDIO_PMD_RXDET_GLOBAL 0x0001
+#define MDIO_PMD_RXDET_0 0x0002
+#define MDIO_PMD_RXDET_1 0x0004
+#define MDIO_PMD_RXDET_2 0x0008
+#define MDIO_PMD_RXDET_3 0x0010
+#define MDIO_PMA_EXTABLE_10GCX4 0x0001
+#define MDIO_PMA_EXTABLE_10GBLRM 0x0002
+#define MDIO_PMA_EXTABLE_10GBT 0x0004
+#define MDIO_PMA_EXTABLE_10GBKX4 0x0008
+#define MDIO_PMA_EXTABLE_10GBKR 0x0010
+#define MDIO_PMA_EXTABLE_1000BT 0x0020
+#define MDIO_PMA_EXTABLE_1000BKX 0x0040
+#define MDIO_PMA_EXTABLE_100BTX 0x0080
+#define MDIO_PMA_EXTABLE_10BT 0x0100
+#define MDIO_PMA_EXTABLE_NBT 0x4000
+#define MDIO_PHYXS_LNSTAT_SYNC0 0x0001
+#define MDIO_PHYXS_LNSTAT_SYNC1 0x0002
+#define MDIO_PHYXS_LNSTAT_SYNC2 0x0004
+#define MDIO_PHYXS_LNSTAT_SYNC3 0x0008
+#define MDIO_PHYXS_LNSTAT_ALIGN 0x1000
+#define MDIO_PMA_10GBT_SWAPPOL_ABNX 0x0001
+#define MDIO_PMA_10GBT_SWAPPOL_CDNX 0x0002
+#define MDIO_PMA_10GBT_SWAPPOL_AREV 0x0100
+#define MDIO_PMA_10GBT_SWAPPOL_BREV 0x0200
+#define MDIO_PMA_10GBT_SWAPPOL_CREV 0x0400
+#define MDIO_PMA_10GBT_SWAPPOL_DREV 0x0800
+#define MDIO_PMA_10GBT_TXPWR_SHORT 0x0001
+#define MDIO_PMA_10GBT_SNR_BIAS 0x8000
+#define MDIO_PMA_10GBT_SNR_MAX 127
+#define MDIO_PMA_10GBR_FECABLE_ABLE 0x0001
+#define MDIO_PMA_10GBR_FECABLE_ERRABLE 0x0002
+#define MDIO_PMA_10GBR_FSRT_ENABLE 0x0001
+#define MDIO_PCS_10GBRT_STAT1_BLKLK 0x0001
+#define MDIO_PCS_10GBRT_STAT2_ERR 0x00ff
+#define MDIO_PCS_10GBRT_STAT2_BER 0x3f00
+#define MDIO_AN_10GBT_CTRL_ADVFSRT2_5G 0x0020
+#define MDIO_AN_10GBT_CTRL_ADV2_5G 0x0080
+#define MDIO_AN_10GBT_CTRL_ADV5G 0x0100
+#define MDIO_AN_10GBT_CTRL_ADV10G 0x1000
+#define MDIO_AN_10GBT_STAT_LP2_5G 0x0020
+#define MDIO_AN_10GBT_STAT_LP5G 0x0040
+#define MDIO_AN_10GBT_STAT_LPTRR 0x0200
+#define MDIO_AN_10GBT_STAT_LPLTABLE 0x0400
+#define MDIO_AN_10GBT_STAT_LP10G 0x0800
+#define MDIO_AN_10GBT_STAT_REMOK 0x1000
+#define MDIO_AN_10GBT_STAT_LOCOK 0x2000
+#define MDIO_AN_10GBT_STAT_MS 0x4000
+#define MDIO_AN_10GBT_STAT_MSFLT 0x8000
+#define MDIO_AN_EEE_ADV_100TX 0x0002
+#define MDIO_AN_EEE_ADV_1000T 0x0004
+#define MDIO_EEE_100TX MDIO_AN_EEE_ADV_100TX
+#define MDIO_EEE_1000T MDIO_AN_EEE_ADV_1000T
+#define MDIO_EEE_10GT 0x0008
+#define MDIO_EEE_1000KX 0x0010
+#define MDIO_EEE_10GKX4 0x0020
+#define MDIO_EEE_10GKR 0x0040
+#define MDIO_EEE_40GR_FW 0x0100
+#define MDIO_EEE_40GR_DS 0x0200
+#define MDIO_EEE_100GR_FW 0x1000
+#define MDIO_EEE_100GR_DS 0x2000
+#define MDIO_EEE_2_5GT 0x0001
+#define MDIO_EEE_5GT 0x0002
+#define MDIO_AN_THP_BP2_5GT 0x0008
+#define MDIO_PMA_NG_EXTABLE_2_5GBT 0x0001
+#define MDIO_PMA_NG_EXTABLE_5GBT 0x0002
+#define MDIO_PMA_LASI_RX_PHYXSLFLT 0x0001
+#define MDIO_PMA_LASI_RX_PCSLFLT 0x0008
+#define MDIO_PMA_LASI_RX_PMALFLT 0x0010
+#define MDIO_PMA_LASI_RX_OPTICPOWERFLT 0x0020
+#define MDIO_PMA_LASI_RX_WISLFLT 0x0200
+#define MDIO_PMA_LASI_TX_PHYXSLFLT 0x0001
+#define MDIO_PMA_LASI_TX_PCSLFLT 0x0008
+#define MDIO_PMA_LASI_TX_PMALFLT 0x0010
+#define MDIO_PMA_LASI_TX_LASERPOWERFLT 0x0080
+#define MDIO_PMA_LASI_TX_LASERTEMPFLT 0x0100
+#define MDIO_PMA_LASI_TX_LASERBICURRFLT 0x0200
+#define MDIO_PMA_LASI_LSALARM 0x0001
+#define MDIO_PMA_LASI_TXALARM 0x0002
+#define MDIO_PMA_LASI_RXALARM 0x0004
+#define MDIO_PHY_ID_C45 0x8000
+#define MDIO_PHY_ID_PRTAD 0x03e0
+#define MDIO_PHY_ID_DEVAD 0x001f
+#define MDIO_PHY_ID_C45_MASK (MDIO_PHY_ID_C45 | MDIO_PHY_ID_PRTAD | MDIO_PHY_ID_DEVAD)
+#define MDIO_USXGMII_EEE_CLK_STP 0x0080
+#define MDIO_USXGMII_EEE 0x0100
+#define MDIO_USXGMII_SPD_MASK 0x0e00
+#define MDIO_USXGMII_FULL_DUPLEX 0x1000
+#define MDIO_USXGMII_DPX_SPD_MASK 0x1e00
+#define MDIO_USXGMII_10 0x0000
+#define MDIO_USXGMII_10HALF 0x0000
+#define MDIO_USXGMII_10FULL 0x1000
+#define MDIO_USXGMII_100 0x0200
+#define MDIO_USXGMII_100HALF 0x0200
+#define MDIO_USXGMII_100FULL 0x1200
+#define MDIO_USXGMII_1000 0x0400
+#define MDIO_USXGMII_1000HALF 0x0400
+#define MDIO_USXGMII_1000FULL 0x1400
+#define MDIO_USXGMII_10G 0x0600
+#define MDIO_USXGMII_10GHALF 0x0600
+#define MDIO_USXGMII_10GFULL 0x1600
+#define MDIO_USXGMII_2500 0x0800
+#define MDIO_USXGMII_2500HALF 0x0800
+#define MDIO_USXGMII_2500FULL 0x1800
+#define MDIO_USXGMII_5000 0x0a00
+#define MDIO_USXGMII_5000HALF 0x0a00
+#define MDIO_USXGMII_5000FULL 0x1a00
+#define MDIO_USXGMII_LINK 0x8000
+#endif
diff --git a/i686-linux-musl/include/linux/media-bus-format.h b/i686-linux-musl/include/linux/media-bus-format.h
new file mode 100644
index 0000000..2542a32
--- /dev/null
+++ b/i686-linux-musl/include/linux/media-bus-format.h
@@ -0,0 +1,132 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_MEDIA_BUS_FORMAT_H
+#define __LINUX_MEDIA_BUS_FORMAT_H
+#define MEDIA_BUS_FMT_FIXED 0x0001
+#define MEDIA_BUS_FMT_RGB444_1X12 0x1016
+#define MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE 0x1001
+#define MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE 0x1002
+#define MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE 0x1003
+#define MEDIA_BUS_FMT_RGB555_2X8_PADHI_LE 0x1004
+#define MEDIA_BUS_FMT_RGB565_1X16 0x1017
+#define MEDIA_BUS_FMT_BGR565_2X8_BE 0x1005
+#define MEDIA_BUS_FMT_BGR565_2X8_LE 0x1006
+#define MEDIA_BUS_FMT_RGB565_2X8_BE 0x1007
+#define MEDIA_BUS_FMT_RGB565_2X8_LE 0x1008
+#define MEDIA_BUS_FMT_RGB666_1X18 0x1009
+#define MEDIA_BUS_FMT_RBG888_1X24 0x100e
+#define MEDIA_BUS_FMT_RGB666_1X24_CPADHI 0x1015
+#define MEDIA_BUS_FMT_RGB666_1X7X3_SPWG 0x1010
+#define MEDIA_BUS_FMT_BGR888_1X24 0x1013
+#define MEDIA_BUS_FMT_BGR888_3X8 0x101b
+#define MEDIA_BUS_FMT_GBR888_1X24 0x1014
+#define MEDIA_BUS_FMT_RGB888_1X24 0x100a
+#define MEDIA_BUS_FMT_RGB888_2X12_BE 0x100b
+#define MEDIA_BUS_FMT_RGB888_2X12_LE 0x100c
+#define MEDIA_BUS_FMT_RGB888_3X8 0x101c
+#define MEDIA_BUS_FMT_RGB888_3X8_DELTA 0x101d
+#define MEDIA_BUS_FMT_RGB888_1X7X4_SPWG 0x1011
+#define MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA 0x1012
+#define MEDIA_BUS_FMT_ARGB8888_1X32 0x100d
+#define MEDIA_BUS_FMT_RGB888_1X32_PADHI 0x100f
+#define MEDIA_BUS_FMT_RGB101010_1X30 0x1018
+#define MEDIA_BUS_FMT_RGB121212_1X36 0x1019
+#define MEDIA_BUS_FMT_RGB161616_1X48 0x101a
+#define MEDIA_BUS_FMT_Y8_1X8 0x2001
+#define MEDIA_BUS_FMT_UV8_1X8 0x2015
+#define MEDIA_BUS_FMT_UYVY8_1_5X8 0x2002
+#define MEDIA_BUS_FMT_VYUY8_1_5X8 0x2003
+#define MEDIA_BUS_FMT_YUYV8_1_5X8 0x2004
+#define MEDIA_BUS_FMT_YVYU8_1_5X8 0x2005
+#define MEDIA_BUS_FMT_UYVY8_2X8 0x2006
+#define MEDIA_BUS_FMT_VYUY8_2X8 0x2007
+#define MEDIA_BUS_FMT_YUYV8_2X8 0x2008
+#define MEDIA_BUS_FMT_YVYU8_2X8 0x2009
+#define MEDIA_BUS_FMT_Y10_1X10 0x200a
+#define MEDIA_BUS_FMT_Y10_2X8_PADHI_LE 0x202c
+#define MEDIA_BUS_FMT_UYVY10_2X10 0x2018
+#define MEDIA_BUS_FMT_VYUY10_2X10 0x2019
+#define MEDIA_BUS_FMT_YUYV10_2X10 0x200b
+#define MEDIA_BUS_FMT_YVYU10_2X10 0x200c
+#define MEDIA_BUS_FMT_Y12_1X12 0x2013
+#define MEDIA_BUS_FMT_UYVY12_2X12 0x201c
+#define MEDIA_BUS_FMT_VYUY12_2X12 0x201d
+#define MEDIA_BUS_FMT_YUYV12_2X12 0x201e
+#define MEDIA_BUS_FMT_YVYU12_2X12 0x201f
+#define MEDIA_BUS_FMT_Y14_1X14 0x202d
+#define MEDIA_BUS_FMT_UYVY8_1X16 0x200f
+#define MEDIA_BUS_FMT_VYUY8_1X16 0x2010
+#define MEDIA_BUS_FMT_YUYV8_1X16 0x2011
+#define MEDIA_BUS_FMT_YVYU8_1X16 0x2012
+#define MEDIA_BUS_FMT_YDYUYDYV8_1X16 0x2014
+#define MEDIA_BUS_FMT_UYVY10_1X20 0x201a
+#define MEDIA_BUS_FMT_VYUY10_1X20 0x201b
+#define MEDIA_BUS_FMT_YUYV10_1X20 0x200d
+#define MEDIA_BUS_FMT_YVYU10_1X20 0x200e
+#define MEDIA_BUS_FMT_VUY8_1X24 0x2024
+#define MEDIA_BUS_FMT_YUV8_1X24 0x2025
+#define MEDIA_BUS_FMT_UYYVYY8_0_5X24 0x2026
+#define MEDIA_BUS_FMT_UYVY12_1X24 0x2020
+#define MEDIA_BUS_FMT_VYUY12_1X24 0x2021
+#define MEDIA_BUS_FMT_YUYV12_1X24 0x2022
+#define MEDIA_BUS_FMT_YVYU12_1X24 0x2023
+#define MEDIA_BUS_FMT_YUV10_1X30 0x2016
+#define MEDIA_BUS_FMT_UYYVYY10_0_5X30 0x2027
+#define MEDIA_BUS_FMT_AYUV8_1X32 0x2017
+#define MEDIA_BUS_FMT_UYYVYY12_0_5X36 0x2028
+#define MEDIA_BUS_FMT_YUV12_1X36 0x2029
+#define MEDIA_BUS_FMT_YUV16_1X48 0x202a
+#define MEDIA_BUS_FMT_UYYVYY16_0_5X48 0x202b
+#define MEDIA_BUS_FMT_SBGGR8_1X8 0x3001
+#define MEDIA_BUS_FMT_SGBRG8_1X8 0x3013
+#define MEDIA_BUS_FMT_SGRBG8_1X8 0x3002
+#define MEDIA_BUS_FMT_SRGGB8_1X8 0x3014
+#define MEDIA_BUS_FMT_SBGGR10_ALAW8_1X8 0x3015
+#define MEDIA_BUS_FMT_SGBRG10_ALAW8_1X8 0x3016
+#define MEDIA_BUS_FMT_SGRBG10_ALAW8_1X8 0x3017
+#define MEDIA_BUS_FMT_SRGGB10_ALAW8_1X8 0x3018
+#define MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8 0x300b
+#define MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8 0x300c
+#define MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8 0x3009
+#define MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8 0x300d
+#define MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_BE 0x3003
+#define MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE 0x3004
+#define MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_BE 0x3005
+#define MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_LE 0x3006
+#define MEDIA_BUS_FMT_SBGGR10_1X10 0x3007
+#define MEDIA_BUS_FMT_SGBRG10_1X10 0x300e
+#define MEDIA_BUS_FMT_SGRBG10_1X10 0x300a
+#define MEDIA_BUS_FMT_SRGGB10_1X10 0x300f
+#define MEDIA_BUS_FMT_SBGGR12_1X12 0x3008
+#define MEDIA_BUS_FMT_SGBRG12_1X12 0x3010
+#define MEDIA_BUS_FMT_SGRBG12_1X12 0x3011
+#define MEDIA_BUS_FMT_SRGGB12_1X12 0x3012
+#define MEDIA_BUS_FMT_SBGGR14_1X14 0x3019
+#define MEDIA_BUS_FMT_SGBRG14_1X14 0x301a
+#define MEDIA_BUS_FMT_SGRBG14_1X14 0x301b
+#define MEDIA_BUS_FMT_SRGGB14_1X14 0x301c
+#define MEDIA_BUS_FMT_SBGGR16_1X16 0x301d
+#define MEDIA_BUS_FMT_SGBRG16_1X16 0x301e
+#define MEDIA_BUS_FMT_SGRBG16_1X16 0x301f
+#define MEDIA_BUS_FMT_SRGGB16_1X16 0x3020
+#define MEDIA_BUS_FMT_JPEG_1X8 0x4001
+#define MEDIA_BUS_FMT_S5C_UYVY_JPEG_1X8 0x5001
+#define MEDIA_BUS_FMT_AHSV8888_1X32 0x6001
+#define MEDIA_BUS_FMT_METADATA_FIXED 0x7001
+#endif
diff --git a/i686-linux-musl/include/linux/media.h b/i686-linux-musl/include/linux/media.h
new file mode 100644
index 0000000..5c8efcd
--- /dev/null
+++ b/i686-linux-musl/include/linux/media.h
@@ -0,0 +1,233 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_MEDIA_H
+#define __LINUX_MEDIA_H
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+struct media_device_info {
+  char driver[16];
+  char model[32];
+  char serial[40];
+  char bus_info[32];
+  __u32 media_version;
+  __u32 hw_revision;
+  __u32 driver_version;
+  __u32 reserved[31];
+};
+#define MEDIA_ENT_F_BASE 0x00000000
+#define MEDIA_ENT_F_OLD_BASE 0x00010000
+#define MEDIA_ENT_F_OLD_SUBDEV_BASE 0x00020000
+#define MEDIA_ENT_F_UNKNOWN MEDIA_ENT_F_BASE
+#define MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN MEDIA_ENT_F_OLD_SUBDEV_BASE
+#define MEDIA_ENT_F_DTV_DEMOD (MEDIA_ENT_F_BASE + 0x00001)
+#define MEDIA_ENT_F_TS_DEMUX (MEDIA_ENT_F_BASE + 0x00002)
+#define MEDIA_ENT_F_DTV_CA (MEDIA_ENT_F_BASE + 0x00003)
+#define MEDIA_ENT_F_DTV_NET_DECAP (MEDIA_ENT_F_BASE + 0x00004)
+#define MEDIA_ENT_F_IO_V4L (MEDIA_ENT_F_OLD_BASE + 1)
+#define MEDIA_ENT_F_IO_DTV (MEDIA_ENT_F_BASE + 0x01001)
+#define MEDIA_ENT_F_IO_VBI (MEDIA_ENT_F_BASE + 0x01002)
+#define MEDIA_ENT_F_IO_SWRADIO (MEDIA_ENT_F_BASE + 0x01003)
+#define MEDIA_ENT_F_CAM_SENSOR (MEDIA_ENT_F_OLD_SUBDEV_BASE + 1)
+#define MEDIA_ENT_F_FLASH (MEDIA_ENT_F_OLD_SUBDEV_BASE + 2)
+#define MEDIA_ENT_F_LENS (MEDIA_ENT_F_OLD_SUBDEV_BASE + 3)
+#define MEDIA_ENT_F_TUNER (MEDIA_ENT_F_OLD_SUBDEV_BASE + 5)
+#define MEDIA_ENT_F_IF_VID_DECODER (MEDIA_ENT_F_BASE + 0x02001)
+#define MEDIA_ENT_F_IF_AUD_DECODER (MEDIA_ENT_F_BASE + 0x02002)
+#define MEDIA_ENT_F_AUDIO_CAPTURE (MEDIA_ENT_F_BASE + 0x03001)
+#define MEDIA_ENT_F_AUDIO_PLAYBACK (MEDIA_ENT_F_BASE + 0x03002)
+#define MEDIA_ENT_F_AUDIO_MIXER (MEDIA_ENT_F_BASE + 0x03003)
+#define MEDIA_ENT_F_PROC_VIDEO_COMPOSER (MEDIA_ENT_F_BASE + 0x4001)
+#define MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER (MEDIA_ENT_F_BASE + 0x4002)
+#define MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV (MEDIA_ENT_F_BASE + 0x4003)
+#define MEDIA_ENT_F_PROC_VIDEO_LUT (MEDIA_ENT_F_BASE + 0x4004)
+#define MEDIA_ENT_F_PROC_VIDEO_SCALER (MEDIA_ENT_F_BASE + 0x4005)
+#define MEDIA_ENT_F_PROC_VIDEO_STATISTICS (MEDIA_ENT_F_BASE + 0x4006)
+#define MEDIA_ENT_F_PROC_VIDEO_ENCODER (MEDIA_ENT_F_BASE + 0x4007)
+#define MEDIA_ENT_F_PROC_VIDEO_DECODER (MEDIA_ENT_F_BASE + 0x4008)
+#define MEDIA_ENT_F_PROC_VIDEO_ISP (MEDIA_ENT_F_BASE + 0x4009)
+#define MEDIA_ENT_F_VID_MUX (MEDIA_ENT_F_BASE + 0x5001)
+#define MEDIA_ENT_F_VID_IF_BRIDGE (MEDIA_ENT_F_BASE + 0x5002)
+#define MEDIA_ENT_F_ATV_DECODER (MEDIA_ENT_F_OLD_SUBDEV_BASE + 4)
+#define MEDIA_ENT_F_DV_DECODER (MEDIA_ENT_F_BASE + 0x6001)
+#define MEDIA_ENT_F_DV_ENCODER (MEDIA_ENT_F_BASE + 0x6002)
+#define MEDIA_ENT_FL_DEFAULT (1 << 0)
+#define MEDIA_ENT_FL_CONNECTOR (1 << 1)
+#define MEDIA_ENT_ID_FLAG_NEXT (1U << 31)
+struct media_entity_desc {
+  __u32 id;
+  char name[32];
+  __u32 type;
+  __u32 revision;
+  __u32 flags;
+  __u32 group_id;
+  __u16 pads;
+  __u16 links;
+  __u32 reserved[4];
+  union {
+    struct {
+      __u32 major;
+      __u32 minor;
+    } dev;
+    struct {
+      __u32 card;
+      __u32 device;
+      __u32 subdevice;
+    } alsa;
+    struct {
+      __u32 major;
+      __u32 minor;
+    } v4l;
+    struct {
+      __u32 major;
+      __u32 minor;
+    } fb;
+    int dvb;
+    __u8 raw[184];
+  };
+};
+#define MEDIA_PAD_FL_SINK (1 << 0)
+#define MEDIA_PAD_FL_SOURCE (1 << 1)
+#define MEDIA_PAD_FL_MUST_CONNECT (1 << 2)
+struct media_pad_desc {
+  __u32 entity;
+  __u16 index;
+  __u32 flags;
+  __u32 reserved[2];
+};
+#define MEDIA_LNK_FL_ENABLED (1 << 0)
+#define MEDIA_LNK_FL_IMMUTABLE (1 << 1)
+#define MEDIA_LNK_FL_DYNAMIC (1 << 2)
+#define MEDIA_LNK_FL_LINK_TYPE (0xf << 28)
+#define MEDIA_LNK_FL_DATA_LINK (0 << 28)
+#define MEDIA_LNK_FL_INTERFACE_LINK (1 << 28)
+struct media_link_desc {
+  struct media_pad_desc source;
+  struct media_pad_desc sink;
+  __u32 flags;
+  __u32 reserved[2];
+};
+struct media_links_enum {
+  __u32 entity;
+  struct media_pad_desc __user * pads;
+  struct media_link_desc __user * links;
+  __u32 reserved[4];
+};
+#define MEDIA_INTF_T_DVB_BASE 0x00000100
+#define MEDIA_INTF_T_V4L_BASE 0x00000200
+#define MEDIA_INTF_T_DVB_FE (MEDIA_INTF_T_DVB_BASE)
+#define MEDIA_INTF_T_DVB_DEMUX (MEDIA_INTF_T_DVB_BASE + 1)
+#define MEDIA_INTF_T_DVB_DVR (MEDIA_INTF_T_DVB_BASE + 2)
+#define MEDIA_INTF_T_DVB_CA (MEDIA_INTF_T_DVB_BASE + 3)
+#define MEDIA_INTF_T_DVB_NET (MEDIA_INTF_T_DVB_BASE + 4)
+#define MEDIA_INTF_T_V4L_VIDEO (MEDIA_INTF_T_V4L_BASE)
+#define MEDIA_INTF_T_V4L_VBI (MEDIA_INTF_T_V4L_BASE + 1)
+#define MEDIA_INTF_T_V4L_RADIO (MEDIA_INTF_T_V4L_BASE + 2)
+#define MEDIA_INTF_T_V4L_SUBDEV (MEDIA_INTF_T_V4L_BASE + 3)
+#define MEDIA_INTF_T_V4L_SWRADIO (MEDIA_INTF_T_V4L_BASE + 4)
+#define MEDIA_INTF_T_V4L_TOUCH (MEDIA_INTF_T_V4L_BASE + 5)
+#define MEDIA_INTF_T_ALSA_BASE 0x00000300
+#define MEDIA_INTF_T_ALSA_PCM_CAPTURE (MEDIA_INTF_T_ALSA_BASE)
+#define MEDIA_INTF_T_ALSA_PCM_PLAYBACK (MEDIA_INTF_T_ALSA_BASE + 1)
+#define MEDIA_INTF_T_ALSA_CONTROL (MEDIA_INTF_T_ALSA_BASE + 2)
+#define MEDIA_V2_ENTITY_HAS_FLAGS(media_version) ((media_version) >= ((4 << 16) | (19 << 8) | 0))
+struct media_v2_entity {
+  __u32 id;
+  char name[64];
+  __u32 function;
+  __u32 flags;
+  __u32 reserved[5];
+} __attribute__((packed));
+struct media_v2_intf_devnode {
+  __u32 major;
+  __u32 minor;
+} __attribute__((packed));
+struct media_v2_interface {
+  __u32 id;
+  __u32 intf_type;
+  __u32 flags;
+  __u32 reserved[9];
+  union {
+    struct media_v2_intf_devnode devnode;
+    __u32 raw[16];
+  };
+} __attribute__((packed));
+#define MEDIA_V2_PAD_HAS_INDEX(media_version) ((media_version) >= ((4 << 16) | (19 << 8) | 0))
+struct media_v2_pad {
+  __u32 id;
+  __u32 entity_id;
+  __u32 flags;
+  __u32 index;
+  __u32 reserved[4];
+} __attribute__((packed));
+struct media_v2_link {
+  __u32 id;
+  __u32 source_id;
+  __u32 sink_id;
+  __u32 flags;
+  __u32 reserved[6];
+} __attribute__((packed));
+struct media_v2_topology {
+  __u64 topology_version;
+  __u32 num_entities;
+  __u32 reserved1;
+  __u64 ptr_entities;
+  __u32 num_interfaces;
+  __u32 reserved2;
+  __u64 ptr_interfaces;
+  __u32 num_pads;
+  __u32 reserved3;
+  __u64 ptr_pads;
+  __u32 num_links;
+  __u32 reserved4;
+  __u64 ptr_links;
+} __attribute__((packed));
+#define MEDIA_IOC_DEVICE_INFO _IOWR('|', 0x00, struct media_device_info)
+#define MEDIA_IOC_ENUM_ENTITIES _IOWR('|', 0x01, struct media_entity_desc)
+#define MEDIA_IOC_ENUM_LINKS _IOWR('|', 0x02, struct media_links_enum)
+#define MEDIA_IOC_SETUP_LINK _IOWR('|', 0x03, struct media_link_desc)
+#define MEDIA_IOC_G_TOPOLOGY _IOWR('|', 0x04, struct media_v2_topology)
+#define MEDIA_IOC_REQUEST_ALLOC _IOR('|', 0x05, int)
+#define MEDIA_REQUEST_IOC_QUEUE _IO('|', 0x80)
+#define MEDIA_REQUEST_IOC_REINIT _IO('|', 0x81)
+#define MEDIA_ENT_TYPE_SHIFT 16
+#define MEDIA_ENT_TYPE_MASK 0x00ff0000
+#define MEDIA_ENT_SUBTYPE_MASK 0x0000ffff
+#define MEDIA_ENT_T_DEVNODE_UNKNOWN (MEDIA_ENT_F_OLD_BASE | MEDIA_ENT_SUBTYPE_MASK)
+#define MEDIA_ENT_T_DEVNODE MEDIA_ENT_F_OLD_BASE
+#define MEDIA_ENT_T_DEVNODE_V4L MEDIA_ENT_F_IO_V4L
+#define MEDIA_ENT_T_DEVNODE_FB (MEDIA_ENT_F_OLD_BASE + 2)
+#define MEDIA_ENT_T_DEVNODE_ALSA (MEDIA_ENT_F_OLD_BASE + 3)
+#define MEDIA_ENT_T_DEVNODE_DVB (MEDIA_ENT_F_OLD_BASE + 4)
+#define MEDIA_ENT_T_UNKNOWN MEDIA_ENT_F_UNKNOWN
+#define MEDIA_ENT_T_V4L2_VIDEO MEDIA_ENT_F_IO_V4L
+#define MEDIA_ENT_T_V4L2_SUBDEV MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN
+#define MEDIA_ENT_T_V4L2_SUBDEV_SENSOR MEDIA_ENT_F_CAM_SENSOR
+#define MEDIA_ENT_T_V4L2_SUBDEV_FLASH MEDIA_ENT_F_FLASH
+#define MEDIA_ENT_T_V4L2_SUBDEV_LENS MEDIA_ENT_F_LENS
+#define MEDIA_ENT_T_V4L2_SUBDEV_DECODER MEDIA_ENT_F_ATV_DECODER
+#define MEDIA_ENT_T_V4L2_SUBDEV_TUNER MEDIA_ENT_F_TUNER
+#define MEDIA_ENT_F_DTV_DECODER MEDIA_ENT_F_DV_DECODER
+#define MEDIA_INTF_T_ALSA_COMPRESS (MEDIA_INTF_T_ALSA_BASE + 3)
+#define MEDIA_INTF_T_ALSA_RAWMIDI (MEDIA_INTF_T_ALSA_BASE + 4)
+#define MEDIA_INTF_T_ALSA_HWDEP (MEDIA_INTF_T_ALSA_BASE + 5)
+#define MEDIA_INTF_T_ALSA_SEQUENCER (MEDIA_INTF_T_ALSA_BASE + 6)
+#define MEDIA_INTF_T_ALSA_TIMER (MEDIA_INTF_T_ALSA_BASE + 7)
+#define MEDIA_API_VERSION ((0 << 16) | (1 << 8) | 0)
+#endif
diff --git a/i686-linux-musl/include/linux/mei.h b/i686-linux-musl/include/linux/mei.h
new file mode 100644
index 0000000..ed37abd
--- /dev/null
+++ b/i686-linux-musl/include/linux/mei.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_MEI_H
+#define _LINUX_MEI_H
+#include <linux/uuid.h>
+#define IOCTL_MEI_CONNECT_CLIENT _IOWR('H', 0x01, struct mei_connect_client_data)
+struct mei_client {
+  __u32 max_msg_length;
+  __u8 protocol_version;
+  __u8 reserved[3];
+};
+struct mei_connect_client_data {
+  union {
+    uuid_le in_client_uuid;
+    struct mei_client out_client_properties;
+  };
+};
+#define IOCTL_MEI_NOTIFY_SET _IOW('H', 0x02, __u32)
+#define IOCTL_MEI_NOTIFY_GET _IOR('H', 0x03, __u32)
+struct mei_connect_client_vtag {
+  uuid_le in_client_uuid;
+  __u8 vtag;
+  __u8 reserved[3];
+};
+struct mei_connect_client_data_vtag {
+  union {
+    struct mei_connect_client_vtag connect;
+    struct mei_client out_client_properties;
+  };
+};
+#define IOCTL_MEI_CONNECT_CLIENT_VTAG _IOWR('H', 0x04, struct mei_connect_client_data_vtag)
+#endif
diff --git a/i686-linux-musl/include/linux/membarrier.h b/i686-linux-musl/include/linux/membarrier.h
new file mode 100644
index 0000000..43c103b
--- /dev/null
+++ b/i686-linux-musl/include/linux/membarrier.h
@@ -0,0 +1,37 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_MEMBARRIER_H
+#define _UAPI_LINUX_MEMBARRIER_H
+enum membarrier_cmd {
+  MEMBARRIER_CMD_QUERY = 0,
+  MEMBARRIER_CMD_GLOBAL = (1 << 0),
+  MEMBARRIER_CMD_GLOBAL_EXPEDITED = (1 << 1),
+  MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = (1 << 2),
+  MEMBARRIER_CMD_PRIVATE_EXPEDITED = (1 << 3),
+  MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = (1 << 4),
+  MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = (1 << 5),
+  MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = (1 << 6),
+  MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = (1 << 7),
+  MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = (1 << 8),
+  MEMBARRIER_CMD_SHARED = MEMBARRIER_CMD_GLOBAL,
+};
+enum membarrier_cmd_flag {
+  MEMBARRIER_CMD_FLAG_CPU = (1 << 0),
+};
+#endif
diff --git a/i686-linux-musl/include/linux/memfd.h b/i686-linux-musl/include/linux/memfd.h
new file mode 100644
index 0000000..914c076
--- /dev/null
+++ b/i686-linux-musl/include/linux/memfd.h
@@ -0,0 +1,39 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_MEMFD_H
+#define _UAPI_LINUX_MEMFD_H
+#include <asm-generic/hugetlb_encode.h>
+#define MFD_CLOEXEC 0x0001U
+#define MFD_ALLOW_SEALING 0x0002U
+#define MFD_HUGETLB 0x0004U
+#define MFD_HUGE_SHIFT HUGETLB_FLAG_ENCODE_SHIFT
+#define MFD_HUGE_MASK HUGETLB_FLAG_ENCODE_MASK
+#define MFD_HUGE_64KB HUGETLB_FLAG_ENCODE_64KB
+#define MFD_HUGE_512KB HUGETLB_FLAG_ENCODE_512KB
+#define MFD_HUGE_1MB HUGETLB_FLAG_ENCODE_1MB
+#define MFD_HUGE_2MB HUGETLB_FLAG_ENCODE_2MB
+#define MFD_HUGE_8MB HUGETLB_FLAG_ENCODE_8MB
+#define MFD_HUGE_16MB HUGETLB_FLAG_ENCODE_16MB
+#define MFD_HUGE_32MB HUGETLB_FLAG_ENCODE_32MB
+#define MFD_HUGE_256MB HUGETLB_FLAG_ENCODE_256MB
+#define MFD_HUGE_512MB HUGETLB_FLAG_ENCODE_512MB
+#define MFD_HUGE_1GB HUGETLB_FLAG_ENCODE_1GB
+#define MFD_HUGE_2GB HUGETLB_FLAG_ENCODE_2GB
+#define MFD_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB
+#endif
diff --git a/i686-linux-musl/include/linux/mempolicy.h b/i686-linux-musl/include/linux/mempolicy.h
new file mode 100644
index 0000000..f92970f
--- /dev/null
+++ b/i686-linux-musl/include/linux/mempolicy.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_MEMPOLICY_H
+#define _UAPI_LINUX_MEMPOLICY_H
+#include <linux/errno.h>
+enum {
+  MPOL_DEFAULT,
+  MPOL_PREFERRED,
+  MPOL_BIND,
+  MPOL_INTERLEAVE,
+  MPOL_LOCAL,
+  MPOL_PREFERRED_MANY,
+  MPOL_MAX,
+};
+#define MPOL_F_STATIC_NODES (1 << 15)
+#define MPOL_F_RELATIVE_NODES (1 << 14)
+#define MPOL_F_NUMA_BALANCING (1 << 13)
+#define MPOL_MODE_FLAGS (MPOL_F_STATIC_NODES | MPOL_F_RELATIVE_NODES | MPOL_F_NUMA_BALANCING)
+#define MPOL_F_NODE (1 << 0)
+#define MPOL_F_ADDR (1 << 1)
+#define MPOL_F_MEMS_ALLOWED (1 << 2)
+#define MPOL_MF_STRICT (1 << 0)
+#define MPOL_MF_MOVE (1 << 1)
+#define MPOL_MF_MOVE_ALL (1 << 2)
+#define MPOL_MF_LAZY (1 << 3)
+#define MPOL_MF_INTERNAL (1 << 4)
+#define MPOL_MF_VALID (MPOL_MF_STRICT | MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)
+#define MPOL_F_SHARED (1 << 0)
+#define MPOL_F_MOF (1 << 3)
+#define MPOL_F_MORON (1 << 4)
+#define RECLAIM_ZONE (1 << 0)
+#define RECLAIM_WRITE (1 << 1)
+#define RECLAIM_UNMAP (1 << 2)
+#endif
diff --git a/i686-linux-musl/include/linux/meye.h b/i686-linux-musl/include/linux/meye.h
new file mode 100644
index 0000000..a1112c4
--- /dev/null
+++ b/i686-linux-musl/include/linux/meye.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _MEYE_H_
+#define _MEYE_H_
+struct meye_params {
+  unsigned char subsample;
+  unsigned char quality;
+  unsigned char sharpness;
+  unsigned char agc;
+  unsigned char picture;
+  unsigned char framerate;
+};
+#define MEYEIOC_G_PARAMS _IOR('v', BASE_VIDIOC_PRIVATE + 0, struct meye_params)
+#define MEYEIOC_S_PARAMS _IOW('v', BASE_VIDIOC_PRIVATE + 1, struct meye_params)
+#define MEYEIOC_QBUF_CAPT _IOW('v', BASE_VIDIOC_PRIVATE + 2, int)
+#define MEYEIOC_SYNC _IOWR('v', BASE_VIDIOC_PRIVATE + 3, int)
+#define MEYEIOC_STILLCAPT _IO('v', BASE_VIDIOC_PRIVATE + 4)
+#define MEYEIOC_STILLJCAPT _IOR('v', BASE_VIDIOC_PRIVATE + 5, int)
+#define V4L2_CID_MEYE_AGC (V4L2_CID_USER_MEYE_BASE + 0)
+#define V4L2_CID_MEYE_PICTURE (V4L2_CID_USER_MEYE_BASE + 1)
+#define V4L2_CID_MEYE_FRAMERATE (V4L2_CID_USER_MEYE_BASE + 2)
+#endif
diff --git a/i686-linux-musl/include/linux/mii.h b/i686-linux-musl/include/linux/mii.h
new file mode 100644
index 0000000..a489015
--- /dev/null
+++ b/i686-linux-musl/include/linux/mii.h
@@ -0,0 +1,162 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_MII_H__
+#define _UAPI__LINUX_MII_H__
+#include <linux/types.h>
+#include <linux/ethtool.h>
+#define MII_BMCR 0x00
+#define MII_BMSR 0x01
+#define MII_PHYSID1 0x02
+#define MII_PHYSID2 0x03
+#define MII_ADVERTISE 0x04
+#define MII_LPA 0x05
+#define MII_EXPANSION 0x06
+#define MII_CTRL1000 0x09
+#define MII_STAT1000 0x0a
+#define MII_MMD_CTRL 0x0d
+#define MII_MMD_DATA 0x0e
+#define MII_ESTATUS 0x0f
+#define MII_DCOUNTER 0x12
+#define MII_FCSCOUNTER 0x13
+#define MII_NWAYTEST 0x14
+#define MII_RERRCOUNTER 0x15
+#define MII_SREVISION 0x16
+#define MII_RESV1 0x17
+#define MII_LBRERROR 0x18
+#define MII_PHYADDR 0x19
+#define MII_RESV2 0x1a
+#define MII_TPISTATUS 0x1b
+#define MII_NCONFIG 0x1c
+#define BMCR_RESV 0x003f
+#define BMCR_SPEED1000 0x0040
+#define BMCR_CTST 0x0080
+#define BMCR_FULLDPLX 0x0100
+#define BMCR_ANRESTART 0x0200
+#define BMCR_ISOLATE 0x0400
+#define BMCR_PDOWN 0x0800
+#define BMCR_ANENABLE 0x1000
+#define BMCR_SPEED100 0x2000
+#define BMCR_LOOPBACK 0x4000
+#define BMCR_RESET 0x8000
+#define BMCR_SPEED10 0x0000
+#define BMSR_ERCAP 0x0001
+#define BMSR_JCD 0x0002
+#define BMSR_LSTATUS 0x0004
+#define BMSR_ANEGCAPABLE 0x0008
+#define BMSR_RFAULT 0x0010
+#define BMSR_ANEGCOMPLETE 0x0020
+#define BMSR_RESV 0x00c0
+#define BMSR_ESTATEN 0x0100
+#define BMSR_100HALF2 0x0200
+#define BMSR_100FULL2 0x0400
+#define BMSR_10HALF 0x0800
+#define BMSR_10FULL 0x1000
+#define BMSR_100HALF 0x2000
+#define BMSR_100FULL 0x4000
+#define BMSR_100BASE4 0x8000
+#define ADVERTISE_SLCT 0x001f
+#define ADVERTISE_CSMA 0x0001
+#define ADVERTISE_10HALF 0x0020
+#define ADVERTISE_1000XFULL 0x0020
+#define ADVERTISE_10FULL 0x0040
+#define ADVERTISE_1000XHALF 0x0040
+#define ADVERTISE_100HALF 0x0080
+#define ADVERTISE_1000XPAUSE 0x0080
+#define ADVERTISE_100FULL 0x0100
+#define ADVERTISE_1000XPSE_ASYM 0x0100
+#define ADVERTISE_100BASE4 0x0200
+#define ADVERTISE_PAUSE_CAP 0x0400
+#define ADVERTISE_PAUSE_ASYM 0x0800
+#define ADVERTISE_RESV 0x1000
+#define ADVERTISE_RFAULT 0x2000
+#define ADVERTISE_LPACK 0x4000
+#define ADVERTISE_NPAGE 0x8000
+#define ADVERTISE_FULL (ADVERTISE_100FULL | ADVERTISE_10FULL | ADVERTISE_CSMA)
+#define ADVERTISE_ALL (ADVERTISE_10HALF | ADVERTISE_10FULL | ADVERTISE_100HALF | ADVERTISE_100FULL)
+#define LPA_SLCT 0x001f
+#define LPA_10HALF 0x0020
+#define LPA_1000XFULL 0x0020
+#define LPA_10FULL 0x0040
+#define LPA_1000XHALF 0x0040
+#define LPA_100HALF 0x0080
+#define LPA_1000XPAUSE 0x0080
+#define LPA_100FULL 0x0100
+#define LPA_1000XPAUSE_ASYM 0x0100
+#define LPA_100BASE4 0x0200
+#define LPA_PAUSE_CAP 0x0400
+#define LPA_PAUSE_ASYM 0x0800
+#define LPA_RESV 0x1000
+#define LPA_RFAULT 0x2000
+#define LPA_LPACK 0x4000
+#define LPA_NPAGE 0x8000
+#define LPA_DUPLEX (LPA_10FULL | LPA_100FULL)
+#define LPA_100 (LPA_100FULL | LPA_100HALF | LPA_100BASE4)
+#define EXPANSION_NWAY 0x0001
+#define EXPANSION_LCWP 0x0002
+#define EXPANSION_ENABLENPAGE 0x0004
+#define EXPANSION_NPCAPABLE 0x0008
+#define EXPANSION_MFAULTS 0x0010
+#define EXPANSION_RESV 0xffe0
+#define ESTATUS_1000_XFULL 0x8000
+#define ESTATUS_1000_XHALF 0x4000
+#define ESTATUS_1000_TFULL 0x2000
+#define ESTATUS_1000_THALF 0x1000
+#define NWAYTEST_RESV1 0x00ff
+#define NWAYTEST_LOOPBACK 0x0100
+#define NWAYTEST_RESV2 0xfe00
+#define ADVERTISE_SGMII 0x0001
+#define LPA_SGMII 0x0001
+#define LPA_SGMII_SPD_MASK 0x0c00
+#define LPA_SGMII_FULL_DUPLEX 0x1000
+#define LPA_SGMII_DPX_SPD_MASK 0x1C00
+#define LPA_SGMII_10 0x0000
+#define LPA_SGMII_10HALF 0x0000
+#define LPA_SGMII_10FULL 0x1000
+#define LPA_SGMII_100 0x0400
+#define LPA_SGMII_100HALF 0x0400
+#define LPA_SGMII_100FULL 0x1400
+#define LPA_SGMII_1000 0x0800
+#define LPA_SGMII_1000HALF 0x0800
+#define LPA_SGMII_1000FULL 0x1800
+#define LPA_SGMII_LINK 0x8000
+#define ADVERTISE_1000FULL 0x0200
+#define ADVERTISE_1000HALF 0x0100
+#define CTL1000_PREFER_MASTER 0x0400
+#define CTL1000_AS_MASTER 0x0800
+#define CTL1000_ENABLE_MASTER 0x1000
+#define LPA_1000MSFAIL 0x8000
+#define LPA_1000MSRES 0x4000
+#define LPA_1000LOCALRXOK 0x2000
+#define LPA_1000REMRXOK 0x1000
+#define LPA_1000FULL 0x0800
+#define LPA_1000HALF 0x0400
+#define FLOW_CTRL_TX 0x01
+#define FLOW_CTRL_RX 0x02
+#define MII_MMD_CTRL_DEVAD_MASK 0x1f
+#define MII_MMD_CTRL_ADDR 0x0000
+#define MII_MMD_CTRL_NOINCR 0x4000
+#define MII_MMD_CTRL_INCR_RDWT 0x8000
+#define MII_MMD_CTRL_INCR_ON_WT 0xC000
+struct mii_ioctl_data {
+  __u16 phy_id;
+  __u16 reg_num;
+  __u16 val_in;
+  __u16 val_out;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/minix_fs.h b/i686-linux-musl/include/linux/minix_fs.h
new file mode 100644
index 0000000..b6f1c69
--- /dev/null
+++ b/i686-linux-musl/include/linux/minix_fs.h
@@ -0,0 +1,86 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_MINIX_FS_H
+#define _LINUX_MINIX_FS_H
+#include <linux/types.h>
+#include <linux/magic.h>
+#define MINIX_ROOT_INO 1
+#define MINIX_LINK_MAX 250
+#define MINIX2_LINK_MAX 65530
+#define MINIX_I_MAP_SLOTS 8
+#define MINIX_Z_MAP_SLOTS 64
+#define MINIX_VALID_FS 0x0001
+#define MINIX_ERROR_FS 0x0002
+#define MINIX_INODES_PER_BLOCK ((BLOCK_SIZE) / (sizeof(struct minix_inode)))
+struct minix_inode {
+  __u16 i_mode;
+  __u16 i_uid;
+  __u32 i_size;
+  __u32 i_time;
+  __u8 i_gid;
+  __u8 i_nlinks;
+  __u16 i_zone[9];
+};
+struct minix2_inode {
+  __u16 i_mode;
+  __u16 i_nlinks;
+  __u16 i_uid;
+  __u16 i_gid;
+  __u32 i_size;
+  __u32 i_atime;
+  __u32 i_mtime;
+  __u32 i_ctime;
+  __u32 i_zone[10];
+};
+struct minix_super_block {
+  __u16 s_ninodes;
+  __u16 s_nzones;
+  __u16 s_imap_blocks;
+  __u16 s_zmap_blocks;
+  __u16 s_firstdatazone;
+  __u16 s_log_zone_size;
+  __u32 s_max_size;
+  __u16 s_magic;
+  __u16 s_state;
+  __u32 s_zones;
+};
+struct minix3_super_block {
+  __u32 s_ninodes;
+  __u16 s_pad0;
+  __u16 s_imap_blocks;
+  __u16 s_zmap_blocks;
+  __u16 s_firstdatazone;
+  __u16 s_log_zone_size;
+  __u16 s_pad1;
+  __u32 s_max_size;
+  __u32 s_zones;
+  __u16 s_magic;
+  __u16 s_pad2;
+  __u16 s_blocksize;
+  __u8 s_disk_version;
+};
+struct minix_dir_entry {
+  __u16 inode;
+  char name[0];
+};
+struct minix3_dir_entry {
+  __u32 inode;
+  char name[0];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/misc/bcm_vk.h b/i686-linux-musl/include/linux/misc/bcm_vk.h
new file mode 100644
index 0000000..b1b966d
--- /dev/null
+++ b/i686-linux-musl/include/linux/misc/bcm_vk.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_LINUX_MISC_BCM_VK_H
+#define __UAPI_LINUX_MISC_BCM_VK_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define BCM_VK_MAX_FILENAME 64
+struct vk_image {
+  __u32 type;
+#define VK_IMAGE_TYPE_BOOT1 1
+#define VK_IMAGE_TYPE_BOOT2 2
+  __u8 filename[BCM_VK_MAX_FILENAME];
+};
+struct vk_reset {
+  __u32 arg1;
+  __u32 arg2;
+};
+#define VK_MAGIC 0x5e
+#define VK_IOCTL_LOAD_IMAGE _IOW(VK_MAGIC, 0x2, struct vk_image)
+#define VK_IOCTL_RESET _IOW(VK_MAGIC, 0x4, struct vk_reset)
+#define VK_BAR_FWSTS 0x41c
+#define VK_BAR_COP_FWSTS 0x428
+#define VK_FWSTS_RELOCATION_ENTRY (1UL << 0)
+#define VK_FWSTS_RELOCATION_EXIT (1UL << 1)
+#define VK_FWSTS_INIT_START (1UL << 2)
+#define VK_FWSTS_ARCH_INIT_DONE (1UL << 3)
+#define VK_FWSTS_PRE_KNL1_INIT_DONE (1UL << 4)
+#define VK_FWSTS_PRE_KNL2_INIT_DONE (1UL << 5)
+#define VK_FWSTS_POST_KNL_INIT_DONE (1UL << 6)
+#define VK_FWSTS_INIT_DONE (1UL << 7)
+#define VK_FWSTS_APP_INIT_START (1UL << 8)
+#define VK_FWSTS_APP_INIT_DONE (1UL << 9)
+#define VK_FWSTS_MASK 0xffffffff
+#define VK_FWSTS_READY (VK_FWSTS_INIT_START | VK_FWSTS_ARCH_INIT_DONE | VK_FWSTS_PRE_KNL1_INIT_DONE | VK_FWSTS_PRE_KNL2_INIT_DONE | VK_FWSTS_POST_KNL_INIT_DONE | VK_FWSTS_INIT_DONE | VK_FWSTS_APP_INIT_START | VK_FWSTS_APP_INIT_DONE)
+#define VK_FWSTS_APP_DEINIT_START (1UL << 23)
+#define VK_FWSTS_APP_DEINIT_DONE (1UL << 24)
+#define VK_FWSTS_DRV_DEINIT_START (1UL << 25)
+#define VK_FWSTS_DRV_DEINIT_DONE (1UL << 26)
+#define VK_FWSTS_RESET_DONE (1UL << 27)
+#define VK_FWSTS_DEINIT_TRIGGERED (VK_FWSTS_APP_DEINIT_START | VK_FWSTS_APP_DEINIT_DONE | VK_FWSTS_DRV_DEINIT_START | VK_FWSTS_DRV_DEINIT_DONE)
+#define VK_FWSTS_RESET_REASON_SHIFT 28
+#define VK_FWSTS_RESET_REASON_MASK (0xf << VK_FWSTS_RESET_REASON_SHIFT)
+#define VK_FWSTS_RESET_SYS_PWRUP (0x0 << VK_FWSTS_RESET_REASON_SHIFT)
+#define VK_FWSTS_RESET_MBOX_DB (0x1 << VK_FWSTS_RESET_REASON_SHIFT)
+#define VK_FWSTS_RESET_M7_WDOG (0x2 << VK_FWSTS_RESET_REASON_SHIFT)
+#define VK_FWSTS_RESET_TEMP (0x3 << VK_FWSTS_RESET_REASON_SHIFT)
+#define VK_FWSTS_RESET_PCI_FLR (0x4 << VK_FWSTS_RESET_REASON_SHIFT)
+#define VK_FWSTS_RESET_PCI_HOT (0x5 << VK_FWSTS_RESET_REASON_SHIFT)
+#define VK_FWSTS_RESET_PCI_WARM (0x6 << VK_FWSTS_RESET_REASON_SHIFT)
+#define VK_FWSTS_RESET_PCI_COLD (0x7 << VK_FWSTS_RESET_REASON_SHIFT)
+#define VK_FWSTS_RESET_L1 (0x8 << VK_FWSTS_RESET_REASON_SHIFT)
+#define VK_FWSTS_RESET_L0 (0x9 << VK_FWSTS_RESET_REASON_SHIFT)
+#define VK_FWSTS_RESET_UNKNOWN (0xf << VK_FWSTS_RESET_REASON_SHIFT)
+#endif
diff --git a/i686-linux-musl/include/linux/mman.h b/i686-linux-musl/include/linux/mman.h
new file mode 100644
index 0000000..9fdccf6
--- /dev/null
+++ b/i686-linux-musl/include/linux/mman.h
@@ -0,0 +1,47 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_MMAN_H
+#define _UAPI_LINUX_MMAN_H
+#include <asm/mman.h>
+#include <asm-generic/hugetlb_encode.h>
+#define MREMAP_MAYMOVE 1
+#define MREMAP_FIXED 2
+#define MREMAP_DONTUNMAP 4
+#define OVERCOMMIT_GUESS 0
+#define OVERCOMMIT_ALWAYS 1
+#define OVERCOMMIT_NEVER 2
+#define MAP_SHARED 0x01
+#define MAP_PRIVATE 0x02
+#define MAP_SHARED_VALIDATE 0x03
+#define MAP_HUGE_SHIFT HUGETLB_FLAG_ENCODE_SHIFT
+#define MAP_HUGE_MASK HUGETLB_FLAG_ENCODE_MASK
+#define MAP_HUGE_16KB HUGETLB_FLAG_ENCODE_16KB
+#define MAP_HUGE_64KB HUGETLB_FLAG_ENCODE_64KB
+#define MAP_HUGE_512KB HUGETLB_FLAG_ENCODE_512KB
+#define MAP_HUGE_1MB HUGETLB_FLAG_ENCODE_1MB
+#define MAP_HUGE_2MB HUGETLB_FLAG_ENCODE_2MB
+#define MAP_HUGE_8MB HUGETLB_FLAG_ENCODE_8MB
+#define MAP_HUGE_16MB HUGETLB_FLAG_ENCODE_16MB
+#define MAP_HUGE_32MB HUGETLB_FLAG_ENCODE_32MB
+#define MAP_HUGE_256MB HUGETLB_FLAG_ENCODE_256MB
+#define MAP_HUGE_512MB HUGETLB_FLAG_ENCODE_512MB
+#define MAP_HUGE_1GB HUGETLB_FLAG_ENCODE_1GB
+#define MAP_HUGE_2GB HUGETLB_FLAG_ENCODE_2GB
+#define MAP_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB
+#endif
diff --git a/i686-linux-musl/include/linux/mmc/ioctl.h b/i686-linux-musl/include/linux/mmc/ioctl.h
new file mode 100644
index 0000000..afea6a5
--- /dev/null
+++ b/i686-linux-musl/include/linux/mmc/ioctl.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef LINUX_MMC_IOCTL_H
+#define LINUX_MMC_IOCTL_H
+#include <linux/types.h>
+#include <linux/major.h>
+struct mmc_ioc_cmd {
+  int write_flag;
+  int is_acmd;
+  __u32 opcode;
+  __u32 arg;
+  __u32 response[4];
+  unsigned int flags;
+  unsigned int blksz;
+  unsigned int blocks;
+  unsigned int postsleep_min_us;
+  unsigned int postsleep_max_us;
+  unsigned int data_timeout_ns;
+  unsigned int cmd_timeout_ms;
+  __u32 __pad;
+  __u64 data_ptr;
+};
+#define mmc_ioc_cmd_set_data(ic,ptr) ic.data_ptr = (__u64) (unsigned long) ptr
+struct mmc_ioc_multi_cmd {
+  __u64 num_of_cmds;
+  struct mmc_ioc_cmd cmds[0];
+};
+#define MMC_IOC_CMD _IOWR(MMC_BLOCK_MAJOR, 0, struct mmc_ioc_cmd)
+#define MMC_IOC_MULTI_CMD _IOWR(MMC_BLOCK_MAJOR, 1, struct mmc_ioc_multi_cmd)
+#define MMC_IOC_MAX_BYTES (512L * 1024)
+#define MMC_IOC_MAX_CMDS 255
+#endif
diff --git a/i686-linux-musl/include/linux/mmtimer.h b/i686-linux-musl/include/linux/mmtimer.h
new file mode 100644
index 0000000..babdb24
--- /dev/null
+++ b/i686-linux-musl/include/linux/mmtimer.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_MMTIMER_H
+#define _LINUX_MMTIMER_H
+#define MMTIMER_IOCTL_BASE 'm'
+#define MMTIMER_GETOFFSET _IO(MMTIMER_IOCTL_BASE, 0)
+#define MMTIMER_GETRES _IOR(MMTIMER_IOCTL_BASE, 1, unsigned long)
+#define MMTIMER_GETFREQ _IOR(MMTIMER_IOCTL_BASE, 2, unsigned long)
+#define MMTIMER_GETBITS _IO(MMTIMER_IOCTL_BASE, 4)
+#define MMTIMER_MMAPAVAIL _IO(MMTIMER_IOCTL_BASE, 6)
+#define MMTIMER_GETCOUNTER _IOR(MMTIMER_IOCTL_BASE, 9, unsigned long)
+#endif
diff --git a/i686-linux-musl/include/linux/module.h b/i686-linux-musl/include/linux/module.h
new file mode 100644
index 0000000..f08dc67
--- /dev/null
+++ b/i686-linux-musl/include/linux/module.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_MODULE_H
+#define _UAPI_LINUX_MODULE_H
+#define MODULE_INIT_IGNORE_MODVERSIONS 1
+#define MODULE_INIT_IGNORE_VERMAGIC 2
+#endif
diff --git a/i686-linux-musl/include/linux/mount.h b/i686-linux-musl/include/linux/mount.h
new file mode 100644
index 0000000..2099b48
--- /dev/null
+++ b/i686-linux-musl/include/linux/mount.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_MOUNT_H
+#define _UAPI_LINUX_MOUNT_H
+#include <linux/types.h>
+#define MS_RDONLY 1
+#define MS_NOSUID 2
+#define MS_NODEV 4
+#define MS_NOEXEC 8
+#define MS_SYNCHRONOUS 16
+#define MS_REMOUNT 32
+#define MS_MANDLOCK 64
+#define MS_DIRSYNC 128
+#define MS_NOSYMFOLLOW 256
+#define MS_NOATIME 1024
+#define MS_NODIRATIME 2048
+#define MS_BIND 4096
+#define MS_MOVE 8192
+#define MS_REC 16384
+#define MS_VERBOSE 32768
+#define MS_SILENT 32768
+#define MS_POSIXACL (1 << 16)
+#define MS_UNBINDABLE (1 << 17)
+#define MS_PRIVATE (1 << 18)
+#define MS_SLAVE (1 << 19)
+#define MS_SHARED (1 << 20)
+#define MS_RELATIME (1 << 21)
+#define MS_KERNMOUNT (1 << 22)
+#define MS_I_VERSION (1 << 23)
+#define MS_STRICTATIME (1 << 24)
+#define MS_LAZYTIME (1 << 25)
+#define MS_SUBMOUNT (1 << 26)
+#define MS_NOREMOTELOCK (1 << 27)
+#define MS_NOSEC (1 << 28)
+#define MS_BORN (1 << 29)
+#define MS_ACTIVE (1 << 30)
+#define MS_NOUSER (1 << 31)
+#define MS_RMT_MASK (MS_RDONLY | MS_SYNCHRONOUS | MS_MANDLOCK | MS_I_VERSION | MS_LAZYTIME)
+#define MS_MGC_VAL 0xC0ED0000
+#define MS_MGC_MSK 0xffff0000
+#define OPEN_TREE_CLONE 1
+#define OPEN_TREE_CLOEXEC O_CLOEXEC
+#define MOVE_MOUNT_F_SYMLINKS 0x00000001
+#define MOVE_MOUNT_F_AUTOMOUNTS 0x00000002
+#define MOVE_MOUNT_F_EMPTY_PATH 0x00000004
+#define MOVE_MOUNT_T_SYMLINKS 0x00000010
+#define MOVE_MOUNT_T_AUTOMOUNTS 0x00000020
+#define MOVE_MOUNT_T_EMPTY_PATH 0x00000040
+#define MOVE_MOUNT_SET_GROUP 0x00000100
+#define MOVE_MOUNT__MASK 0x00000177
+#define FSOPEN_CLOEXEC 0x00000001
+#define FSPICK_CLOEXEC 0x00000001
+#define FSPICK_SYMLINK_NOFOLLOW 0x00000002
+#define FSPICK_NO_AUTOMOUNT 0x00000004
+#define FSPICK_EMPTY_PATH 0x00000008
+enum fsconfig_command {
+  FSCONFIG_SET_FLAG = 0,
+  FSCONFIG_SET_STRING = 1,
+  FSCONFIG_SET_BINARY = 2,
+  FSCONFIG_SET_PATH = 3,
+  FSCONFIG_SET_PATH_EMPTY = 4,
+  FSCONFIG_SET_FD = 5,
+  FSCONFIG_CMD_CREATE = 6,
+  FSCONFIG_CMD_RECONFIGURE = 7,
+};
+#define FSMOUNT_CLOEXEC 0x00000001
+#define MOUNT_ATTR_RDONLY 0x00000001
+#define MOUNT_ATTR_NOSUID 0x00000002
+#define MOUNT_ATTR_NODEV 0x00000004
+#define MOUNT_ATTR_NOEXEC 0x00000008
+#define MOUNT_ATTR__ATIME 0x00000070
+#define MOUNT_ATTR_RELATIME 0x00000000
+#define MOUNT_ATTR_NOATIME 0x00000010
+#define MOUNT_ATTR_STRICTATIME 0x00000020
+#define MOUNT_ATTR_NODIRATIME 0x00000080
+#define MOUNT_ATTR_IDMAP 0x00100000
+#define MOUNT_ATTR_NOSYMFOLLOW 0x00200000
+struct mount_attr {
+  __u64 attr_set;
+  __u64 attr_clr;
+  __u64 propagation;
+  __u64 userns_fd;
+};
+#define MOUNT_ATTR_SIZE_VER0 32
+#endif
diff --git a/i686-linux-musl/include/linux/mpls.h b/i686-linux-musl/include/linux/mpls.h
new file mode 100644
index 0000000..86d8e07
--- /dev/null
+++ b/i686-linux-musl/include/linux/mpls.h
@@ -0,0 +1,60 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_MPLS_H
+#define _UAPI_MPLS_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+struct mpls_label {
+  __be32 entry;
+};
+#define MPLS_LS_LABEL_MASK 0xFFFFF000
+#define MPLS_LS_LABEL_SHIFT 12
+#define MPLS_LS_TC_MASK 0x00000E00
+#define MPLS_LS_TC_SHIFT 9
+#define MPLS_LS_S_MASK 0x00000100
+#define MPLS_LS_S_SHIFT 8
+#define MPLS_LS_TTL_MASK 0x000000FF
+#define MPLS_LS_TTL_SHIFT 0
+#define MPLS_LABEL_IPV4NULL 0
+#define MPLS_LABEL_RTALERT 1
+#define MPLS_LABEL_IPV6NULL 2
+#define MPLS_LABEL_IMPLNULL 3
+#define MPLS_LABEL_ENTROPY 7
+#define MPLS_LABEL_GAL 13
+#define MPLS_LABEL_OAMALERT 14
+#define MPLS_LABEL_EXTENSION 15
+#define MPLS_LABEL_FIRST_UNRESERVED 16
+enum {
+  MPLS_STATS_UNSPEC,
+  MPLS_STATS_LINK,
+  __MPLS_STATS_MAX,
+};
+#define MPLS_STATS_MAX (__MPLS_STATS_MAX - 1)
+struct mpls_link_stats {
+  __u64 rx_packets;
+  __u64 tx_packets;
+  __u64 rx_bytes;
+  __u64 tx_bytes;
+  __u64 rx_errors;
+  __u64 tx_errors;
+  __u64 rx_dropped;
+  __u64 tx_dropped;
+  __u64 rx_noroute;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/mpls_iptunnel.h b/i686-linux-musl/include/linux/mpls_iptunnel.h
new file mode 100644
index 0000000..473cb0d
--- /dev/null
+++ b/i686-linux-musl/include/linux/mpls_iptunnel.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_MPLS_IPTUNNEL_H
+#define _UAPI_LINUX_MPLS_IPTUNNEL_H
+enum {
+  MPLS_IPTUNNEL_UNSPEC,
+  MPLS_IPTUNNEL_DST,
+  MPLS_IPTUNNEL_TTL,
+  __MPLS_IPTUNNEL_MAX,
+};
+#define MPLS_IPTUNNEL_MAX (__MPLS_IPTUNNEL_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/mptcp.h b/i686-linux-musl/include/linux/mptcp.h
new file mode 100644
index 0000000..67b0ce3
--- /dev/null
+++ b/i686-linux-musl/include/linux/mptcp.h
@@ -0,0 +1,173 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_MPTCP_H
+#define _UAPI_MPTCP_H
+#include <linux/const.h>
+#include <linux/types.h>
+#include <linux/in.h>
+#include <linux/in6.h>
+#include <linux/socket.h>
+#include <sys/socket.h>
+#define MPTCP_SUBFLOW_FLAG_MCAP_REM _BITUL(0)
+#define MPTCP_SUBFLOW_FLAG_MCAP_LOC _BITUL(1)
+#define MPTCP_SUBFLOW_FLAG_JOIN_REM _BITUL(2)
+#define MPTCP_SUBFLOW_FLAG_JOIN_LOC _BITUL(3)
+#define MPTCP_SUBFLOW_FLAG_BKUP_REM _BITUL(4)
+#define MPTCP_SUBFLOW_FLAG_BKUP_LOC _BITUL(5)
+#define MPTCP_SUBFLOW_FLAG_FULLY_ESTABLISHED _BITUL(6)
+#define MPTCP_SUBFLOW_FLAG_CONNECTED _BITUL(7)
+#define MPTCP_SUBFLOW_FLAG_MAPVALID _BITUL(8)
+enum {
+  MPTCP_SUBFLOW_ATTR_UNSPEC,
+  MPTCP_SUBFLOW_ATTR_TOKEN_REM,
+  MPTCP_SUBFLOW_ATTR_TOKEN_LOC,
+  MPTCP_SUBFLOW_ATTR_RELWRITE_SEQ,
+  MPTCP_SUBFLOW_ATTR_MAP_SEQ,
+  MPTCP_SUBFLOW_ATTR_MAP_SFSEQ,
+  MPTCP_SUBFLOW_ATTR_SSN_OFFSET,
+  MPTCP_SUBFLOW_ATTR_MAP_DATALEN,
+  MPTCP_SUBFLOW_ATTR_FLAGS,
+  MPTCP_SUBFLOW_ATTR_ID_REM,
+  MPTCP_SUBFLOW_ATTR_ID_LOC,
+  MPTCP_SUBFLOW_ATTR_PAD,
+  __MPTCP_SUBFLOW_ATTR_MAX
+};
+#define MPTCP_SUBFLOW_ATTR_MAX (__MPTCP_SUBFLOW_ATTR_MAX - 1)
+#define MPTCP_PM_NAME "mptcp_pm"
+#define MPTCP_PM_CMD_GRP_NAME "mptcp_pm_cmds"
+#define MPTCP_PM_EV_GRP_NAME "mptcp_pm_events"
+#define MPTCP_PM_VER 0x1
+enum {
+  MPTCP_PM_ATTR_UNSPEC,
+  MPTCP_PM_ATTR_ADDR,
+  MPTCP_PM_ATTR_RCV_ADD_ADDRS,
+  MPTCP_PM_ATTR_SUBFLOWS,
+  __MPTCP_PM_ATTR_MAX
+};
+#define MPTCP_PM_ATTR_MAX (__MPTCP_PM_ATTR_MAX - 1)
+enum {
+  MPTCP_PM_ADDR_ATTR_UNSPEC,
+  MPTCP_PM_ADDR_ATTR_FAMILY,
+  MPTCP_PM_ADDR_ATTR_ID,
+  MPTCP_PM_ADDR_ATTR_ADDR4,
+  MPTCP_PM_ADDR_ATTR_ADDR6,
+  MPTCP_PM_ADDR_ATTR_PORT,
+  MPTCP_PM_ADDR_ATTR_FLAGS,
+  MPTCP_PM_ADDR_ATTR_IF_IDX,
+  __MPTCP_PM_ADDR_ATTR_MAX
+};
+#define MPTCP_PM_ADDR_ATTR_MAX (__MPTCP_PM_ADDR_ATTR_MAX - 1)
+#define MPTCP_PM_ADDR_FLAG_SIGNAL (1 << 0)
+#define MPTCP_PM_ADDR_FLAG_SUBFLOW (1 << 1)
+#define MPTCP_PM_ADDR_FLAG_BACKUP (1 << 2)
+#define MPTCP_PM_ADDR_FLAG_FULLMESH (1 << 3)
+enum {
+  MPTCP_PM_CMD_UNSPEC,
+  MPTCP_PM_CMD_ADD_ADDR,
+  MPTCP_PM_CMD_DEL_ADDR,
+  MPTCP_PM_CMD_GET_ADDR,
+  MPTCP_PM_CMD_FLUSH_ADDRS,
+  MPTCP_PM_CMD_SET_LIMITS,
+  MPTCP_PM_CMD_GET_LIMITS,
+  MPTCP_PM_CMD_SET_FLAGS,
+  __MPTCP_PM_CMD_AFTER_LAST
+};
+#define MPTCP_INFO_FLAG_FALLBACK _BITUL(0)
+#define MPTCP_INFO_FLAG_REMOTE_KEY_RECEIVED _BITUL(1)
+struct mptcp_info {
+  __u8 mptcpi_subflows;
+  __u8 mptcpi_add_addr_signal;
+  __u8 mptcpi_add_addr_accepted;
+  __u8 mptcpi_subflows_max;
+  __u8 mptcpi_add_addr_signal_max;
+  __u8 mptcpi_add_addr_accepted_max;
+  __u32 mptcpi_flags;
+  __u32 mptcpi_token;
+  __u64 mptcpi_write_seq;
+  __u64 mptcpi_snd_una;
+  __u64 mptcpi_rcv_nxt;
+  __u8 mptcpi_local_addr_used;
+  __u8 mptcpi_local_addr_max;
+  __u8 mptcpi_csum_enabled;
+};
+enum mptcp_event_type {
+  MPTCP_EVENT_UNSPEC = 0,
+  MPTCP_EVENT_CREATED = 1,
+  MPTCP_EVENT_ESTABLISHED = 2,
+  MPTCP_EVENT_CLOSED = 3,
+  MPTCP_EVENT_ANNOUNCED = 6,
+  MPTCP_EVENT_REMOVED = 7,
+  MPTCP_EVENT_SUB_ESTABLISHED = 10,
+  MPTCP_EVENT_SUB_CLOSED = 11,
+  MPTCP_EVENT_SUB_PRIORITY = 13,
+};
+enum mptcp_event_attr {
+  MPTCP_ATTR_UNSPEC = 0,
+  MPTCP_ATTR_TOKEN,
+  MPTCP_ATTR_FAMILY,
+  MPTCP_ATTR_LOC_ID,
+  MPTCP_ATTR_REM_ID,
+  MPTCP_ATTR_SADDR4,
+  MPTCP_ATTR_SADDR6,
+  MPTCP_ATTR_DADDR4,
+  MPTCP_ATTR_DADDR6,
+  MPTCP_ATTR_SPORT,
+  MPTCP_ATTR_DPORT,
+  MPTCP_ATTR_BACKUP,
+  MPTCP_ATTR_ERROR,
+  MPTCP_ATTR_FLAGS,
+  MPTCP_ATTR_TIMEOUT,
+  MPTCP_ATTR_IF_IDX,
+  MPTCP_ATTR_RESET_REASON,
+  MPTCP_ATTR_RESET_FLAGS,
+  __MPTCP_ATTR_AFTER_LAST
+};
+#define MPTCP_ATTR_MAX (__MPTCP_ATTR_AFTER_LAST - 1)
+#define MPTCP_RST_EUNSPEC 0
+#define MPTCP_RST_EMPTCP 1
+#define MPTCP_RST_ERESOURCE 2
+#define MPTCP_RST_EPROHIBIT 3
+#define MPTCP_RST_EWQ2BIG 4
+#define MPTCP_RST_EBADPERF 5
+#define MPTCP_RST_EMIDDLEBOX 6
+struct mptcp_subflow_data {
+  __u32 size_subflow_data;
+  __u32 num_subflows;
+  __u32 size_kernel;
+  __u32 size_user;
+} __attribute__((aligned(8)));
+struct mptcp_subflow_addrs {
+  union {
+    __kernel_sa_family_t sa_family;
+    struct sockaddr sa_local;
+    struct sockaddr_in sin_local;
+    struct sockaddr_in6 sin6_local;
+    struct __kernel_sockaddr_storage ss_local;
+  };
+  union {
+    struct sockaddr sa_remote;
+    struct sockaddr_in sin_remote;
+    struct sockaddr_in6 sin6_remote;
+    struct __kernel_sockaddr_storage ss_remote;
+  };
+};
+#define MPTCP_INFO 1
+#define MPTCP_TCPINFO 2
+#define MPTCP_SUBFLOW_ADDRS 3
+#endif
diff --git a/i686-linux-musl/include/linux/mqueue.h b/i686-linux-musl/include/linux/mqueue.h
new file mode 100644
index 0000000..a540830
--- /dev/null
+++ b/i686-linux-musl/include/linux/mqueue.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_MQUEUE_H
+#define _LINUX_MQUEUE_H
+#include <linux/types.h>
+#define MQ_PRIO_MAX 32768
+#define MQ_BYTES_MAX 819200
+struct mq_attr {
+  __kernel_long_t mq_flags;
+  __kernel_long_t mq_maxmsg;
+  __kernel_long_t mq_msgsize;
+  __kernel_long_t mq_curmsgs;
+  __kernel_long_t __reserved[4];
+};
+#define NOTIFY_NONE 0
+#define NOTIFY_WOKENUP 1
+#define NOTIFY_REMOVED 2
+#define NOTIFY_COOKIE_LEN 32
+#endif
diff --git a/i686-linux-musl/include/linux/mroute.h b/i686-linux-musl/include/linux/mroute.h
new file mode 100644
index 0000000..e934d09
--- /dev/null
+++ b/i686-linux-musl/include/linux/mroute.h
@@ -0,0 +1,152 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_MROUTE_H
+#define _UAPI__LINUX_MROUTE_H
+#include <linux/sockios.h>
+#include <linux/types.h>
+#include <linux/in.h>
+#define MRT_BASE 200
+#define MRT_INIT (MRT_BASE)
+#define MRT_DONE (MRT_BASE + 1)
+#define MRT_ADD_VIF (MRT_BASE + 2)
+#define MRT_DEL_VIF (MRT_BASE + 3)
+#define MRT_ADD_MFC (MRT_BASE + 4)
+#define MRT_DEL_MFC (MRT_BASE + 5)
+#define MRT_VERSION (MRT_BASE + 6)
+#define MRT_ASSERT (MRT_BASE + 7)
+#define MRT_PIM (MRT_BASE + 8)
+#define MRT_TABLE (MRT_BASE + 9)
+#define MRT_ADD_MFC_PROXY (MRT_BASE + 10)
+#define MRT_DEL_MFC_PROXY (MRT_BASE + 11)
+#define MRT_FLUSH (MRT_BASE + 12)
+#define MRT_MAX (MRT_BASE + 12)
+#define SIOCGETVIFCNT SIOCPROTOPRIVATE
+#define SIOCGETSGCNT (SIOCPROTOPRIVATE + 1)
+#define SIOCGETRPF (SIOCPROTOPRIVATE + 2)
+#define MRT_FLUSH_MFC 1
+#define MRT_FLUSH_MFC_STATIC 2
+#define MRT_FLUSH_VIFS 4
+#define MRT_FLUSH_VIFS_STATIC 8
+#define MAXVIFS 32
+typedef unsigned long vifbitmap_t;
+typedef unsigned short vifi_t;
+#define ALL_VIFS ((vifi_t) (- 1))
+#define VIFM_SET(n,m) ((m) |= (1 << (n)))
+#define VIFM_CLR(n,m) ((m) &= ~(1 << (n)))
+#define VIFM_ISSET(n,m) ((m) & (1 << (n)))
+#define VIFM_CLRALL(m) ((m) = 0)
+#define VIFM_COPY(mfrom,mto) ((mto) = (mfrom))
+#define VIFM_SAME(m1,m2) ((m1) == (m2))
+struct vifctl {
+  vifi_t vifc_vifi;
+  unsigned char vifc_flags;
+  unsigned char vifc_threshold;
+  unsigned int vifc_rate_limit;
+  union {
+    struct in_addr vifc_lcl_addr;
+    int vifc_lcl_ifindex;
+  };
+  struct in_addr vifc_rmt_addr;
+};
+#define VIFF_TUNNEL 0x1
+#define VIFF_SRCRT 0x2
+#define VIFF_REGISTER 0x4
+#define VIFF_USE_IFINDEX 0x8
+struct mfcctl {
+  struct in_addr mfcc_origin;
+  struct in_addr mfcc_mcastgrp;
+  vifi_t mfcc_parent;
+  unsigned char mfcc_ttls[MAXVIFS];
+  unsigned int mfcc_pkt_cnt;
+  unsigned int mfcc_byte_cnt;
+  unsigned int mfcc_wrong_if;
+  int mfcc_expire;
+};
+struct sioc_sg_req {
+  struct in_addr src;
+  struct in_addr grp;
+  unsigned long pktcnt;
+  unsigned long bytecnt;
+  unsigned long wrong_if;
+};
+struct sioc_vif_req {
+  vifi_t vifi;
+  unsigned long icount;
+  unsigned long ocount;
+  unsigned long ibytes;
+  unsigned long obytes;
+};
+struct igmpmsg {
+  __u32 unused1, unused2;
+  unsigned char im_msgtype;
+  unsigned char im_mbz;
+  unsigned char im_vif;
+  unsigned char im_vif_hi;
+  struct in_addr im_src, im_dst;
+};
+enum {
+  IPMRA_TABLE_UNSPEC,
+  IPMRA_TABLE_ID,
+  IPMRA_TABLE_CACHE_RES_QUEUE_LEN,
+  IPMRA_TABLE_MROUTE_REG_VIF_NUM,
+  IPMRA_TABLE_MROUTE_DO_ASSERT,
+  IPMRA_TABLE_MROUTE_DO_PIM,
+  IPMRA_TABLE_VIFS,
+  IPMRA_TABLE_MROUTE_DO_WRVIFWHOLE,
+  __IPMRA_TABLE_MAX
+};
+#define IPMRA_TABLE_MAX (__IPMRA_TABLE_MAX - 1)
+enum {
+  IPMRA_VIF_UNSPEC,
+  IPMRA_VIF,
+  __IPMRA_VIF_MAX
+};
+#define IPMRA_VIF_MAX (__IPMRA_VIF_MAX - 1)
+enum {
+  IPMRA_VIFA_UNSPEC,
+  IPMRA_VIFA_IFINDEX,
+  IPMRA_VIFA_VIF_ID,
+  IPMRA_VIFA_FLAGS,
+  IPMRA_VIFA_BYTES_IN,
+  IPMRA_VIFA_BYTES_OUT,
+  IPMRA_VIFA_PACKETS_IN,
+  IPMRA_VIFA_PACKETS_OUT,
+  IPMRA_VIFA_LOCAL_ADDR,
+  IPMRA_VIFA_REMOTE_ADDR,
+  IPMRA_VIFA_PAD,
+  __IPMRA_VIFA_MAX
+};
+#define IPMRA_VIFA_MAX (__IPMRA_VIFA_MAX - 1)
+enum {
+  IPMRA_CREPORT_UNSPEC,
+  IPMRA_CREPORT_MSGTYPE,
+  IPMRA_CREPORT_VIF_ID,
+  IPMRA_CREPORT_SRC_ADDR,
+  IPMRA_CREPORT_DST_ADDR,
+  IPMRA_CREPORT_PKT,
+  IPMRA_CREPORT_TABLE,
+  __IPMRA_CREPORT_MAX
+};
+#define IPMRA_CREPORT_MAX (__IPMRA_CREPORT_MAX - 1)
+#define MFC_ASSERT_THRESH (3 * HZ)
+#define IGMPMSG_NOCACHE 1
+#define IGMPMSG_WRONGVIF 2
+#define IGMPMSG_WHOLEPKT 3
+#define IGMPMSG_WRVIFWHOLE 4
+#endif
diff --git a/i686-linux-musl/include/linux/mroute6.h b/i686-linux-musl/include/linux/mroute6.h
new file mode 100644
index 0000000..c73765c
--- /dev/null
+++ b/i686-linux-musl/include/linux/mroute6.h
@@ -0,0 +1,112 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_MROUTE6_H
+#define _UAPI__LINUX_MROUTE6_H
+#include <linux/const.h>
+#include <linux/types.h>
+#include <linux/sockios.h>
+#include <linux/in6.h>
+#define MRT6_BASE 200
+#define MRT6_INIT (MRT6_BASE)
+#define MRT6_DONE (MRT6_BASE + 1)
+#define MRT6_ADD_MIF (MRT6_BASE + 2)
+#define MRT6_DEL_MIF (MRT6_BASE + 3)
+#define MRT6_ADD_MFC (MRT6_BASE + 4)
+#define MRT6_DEL_MFC (MRT6_BASE + 5)
+#define MRT6_VERSION (MRT6_BASE + 6)
+#define MRT6_ASSERT (MRT6_BASE + 7)
+#define MRT6_PIM (MRT6_BASE + 8)
+#define MRT6_TABLE (MRT6_BASE + 9)
+#define MRT6_ADD_MFC_PROXY (MRT6_BASE + 10)
+#define MRT6_DEL_MFC_PROXY (MRT6_BASE + 11)
+#define MRT6_FLUSH (MRT6_BASE + 12)
+#define MRT6_MAX (MRT6_BASE + 12)
+#define SIOCGETMIFCNT_IN6 SIOCPROTOPRIVATE
+#define SIOCGETSGCNT_IN6 (SIOCPROTOPRIVATE + 1)
+#define SIOCGETRPF (SIOCPROTOPRIVATE + 2)
+#define MRT6_FLUSH_MFC 1
+#define MRT6_FLUSH_MFC_STATIC 2
+#define MRT6_FLUSH_MIFS 4
+#define MRT6_FLUSH_MIFS_STATIC 8
+#define MAXMIFS 32
+typedef unsigned long mifbitmap_t;
+typedef unsigned short mifi_t;
+#define ALL_MIFS ((mifi_t) (- 1))
+#ifndef IF_SETSIZE
+#define IF_SETSIZE 256
+#endif
+typedef __u32 if_mask;
+#define NIFBITS (sizeof(if_mask) * 8)
+typedef struct if_set {
+  if_mask ifs_bits[__KERNEL_DIV_ROUND_UP(IF_SETSIZE, NIFBITS)];
+} if_set;
+#define IF_SET(n,p) ((p)->ifs_bits[(n) / NIFBITS] |= (1 << ((n) % NIFBITS)))
+#define IF_CLR(n,p) ((p)->ifs_bits[(n) / NIFBITS] &= ~(1 << ((n) % NIFBITS)))
+#define IF_ISSET(n,p) ((p)->ifs_bits[(n) / NIFBITS] & (1 << ((n) % NIFBITS)))
+#define IF_COPY(f,t) bcopy(f, t, sizeof(* (f)))
+#define IF_ZERO(p) bzero(p, sizeof(* (p)))
+struct mif6ctl {
+  mifi_t mif6c_mifi;
+  unsigned char mif6c_flags;
+  unsigned char vifc_threshold;
+  __u16 mif6c_pifi;
+  unsigned int vifc_rate_limit;
+};
+#define MIFF_REGISTER 0x1
+struct mf6cctl {
+  struct sockaddr_in6 mf6cc_origin;
+  struct sockaddr_in6 mf6cc_mcastgrp;
+  mifi_t mf6cc_parent;
+  struct if_set mf6cc_ifset;
+};
+struct sioc_sg_req6 {
+  struct sockaddr_in6 src;
+  struct sockaddr_in6 grp;
+  unsigned long pktcnt;
+  unsigned long bytecnt;
+  unsigned long wrong_if;
+};
+struct sioc_mif_req6 {
+  mifi_t mifi;
+  unsigned long icount;
+  unsigned long ocount;
+  unsigned long ibytes;
+  unsigned long obytes;
+};
+struct mrt6msg {
+#define MRT6MSG_NOCACHE 1
+#define MRT6MSG_WRONGMIF 2
+#define MRT6MSG_WHOLEPKT 3
+  __u8 im6_mbz;
+  __u8 im6_msgtype;
+  __u16 im6_mif;
+  __u32 im6_pad;
+  struct in6_addr im6_src, im6_dst;
+};
+enum {
+  IP6MRA_CREPORT_UNSPEC,
+  IP6MRA_CREPORT_MSGTYPE,
+  IP6MRA_CREPORT_MIF_ID,
+  IP6MRA_CREPORT_SRC_ADDR,
+  IP6MRA_CREPORT_DST_ADDR,
+  IP6MRA_CREPORT_PKT,
+  __IP6MRA_CREPORT_MAX
+};
+#define IP6MRA_CREPORT_MAX (__IP6MRA_CREPORT_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/mrp_bridge.h b/i686-linux-musl/include/linux/mrp_bridge.h
new file mode 100644
index 0000000..0f93514
--- /dev/null
+++ b/i686-linux-musl/include/linux/mrp_bridge.h
@@ -0,0 +1,79 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_MRP_BRIDGE_H_
+#define _UAPI_LINUX_MRP_BRIDGE_H_
+#include <linux/types.h>
+#include <linux/if_ether.h>
+#define MRP_MAX_FRAME_LENGTH 200
+#define MRP_DEFAULT_PRIO 0x8000
+#define MRP_DOMAIN_UUID_LENGTH 16
+#define MRP_VERSION 1
+#define MRP_FRAME_PRIO 7
+#define MRP_OUI_LENGTH 3
+#define MRP_MANUFACTURE_DATA_LENGTH 2
+enum br_mrp_ring_role_type {
+  BR_MRP_RING_ROLE_DISABLED,
+  BR_MRP_RING_ROLE_MRC,
+  BR_MRP_RING_ROLE_MRM,
+  BR_MRP_RING_ROLE_MRA,
+};
+enum br_mrp_in_role_type {
+  BR_MRP_IN_ROLE_DISABLED,
+  BR_MRP_IN_ROLE_MIC,
+  BR_MRP_IN_ROLE_MIM,
+};
+enum br_mrp_ring_state_type {
+  BR_MRP_RING_STATE_OPEN,
+  BR_MRP_RING_STATE_CLOSED,
+};
+enum br_mrp_in_state_type {
+  BR_MRP_IN_STATE_OPEN,
+  BR_MRP_IN_STATE_CLOSED,
+};
+enum br_mrp_port_state_type {
+  BR_MRP_PORT_STATE_DISABLED,
+  BR_MRP_PORT_STATE_BLOCKED,
+  BR_MRP_PORT_STATE_FORWARDING,
+  BR_MRP_PORT_STATE_NOT_CONNECTED,
+};
+enum br_mrp_port_role_type {
+  BR_MRP_PORT_ROLE_PRIMARY,
+  BR_MRP_PORT_ROLE_SECONDARY,
+  BR_MRP_PORT_ROLE_INTER,
+};
+enum br_mrp_tlv_header_type {
+  BR_MRP_TLV_HEADER_END = 0x0,
+  BR_MRP_TLV_HEADER_COMMON = 0x1,
+  BR_MRP_TLV_HEADER_RING_TEST = 0x2,
+  BR_MRP_TLV_HEADER_RING_TOPO = 0x3,
+  BR_MRP_TLV_HEADER_RING_LINK_DOWN = 0x4,
+  BR_MRP_TLV_HEADER_RING_LINK_UP = 0x5,
+  BR_MRP_TLV_HEADER_IN_TEST = 0x6,
+  BR_MRP_TLV_HEADER_IN_TOPO = 0x7,
+  BR_MRP_TLV_HEADER_IN_LINK_DOWN = 0x8,
+  BR_MRP_TLV_HEADER_IN_LINK_UP = 0x9,
+  BR_MRP_TLV_HEADER_IN_LINK_STATUS = 0xa,
+  BR_MRP_TLV_HEADER_OPTION = 0x7f,
+};
+enum br_mrp_sub_tlv_header_type {
+  BR_MRP_SUB_TLV_HEADER_TEST_MGR_NACK = 0x1,
+  BR_MRP_SUB_TLV_HEADER_TEST_PROPAGATE = 0x2,
+  BR_MRP_SUB_TLV_HEADER_TEST_AUTO_MGR = 0x3,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/msdos_fs.h b/i686-linux-musl/include/linux/msdos_fs.h
new file mode 100644
index 0000000..4b777db
--- /dev/null
+++ b/i686-linux-musl/include/linux/msdos_fs.h
@@ -0,0 +1,159 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_MSDOS_FS_H
+#define _UAPI_LINUX_MSDOS_FS_H
+#include <linux/types.h>
+#include <linux/magic.h>
+#include <asm/byteorder.h>
+#ifndef SECTOR_SIZE
+#define SECTOR_SIZE 512
+#endif
+#define SECTOR_BITS 9
+#define MSDOS_DPB (MSDOS_DPS)
+#define MSDOS_DPB_BITS 4
+#define MSDOS_DPS (SECTOR_SIZE / sizeof(struct msdos_dir_entry))
+#define MSDOS_DPS_BITS 4
+#define MSDOS_LONGNAME 256
+#define CF_LE_W(v) le16_to_cpu(v)
+#define CF_LE_L(v) le32_to_cpu(v)
+#define CT_LE_W(v) cpu_to_le16(v)
+#define CT_LE_L(v) cpu_to_le32(v)
+#define MSDOS_ROOT_INO 1
+#define MSDOS_FSINFO_INO 2
+#define MSDOS_DIR_BITS 5
+#define FAT_MAX_DIR_ENTRIES (65536)
+#define FAT_MAX_DIR_SIZE (FAT_MAX_DIR_ENTRIES << MSDOS_DIR_BITS)
+#define ATTR_NONE 0
+#define ATTR_RO 1
+#define ATTR_HIDDEN 2
+#define ATTR_SYS 4
+#define ATTR_VOLUME 8
+#define ATTR_DIR 16
+#define ATTR_ARCH 32
+#define ATTR_UNUSED (ATTR_VOLUME | ATTR_ARCH | ATTR_SYS | ATTR_HIDDEN)
+#define ATTR_EXT (ATTR_RO | ATTR_HIDDEN | ATTR_SYS | ATTR_VOLUME)
+#define CASE_LOWER_BASE 8
+#define CASE_LOWER_EXT 16
+#define DELETED_FLAG 0xe5
+#define IS_FREE(n) (! * (n) || * (n) == DELETED_FLAG)
+#define FAT_LFN_LEN 255
+#define MSDOS_NAME 11
+#define MSDOS_SLOTS 21
+#define MSDOS_DOT ".          "
+#define MSDOS_DOTDOT "..         "
+#define FAT_START_ENT 2
+#define MAX_FAT12 0xFF4
+#define MAX_FAT16 0xFFF4
+#define MAX_FAT32 0x0FFFFFF6
+#define BAD_FAT12 0xFF7
+#define BAD_FAT16 0xFFF7
+#define BAD_FAT32 0x0FFFFFF7
+#define EOF_FAT12 0xFFF
+#define EOF_FAT16 0xFFFF
+#define EOF_FAT32 0x0FFFFFFF
+#define FAT_ENT_FREE (0)
+#define FAT_ENT_BAD (BAD_FAT32)
+#define FAT_ENT_EOF (EOF_FAT32)
+#define FAT_FSINFO_SIG1 0x41615252
+#define FAT_FSINFO_SIG2 0x61417272
+#define IS_FSINFO(x) (le32_to_cpu((x)->signature1) == FAT_FSINFO_SIG1 && le32_to_cpu((x)->signature2) == FAT_FSINFO_SIG2)
+#define FAT_STATE_DIRTY 0x01
+struct __fat_dirent {
+  long d_ino;
+  __kernel_off_t d_off;
+  unsigned short d_reclen;
+  char d_name[256];
+};
+#define VFAT_IOCTL_READDIR_BOTH _IOR('r', 1, struct __fat_dirent[2])
+#define VFAT_IOCTL_READDIR_SHORT _IOR('r', 2, struct __fat_dirent[2])
+#define FAT_IOCTL_GET_ATTRIBUTES _IOR('r', 0x10, __u32)
+#define FAT_IOCTL_SET_ATTRIBUTES _IOW('r', 0x11, __u32)
+#define FAT_IOCTL_GET_VOLUME_ID _IOR('r', 0x13, __u32)
+struct fat_boot_sector {
+  __u8 ignored[3];
+  __u8 system_id[8];
+  __u8 sector_size[2];
+  __u8 sec_per_clus;
+  __le16 reserved;
+  __u8 fats;
+  __u8 dir_entries[2];
+  __u8 sectors[2];
+  __u8 media;
+  __le16 fat_length;
+  __le16 secs_track;
+  __le16 heads;
+  __le32 hidden;
+  __le32 total_sect;
+  union {
+    struct {
+      __u8 drive_number;
+      __u8 state;
+      __u8 signature;
+      __u8 vol_id[4];
+      __u8 vol_label[MSDOS_NAME];
+      __u8 fs_type[8];
+    } fat16;
+    struct {
+      __le32 length;
+      __le16 flags;
+      __u8 version[2];
+      __le32 root_cluster;
+      __le16 info_sector;
+      __le16 backup_boot;
+      __le16 reserved2[6];
+      __u8 drive_number;
+      __u8 state;
+      __u8 signature;
+      __u8 vol_id[4];
+      __u8 vol_label[MSDOS_NAME];
+      __u8 fs_type[8];
+    } fat32;
+  };
+};
+struct fat_boot_fsinfo {
+  __le32 signature1;
+  __le32 reserved1[120];
+  __le32 signature2;
+  __le32 free_clusters;
+  __le32 next_cluster;
+  __le32 reserved2[4];
+};
+struct msdos_dir_entry {
+  __u8 name[MSDOS_NAME];
+  __u8 attr;
+  __u8 lcase;
+  __u8 ctime_cs;
+  __le16 ctime;
+  __le16 cdate;
+  __le16 adate;
+  __le16 starthi;
+  __le16 time, date, start;
+  __le32 size;
+};
+struct msdos_dir_slot {
+  __u8 id;
+  __u8 name0_4[10];
+  __u8 attr;
+  __u8 reserved;
+  __u8 alias_checksum;
+  __u8 name5_10[12];
+  __le16 start;
+  __u8 name11_12[4];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/msg.h b/i686-linux-musl/include/linux/msg.h
new file mode 100644
index 0000000..bb32b93
--- /dev/null
+++ b/i686-linux-musl/include/linux/msg.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_MSG_H
+#define _UAPI_LINUX_MSG_H
+#include <linux/ipc.h>
+#define MSG_STAT 11
+#define MSG_INFO 12
+#define MSG_STAT_ANY 13
+#define MSG_NOERROR 010000
+#define MSG_EXCEPT 020000
+#define MSG_COPY 040000
+struct __kernel_legacy_msqid_ds {
+  struct __kernel_legacy_ipc_perm msg_perm;
+  struct msg * msg_first;
+  struct msg * msg_last;
+  __kernel_old_time_t msg_stime;
+  __kernel_old_time_t msg_rtime;
+  __kernel_old_time_t msg_ctime;
+  unsigned long msg_lcbytes;
+  unsigned long msg_lqbytes;
+  unsigned short msg_cbytes;
+  unsigned short msg_qnum;
+  unsigned short msg_qbytes;
+  __kernel_ipc_pid_t msg_lspid;
+  __kernel_ipc_pid_t msg_lrpid;
+};
+#include <asm/msgbuf.h>
+struct msgbuf {
+  __kernel_long_t mtype;
+  char mtext[1];
+};
+struct msginfo {
+  int msgpool;
+  int msgmap;
+  int msgmax;
+  int msgmnb;
+  int msgmni;
+  int msgssz;
+  int msgtql;
+  unsigned short msgseg;
+};
+#define MSGMNI 32000
+#define MSGMAX 8192
+#define MSGMNB 16384
+#define MSGPOOL (MSGMNI * MSGMNB / 1024)
+#define MSGTQL MSGMNB
+#define MSGMAP MSGMNB
+#define MSGSSZ 16
+#define __MSGSEG ((MSGPOOL * 1024) / MSGSSZ)
+#define MSGSEG (__MSGSEG <= 0xffff ? __MSGSEG : 0xffff)
+#endif
diff --git a/i686-linux-musl/include/linux/mtio.h b/i686-linux-musl/include/linux/mtio.h
new file mode 100644
index 0000000..b87c1fa
--- /dev/null
+++ b/i686-linux-musl/include/linux/mtio.h
@@ -0,0 +1,147 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_MTIO_H
+#define _LINUX_MTIO_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+struct mtop {
+  short mt_op;
+  int mt_count;
+};
+#define MTRESET 0
+#define MTFSF 1
+#define MTBSF 2
+#define MTFSR 3
+#define MTBSR 4
+#define MTWEOF 5
+#define MTREW 6
+#define MTOFFL 7
+#define MTNOP 8
+#define MTRETEN 9
+#define MTBSFM 10
+#define MTFSFM 11
+#define MTEOM 12
+#define MTERASE 13
+#define MTRAS1 14
+#define MTRAS2 15
+#define MTRAS3 16
+#define MTSETBLK 20
+#define MTSETDENSITY 21
+#define MTSEEK 22
+#define MTTELL 23
+#define MTSETDRVBUFFER 24
+#define MTFSS 25
+#define MTBSS 26
+#define MTWSM 27
+#define MTLOCK 28
+#define MTUNLOCK 29
+#define MTLOAD 30
+#define MTUNLOAD 31
+#define MTCOMPRESSION 32
+#define MTSETPART 33
+#define MTMKPART 34
+#define MTWEOFI 35
+struct mtget {
+  long mt_type;
+  long mt_resid;
+  long mt_dsreg;
+  long mt_gstat;
+  long mt_erreg;
+  __kernel_daddr_t mt_fileno;
+  __kernel_daddr_t mt_blkno;
+};
+#define MT_ISUNKNOWN 0x01
+#define MT_ISQIC02 0x02
+#define MT_ISWT5150 0x03
+#define MT_ISARCHIVE_5945L2 0x04
+#define MT_ISCMSJ500 0x05
+#define MT_ISTDC3610 0x06
+#define MT_ISARCHIVE_VP60I 0x07
+#define MT_ISARCHIVE_2150L 0x08
+#define MT_ISARCHIVE_2060L 0x09
+#define MT_ISARCHIVESC499 0x0A
+#define MT_ISQIC02_ALL_FEATURES 0x0F
+#define MT_ISWT5099EEN24 0x11
+#define MT_ISTEAC_MT2ST 0x12
+#define MT_ISEVEREX_FT40A 0x32
+#define MT_ISDDS1 0x51
+#define MT_ISDDS2 0x52
+#define MT_ISONSTREAM_SC 0x61
+#define MT_ISSCSI1 0x71
+#define MT_ISSCSI2 0x72
+#define MT_ISFTAPE_UNKNOWN 0x800000
+#define MT_ISFTAPE_FLAG 0x800000
+struct mtpos {
+  long mt_blkno;
+};
+#define MTIOCTOP _IOW('m', 1, struct mtop)
+#define MTIOCGET _IOR('m', 2, struct mtget)
+#define MTIOCPOS _IOR('m', 3, struct mtpos)
+#define GMT_EOF(x) ((x) & 0x80000000)
+#define GMT_BOT(x) ((x) & 0x40000000)
+#define GMT_EOT(x) ((x) & 0x20000000)
+#define GMT_SM(x) ((x) & 0x10000000)
+#define GMT_EOD(x) ((x) & 0x08000000)
+#define GMT_WR_PROT(x) ((x) & 0x04000000)
+#define GMT_ONLINE(x) ((x) & 0x01000000)
+#define GMT_D_6250(x) ((x) & 0x00800000)
+#define GMT_D_1600(x) ((x) & 0x00400000)
+#define GMT_D_800(x) ((x) & 0x00200000)
+#define GMT_DR_OPEN(x) ((x) & 0x00040000)
+#define GMT_IM_REP_EN(x) ((x) & 0x00010000)
+#define GMT_CLN(x) ((x) & 0x00008000)
+#define MT_ST_BLKSIZE_SHIFT 0
+#define MT_ST_BLKSIZE_MASK 0xffffff
+#define MT_ST_DENSITY_SHIFT 24
+#define MT_ST_DENSITY_MASK 0xff000000
+#define MT_ST_SOFTERR_SHIFT 0
+#define MT_ST_SOFTERR_MASK 0xffff
+#define MT_ST_OPTIONS 0xf0000000
+#define MT_ST_BOOLEANS 0x10000000
+#define MT_ST_SETBOOLEANS 0x30000000
+#define MT_ST_CLEARBOOLEANS 0x40000000
+#define MT_ST_WRITE_THRESHOLD 0x20000000
+#define MT_ST_DEF_BLKSIZE 0x50000000
+#define MT_ST_DEF_OPTIONS 0x60000000
+#define MT_ST_TIMEOUTS 0x70000000
+#define MT_ST_SET_TIMEOUT (MT_ST_TIMEOUTS | 0x000000)
+#define MT_ST_SET_LONG_TIMEOUT (MT_ST_TIMEOUTS | 0x100000)
+#define MT_ST_SET_CLN 0x80000000
+#define MT_ST_BUFFER_WRITES 0x1
+#define MT_ST_ASYNC_WRITES 0x2
+#define MT_ST_READ_AHEAD 0x4
+#define MT_ST_DEBUGGING 0x8
+#define MT_ST_TWO_FM 0x10
+#define MT_ST_FAST_MTEOM 0x20
+#define MT_ST_AUTO_LOCK 0x40
+#define MT_ST_DEF_WRITES 0x80
+#define MT_ST_CAN_BSR 0x100
+#define MT_ST_NO_BLKLIMS 0x200
+#define MT_ST_CAN_PARTITIONS 0x400
+#define MT_ST_SCSI2LOGICAL 0x800
+#define MT_ST_SYSV 0x1000
+#define MT_ST_NOWAIT 0x2000
+#define MT_ST_SILI 0x4000
+#define MT_ST_NOWAIT_EOF 0x8000
+#define MT_ST_CLEAR_DEFAULT 0xfffff
+#define MT_ST_DEF_DENSITY (MT_ST_DEF_OPTIONS | 0x100000)
+#define MT_ST_DEF_COMPRESSION (MT_ST_DEF_OPTIONS | 0x200000)
+#define MT_ST_DEF_DRVBUFFER (MT_ST_DEF_OPTIONS | 0x300000)
+#define MT_ST_HPLOADER_OFFSET 10000
+#endif
diff --git a/i686-linux-musl/include/linux/nbd-netlink.h b/i686-linux-musl/include/linux/nbd-netlink.h
new file mode 100644
index 0000000..dffb077
--- /dev/null
+++ b/i686-linux-musl/include/linux/nbd-netlink.h
@@ -0,0 +1,74 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPILINUX_NBD_NETLINK_H
+#define _UAPILINUX_NBD_NETLINK_H
+#define NBD_GENL_FAMILY_NAME "nbd"
+#define NBD_GENL_VERSION 0x1
+#define NBD_GENL_MCAST_GROUP_NAME "nbd_mc_group"
+enum {
+  NBD_ATTR_UNSPEC,
+  NBD_ATTR_INDEX,
+  NBD_ATTR_SIZE_BYTES,
+  NBD_ATTR_BLOCK_SIZE_BYTES,
+  NBD_ATTR_TIMEOUT,
+  NBD_ATTR_SERVER_FLAGS,
+  NBD_ATTR_CLIENT_FLAGS,
+  NBD_ATTR_SOCKETS,
+  NBD_ATTR_DEAD_CONN_TIMEOUT,
+  NBD_ATTR_DEVICE_LIST,
+  NBD_ATTR_BACKEND_IDENTIFIER,
+  __NBD_ATTR_MAX,
+};
+#define NBD_ATTR_MAX (__NBD_ATTR_MAX - 1)
+enum {
+  NBD_DEVICE_ITEM_UNSPEC,
+  NBD_DEVICE_ITEM,
+  __NBD_DEVICE_ITEM_MAX,
+};
+#define NBD_DEVICE_ITEM_MAX (__NBD_DEVICE_ITEM_MAX - 1)
+enum {
+  NBD_DEVICE_UNSPEC,
+  NBD_DEVICE_INDEX,
+  NBD_DEVICE_CONNECTED,
+  __NBD_DEVICE_MAX,
+};
+#define NBD_DEVICE_ATTR_MAX (__NBD_DEVICE_MAX - 1)
+enum {
+  NBD_SOCK_ITEM_UNSPEC,
+  NBD_SOCK_ITEM,
+  __NBD_SOCK_ITEM_MAX,
+};
+#define NBD_SOCK_ITEM_MAX (__NBD_SOCK_ITEM_MAX - 1)
+enum {
+  NBD_SOCK_UNSPEC,
+  NBD_SOCK_FD,
+  __NBD_SOCK_MAX,
+};
+#define NBD_SOCK_MAX (__NBD_SOCK_MAX - 1)
+enum {
+  NBD_CMD_UNSPEC,
+  NBD_CMD_CONNECT,
+  NBD_CMD_DISCONNECT,
+  NBD_CMD_RECONFIGURE,
+  NBD_CMD_LINK_DEAD,
+  NBD_CMD_STATUS,
+  __NBD_CMD_MAX,
+};
+#define NBD_CMD_MAX (__NBD_CMD_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/nbd.h b/i686-linux-musl/include/linux/nbd.h
new file mode 100644
index 0000000..3b74393
--- /dev/null
+++ b/i686-linux-musl/include/linux/nbd.h
@@ -0,0 +1,63 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPILINUX_NBD_H
+#define _UAPILINUX_NBD_H
+#include <linux/types.h>
+#define NBD_SET_SOCK _IO(0xab, 0)
+#define NBD_SET_BLKSIZE _IO(0xab, 1)
+#define NBD_SET_SIZE _IO(0xab, 2)
+#define NBD_DO_IT _IO(0xab, 3)
+#define NBD_CLEAR_SOCK _IO(0xab, 4)
+#define NBD_CLEAR_QUE _IO(0xab, 5)
+#define NBD_PRINT_DEBUG _IO(0xab, 6)
+#define NBD_SET_SIZE_BLOCKS _IO(0xab, 7)
+#define NBD_DISCONNECT _IO(0xab, 8)
+#define NBD_SET_TIMEOUT _IO(0xab, 9)
+#define NBD_SET_FLAGS _IO(0xab, 10)
+enum {
+  NBD_CMD_READ = 0,
+  NBD_CMD_WRITE = 1,
+  NBD_CMD_DISC = 2,
+  NBD_CMD_FLUSH = 3,
+  NBD_CMD_TRIM = 4
+};
+#define NBD_FLAG_HAS_FLAGS (1 << 0)
+#define NBD_FLAG_READ_ONLY (1 << 1)
+#define NBD_FLAG_SEND_FLUSH (1 << 2)
+#define NBD_FLAG_SEND_FUA (1 << 3)
+#define NBD_FLAG_SEND_TRIM (1 << 5)
+#define NBD_FLAG_CAN_MULTI_CONN (1 << 8)
+#define NBD_CMD_FLAG_FUA (1 << 16)
+#define NBD_CFLAG_DESTROY_ON_DISCONNECT (1 << 0)
+#define NBD_CFLAG_DISCONNECT_ON_CLOSE (1 << 1)
+#define NBD_REQUEST_MAGIC 0x25609513
+#define NBD_REPLY_MAGIC 0x67446698
+struct nbd_request {
+  __be32 magic;
+  __be32 type;
+  char handle[8];
+  __be64 from;
+  __be32 len;
+} __attribute__((packed));
+struct nbd_reply {
+  __be32 magic;
+  __be32 error;
+  char handle[8];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/ncsi.h b/i686-linux-musl/include/linux/ncsi.h
new file mode 100644
index 0000000..6334a8a
--- /dev/null
+++ b/i686-linux-musl/include/linux/ncsi.h
@@ -0,0 +1,69 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_NCSI_NETLINK_H__
+#define __UAPI_NCSI_NETLINK_H__
+enum ncsi_nl_commands {
+  NCSI_CMD_UNSPEC,
+  NCSI_CMD_PKG_INFO,
+  NCSI_CMD_SET_INTERFACE,
+  NCSI_CMD_CLEAR_INTERFACE,
+  NCSI_CMD_SEND_CMD,
+  NCSI_CMD_SET_PACKAGE_MASK,
+  NCSI_CMD_SET_CHANNEL_MASK,
+  __NCSI_CMD_AFTER_LAST,
+  NCSI_CMD_MAX = __NCSI_CMD_AFTER_LAST - 1
+};
+enum ncsi_nl_attrs {
+  NCSI_ATTR_UNSPEC,
+  NCSI_ATTR_IFINDEX,
+  NCSI_ATTR_PACKAGE_LIST,
+  NCSI_ATTR_PACKAGE_ID,
+  NCSI_ATTR_CHANNEL_ID,
+  NCSI_ATTR_DATA,
+  NCSI_ATTR_MULTI_FLAG,
+  NCSI_ATTR_PACKAGE_MASK,
+  NCSI_ATTR_CHANNEL_MASK,
+  __NCSI_ATTR_AFTER_LAST,
+  NCSI_ATTR_MAX = __NCSI_ATTR_AFTER_LAST - 1
+};
+enum ncsi_nl_pkg_attrs {
+  NCSI_PKG_ATTR_UNSPEC,
+  NCSI_PKG_ATTR,
+  NCSI_PKG_ATTR_ID,
+  NCSI_PKG_ATTR_FORCED,
+  NCSI_PKG_ATTR_CHANNEL_LIST,
+  __NCSI_PKG_ATTR_AFTER_LAST,
+  NCSI_PKG_ATTR_MAX = __NCSI_PKG_ATTR_AFTER_LAST - 1
+};
+enum ncsi_nl_channel_attrs {
+  NCSI_CHANNEL_ATTR_UNSPEC,
+  NCSI_CHANNEL_ATTR,
+  NCSI_CHANNEL_ATTR_ID,
+  NCSI_CHANNEL_ATTR_VERSION_MAJOR,
+  NCSI_CHANNEL_ATTR_VERSION_MINOR,
+  NCSI_CHANNEL_ATTR_VERSION_STR,
+  NCSI_CHANNEL_ATTR_LINK_STATE,
+  NCSI_CHANNEL_ATTR_ACTIVE,
+  NCSI_CHANNEL_ATTR_FORCED,
+  NCSI_CHANNEL_ATTR_VLAN_LIST,
+  NCSI_CHANNEL_ATTR_VLAN_ID,
+  __NCSI_CHANNEL_ATTR_AFTER_LAST,
+  NCSI_CHANNEL_ATTR_MAX = __NCSI_CHANNEL_ATTR_AFTER_LAST - 1
+};
+#endif
diff --git a/i686-linux-musl/include/linux/ndctl.h b/i686-linux-musl/include/linux/ndctl.h
new file mode 100644
index 0000000..53f8ba4
--- /dev/null
+++ b/i686-linux-musl/include/linux/ndctl.h
@@ -0,0 +1,167 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __NDCTL_H__
+#define __NDCTL_H__
+#include <linux/types.h>
+struct nd_cmd_dimm_flags {
+  __u32 status;
+  __u32 flags;
+} __packed;
+struct nd_cmd_get_config_size {
+  __u32 status;
+  __u32 config_size;
+  __u32 max_xfer;
+} __packed;
+struct nd_cmd_get_config_data_hdr {
+  __u32 in_offset;
+  __u32 in_length;
+  __u32 status;
+  __u8 out_buf[0];
+} __packed;
+struct nd_cmd_set_config_hdr {
+  __u32 in_offset;
+  __u32 in_length;
+  __u8 in_buf[0];
+} __packed;
+struct nd_cmd_vendor_hdr {
+  __u32 opcode;
+  __u32 in_length;
+  __u8 in_buf[0];
+} __packed;
+struct nd_cmd_vendor_tail {
+  __u32 status;
+  __u32 out_length;
+  __u8 out_buf[0];
+} __packed;
+struct nd_cmd_ars_cap {
+  __u64 address;
+  __u64 length;
+  __u32 status;
+  __u32 max_ars_out;
+  __u32 clear_err_unit;
+  __u16 flags;
+  __u16 reserved;
+} __packed;
+struct nd_cmd_ars_start {
+  __u64 address;
+  __u64 length;
+  __u16 type;
+  __u8 flags;
+  __u8 reserved[5];
+  __u32 status;
+  __u32 scrub_time;
+} __packed;
+struct nd_cmd_ars_status {
+  __u32 status;
+  __u32 out_length;
+  __u64 address;
+  __u64 length;
+  __u64 restart_address;
+  __u64 restart_length;
+  __u16 type;
+  __u16 flags;
+  __u32 num_records;
+  struct nd_ars_record {
+    __u32 handle;
+    __u32 reserved;
+    __u64 err_address;
+    __u64 length;
+  } __packed records[0];
+} __packed;
+struct nd_cmd_clear_error {
+  __u64 address;
+  __u64 length;
+  __u32 status;
+  __u8 reserved[4];
+  __u64 cleared;
+} __packed;
+enum {
+  ND_CMD_IMPLEMENTED = 0,
+  ND_CMD_ARS_CAP = 1,
+  ND_CMD_ARS_START = 2,
+  ND_CMD_ARS_STATUS = 3,
+  ND_CMD_CLEAR_ERROR = 4,
+  ND_CMD_SMART = 1,
+  ND_CMD_SMART_THRESHOLD = 2,
+  ND_CMD_DIMM_FLAGS = 3,
+  ND_CMD_GET_CONFIG_SIZE = 4,
+  ND_CMD_GET_CONFIG_DATA = 5,
+  ND_CMD_SET_CONFIG_DATA = 6,
+  ND_CMD_VENDOR_EFFECT_LOG_SIZE = 7,
+  ND_CMD_VENDOR_EFFECT_LOG = 8,
+  ND_CMD_VENDOR = 9,
+  ND_CMD_CALL = 10,
+};
+enum {
+  ND_ARS_VOLATILE = 1,
+  ND_ARS_PERSISTENT = 2,
+  ND_ARS_RETURN_PREV_DATA = 1 << 1,
+  ND_CONFIG_LOCKED = 1,
+};
+#define ND_IOCTL 'N'
+#define ND_IOCTL_DIMM_FLAGS _IOWR(ND_IOCTL, ND_CMD_DIMM_FLAGS, struct nd_cmd_dimm_flags)
+#define ND_IOCTL_GET_CONFIG_SIZE _IOWR(ND_IOCTL, ND_CMD_GET_CONFIG_SIZE, struct nd_cmd_get_config_size)
+#define ND_IOCTL_GET_CONFIG_DATA _IOWR(ND_IOCTL, ND_CMD_GET_CONFIG_DATA, struct nd_cmd_get_config_data_hdr)
+#define ND_IOCTL_SET_CONFIG_DATA _IOWR(ND_IOCTL, ND_CMD_SET_CONFIG_DATA, struct nd_cmd_set_config_hdr)
+#define ND_IOCTL_VENDOR _IOWR(ND_IOCTL, ND_CMD_VENDOR, struct nd_cmd_vendor_hdr)
+#define ND_IOCTL_ARS_CAP _IOWR(ND_IOCTL, ND_CMD_ARS_CAP, struct nd_cmd_ars_cap)
+#define ND_IOCTL_ARS_START _IOWR(ND_IOCTL, ND_CMD_ARS_START, struct nd_cmd_ars_start)
+#define ND_IOCTL_ARS_STATUS _IOWR(ND_IOCTL, ND_CMD_ARS_STATUS, struct nd_cmd_ars_status)
+#define ND_IOCTL_CLEAR_ERROR _IOWR(ND_IOCTL, ND_CMD_CLEAR_ERROR, struct nd_cmd_clear_error)
+#define ND_DEVICE_DIMM 1
+#define ND_DEVICE_REGION_PMEM 2
+#define ND_DEVICE_REGION_BLK 3
+#define ND_DEVICE_NAMESPACE_IO 4
+#define ND_DEVICE_NAMESPACE_PMEM 5
+#define ND_DEVICE_NAMESPACE_BLK 6
+#define ND_DEVICE_DAX_PMEM 7
+enum nd_driver_flags {
+  ND_DRIVER_DIMM = 1 << ND_DEVICE_DIMM,
+  ND_DRIVER_REGION_PMEM = 1 << ND_DEVICE_REGION_PMEM,
+  ND_DRIVER_REGION_BLK = 1 << ND_DEVICE_REGION_BLK,
+  ND_DRIVER_NAMESPACE_IO = 1 << ND_DEVICE_NAMESPACE_IO,
+  ND_DRIVER_NAMESPACE_PMEM = 1 << ND_DEVICE_NAMESPACE_PMEM,
+  ND_DRIVER_NAMESPACE_BLK = 1 << ND_DEVICE_NAMESPACE_BLK,
+  ND_DRIVER_DAX_PMEM = 1 << ND_DEVICE_DAX_PMEM,
+};
+enum ars_masks {
+  ARS_STATUS_MASK = 0x0000FFFF,
+  ARS_EXT_STATUS_SHIFT = 16,
+};
+struct nd_cmd_pkg {
+  __u64 nd_family;
+  __u64 nd_command;
+  __u32 nd_size_in;
+  __u32 nd_size_out;
+  __u32 nd_reserved2[9];
+  __u32 nd_fw_size;
+  unsigned char nd_payload[];
+};
+#define NVDIMM_FAMILY_INTEL 0
+#define NVDIMM_FAMILY_HPE1 1
+#define NVDIMM_FAMILY_HPE2 2
+#define NVDIMM_FAMILY_MSFT 3
+#define NVDIMM_FAMILY_HYPERV 4
+#define NVDIMM_FAMILY_PAPR 5
+#define NVDIMM_FAMILY_MAX NVDIMM_FAMILY_PAPR
+#define NVDIMM_BUS_FAMILY_NFIT 0
+#define NVDIMM_BUS_FAMILY_INTEL 1
+#define NVDIMM_BUS_FAMILY_MAX NVDIMM_BUS_FAMILY_INTEL
+#define ND_IOCTL_CALL _IOWR(ND_IOCTL, ND_CMD_CALL, struct nd_cmd_pkg)
+#endif
diff --git a/i686-linux-musl/include/linux/neighbour.h b/i686-linux-musl/include/linux/neighbour.h
new file mode 100644
index 0000000..278f7d1
--- /dev/null
+++ b/i686-linux-musl/include/linux/neighbour.h
@@ -0,0 +1,153 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_NEIGHBOUR_H
+#define __LINUX_NEIGHBOUR_H
+#include <linux/types.h>
+#include <linux/netlink.h>
+struct ndmsg {
+  __u8 ndm_family;
+  __u8 ndm_pad1;
+  __u16 ndm_pad2;
+  __s32 ndm_ifindex;
+  __u16 ndm_state;
+  __u8 ndm_flags;
+  __u8 ndm_type;
+};
+enum {
+  NDA_UNSPEC,
+  NDA_DST,
+  NDA_LLADDR,
+  NDA_CACHEINFO,
+  NDA_PROBES,
+  NDA_VLAN,
+  NDA_PORT,
+  NDA_VNI,
+  NDA_IFINDEX,
+  NDA_MASTER,
+  NDA_LINK_NETNSID,
+  NDA_SRC_VNI,
+  NDA_PROTOCOL,
+  NDA_NH_ID,
+  NDA_FDB_EXT_ATTRS,
+  NDA_FLAGS_EXT,
+  __NDA_MAX
+};
+#define NDA_MAX (__NDA_MAX - 1)
+#define NTF_USE (1 << 0)
+#define NTF_SELF (1 << 1)
+#define NTF_MASTER (1 << 2)
+#define NTF_PROXY (1 << 3)
+#define NTF_EXT_LEARNED (1 << 4)
+#define NTF_OFFLOADED (1 << 5)
+#define NTF_STICKY (1 << 6)
+#define NTF_ROUTER (1 << 7)
+#define NTF_EXT_MANAGED (1 << 0)
+#define NUD_INCOMPLETE 0x01
+#define NUD_REACHABLE 0x02
+#define NUD_STALE 0x04
+#define NUD_DELAY 0x08
+#define NUD_PROBE 0x10
+#define NUD_FAILED 0x20
+#define NUD_NOARP 0x40
+#define NUD_PERMANENT 0x80
+#define NUD_NONE 0x00
+struct nda_cacheinfo {
+  __u32 ndm_confirmed;
+  __u32 ndm_used;
+  __u32 ndm_updated;
+  __u32 ndm_refcnt;
+};
+struct ndt_stats {
+  __u64 ndts_allocs;
+  __u64 ndts_destroys;
+  __u64 ndts_hash_grows;
+  __u64 ndts_res_failed;
+  __u64 ndts_lookups;
+  __u64 ndts_hits;
+  __u64 ndts_rcv_probes_mcast;
+  __u64 ndts_rcv_probes_ucast;
+  __u64 ndts_periodic_gc_runs;
+  __u64 ndts_forced_gc_runs;
+  __u64 ndts_table_fulls;
+};
+enum {
+  NDTPA_UNSPEC,
+  NDTPA_IFINDEX,
+  NDTPA_REFCNT,
+  NDTPA_REACHABLE_TIME,
+  NDTPA_BASE_REACHABLE_TIME,
+  NDTPA_RETRANS_TIME,
+  NDTPA_GC_STALETIME,
+  NDTPA_DELAY_PROBE_TIME,
+  NDTPA_QUEUE_LEN,
+  NDTPA_APP_PROBES,
+  NDTPA_UCAST_PROBES,
+  NDTPA_MCAST_PROBES,
+  NDTPA_ANYCAST_DELAY,
+  NDTPA_PROXY_DELAY,
+  NDTPA_PROXY_QLEN,
+  NDTPA_LOCKTIME,
+  NDTPA_QUEUE_LENBYTES,
+  NDTPA_MCAST_REPROBES,
+  NDTPA_PAD,
+  __NDTPA_MAX
+};
+#define NDTPA_MAX (__NDTPA_MAX - 1)
+struct ndtmsg {
+  __u8 ndtm_family;
+  __u8 ndtm_pad1;
+  __u16 ndtm_pad2;
+};
+struct ndt_config {
+  __u16 ndtc_key_len;
+  __u16 ndtc_entry_size;
+  __u32 ndtc_entries;
+  __u32 ndtc_last_flush;
+  __u32 ndtc_last_rand;
+  __u32 ndtc_hash_rnd;
+  __u32 ndtc_hash_mask;
+  __u32 ndtc_hash_chain_gc;
+  __u32 ndtc_proxy_qlen;
+};
+enum {
+  NDTA_UNSPEC,
+  NDTA_NAME,
+  NDTA_THRESH1,
+  NDTA_THRESH2,
+  NDTA_THRESH3,
+  NDTA_CONFIG,
+  NDTA_PARMS,
+  NDTA_STATS,
+  NDTA_GC_INTERVAL,
+  NDTA_PAD,
+  __NDTA_MAX
+};
+#define NDTA_MAX (__NDTA_MAX - 1)
+enum {
+  FDB_NOTIFY_BIT = (1 << 0),
+  FDB_NOTIFY_INACTIVE_BIT = (1 << 1)
+};
+enum {
+  NFEA_UNSPEC,
+  NFEA_ACTIVITY_NOTIFY,
+  NFEA_DONT_REFRESH,
+  __NFEA_MAX
+};
+#define NFEA_MAX (__NFEA_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/net.h b/i686-linux-musl/include/linux/net.h
new file mode 100644
index 0000000..a53b329
--- /dev/null
+++ b/i686-linux-musl/include/linux/net.h
@@ -0,0 +1,52 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_NET_H
+#define _UAPI_LINUX_NET_H
+#include <linux/socket.h>
+#include <asm/socket.h>
+#define NPROTO AF_MAX
+#define SYS_SOCKET 1
+#define SYS_BIND 2
+#define SYS_CONNECT 3
+#define SYS_LISTEN 4
+#define SYS_ACCEPT 5
+#define SYS_GETSOCKNAME 6
+#define SYS_GETPEERNAME 7
+#define SYS_SOCKETPAIR 8
+#define SYS_SEND 9
+#define SYS_RECV 10
+#define SYS_SENDTO 11
+#define SYS_RECVFROM 12
+#define SYS_SHUTDOWN 13
+#define SYS_SETSOCKOPT 14
+#define SYS_GETSOCKOPT 15
+#define SYS_SENDMSG 16
+#define SYS_RECVMSG 17
+#define SYS_ACCEPT4 18
+#define SYS_RECVMMSG 19
+#define SYS_SENDMMSG 20
+typedef enum {
+  SS_FREE = 0,
+  SS_UNCONNECTED,
+  SS_CONNECTING,
+  SS_CONNECTED,
+  SS_DISCONNECTING
+} socket_state;
+#define __SO_ACCEPTCON (1 << 16)
+#endif
diff --git a/i686-linux-musl/include/linux/net_dropmon.h b/i686-linux-musl/include/linux/net_dropmon.h
new file mode 100644
index 0000000..01b76cb
--- /dev/null
+++ b/i686-linux-musl/include/linux/net_dropmon.h
@@ -0,0 +1,112 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __NET_DROPMON_H
+#define __NET_DROPMON_H
+#include <linux/types.h>
+#include <linux/netlink.h>
+struct net_dm_drop_point {
+  __u8 pc[8];
+  __u32 count;
+};
+#define is_drop_point_hw(x) do { int ____i, ____j; for(____i = 0; ____i < 8; i ____i ++) ____j |= x[____i]; ____j; \
+} while(0)
+#define NET_DM_CFG_VERSION 0
+#define NET_DM_CFG_ALERT_COUNT 1
+#define NET_DM_CFG_ALERT_DELAY 2
+#define NET_DM_CFG_MAX 3
+struct net_dm_config_entry {
+  __u32 type;
+  __u64 data __attribute__((aligned(8)));
+};
+struct net_dm_config_msg {
+  __u32 entries;
+  struct net_dm_config_entry options[0];
+};
+struct net_dm_alert_msg {
+  __u32 entries;
+  struct net_dm_drop_point points[0];
+};
+struct net_dm_user_msg {
+  union {
+    struct net_dm_config_msg user;
+    struct net_dm_alert_msg alert;
+  } u;
+};
+enum {
+  NET_DM_CMD_UNSPEC = 0,
+  NET_DM_CMD_ALERT,
+  NET_DM_CMD_CONFIG,
+  NET_DM_CMD_START,
+  NET_DM_CMD_STOP,
+  NET_DM_CMD_PACKET_ALERT,
+  NET_DM_CMD_CONFIG_GET,
+  NET_DM_CMD_CONFIG_NEW,
+  NET_DM_CMD_STATS_GET,
+  NET_DM_CMD_STATS_NEW,
+  _NET_DM_CMD_MAX,
+};
+#define NET_DM_CMD_MAX (_NET_DM_CMD_MAX - 1)
+#define NET_DM_GRP_ALERT 1
+enum net_dm_attr {
+  NET_DM_ATTR_UNSPEC,
+  NET_DM_ATTR_ALERT_MODE,
+  NET_DM_ATTR_PC,
+  NET_DM_ATTR_SYMBOL,
+  NET_DM_ATTR_IN_PORT,
+  NET_DM_ATTR_TIMESTAMP,
+  NET_DM_ATTR_PROTO,
+  NET_DM_ATTR_PAYLOAD,
+  NET_DM_ATTR_PAD,
+  NET_DM_ATTR_TRUNC_LEN,
+  NET_DM_ATTR_ORIG_LEN,
+  NET_DM_ATTR_QUEUE_LEN,
+  NET_DM_ATTR_STATS,
+  NET_DM_ATTR_HW_STATS,
+  NET_DM_ATTR_ORIGIN,
+  NET_DM_ATTR_HW_TRAP_GROUP_NAME,
+  NET_DM_ATTR_HW_TRAP_NAME,
+  NET_DM_ATTR_HW_ENTRIES,
+  NET_DM_ATTR_HW_ENTRY,
+  NET_DM_ATTR_HW_TRAP_COUNT,
+  NET_DM_ATTR_SW_DROPS,
+  NET_DM_ATTR_HW_DROPS,
+  NET_DM_ATTR_FLOW_ACTION_COOKIE,
+  __NET_DM_ATTR_MAX,
+  NET_DM_ATTR_MAX = __NET_DM_ATTR_MAX - 1
+};
+enum net_dm_alert_mode {
+  NET_DM_ALERT_MODE_SUMMARY,
+  NET_DM_ALERT_MODE_PACKET,
+};
+enum {
+  NET_DM_ATTR_PORT_NETDEV_IFINDEX,
+  NET_DM_ATTR_PORT_NETDEV_NAME,
+  __NET_DM_ATTR_PORT_MAX,
+  NET_DM_ATTR_PORT_MAX = __NET_DM_ATTR_PORT_MAX - 1
+};
+enum {
+  NET_DM_ATTR_STATS_DROPPED,
+  __NET_DM_ATTR_STATS_MAX,
+  NET_DM_ATTR_STATS_MAX = __NET_DM_ATTR_STATS_MAX - 1
+};
+enum net_dm_origin {
+  NET_DM_ORIGIN_SW,
+  NET_DM_ORIGIN_HW,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/net_namespace.h b/i686-linux-musl/include/linux/net_namespace.h
new file mode 100644
index 0000000..a54c9e1
--- /dev/null
+++ b/i686-linux-musl/include/linux/net_namespace.h
@@ -0,0 +1,32 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_NET_NAMESPACE_H_
+#define _UAPI_LINUX_NET_NAMESPACE_H_
+enum {
+  NETNSA_NONE,
+#define NETNSA_NSID_NOT_ASSIGNED - 1
+  NETNSA_NSID,
+  NETNSA_PID,
+  NETNSA_FD,
+  NETNSA_TARGET_NSID,
+  NETNSA_CURRENT_NSID,
+  __NETNSA_MAX,
+};
+#define NETNSA_MAX (__NETNSA_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/net_tstamp.h b/i686-linux-musl/include/linux/net_tstamp.h
new file mode 100644
index 0000000..949bcad
--- /dev/null
+++ b/i686-linux-musl/include/linux/net_tstamp.h
@@ -0,0 +1,94 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _NET_TIMESTAMPING_H
+#define _NET_TIMESTAMPING_H
+#include <linux/types.h>
+#include <linux/socket.h>
+enum {
+  SOF_TIMESTAMPING_TX_HARDWARE = (1 << 0),
+  SOF_TIMESTAMPING_TX_SOFTWARE = (1 << 1),
+  SOF_TIMESTAMPING_RX_HARDWARE = (1 << 2),
+  SOF_TIMESTAMPING_RX_SOFTWARE = (1 << 3),
+  SOF_TIMESTAMPING_SOFTWARE = (1 << 4),
+  SOF_TIMESTAMPING_SYS_HARDWARE = (1 << 5),
+  SOF_TIMESTAMPING_RAW_HARDWARE = (1 << 6),
+  SOF_TIMESTAMPING_OPT_ID = (1 << 7),
+  SOF_TIMESTAMPING_TX_SCHED = (1 << 8),
+  SOF_TIMESTAMPING_TX_ACK = (1 << 9),
+  SOF_TIMESTAMPING_OPT_CMSG = (1 << 10),
+  SOF_TIMESTAMPING_OPT_TSONLY = (1 << 11),
+  SOF_TIMESTAMPING_OPT_STATS = (1 << 12),
+  SOF_TIMESTAMPING_OPT_PKTINFO = (1 << 13),
+  SOF_TIMESTAMPING_OPT_TX_SWHW = (1 << 14),
+  SOF_TIMESTAMPING_BIND_PHC = (1 << 15),
+  SOF_TIMESTAMPING_LAST = SOF_TIMESTAMPING_BIND_PHC,
+  SOF_TIMESTAMPING_MASK = (SOF_TIMESTAMPING_LAST - 1) | SOF_TIMESTAMPING_LAST
+};
+#define SOF_TIMESTAMPING_TX_RECORD_MASK (SOF_TIMESTAMPING_TX_HARDWARE | SOF_TIMESTAMPING_TX_SOFTWARE | SOF_TIMESTAMPING_TX_SCHED | SOF_TIMESTAMPING_TX_ACK)
+struct so_timestamping {
+  int flags;
+  int bind_phc;
+};
+struct hwtstamp_config {
+  int flags;
+  int tx_type;
+  int rx_filter;
+};
+enum hwtstamp_tx_types {
+  HWTSTAMP_TX_OFF,
+  HWTSTAMP_TX_ON,
+  HWTSTAMP_TX_ONESTEP_SYNC,
+  HWTSTAMP_TX_ONESTEP_P2P,
+  __HWTSTAMP_TX_CNT
+};
+enum hwtstamp_rx_filters {
+  HWTSTAMP_FILTER_NONE,
+  HWTSTAMP_FILTER_ALL,
+  HWTSTAMP_FILTER_SOME,
+  HWTSTAMP_FILTER_PTP_V1_L4_EVENT,
+  HWTSTAMP_FILTER_PTP_V1_L4_SYNC,
+  HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ,
+  HWTSTAMP_FILTER_PTP_V2_L4_EVENT,
+  HWTSTAMP_FILTER_PTP_V2_L4_SYNC,
+  HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ,
+  HWTSTAMP_FILTER_PTP_V2_L2_EVENT,
+  HWTSTAMP_FILTER_PTP_V2_L2_SYNC,
+  HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ,
+  HWTSTAMP_FILTER_PTP_V2_EVENT,
+  HWTSTAMP_FILTER_PTP_V2_SYNC,
+  HWTSTAMP_FILTER_PTP_V2_DELAY_REQ,
+  HWTSTAMP_FILTER_NTP_ALL,
+  __HWTSTAMP_FILTER_CNT
+};
+struct scm_ts_pktinfo {
+  __u32 if_index;
+  __u32 pkt_length;
+  __u32 reserved[2];
+};
+enum txtime_flags {
+  SOF_TXTIME_DEADLINE_MODE = (1 << 0),
+  SOF_TXTIME_REPORT_ERRORS = (1 << 1),
+  SOF_TXTIME_FLAGS_LAST = SOF_TXTIME_REPORT_ERRORS,
+  SOF_TXTIME_FLAGS_MASK = (SOF_TXTIME_FLAGS_LAST - 1) | SOF_TXTIME_FLAGS_LAST
+};
+struct sock_txtime {
+  __kernel_clockid_t clockid;
+  __u32 flags;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netconf.h b/i686-linux-musl/include/linux/netconf.h
new file mode 100644
index 0000000..27d3854
--- /dev/null
+++ b/i686-linux-musl/include/linux/netconf.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_NETCONF_H_
+#define _UAPI_LINUX_NETCONF_H_
+#include <linux/types.h>
+#include <linux/netlink.h>
+struct netconfmsg {
+  __u8 ncm_family;
+};
+enum {
+  NETCONFA_UNSPEC,
+  NETCONFA_IFINDEX,
+  NETCONFA_FORWARDING,
+  NETCONFA_RP_FILTER,
+  NETCONFA_MC_FORWARDING,
+  NETCONFA_PROXY_NEIGH,
+  NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
+  NETCONFA_INPUT,
+  NETCONFA_BC_FORWARDING,
+  __NETCONFA_MAX
+};
+#define NETCONFA_MAX (__NETCONFA_MAX - 1)
+#define NETCONFA_ALL - 1
+#define NETCONFA_IFINDEX_ALL - 1
+#define NETCONFA_IFINDEX_DEFAULT - 2
+#endif
diff --git a/i686-linux-musl/include/linux/netdevice.h b/i686-linux-musl/include/linux/netdevice.h
new file mode 100644
index 0000000..ff2d959
--- /dev/null
+++ b/i686-linux-musl/include/linux/netdevice.h
@@ -0,0 +1,45 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_NETDEVICE_H
+#define _UAPI_LINUX_NETDEVICE_H
+#include <linux/if.h>
+#include <linux/if_ether.h>
+#include <linux/if_packet.h>
+#include <linux/if_link.h>
+#define MAX_ADDR_LEN 32
+#define INIT_NETDEV_GROUP 0
+#define NET_NAME_UNKNOWN 0
+#define NET_NAME_ENUM 1
+#define NET_NAME_PREDICTABLE 2
+#define NET_NAME_USER 3
+#define NET_NAME_RENAMED 4
+enum {
+  IF_PORT_UNKNOWN = 0,
+  IF_PORT_10BASE2,
+  IF_PORT_10BASET,
+  IF_PORT_AUI,
+  IF_PORT_100BASET,
+  IF_PORT_100BASETX,
+  IF_PORT_100BASEFX
+};
+#define NET_ADDR_PERM 0
+#define NET_ADDR_RANDOM 1
+#define NET_ADDR_STOLEN 2
+#define NET_ADDR_SET 3
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter.h b/i686-linux-musl/include/linux/netfilter.h
new file mode 100644
index 0000000..77b8a91
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter.h
@@ -0,0 +1,71 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_NETFILTER_H
+#define _UAPI__LINUX_NETFILTER_H
+#include <linux/types.h>
+#include <linux/compiler.h>
+#include <linux/in.h>
+#include <linux/in6.h>
+#define NF_DROP 0
+#define NF_ACCEPT 1
+#define NF_STOLEN 2
+#define NF_QUEUE 3
+#define NF_REPEAT 4
+#define NF_STOP 5
+#define NF_MAX_VERDICT NF_STOP
+#define NF_VERDICT_MASK 0x000000ff
+#define NF_VERDICT_FLAG_QUEUE_BYPASS 0x00008000
+#define NF_VERDICT_QMASK 0xffff0000
+#define NF_VERDICT_QBITS 16
+#define NF_QUEUE_NR(x) ((((x) << 16) & NF_VERDICT_QMASK) | NF_QUEUE)
+#define NF_DROP_ERR(x) (((- x) << 16) | NF_DROP)
+#define NF_VERDICT_BITS 16
+enum nf_inet_hooks {
+  NF_INET_PRE_ROUTING,
+  NF_INET_LOCAL_IN,
+  NF_INET_FORWARD,
+  NF_INET_LOCAL_OUT,
+  NF_INET_POST_ROUTING,
+  NF_INET_NUMHOOKS,
+  NF_INET_INGRESS = NF_INET_NUMHOOKS,
+};
+enum nf_dev_hooks {
+  NF_NETDEV_INGRESS,
+  NF_NETDEV_EGRESS,
+  NF_NETDEV_NUMHOOKS
+};
+enum {
+  NFPROTO_UNSPEC = 0,
+  NFPROTO_INET = 1,
+  NFPROTO_IPV4 = 2,
+  NFPROTO_ARP = 3,
+  NFPROTO_NETDEV = 5,
+  NFPROTO_BRIDGE = 7,
+  NFPROTO_IPV6 = 10,
+  NFPROTO_DECNET = 12,
+  NFPROTO_NUMPROTO,
+};
+union nf_inet_addr {
+  __u32 all[4];
+  __be32 ip;
+  __be32 ip6[4];
+  struct in_addr in;
+  struct in6_addr in6;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/ipset/ip_set.h b/i686-linux-musl/include/linux/netfilter/ipset/ip_set.h
new file mode 100644
index 0000000..4252530
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/ipset/ip_set.h
@@ -0,0 +1,256 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_IP_SET_H
+#define _UAPI_IP_SET_H
+#include <linux/types.h>
+#define IPSET_PROTOCOL 7
+#define IPSET_PROTOCOL_MIN 6
+#define IPSET_MAXNAMELEN 32
+#define IPSET_MAX_COMMENT_SIZE 255
+enum ipset_cmd {
+  IPSET_CMD_NONE,
+  IPSET_CMD_PROTOCOL,
+  IPSET_CMD_CREATE,
+  IPSET_CMD_DESTROY,
+  IPSET_CMD_FLUSH,
+  IPSET_CMD_RENAME,
+  IPSET_CMD_SWAP,
+  IPSET_CMD_LIST,
+  IPSET_CMD_SAVE,
+  IPSET_CMD_ADD,
+  IPSET_CMD_DEL,
+  IPSET_CMD_TEST,
+  IPSET_CMD_HEADER,
+  IPSET_CMD_TYPE,
+  IPSET_CMD_GET_BYNAME,
+  IPSET_CMD_GET_BYINDEX,
+  IPSET_MSG_MAX,
+  IPSET_CMD_RESTORE = IPSET_MSG_MAX,
+  IPSET_CMD_HELP,
+  IPSET_CMD_VERSION,
+  IPSET_CMD_QUIT,
+  IPSET_CMD_MAX,
+  IPSET_CMD_COMMIT = IPSET_CMD_MAX,
+};
+enum {
+  IPSET_ATTR_UNSPEC,
+  IPSET_ATTR_PROTOCOL,
+  IPSET_ATTR_SETNAME,
+  IPSET_ATTR_TYPENAME,
+  IPSET_ATTR_SETNAME2 = IPSET_ATTR_TYPENAME,
+  IPSET_ATTR_REVISION,
+  IPSET_ATTR_FAMILY,
+  IPSET_ATTR_FLAGS,
+  IPSET_ATTR_DATA,
+  IPSET_ATTR_ADT,
+  IPSET_ATTR_LINENO,
+  IPSET_ATTR_PROTOCOL_MIN,
+  IPSET_ATTR_REVISION_MIN = IPSET_ATTR_PROTOCOL_MIN,
+  IPSET_ATTR_INDEX,
+  __IPSET_ATTR_CMD_MAX,
+};
+#define IPSET_ATTR_CMD_MAX (__IPSET_ATTR_CMD_MAX - 1)
+enum {
+  IPSET_ATTR_IP = IPSET_ATTR_UNSPEC + 1,
+  IPSET_ATTR_IP_FROM = IPSET_ATTR_IP,
+  IPSET_ATTR_IP_TO,
+  IPSET_ATTR_CIDR,
+  IPSET_ATTR_PORT,
+  IPSET_ATTR_PORT_FROM = IPSET_ATTR_PORT,
+  IPSET_ATTR_PORT_TO,
+  IPSET_ATTR_TIMEOUT,
+  IPSET_ATTR_PROTO,
+  IPSET_ATTR_CADT_FLAGS,
+  IPSET_ATTR_CADT_LINENO = IPSET_ATTR_LINENO,
+  IPSET_ATTR_MARK,
+  IPSET_ATTR_MARKMASK,
+  IPSET_ATTR_CADT_MAX = 16,
+  IPSET_ATTR_INITVAL,
+  IPSET_ATTR_HASHSIZE,
+  IPSET_ATTR_MAXELEM,
+  IPSET_ATTR_NETMASK,
+  IPSET_ATTR_BUCKETSIZE,
+  IPSET_ATTR_RESIZE,
+  IPSET_ATTR_SIZE,
+  IPSET_ATTR_ELEMENTS,
+  IPSET_ATTR_REFERENCES,
+  IPSET_ATTR_MEMSIZE,
+  __IPSET_ATTR_CREATE_MAX,
+};
+#define IPSET_ATTR_CREATE_MAX (__IPSET_ATTR_CREATE_MAX - 1)
+enum {
+  IPSET_ATTR_ETHER = IPSET_ATTR_CADT_MAX + 1,
+  IPSET_ATTR_NAME,
+  IPSET_ATTR_NAMEREF,
+  IPSET_ATTR_IP2,
+  IPSET_ATTR_CIDR2,
+  IPSET_ATTR_IP2_TO,
+  IPSET_ATTR_IFACE,
+  IPSET_ATTR_BYTES,
+  IPSET_ATTR_PACKETS,
+  IPSET_ATTR_COMMENT,
+  IPSET_ATTR_SKBMARK,
+  IPSET_ATTR_SKBPRIO,
+  IPSET_ATTR_SKBQUEUE,
+  IPSET_ATTR_PAD,
+  __IPSET_ATTR_ADT_MAX,
+};
+#define IPSET_ATTR_ADT_MAX (__IPSET_ATTR_ADT_MAX - 1)
+enum {
+  IPSET_ATTR_IPADDR_IPV4 = IPSET_ATTR_UNSPEC + 1,
+  IPSET_ATTR_IPADDR_IPV6,
+  __IPSET_ATTR_IPADDR_MAX,
+};
+#define IPSET_ATTR_IPADDR_MAX (__IPSET_ATTR_IPADDR_MAX - 1)
+enum ipset_errno {
+  IPSET_ERR_PRIVATE = 4096,
+  IPSET_ERR_PROTOCOL,
+  IPSET_ERR_FIND_TYPE,
+  IPSET_ERR_MAX_SETS,
+  IPSET_ERR_BUSY,
+  IPSET_ERR_EXIST_SETNAME2,
+  IPSET_ERR_TYPE_MISMATCH,
+  IPSET_ERR_EXIST,
+  IPSET_ERR_INVALID_CIDR,
+  IPSET_ERR_INVALID_NETMASK,
+  IPSET_ERR_INVALID_FAMILY,
+  IPSET_ERR_TIMEOUT,
+  IPSET_ERR_REFERENCED,
+  IPSET_ERR_IPADDR_IPV4,
+  IPSET_ERR_IPADDR_IPV6,
+  IPSET_ERR_COUNTER,
+  IPSET_ERR_COMMENT,
+  IPSET_ERR_INVALID_MARKMASK,
+  IPSET_ERR_SKBINFO,
+  IPSET_ERR_TYPE_SPECIFIC = 4352,
+};
+enum ipset_cmd_flags {
+  IPSET_FLAG_BIT_EXIST = 0,
+  IPSET_FLAG_EXIST = (1 << IPSET_FLAG_BIT_EXIST),
+  IPSET_FLAG_BIT_LIST_SETNAME = 1,
+  IPSET_FLAG_LIST_SETNAME = (1 << IPSET_FLAG_BIT_LIST_SETNAME),
+  IPSET_FLAG_BIT_LIST_HEADER = 2,
+  IPSET_FLAG_LIST_HEADER = (1 << IPSET_FLAG_BIT_LIST_HEADER),
+  IPSET_FLAG_BIT_SKIP_COUNTER_UPDATE = 3,
+  IPSET_FLAG_SKIP_COUNTER_UPDATE = (1 << IPSET_FLAG_BIT_SKIP_COUNTER_UPDATE),
+  IPSET_FLAG_BIT_SKIP_SUBCOUNTER_UPDATE = 4,
+  IPSET_FLAG_SKIP_SUBCOUNTER_UPDATE = (1 << IPSET_FLAG_BIT_SKIP_SUBCOUNTER_UPDATE),
+  IPSET_FLAG_BIT_MATCH_COUNTERS = 5,
+  IPSET_FLAG_MATCH_COUNTERS = (1 << IPSET_FLAG_BIT_MATCH_COUNTERS),
+  IPSET_FLAG_BIT_RETURN_NOMATCH = 7,
+  IPSET_FLAG_RETURN_NOMATCH = (1 << IPSET_FLAG_BIT_RETURN_NOMATCH),
+  IPSET_FLAG_BIT_MAP_SKBMARK = 8,
+  IPSET_FLAG_MAP_SKBMARK = (1 << IPSET_FLAG_BIT_MAP_SKBMARK),
+  IPSET_FLAG_BIT_MAP_SKBPRIO = 9,
+  IPSET_FLAG_MAP_SKBPRIO = (1 << IPSET_FLAG_BIT_MAP_SKBPRIO),
+  IPSET_FLAG_BIT_MAP_SKBQUEUE = 10,
+  IPSET_FLAG_MAP_SKBQUEUE = (1 << IPSET_FLAG_BIT_MAP_SKBQUEUE),
+  IPSET_FLAG_CMD_MAX = 15,
+};
+enum ipset_cadt_flags {
+  IPSET_FLAG_BIT_BEFORE = 0,
+  IPSET_FLAG_BEFORE = (1 << IPSET_FLAG_BIT_BEFORE),
+  IPSET_FLAG_BIT_PHYSDEV = 1,
+  IPSET_FLAG_PHYSDEV = (1 << IPSET_FLAG_BIT_PHYSDEV),
+  IPSET_FLAG_BIT_NOMATCH = 2,
+  IPSET_FLAG_NOMATCH = (1 << IPSET_FLAG_BIT_NOMATCH),
+  IPSET_FLAG_BIT_WITH_COUNTERS = 3,
+  IPSET_FLAG_WITH_COUNTERS = (1 << IPSET_FLAG_BIT_WITH_COUNTERS),
+  IPSET_FLAG_BIT_WITH_COMMENT = 4,
+  IPSET_FLAG_WITH_COMMENT = (1 << IPSET_FLAG_BIT_WITH_COMMENT),
+  IPSET_FLAG_BIT_WITH_FORCEADD = 5,
+  IPSET_FLAG_WITH_FORCEADD = (1 << IPSET_FLAG_BIT_WITH_FORCEADD),
+  IPSET_FLAG_BIT_WITH_SKBINFO = 6,
+  IPSET_FLAG_WITH_SKBINFO = (1 << IPSET_FLAG_BIT_WITH_SKBINFO),
+  IPSET_FLAG_BIT_IFACE_WILDCARD = 7,
+  IPSET_FLAG_IFACE_WILDCARD = (1 << IPSET_FLAG_BIT_IFACE_WILDCARD),
+  IPSET_FLAG_CADT_MAX = 15,
+};
+enum ipset_create_flags {
+  IPSET_CREATE_FLAG_BIT_FORCEADD = 0,
+  IPSET_CREATE_FLAG_FORCEADD = (1 << IPSET_CREATE_FLAG_BIT_FORCEADD),
+  IPSET_CREATE_FLAG_BIT_BUCKETSIZE = 1,
+  IPSET_CREATE_FLAG_BUCKETSIZE = (1 << IPSET_CREATE_FLAG_BIT_BUCKETSIZE),
+  IPSET_CREATE_FLAG_BIT_MAX = 7,
+};
+enum ipset_adt {
+  IPSET_ADD,
+  IPSET_DEL,
+  IPSET_TEST,
+  IPSET_ADT_MAX,
+  IPSET_CREATE = IPSET_ADT_MAX,
+  IPSET_CADT_MAX,
+};
+typedef __u16 ip_set_id_t;
+#define IPSET_INVALID_ID 65535
+enum ip_set_dim {
+  IPSET_DIM_ZERO = 0,
+  IPSET_DIM_ONE,
+  IPSET_DIM_TWO,
+  IPSET_DIM_THREE,
+  IPSET_DIM_MAX = 6,
+  IPSET_BIT_RETURN_NOMATCH = 7,
+};
+enum ip_set_kopt {
+  IPSET_INV_MATCH = (1 << IPSET_DIM_ZERO),
+  IPSET_DIM_ONE_SRC = (1 << IPSET_DIM_ONE),
+  IPSET_DIM_TWO_SRC = (1 << IPSET_DIM_TWO),
+  IPSET_DIM_THREE_SRC = (1 << IPSET_DIM_THREE),
+  IPSET_RETURN_NOMATCH = (1 << IPSET_BIT_RETURN_NOMATCH),
+};
+enum {
+  IPSET_COUNTER_NONE = 0,
+  IPSET_COUNTER_EQ,
+  IPSET_COUNTER_NE,
+  IPSET_COUNTER_LT,
+  IPSET_COUNTER_GT,
+};
+struct ip_set_counter_match0 {
+  __u8 op;
+  __u64 value;
+};
+struct ip_set_counter_match {
+  __aligned_u64 value;
+  __u8 op;
+};
+#define SO_IP_SET 83
+union ip_set_name_index {
+  char name[IPSET_MAXNAMELEN];
+  ip_set_id_t index;
+};
+#define IP_SET_OP_GET_BYNAME 0x00000006
+struct ip_set_req_get_set {
+  unsigned int op;
+  unsigned int version;
+  union ip_set_name_index set;
+};
+#define IP_SET_OP_GET_BYINDEX 0x00000007
+#define IP_SET_OP_GET_FNAME 0x00000008
+struct ip_set_req_get_set_family {
+  unsigned int op;
+  unsigned int version;
+  unsigned int family;
+  union ip_set_name_index set;
+};
+#define IP_SET_OP_VERSION 0x00000100
+struct ip_set_req_version {
+  unsigned int op;
+  unsigned int version;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/ipset/ip_set_bitmap.h b/i686-linux-musl/include/linux/netfilter/ipset/ip_set_bitmap.h
new file mode 100644
index 0000000..e323396
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/ipset/ip_set_bitmap.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__IP_SET_BITMAP_H
+#define _UAPI__IP_SET_BITMAP_H
+#include <linux/netfilter/ipset/ip_set.h>
+enum {
+  IPSET_ERR_BITMAP_RANGE = IPSET_ERR_TYPE_SPECIFIC,
+  IPSET_ERR_BITMAP_RANGE_SIZE,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/ipset/ip_set_hash.h b/i686-linux-musl/include/linux/netfilter/ipset/ip_set_hash.h
new file mode 100644
index 0000000..d4aadcb
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/ipset/ip_set_hash.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__IP_SET_HASH_H
+#define _UAPI__IP_SET_HASH_H
+#include <linux/netfilter/ipset/ip_set.h>
+enum {
+  IPSET_ERR_HASH_FULL = IPSET_ERR_TYPE_SPECIFIC,
+  IPSET_ERR_HASH_ELEM,
+  IPSET_ERR_INVALID_PROTO,
+  IPSET_ERR_MISSING_PROTO,
+  IPSET_ERR_HASH_RANGE_UNSUPPORTED,
+  IPSET_ERR_HASH_RANGE,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/ipset/ip_set_list.h b/i686-linux-musl/include/linux/netfilter/ipset/ip_set_list.h
new file mode 100644
index 0000000..d3b5165
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/ipset/ip_set_list.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__IP_SET_LIST_H
+#define _UAPI__IP_SET_LIST_H
+#include <linux/netfilter/ipset/ip_set.h>
+enum {
+  IPSET_ERR_NAME = IPSET_ERR_TYPE_SPECIFIC,
+  IPSET_ERR_LOOP,
+  IPSET_ERR_BEFORE,
+  IPSET_ERR_NAMEREF,
+  IPSET_ERR_LIST_FULL,
+  IPSET_ERR_REF_EXIST,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nf_conntrack_common.h b/i686-linux-musl/include/linux/netfilter/nf_conntrack_common.h
new file mode 100644
index 0000000..3ff6030
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nf_conntrack_common.h
@@ -0,0 +1,94 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_NF_CONNTRACK_COMMON_H
+#define _UAPI_NF_CONNTRACK_COMMON_H
+enum ip_conntrack_info {
+  IP_CT_ESTABLISHED,
+  IP_CT_RELATED,
+  IP_CT_NEW,
+  IP_CT_IS_REPLY,
+  IP_CT_ESTABLISHED_REPLY = IP_CT_ESTABLISHED + IP_CT_IS_REPLY,
+  IP_CT_RELATED_REPLY = IP_CT_RELATED + IP_CT_IS_REPLY,
+  IP_CT_NUMBER,
+  IP_CT_NEW_REPLY = IP_CT_NUMBER,
+};
+#define NF_CT_STATE_INVALID_BIT (1 << 0)
+#define NF_CT_STATE_BIT(ctinfo) (1 << ((ctinfo) % IP_CT_IS_REPLY + 1))
+#define NF_CT_STATE_UNTRACKED_BIT (1 << 6)
+enum ip_conntrack_status {
+  IPS_EXPECTED_BIT = 0,
+  IPS_EXPECTED = (1 << IPS_EXPECTED_BIT),
+  IPS_SEEN_REPLY_BIT = 1,
+  IPS_SEEN_REPLY = (1 << IPS_SEEN_REPLY_BIT),
+  IPS_ASSURED_BIT = 2,
+  IPS_ASSURED = (1 << IPS_ASSURED_BIT),
+  IPS_CONFIRMED_BIT = 3,
+  IPS_CONFIRMED = (1 << IPS_CONFIRMED_BIT),
+  IPS_SRC_NAT_BIT = 4,
+  IPS_SRC_NAT = (1 << IPS_SRC_NAT_BIT),
+  IPS_DST_NAT_BIT = 5,
+  IPS_DST_NAT = (1 << IPS_DST_NAT_BIT),
+  IPS_NAT_MASK = (IPS_DST_NAT | IPS_SRC_NAT),
+  IPS_SEQ_ADJUST_BIT = 6,
+  IPS_SEQ_ADJUST = (1 << IPS_SEQ_ADJUST_BIT),
+  IPS_SRC_NAT_DONE_BIT = 7,
+  IPS_SRC_NAT_DONE = (1 << IPS_SRC_NAT_DONE_BIT),
+  IPS_DST_NAT_DONE_BIT = 8,
+  IPS_DST_NAT_DONE = (1 << IPS_DST_NAT_DONE_BIT),
+  IPS_NAT_DONE_MASK = (IPS_DST_NAT_DONE | IPS_SRC_NAT_DONE),
+  IPS_DYING_BIT = 9,
+  IPS_DYING = (1 << IPS_DYING_BIT),
+  IPS_FIXED_TIMEOUT_BIT = 10,
+  IPS_FIXED_TIMEOUT = (1 << IPS_FIXED_TIMEOUT_BIT),
+  IPS_TEMPLATE_BIT = 11,
+  IPS_TEMPLATE = (1 << IPS_TEMPLATE_BIT),
+  IPS_UNTRACKED_BIT = 12,
+  IPS_UNTRACKED = (1 << IPS_UNTRACKED_BIT),
+  IPS_HELPER_BIT = 13,
+  IPS_HELPER = (1 << IPS_HELPER_BIT),
+  IPS_OFFLOAD_BIT = 14,
+  IPS_OFFLOAD = (1 << IPS_OFFLOAD_BIT),
+  IPS_HW_OFFLOAD_BIT = 15,
+  IPS_HW_OFFLOAD = (1 << IPS_HW_OFFLOAD_BIT),
+  IPS_UNCHANGEABLE_MASK = (IPS_NAT_DONE_MASK | IPS_NAT_MASK | IPS_EXPECTED | IPS_CONFIRMED | IPS_DYING | IPS_SEQ_ADJUST | IPS_TEMPLATE | IPS_UNTRACKED | IPS_OFFLOAD | IPS_HW_OFFLOAD),
+  __IPS_MAX_BIT = 16,
+};
+enum ip_conntrack_events {
+  IPCT_NEW,
+  IPCT_RELATED,
+  IPCT_DESTROY,
+  IPCT_REPLY,
+  IPCT_ASSURED,
+  IPCT_PROTOINFO,
+  IPCT_HELPER,
+  IPCT_MARK,
+  IPCT_SEQADJ,
+  IPCT_NATSEQADJ = IPCT_SEQADJ,
+  IPCT_SECMARK,
+  IPCT_LABEL,
+  IPCT_SYNPROXY,
+};
+enum ip_conntrack_expect_events {
+  IPEXP_NEW,
+  IPEXP_DESTROY,
+};
+#define NF_CT_EXPECT_PERMANENT 0x1
+#define NF_CT_EXPECT_INACTIVE 0x2
+#define NF_CT_EXPECT_USERSPACE 0x4
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nf_conntrack_ftp.h b/i686-linux-musl/include/linux/netfilter/nf_conntrack_ftp.h
new file mode 100644
index 0000000..0c79774
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nf_conntrack_ftp.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_NF_CONNTRACK_FTP_H
+#define _UAPI_NF_CONNTRACK_FTP_H
+enum nf_ct_ftp_type {
+  NF_CT_FTP_PORT,
+  NF_CT_FTP_PASV,
+  NF_CT_FTP_EPRT,
+  NF_CT_FTP_EPSV,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nf_conntrack_sctp.h b/i686-linux-musl/include/linux/netfilter/nf_conntrack_sctp.h
new file mode 100644
index 0000000..060059c
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nf_conntrack_sctp.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_NF_CONNTRACK_SCTP_H
+#define _UAPI_NF_CONNTRACK_SCTP_H
+#include <linux/netfilter/nf_conntrack_tuple_common.h>
+enum sctp_conntrack {
+  SCTP_CONNTRACK_NONE,
+  SCTP_CONNTRACK_CLOSED,
+  SCTP_CONNTRACK_COOKIE_WAIT,
+  SCTP_CONNTRACK_COOKIE_ECHOED,
+  SCTP_CONNTRACK_ESTABLISHED,
+  SCTP_CONNTRACK_SHUTDOWN_SENT,
+  SCTP_CONNTRACK_SHUTDOWN_RECD,
+  SCTP_CONNTRACK_SHUTDOWN_ACK_SENT,
+  SCTP_CONNTRACK_HEARTBEAT_SENT,
+  SCTP_CONNTRACK_HEARTBEAT_ACKED,
+  SCTP_CONNTRACK_MAX
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nf_conntrack_tcp.h b/i686-linux-musl/include/linux/netfilter/nf_conntrack_tcp.h
new file mode 100644
index 0000000..8894aa1
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nf_conntrack_tcp.h
@@ -0,0 +1,52 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_NF_CONNTRACK_TCP_H
+#define _UAPI_NF_CONNTRACK_TCP_H
+#include <linux/types.h>
+enum tcp_conntrack {
+  TCP_CONNTRACK_NONE,
+  TCP_CONNTRACK_SYN_SENT,
+  TCP_CONNTRACK_SYN_RECV,
+  TCP_CONNTRACK_ESTABLISHED,
+  TCP_CONNTRACK_FIN_WAIT,
+  TCP_CONNTRACK_CLOSE_WAIT,
+  TCP_CONNTRACK_LAST_ACK,
+  TCP_CONNTRACK_TIME_WAIT,
+  TCP_CONNTRACK_CLOSE,
+  TCP_CONNTRACK_LISTEN,
+#define TCP_CONNTRACK_SYN_SENT2 TCP_CONNTRACK_LISTEN
+  TCP_CONNTRACK_MAX,
+  TCP_CONNTRACK_IGNORE,
+  TCP_CONNTRACK_RETRANS,
+  TCP_CONNTRACK_UNACK,
+  TCP_CONNTRACK_TIMEOUT_MAX
+};
+#define IP_CT_TCP_FLAG_WINDOW_SCALE 0x01
+#define IP_CT_TCP_FLAG_SACK_PERM 0x02
+#define IP_CT_TCP_FLAG_CLOSE_INIT 0x04
+#define IP_CT_TCP_FLAG_BE_LIBERAL 0x08
+#define IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED 0x10
+#define IP_CT_TCP_FLAG_MAXACK_SET 0x20
+#define IP_CT_EXP_CHALLENGE_ACK 0x40
+#define IP_CT_TCP_SIMULTANEOUS_OPEN 0x80
+struct nf_ct_tcp_flags {
+  __u8 flags;
+  __u8 mask;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nf_conntrack_tuple_common.h b/i686-linux-musl/include/linux/netfilter/nf_conntrack_tuple_common.h
new file mode 100644
index 0000000..b2f795c
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nf_conntrack_tuple_common.h
@@ -0,0 +1,51 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _NF_CONNTRACK_TUPLE_COMMON_H
+#define _NF_CONNTRACK_TUPLE_COMMON_H
+#include <linux/types.h>
+#include <linux/netfilter.h>
+#include <linux/netfilter/nf_conntrack_common.h>
+enum ip_conntrack_dir {
+  IP_CT_DIR_ORIGINAL,
+  IP_CT_DIR_REPLY,
+  IP_CT_DIR_MAX
+};
+union nf_conntrack_man_proto {
+  __be16 all;
+  struct {
+    __be16 port;
+  } tcp;
+  struct {
+    __be16 port;
+  } udp;
+  struct {
+    __be16 id;
+  } icmp;
+  struct {
+    __be16 port;
+  } dccp;
+  struct {
+    __be16 port;
+  } sctp;
+  struct {
+    __be16 key;
+  } gre;
+};
+#define CTINFO2DIR(ctinfo) ((ctinfo) >= IP_CT_IS_REPLY ? IP_CT_DIR_REPLY : IP_CT_DIR_ORIGINAL)
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nf_log.h b/i686-linux-musl/include/linux/netfilter/nf_log.h
new file mode 100644
index 0000000..f7a729d
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nf_log.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _NETFILTER_NF_LOG_H
+#define _NETFILTER_NF_LOG_H
+#define NF_LOG_TCPSEQ 0x01
+#define NF_LOG_TCPOPT 0x02
+#define NF_LOG_IPOPT 0x04
+#define NF_LOG_UID 0x08
+#define NF_LOG_NFLOG 0x10
+#define NF_LOG_MACDECODE 0x20
+#define NF_LOG_MASK 0x2f
+#define NF_LOG_PREFIXLEN 128
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nf_nat.h b/i686-linux-musl/include/linux/netfilter/nf_nat.h
new file mode 100644
index 0000000..84373ed
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nf_nat.h
@@ -0,0 +1,58 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _NETFILTER_NF_NAT_H
+#define _NETFILTER_NF_NAT_H
+#include <linux/netfilter.h>
+#include <linux/netfilter/nf_conntrack_tuple_common.h>
+#define NF_NAT_RANGE_MAP_IPS (1 << 0)
+#define NF_NAT_RANGE_PROTO_SPECIFIED (1 << 1)
+#define NF_NAT_RANGE_PROTO_RANDOM (1 << 2)
+#define NF_NAT_RANGE_PERSISTENT (1 << 3)
+#define NF_NAT_RANGE_PROTO_RANDOM_FULLY (1 << 4)
+#define NF_NAT_RANGE_PROTO_OFFSET (1 << 5)
+#define NF_NAT_RANGE_NETMAP (1 << 6)
+#define NF_NAT_RANGE_PROTO_RANDOM_ALL (NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PROTO_RANDOM_FULLY)
+#define NF_NAT_RANGE_MASK (NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED | NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PERSISTENT | NF_NAT_RANGE_PROTO_RANDOM_FULLY | NF_NAT_RANGE_PROTO_OFFSET | NF_NAT_RANGE_NETMAP)
+struct nf_nat_ipv4_range {
+  unsigned int flags;
+  __be32 min_ip;
+  __be32 max_ip;
+  union nf_conntrack_man_proto min;
+  union nf_conntrack_man_proto max;
+};
+struct nf_nat_ipv4_multi_range_compat {
+  unsigned int rangesize;
+  struct nf_nat_ipv4_range range[1];
+};
+struct nf_nat_range {
+  unsigned int flags;
+  union nf_inet_addr min_addr;
+  union nf_inet_addr max_addr;
+  union nf_conntrack_man_proto min_proto;
+  union nf_conntrack_man_proto max_proto;
+};
+struct nf_nat_range2 {
+  unsigned int flags;
+  union nf_inet_addr min_addr;
+  union nf_inet_addr max_addr;
+  union nf_conntrack_man_proto min_proto;
+  union nf_conntrack_man_proto max_proto;
+  union nf_conntrack_man_proto base_proto;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nf_synproxy.h b/i686-linux-musl/include/linux/netfilter/nf_synproxy.h
new file mode 100644
index 0000000..474838e
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nf_synproxy.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _NF_SYNPROXY_H
+#define _NF_SYNPROXY_H
+#include <linux/types.h>
+#define NF_SYNPROXY_OPT_MSS 0x01
+#define NF_SYNPROXY_OPT_WSCALE 0x02
+#define NF_SYNPROXY_OPT_SACK_PERM 0x04
+#define NF_SYNPROXY_OPT_TIMESTAMP 0x08
+#define NF_SYNPROXY_OPT_ECN 0x10
+#define NF_SYNPROXY_OPT_MASK (NF_SYNPROXY_OPT_MSS | NF_SYNPROXY_OPT_WSCALE | NF_SYNPROXY_OPT_SACK_PERM | NF_SYNPROXY_OPT_TIMESTAMP)
+struct nf_synproxy_info {
+  __u8 options;
+  __u8 wscale;
+  __u16 mss;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nf_tables.h b/i686-linux-musl/include/linux/netfilter/nf_tables.h
new file mode 100644
index 0000000..441cd60
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nf_tables.h
@@ -0,0 +1,1048 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_NF_TABLES_H
+#define _LINUX_NF_TABLES_H
+#define NFT_NAME_MAXLEN 256
+#define NFT_TABLE_MAXNAMELEN NFT_NAME_MAXLEN
+#define NFT_CHAIN_MAXNAMELEN NFT_NAME_MAXLEN
+#define NFT_SET_MAXNAMELEN NFT_NAME_MAXLEN
+#define NFT_OBJ_MAXNAMELEN NFT_NAME_MAXLEN
+#define NFT_USERDATA_MAXLEN 256
+#define NFT_OSF_MAXGENRELEN 16
+enum nft_registers {
+  NFT_REG_VERDICT,
+  NFT_REG_1,
+  NFT_REG_2,
+  NFT_REG_3,
+  NFT_REG_4,
+  __NFT_REG_MAX,
+  NFT_REG32_00 = 8,
+  NFT_REG32_01,
+  NFT_REG32_02,
+  NFT_REG32_03,
+  NFT_REG32_04,
+  NFT_REG32_05,
+  NFT_REG32_06,
+  NFT_REG32_07,
+  NFT_REG32_08,
+  NFT_REG32_09,
+  NFT_REG32_10,
+  NFT_REG32_11,
+  NFT_REG32_12,
+  NFT_REG32_13,
+  NFT_REG32_14,
+  NFT_REG32_15,
+};
+#define NFT_REG_MAX (__NFT_REG_MAX - 1)
+#define NFT_REG_SIZE 16
+#define NFT_REG32_SIZE 4
+#define NFT_REG32_COUNT (NFT_REG32_15 - NFT_REG32_00 + 1)
+enum nft_verdicts {
+  NFT_CONTINUE = - 1,
+  NFT_BREAK = - 2,
+  NFT_JUMP = - 3,
+  NFT_GOTO = - 4,
+  NFT_RETURN = - 5,
+};
+enum nf_tables_msg_types {
+  NFT_MSG_NEWTABLE,
+  NFT_MSG_GETTABLE,
+  NFT_MSG_DELTABLE,
+  NFT_MSG_NEWCHAIN,
+  NFT_MSG_GETCHAIN,
+  NFT_MSG_DELCHAIN,
+  NFT_MSG_NEWRULE,
+  NFT_MSG_GETRULE,
+  NFT_MSG_DELRULE,
+  NFT_MSG_NEWSET,
+  NFT_MSG_GETSET,
+  NFT_MSG_DELSET,
+  NFT_MSG_NEWSETELEM,
+  NFT_MSG_GETSETELEM,
+  NFT_MSG_DELSETELEM,
+  NFT_MSG_NEWGEN,
+  NFT_MSG_GETGEN,
+  NFT_MSG_TRACE,
+  NFT_MSG_NEWOBJ,
+  NFT_MSG_GETOBJ,
+  NFT_MSG_DELOBJ,
+  NFT_MSG_GETOBJ_RESET,
+  NFT_MSG_NEWFLOWTABLE,
+  NFT_MSG_GETFLOWTABLE,
+  NFT_MSG_DELFLOWTABLE,
+  NFT_MSG_MAX,
+};
+enum nft_list_attributes {
+  NFTA_LIST_UNSPEC,
+  NFTA_LIST_ELEM,
+  __NFTA_LIST_MAX
+};
+#define NFTA_LIST_MAX (__NFTA_LIST_MAX - 1)
+enum nft_hook_attributes {
+  NFTA_HOOK_UNSPEC,
+  NFTA_HOOK_HOOKNUM,
+  NFTA_HOOK_PRIORITY,
+  NFTA_HOOK_DEV,
+  NFTA_HOOK_DEVS,
+  __NFTA_HOOK_MAX
+};
+#define NFTA_HOOK_MAX (__NFTA_HOOK_MAX - 1)
+enum nft_table_flags {
+  NFT_TABLE_F_DORMANT = 0x1,
+  NFT_TABLE_F_OWNER = 0x2,
+};
+#define NFT_TABLE_F_MASK (NFT_TABLE_F_DORMANT | NFT_TABLE_F_OWNER)
+enum nft_table_attributes {
+  NFTA_TABLE_UNSPEC,
+  NFTA_TABLE_NAME,
+  NFTA_TABLE_FLAGS,
+  NFTA_TABLE_USE,
+  NFTA_TABLE_HANDLE,
+  NFTA_TABLE_PAD,
+  NFTA_TABLE_USERDATA,
+  NFTA_TABLE_OWNER,
+  __NFTA_TABLE_MAX
+};
+#define NFTA_TABLE_MAX (__NFTA_TABLE_MAX - 1)
+enum nft_chain_flags {
+  NFT_CHAIN_BASE = (1 << 0),
+  NFT_CHAIN_HW_OFFLOAD = (1 << 1),
+  NFT_CHAIN_BINDING = (1 << 2),
+};
+#define NFT_CHAIN_FLAGS (NFT_CHAIN_BASE | NFT_CHAIN_HW_OFFLOAD | NFT_CHAIN_BINDING)
+enum nft_chain_attributes {
+  NFTA_CHAIN_UNSPEC,
+  NFTA_CHAIN_TABLE,
+  NFTA_CHAIN_HANDLE,
+  NFTA_CHAIN_NAME,
+  NFTA_CHAIN_HOOK,
+  NFTA_CHAIN_POLICY,
+  NFTA_CHAIN_USE,
+  NFTA_CHAIN_TYPE,
+  NFTA_CHAIN_COUNTERS,
+  NFTA_CHAIN_PAD,
+  NFTA_CHAIN_FLAGS,
+  NFTA_CHAIN_ID,
+  NFTA_CHAIN_USERDATA,
+  __NFTA_CHAIN_MAX
+};
+#define NFTA_CHAIN_MAX (__NFTA_CHAIN_MAX - 1)
+enum nft_rule_attributes {
+  NFTA_RULE_UNSPEC,
+  NFTA_RULE_TABLE,
+  NFTA_RULE_CHAIN,
+  NFTA_RULE_HANDLE,
+  NFTA_RULE_EXPRESSIONS,
+  NFTA_RULE_COMPAT,
+  NFTA_RULE_POSITION,
+  NFTA_RULE_USERDATA,
+  NFTA_RULE_PAD,
+  NFTA_RULE_ID,
+  NFTA_RULE_POSITION_ID,
+  NFTA_RULE_CHAIN_ID,
+  __NFTA_RULE_MAX
+};
+#define NFTA_RULE_MAX (__NFTA_RULE_MAX - 1)
+enum nft_rule_compat_flags {
+  NFT_RULE_COMPAT_F_INV = (1 << 1),
+  NFT_RULE_COMPAT_F_MASK = NFT_RULE_COMPAT_F_INV,
+};
+enum nft_rule_compat_attributes {
+  NFTA_RULE_COMPAT_UNSPEC,
+  NFTA_RULE_COMPAT_PROTO,
+  NFTA_RULE_COMPAT_FLAGS,
+  __NFTA_RULE_COMPAT_MAX
+};
+#define NFTA_RULE_COMPAT_MAX (__NFTA_RULE_COMPAT_MAX - 1)
+enum nft_set_flags {
+  NFT_SET_ANONYMOUS = 0x1,
+  NFT_SET_CONSTANT = 0x2,
+  NFT_SET_INTERVAL = 0x4,
+  NFT_SET_MAP = 0x8,
+  NFT_SET_TIMEOUT = 0x10,
+  NFT_SET_EVAL = 0x20,
+  NFT_SET_OBJECT = 0x40,
+  NFT_SET_CONCAT = 0x80,
+  NFT_SET_EXPR = 0x100,
+};
+enum nft_set_policies {
+  NFT_SET_POL_PERFORMANCE,
+  NFT_SET_POL_MEMORY,
+};
+enum nft_set_desc_attributes {
+  NFTA_SET_DESC_UNSPEC,
+  NFTA_SET_DESC_SIZE,
+  NFTA_SET_DESC_CONCAT,
+  __NFTA_SET_DESC_MAX
+};
+#define NFTA_SET_DESC_MAX (__NFTA_SET_DESC_MAX - 1)
+enum nft_set_field_attributes {
+  NFTA_SET_FIELD_UNSPEC,
+  NFTA_SET_FIELD_LEN,
+  __NFTA_SET_FIELD_MAX
+};
+#define NFTA_SET_FIELD_MAX (__NFTA_SET_FIELD_MAX - 1)
+enum nft_set_attributes {
+  NFTA_SET_UNSPEC,
+  NFTA_SET_TABLE,
+  NFTA_SET_NAME,
+  NFTA_SET_FLAGS,
+  NFTA_SET_KEY_TYPE,
+  NFTA_SET_KEY_LEN,
+  NFTA_SET_DATA_TYPE,
+  NFTA_SET_DATA_LEN,
+  NFTA_SET_POLICY,
+  NFTA_SET_DESC,
+  NFTA_SET_ID,
+  NFTA_SET_TIMEOUT,
+  NFTA_SET_GC_INTERVAL,
+  NFTA_SET_USERDATA,
+  NFTA_SET_PAD,
+  NFTA_SET_OBJ_TYPE,
+  NFTA_SET_HANDLE,
+  NFTA_SET_EXPR,
+  NFTA_SET_EXPRESSIONS,
+  __NFTA_SET_MAX
+};
+#define NFTA_SET_MAX (__NFTA_SET_MAX - 1)
+enum nft_set_elem_flags {
+  NFT_SET_ELEM_INTERVAL_END = 0x1,
+  NFT_SET_ELEM_CATCHALL = 0x2,
+};
+enum nft_set_elem_attributes {
+  NFTA_SET_ELEM_UNSPEC,
+  NFTA_SET_ELEM_KEY,
+  NFTA_SET_ELEM_DATA,
+  NFTA_SET_ELEM_FLAGS,
+  NFTA_SET_ELEM_TIMEOUT,
+  NFTA_SET_ELEM_EXPIRATION,
+  NFTA_SET_ELEM_USERDATA,
+  NFTA_SET_ELEM_EXPR,
+  NFTA_SET_ELEM_PAD,
+  NFTA_SET_ELEM_OBJREF,
+  NFTA_SET_ELEM_KEY_END,
+  NFTA_SET_ELEM_EXPRESSIONS,
+  __NFTA_SET_ELEM_MAX
+};
+#define NFTA_SET_ELEM_MAX (__NFTA_SET_ELEM_MAX - 1)
+enum nft_set_elem_list_attributes {
+  NFTA_SET_ELEM_LIST_UNSPEC,
+  NFTA_SET_ELEM_LIST_TABLE,
+  NFTA_SET_ELEM_LIST_SET,
+  NFTA_SET_ELEM_LIST_ELEMENTS,
+  NFTA_SET_ELEM_LIST_SET_ID,
+  __NFTA_SET_ELEM_LIST_MAX
+};
+#define NFTA_SET_ELEM_LIST_MAX (__NFTA_SET_ELEM_LIST_MAX - 1)
+enum nft_data_types {
+  NFT_DATA_VALUE,
+  NFT_DATA_VERDICT = 0xffffff00U,
+};
+#define NFT_DATA_RESERVED_MASK 0xffffff00U
+enum nft_data_attributes {
+  NFTA_DATA_UNSPEC,
+  NFTA_DATA_VALUE,
+  NFTA_DATA_VERDICT,
+  __NFTA_DATA_MAX
+};
+#define NFTA_DATA_MAX (__NFTA_DATA_MAX - 1)
+#define NFT_DATA_VALUE_MAXLEN 64
+enum nft_verdict_attributes {
+  NFTA_VERDICT_UNSPEC,
+  NFTA_VERDICT_CODE,
+  NFTA_VERDICT_CHAIN,
+  NFTA_VERDICT_CHAIN_ID,
+  __NFTA_VERDICT_MAX
+};
+#define NFTA_VERDICT_MAX (__NFTA_VERDICT_MAX - 1)
+enum nft_expr_attributes {
+  NFTA_EXPR_UNSPEC,
+  NFTA_EXPR_NAME,
+  NFTA_EXPR_DATA,
+  __NFTA_EXPR_MAX
+};
+#define NFTA_EXPR_MAX (__NFTA_EXPR_MAX - 1)
+enum nft_immediate_attributes {
+  NFTA_IMMEDIATE_UNSPEC,
+  NFTA_IMMEDIATE_DREG,
+  NFTA_IMMEDIATE_DATA,
+  __NFTA_IMMEDIATE_MAX
+};
+#define NFTA_IMMEDIATE_MAX (__NFTA_IMMEDIATE_MAX - 1)
+enum nft_bitwise_ops {
+  NFT_BITWISE_BOOL,
+  NFT_BITWISE_LSHIFT,
+  NFT_BITWISE_RSHIFT,
+};
+enum nft_bitwise_attributes {
+  NFTA_BITWISE_UNSPEC,
+  NFTA_BITWISE_SREG,
+  NFTA_BITWISE_DREG,
+  NFTA_BITWISE_LEN,
+  NFTA_BITWISE_MASK,
+  NFTA_BITWISE_XOR,
+  NFTA_BITWISE_OP,
+  NFTA_BITWISE_DATA,
+  __NFTA_BITWISE_MAX
+};
+#define NFTA_BITWISE_MAX (__NFTA_BITWISE_MAX - 1)
+enum nft_byteorder_ops {
+  NFT_BYTEORDER_NTOH,
+  NFT_BYTEORDER_HTON,
+};
+enum nft_byteorder_attributes {
+  NFTA_BYTEORDER_UNSPEC,
+  NFTA_BYTEORDER_SREG,
+  NFTA_BYTEORDER_DREG,
+  NFTA_BYTEORDER_OP,
+  NFTA_BYTEORDER_LEN,
+  NFTA_BYTEORDER_SIZE,
+  __NFTA_BYTEORDER_MAX
+};
+#define NFTA_BYTEORDER_MAX (__NFTA_BYTEORDER_MAX - 1)
+enum nft_cmp_ops {
+  NFT_CMP_EQ,
+  NFT_CMP_NEQ,
+  NFT_CMP_LT,
+  NFT_CMP_LTE,
+  NFT_CMP_GT,
+  NFT_CMP_GTE,
+};
+enum nft_cmp_attributes {
+  NFTA_CMP_UNSPEC,
+  NFTA_CMP_SREG,
+  NFTA_CMP_OP,
+  NFTA_CMP_DATA,
+  __NFTA_CMP_MAX
+};
+#define NFTA_CMP_MAX (__NFTA_CMP_MAX - 1)
+enum nft_range_ops {
+  NFT_RANGE_EQ,
+  NFT_RANGE_NEQ,
+};
+enum nft_range_attributes {
+  NFTA_RANGE_UNSPEC,
+  NFTA_RANGE_SREG,
+  NFTA_RANGE_OP,
+  NFTA_RANGE_FROM_DATA,
+  NFTA_RANGE_TO_DATA,
+  __NFTA_RANGE_MAX
+};
+#define NFTA_RANGE_MAX (__NFTA_RANGE_MAX - 1)
+enum nft_lookup_flags {
+  NFT_LOOKUP_F_INV = (1 << 0),
+};
+enum nft_lookup_attributes {
+  NFTA_LOOKUP_UNSPEC,
+  NFTA_LOOKUP_SET,
+  NFTA_LOOKUP_SREG,
+  NFTA_LOOKUP_DREG,
+  NFTA_LOOKUP_SET_ID,
+  NFTA_LOOKUP_FLAGS,
+  __NFTA_LOOKUP_MAX
+};
+#define NFTA_LOOKUP_MAX (__NFTA_LOOKUP_MAX - 1)
+enum nft_dynset_ops {
+  NFT_DYNSET_OP_ADD,
+  NFT_DYNSET_OP_UPDATE,
+  NFT_DYNSET_OP_DELETE,
+};
+enum nft_dynset_flags {
+  NFT_DYNSET_F_INV = (1 << 0),
+  NFT_DYNSET_F_EXPR = (1 << 1),
+};
+enum nft_dynset_attributes {
+  NFTA_DYNSET_UNSPEC,
+  NFTA_DYNSET_SET_NAME,
+  NFTA_DYNSET_SET_ID,
+  NFTA_DYNSET_OP,
+  NFTA_DYNSET_SREG_KEY,
+  NFTA_DYNSET_SREG_DATA,
+  NFTA_DYNSET_TIMEOUT,
+  NFTA_DYNSET_EXPR,
+  NFTA_DYNSET_PAD,
+  NFTA_DYNSET_FLAGS,
+  NFTA_DYNSET_EXPRESSIONS,
+  __NFTA_DYNSET_MAX,
+};
+#define NFTA_DYNSET_MAX (__NFTA_DYNSET_MAX - 1)
+enum nft_payload_bases {
+  NFT_PAYLOAD_LL_HEADER,
+  NFT_PAYLOAD_NETWORK_HEADER,
+  NFT_PAYLOAD_TRANSPORT_HEADER,
+  NFT_PAYLOAD_INNER_HEADER,
+};
+enum nft_payload_csum_types {
+  NFT_PAYLOAD_CSUM_NONE,
+  NFT_PAYLOAD_CSUM_INET,
+  NFT_PAYLOAD_CSUM_SCTP,
+};
+enum nft_payload_csum_flags {
+  NFT_PAYLOAD_L4CSUM_PSEUDOHDR = (1 << 0),
+};
+enum nft_payload_attributes {
+  NFTA_PAYLOAD_UNSPEC,
+  NFTA_PAYLOAD_DREG,
+  NFTA_PAYLOAD_BASE,
+  NFTA_PAYLOAD_OFFSET,
+  NFTA_PAYLOAD_LEN,
+  NFTA_PAYLOAD_SREG,
+  NFTA_PAYLOAD_CSUM_TYPE,
+  NFTA_PAYLOAD_CSUM_OFFSET,
+  NFTA_PAYLOAD_CSUM_FLAGS,
+  __NFTA_PAYLOAD_MAX
+};
+#define NFTA_PAYLOAD_MAX (__NFTA_PAYLOAD_MAX - 1)
+enum nft_exthdr_flags {
+  NFT_EXTHDR_F_PRESENT = (1 << 0),
+};
+enum nft_exthdr_op {
+  NFT_EXTHDR_OP_IPV6,
+  NFT_EXTHDR_OP_TCPOPT,
+  NFT_EXTHDR_OP_IPV4,
+  NFT_EXTHDR_OP_SCTP,
+  __NFT_EXTHDR_OP_MAX
+};
+#define NFT_EXTHDR_OP_MAX (__NFT_EXTHDR_OP_MAX - 1)
+enum nft_exthdr_attributes {
+  NFTA_EXTHDR_UNSPEC,
+  NFTA_EXTHDR_DREG,
+  NFTA_EXTHDR_TYPE,
+  NFTA_EXTHDR_OFFSET,
+  NFTA_EXTHDR_LEN,
+  NFTA_EXTHDR_FLAGS,
+  NFTA_EXTHDR_OP,
+  NFTA_EXTHDR_SREG,
+  __NFTA_EXTHDR_MAX
+};
+#define NFTA_EXTHDR_MAX (__NFTA_EXTHDR_MAX - 1)
+enum nft_meta_keys {
+  NFT_META_LEN,
+  NFT_META_PROTOCOL,
+  NFT_META_PRIORITY,
+  NFT_META_MARK,
+  NFT_META_IIF,
+  NFT_META_OIF,
+  NFT_META_IIFNAME,
+  NFT_META_OIFNAME,
+  NFT_META_IFTYPE,
+#define NFT_META_IIFTYPE NFT_META_IFTYPE
+  NFT_META_OIFTYPE,
+  NFT_META_SKUID,
+  NFT_META_SKGID,
+  NFT_META_NFTRACE,
+  NFT_META_RTCLASSID,
+  NFT_META_SECMARK,
+  NFT_META_NFPROTO,
+  NFT_META_L4PROTO,
+  NFT_META_BRI_IIFNAME,
+  NFT_META_BRI_OIFNAME,
+  NFT_META_PKTTYPE,
+  NFT_META_CPU,
+  NFT_META_IIFGROUP,
+  NFT_META_OIFGROUP,
+  NFT_META_CGROUP,
+  NFT_META_PRANDOM,
+  NFT_META_SECPATH,
+  NFT_META_IIFKIND,
+  NFT_META_OIFKIND,
+  NFT_META_BRI_IIFPVID,
+  NFT_META_BRI_IIFVPROTO,
+  NFT_META_TIME_NS,
+  NFT_META_TIME_DAY,
+  NFT_META_TIME_HOUR,
+  NFT_META_SDIF,
+  NFT_META_SDIFNAME,
+  __NFT_META_IIFTYPE,
+};
+enum nft_rt_keys {
+  NFT_RT_CLASSID,
+  NFT_RT_NEXTHOP4,
+  NFT_RT_NEXTHOP6,
+  NFT_RT_TCPMSS,
+  NFT_RT_XFRM,
+  __NFT_RT_MAX
+};
+#define NFT_RT_MAX (__NFT_RT_MAX - 1)
+enum nft_hash_types {
+  NFT_HASH_JENKINS,
+  NFT_HASH_SYM,
+};
+enum nft_hash_attributes {
+  NFTA_HASH_UNSPEC,
+  NFTA_HASH_SREG,
+  NFTA_HASH_DREG,
+  NFTA_HASH_LEN,
+  NFTA_HASH_MODULUS,
+  NFTA_HASH_SEED,
+  NFTA_HASH_OFFSET,
+  NFTA_HASH_TYPE,
+  NFTA_HASH_SET_NAME,
+  NFTA_HASH_SET_ID,
+  __NFTA_HASH_MAX,
+};
+#define NFTA_HASH_MAX (__NFTA_HASH_MAX - 1)
+enum nft_meta_attributes {
+  NFTA_META_UNSPEC,
+  NFTA_META_DREG,
+  NFTA_META_KEY,
+  NFTA_META_SREG,
+  __NFTA_META_MAX
+};
+#define NFTA_META_MAX (__NFTA_META_MAX - 1)
+enum nft_rt_attributes {
+  NFTA_RT_UNSPEC,
+  NFTA_RT_DREG,
+  NFTA_RT_KEY,
+  __NFTA_RT_MAX
+};
+#define NFTA_RT_MAX (__NFTA_RT_MAX - 1)
+enum nft_socket_attributes {
+  NFTA_SOCKET_UNSPEC,
+  NFTA_SOCKET_KEY,
+  NFTA_SOCKET_DREG,
+  NFTA_SOCKET_LEVEL,
+  __NFTA_SOCKET_MAX
+};
+#define NFTA_SOCKET_MAX (__NFTA_SOCKET_MAX - 1)
+enum nft_socket_keys {
+  NFT_SOCKET_TRANSPARENT,
+  NFT_SOCKET_MARK,
+  NFT_SOCKET_WILDCARD,
+  NFT_SOCKET_CGROUPV2,
+  __NFT_SOCKET_MAX
+};
+#define NFT_SOCKET_MAX (__NFT_SOCKET_MAX - 1)
+enum nft_ct_keys {
+  NFT_CT_STATE,
+  NFT_CT_DIRECTION,
+  NFT_CT_STATUS,
+  NFT_CT_MARK,
+  NFT_CT_SECMARK,
+  NFT_CT_EXPIRATION,
+  NFT_CT_HELPER,
+  NFT_CT_L3PROTOCOL,
+  NFT_CT_SRC,
+  NFT_CT_DST,
+  NFT_CT_PROTOCOL,
+  NFT_CT_PROTO_SRC,
+  NFT_CT_PROTO_DST,
+  NFT_CT_LABELS,
+  NFT_CT_PKTS,
+  NFT_CT_BYTES,
+  NFT_CT_AVGPKT,
+  NFT_CT_ZONE,
+  NFT_CT_EVENTMASK,
+  NFT_CT_SRC_IP,
+  NFT_CT_DST_IP,
+  NFT_CT_SRC_IP6,
+  NFT_CT_DST_IP6,
+  NFT_CT_ID,
+  __NFT_CT_MAX
+};
+#define NFT_CT_MAX (__NFT_CT_MAX - 1)
+enum nft_ct_attributes {
+  NFTA_CT_UNSPEC,
+  NFTA_CT_DREG,
+  NFTA_CT_KEY,
+  NFTA_CT_DIRECTION,
+  NFTA_CT_SREG,
+  __NFTA_CT_MAX
+};
+#define NFTA_CT_MAX (__NFTA_CT_MAX - 1)
+enum nft_offload_attributes {
+  NFTA_FLOW_UNSPEC,
+  NFTA_FLOW_TABLE_NAME,
+  __NFTA_FLOW_MAX,
+};
+#define NFTA_FLOW_MAX (__NFTA_FLOW_MAX - 1)
+enum nft_limit_type {
+  NFT_LIMIT_PKTS,
+  NFT_LIMIT_PKT_BYTES
+};
+enum nft_limit_flags {
+  NFT_LIMIT_F_INV = (1 << 0),
+};
+enum nft_limit_attributes {
+  NFTA_LIMIT_UNSPEC,
+  NFTA_LIMIT_RATE,
+  NFTA_LIMIT_UNIT,
+  NFTA_LIMIT_BURST,
+  NFTA_LIMIT_TYPE,
+  NFTA_LIMIT_FLAGS,
+  NFTA_LIMIT_PAD,
+  __NFTA_LIMIT_MAX
+};
+#define NFTA_LIMIT_MAX (__NFTA_LIMIT_MAX - 1)
+enum nft_connlimit_flags {
+  NFT_CONNLIMIT_F_INV = (1 << 0),
+};
+enum nft_connlimit_attributes {
+  NFTA_CONNLIMIT_UNSPEC,
+  NFTA_CONNLIMIT_COUNT,
+  NFTA_CONNLIMIT_FLAGS,
+  __NFTA_CONNLIMIT_MAX
+};
+#define NFTA_CONNLIMIT_MAX (__NFTA_CONNLIMIT_MAX - 1)
+enum nft_counter_attributes {
+  NFTA_COUNTER_UNSPEC,
+  NFTA_COUNTER_BYTES,
+  NFTA_COUNTER_PACKETS,
+  NFTA_COUNTER_PAD,
+  __NFTA_COUNTER_MAX
+};
+#define NFTA_COUNTER_MAX (__NFTA_COUNTER_MAX - 1)
+enum nft_last_attributes {
+  NFTA_LAST_UNSPEC,
+  NFTA_LAST_SET,
+  NFTA_LAST_MSECS,
+  NFTA_LAST_PAD,
+  __NFTA_LAST_MAX
+};
+#define NFTA_LAST_MAX (__NFTA_LAST_MAX - 1)
+enum nft_log_attributes {
+  NFTA_LOG_UNSPEC,
+  NFTA_LOG_GROUP,
+  NFTA_LOG_PREFIX,
+  NFTA_LOG_SNAPLEN,
+  NFTA_LOG_QTHRESHOLD,
+  NFTA_LOG_LEVEL,
+  NFTA_LOG_FLAGS,
+  __NFTA_LOG_MAX
+};
+#define NFTA_LOG_MAX (__NFTA_LOG_MAX - 1)
+enum nft_log_level {
+  NFT_LOGLEVEL_EMERG,
+  NFT_LOGLEVEL_ALERT,
+  NFT_LOGLEVEL_CRIT,
+  NFT_LOGLEVEL_ERR,
+  NFT_LOGLEVEL_WARNING,
+  NFT_LOGLEVEL_NOTICE,
+  NFT_LOGLEVEL_INFO,
+  NFT_LOGLEVEL_DEBUG,
+  NFT_LOGLEVEL_AUDIT,
+  __NFT_LOGLEVEL_MAX
+};
+#define NFT_LOGLEVEL_MAX (__NFT_LOGLEVEL_MAX - 1)
+enum nft_queue_attributes {
+  NFTA_QUEUE_UNSPEC,
+  NFTA_QUEUE_NUM,
+  NFTA_QUEUE_TOTAL,
+  NFTA_QUEUE_FLAGS,
+  NFTA_QUEUE_SREG_QNUM,
+  __NFTA_QUEUE_MAX
+};
+#define NFTA_QUEUE_MAX (__NFTA_QUEUE_MAX - 1)
+#define NFT_QUEUE_FLAG_BYPASS 0x01
+#define NFT_QUEUE_FLAG_CPU_FANOUT 0x02
+#define NFT_QUEUE_FLAG_MASK 0x03
+enum nft_quota_flags {
+  NFT_QUOTA_F_INV = (1 << 0),
+  NFT_QUOTA_F_DEPLETED = (1 << 1),
+};
+enum nft_quota_attributes {
+  NFTA_QUOTA_UNSPEC,
+  NFTA_QUOTA_BYTES,
+  NFTA_QUOTA_FLAGS,
+  NFTA_QUOTA_PAD,
+  NFTA_QUOTA_CONSUMED,
+  __NFTA_QUOTA_MAX
+};
+#define NFTA_QUOTA_MAX (__NFTA_QUOTA_MAX - 1)
+enum nft_secmark_attributes {
+  NFTA_SECMARK_UNSPEC,
+  NFTA_SECMARK_CTX,
+  __NFTA_SECMARK_MAX,
+};
+#define NFTA_SECMARK_MAX (__NFTA_SECMARK_MAX - 1)
+#define NFT_SECMARK_CTX_MAXLEN 256
+enum nft_reject_types {
+  NFT_REJECT_ICMP_UNREACH,
+  NFT_REJECT_TCP_RST,
+  NFT_REJECT_ICMPX_UNREACH,
+};
+enum nft_reject_inet_code {
+  NFT_REJECT_ICMPX_NO_ROUTE = 0,
+  NFT_REJECT_ICMPX_PORT_UNREACH,
+  NFT_REJECT_ICMPX_HOST_UNREACH,
+  NFT_REJECT_ICMPX_ADMIN_PROHIBITED,
+  __NFT_REJECT_ICMPX_MAX
+};
+#define NFT_REJECT_ICMPX_MAX (__NFT_REJECT_ICMPX_MAX - 1)
+enum nft_reject_attributes {
+  NFTA_REJECT_UNSPEC,
+  NFTA_REJECT_TYPE,
+  NFTA_REJECT_ICMP_CODE,
+  __NFTA_REJECT_MAX
+};
+#define NFTA_REJECT_MAX (__NFTA_REJECT_MAX - 1)
+enum nft_nat_types {
+  NFT_NAT_SNAT,
+  NFT_NAT_DNAT,
+};
+enum nft_nat_attributes {
+  NFTA_NAT_UNSPEC,
+  NFTA_NAT_TYPE,
+  NFTA_NAT_FAMILY,
+  NFTA_NAT_REG_ADDR_MIN,
+  NFTA_NAT_REG_ADDR_MAX,
+  NFTA_NAT_REG_PROTO_MIN,
+  NFTA_NAT_REG_PROTO_MAX,
+  NFTA_NAT_FLAGS,
+  __NFTA_NAT_MAX
+};
+#define NFTA_NAT_MAX (__NFTA_NAT_MAX - 1)
+enum nft_tproxy_attributes {
+  NFTA_TPROXY_UNSPEC,
+  NFTA_TPROXY_FAMILY,
+  NFTA_TPROXY_REG_ADDR,
+  NFTA_TPROXY_REG_PORT,
+  __NFTA_TPROXY_MAX
+};
+#define NFTA_TPROXY_MAX (__NFTA_TPROXY_MAX - 1)
+enum nft_masq_attributes {
+  NFTA_MASQ_UNSPEC,
+  NFTA_MASQ_FLAGS,
+  NFTA_MASQ_REG_PROTO_MIN,
+  NFTA_MASQ_REG_PROTO_MAX,
+  __NFTA_MASQ_MAX
+};
+#define NFTA_MASQ_MAX (__NFTA_MASQ_MAX - 1)
+enum nft_redir_attributes {
+  NFTA_REDIR_UNSPEC,
+  NFTA_REDIR_REG_PROTO_MIN,
+  NFTA_REDIR_REG_PROTO_MAX,
+  NFTA_REDIR_FLAGS,
+  __NFTA_REDIR_MAX
+};
+#define NFTA_REDIR_MAX (__NFTA_REDIR_MAX - 1)
+enum nft_dup_attributes {
+  NFTA_DUP_UNSPEC,
+  NFTA_DUP_SREG_ADDR,
+  NFTA_DUP_SREG_DEV,
+  __NFTA_DUP_MAX
+};
+#define NFTA_DUP_MAX (__NFTA_DUP_MAX - 1)
+enum nft_fwd_attributes {
+  NFTA_FWD_UNSPEC,
+  NFTA_FWD_SREG_DEV,
+  NFTA_FWD_SREG_ADDR,
+  NFTA_FWD_NFPROTO,
+  __NFTA_FWD_MAX
+};
+#define NFTA_FWD_MAX (__NFTA_FWD_MAX - 1)
+enum nft_objref_attributes {
+  NFTA_OBJREF_UNSPEC,
+  NFTA_OBJREF_IMM_TYPE,
+  NFTA_OBJREF_IMM_NAME,
+  NFTA_OBJREF_SET_SREG,
+  NFTA_OBJREF_SET_NAME,
+  NFTA_OBJREF_SET_ID,
+  __NFTA_OBJREF_MAX
+};
+#define NFTA_OBJREF_MAX (__NFTA_OBJREF_MAX - 1)
+enum nft_gen_attributes {
+  NFTA_GEN_UNSPEC,
+  NFTA_GEN_ID,
+  NFTA_GEN_PROC_PID,
+  NFTA_GEN_PROC_NAME,
+  __NFTA_GEN_MAX
+};
+#define NFTA_GEN_MAX (__NFTA_GEN_MAX - 1)
+enum nft_fib_attributes {
+  NFTA_FIB_UNSPEC,
+  NFTA_FIB_DREG,
+  NFTA_FIB_RESULT,
+  NFTA_FIB_FLAGS,
+  __NFTA_FIB_MAX
+};
+#define NFTA_FIB_MAX (__NFTA_FIB_MAX - 1)
+enum nft_fib_result {
+  NFT_FIB_RESULT_UNSPEC,
+  NFT_FIB_RESULT_OIF,
+  NFT_FIB_RESULT_OIFNAME,
+  NFT_FIB_RESULT_ADDRTYPE,
+  __NFT_FIB_RESULT_MAX
+};
+#define NFT_FIB_RESULT_MAX (__NFT_FIB_RESULT_MAX - 1)
+enum nft_fib_flags {
+  NFTA_FIB_F_SADDR = 1 << 0,
+  NFTA_FIB_F_DADDR = 1 << 1,
+  NFTA_FIB_F_MARK = 1 << 2,
+  NFTA_FIB_F_IIF = 1 << 3,
+  NFTA_FIB_F_OIF = 1 << 4,
+  NFTA_FIB_F_PRESENT = 1 << 5,
+};
+enum nft_ct_helper_attributes {
+  NFTA_CT_HELPER_UNSPEC,
+  NFTA_CT_HELPER_NAME,
+  NFTA_CT_HELPER_L3PROTO,
+  NFTA_CT_HELPER_L4PROTO,
+  __NFTA_CT_HELPER_MAX,
+};
+#define NFTA_CT_HELPER_MAX (__NFTA_CT_HELPER_MAX - 1)
+enum nft_ct_timeout_timeout_attributes {
+  NFTA_CT_TIMEOUT_UNSPEC,
+  NFTA_CT_TIMEOUT_L3PROTO,
+  NFTA_CT_TIMEOUT_L4PROTO,
+  NFTA_CT_TIMEOUT_DATA,
+  __NFTA_CT_TIMEOUT_MAX,
+};
+#define NFTA_CT_TIMEOUT_MAX (__NFTA_CT_TIMEOUT_MAX - 1)
+enum nft_ct_expectation_attributes {
+  NFTA_CT_EXPECT_UNSPEC,
+  NFTA_CT_EXPECT_L3PROTO,
+  NFTA_CT_EXPECT_L4PROTO,
+  NFTA_CT_EXPECT_DPORT,
+  NFTA_CT_EXPECT_TIMEOUT,
+  NFTA_CT_EXPECT_SIZE,
+  __NFTA_CT_EXPECT_MAX,
+};
+#define NFTA_CT_EXPECT_MAX (__NFTA_CT_EXPECT_MAX - 1)
+#define NFT_OBJECT_UNSPEC 0
+#define NFT_OBJECT_COUNTER 1
+#define NFT_OBJECT_QUOTA 2
+#define NFT_OBJECT_CT_HELPER 3
+#define NFT_OBJECT_LIMIT 4
+#define NFT_OBJECT_CONNLIMIT 5
+#define NFT_OBJECT_TUNNEL 6
+#define NFT_OBJECT_CT_TIMEOUT 7
+#define NFT_OBJECT_SECMARK 8
+#define NFT_OBJECT_CT_EXPECT 9
+#define NFT_OBJECT_SYNPROXY 10
+#define __NFT_OBJECT_MAX 11
+#define NFT_OBJECT_MAX (__NFT_OBJECT_MAX - 1)
+enum nft_object_attributes {
+  NFTA_OBJ_UNSPEC,
+  NFTA_OBJ_TABLE,
+  NFTA_OBJ_NAME,
+  NFTA_OBJ_TYPE,
+  NFTA_OBJ_DATA,
+  NFTA_OBJ_USE,
+  NFTA_OBJ_HANDLE,
+  NFTA_OBJ_PAD,
+  NFTA_OBJ_USERDATA,
+  __NFTA_OBJ_MAX
+};
+#define NFTA_OBJ_MAX (__NFTA_OBJ_MAX - 1)
+enum nft_flowtable_flags {
+  NFT_FLOWTABLE_HW_OFFLOAD = 0x1,
+  NFT_FLOWTABLE_COUNTER = 0x2,
+  NFT_FLOWTABLE_MASK = (NFT_FLOWTABLE_HW_OFFLOAD | NFT_FLOWTABLE_COUNTER)
+};
+enum nft_flowtable_attributes {
+  NFTA_FLOWTABLE_UNSPEC,
+  NFTA_FLOWTABLE_TABLE,
+  NFTA_FLOWTABLE_NAME,
+  NFTA_FLOWTABLE_HOOK,
+  NFTA_FLOWTABLE_USE,
+  NFTA_FLOWTABLE_HANDLE,
+  NFTA_FLOWTABLE_PAD,
+  NFTA_FLOWTABLE_FLAGS,
+  __NFTA_FLOWTABLE_MAX
+};
+#define NFTA_FLOWTABLE_MAX (__NFTA_FLOWTABLE_MAX - 1)
+enum nft_flowtable_hook_attributes {
+  NFTA_FLOWTABLE_HOOK_UNSPEC,
+  NFTA_FLOWTABLE_HOOK_NUM,
+  NFTA_FLOWTABLE_HOOK_PRIORITY,
+  NFTA_FLOWTABLE_HOOK_DEVS,
+  __NFTA_FLOWTABLE_HOOK_MAX
+};
+#define NFTA_FLOWTABLE_HOOK_MAX (__NFTA_FLOWTABLE_HOOK_MAX - 1)
+enum nft_osf_attributes {
+  NFTA_OSF_UNSPEC,
+  NFTA_OSF_DREG,
+  NFTA_OSF_TTL,
+  NFTA_OSF_FLAGS,
+  __NFTA_OSF_MAX,
+};
+#define NFTA_OSF_MAX (__NFTA_OSF_MAX - 1)
+enum nft_osf_flags {
+  NFT_OSF_F_VERSION = (1 << 0),
+};
+enum nft_synproxy_attributes {
+  NFTA_SYNPROXY_UNSPEC,
+  NFTA_SYNPROXY_MSS,
+  NFTA_SYNPROXY_WSCALE,
+  NFTA_SYNPROXY_FLAGS,
+  __NFTA_SYNPROXY_MAX,
+};
+#define NFTA_SYNPROXY_MAX (__NFTA_SYNPROXY_MAX - 1)
+enum nft_devices_attributes {
+  NFTA_DEVICE_UNSPEC,
+  NFTA_DEVICE_NAME,
+  __NFTA_DEVICE_MAX
+};
+#define NFTA_DEVICE_MAX (__NFTA_DEVICE_MAX - 1)
+enum nft_xfrm_attributes {
+  NFTA_XFRM_UNSPEC,
+  NFTA_XFRM_DREG,
+  NFTA_XFRM_KEY,
+  NFTA_XFRM_DIR,
+  NFTA_XFRM_SPNUM,
+  __NFTA_XFRM_MAX
+};
+#define NFTA_XFRM_MAX (__NFTA_XFRM_MAX - 1)
+enum nft_xfrm_keys {
+  NFT_XFRM_KEY_UNSPEC,
+  NFT_XFRM_KEY_DADDR_IP4,
+  NFT_XFRM_KEY_DADDR_IP6,
+  NFT_XFRM_KEY_SADDR_IP4,
+  NFT_XFRM_KEY_SADDR_IP6,
+  NFT_XFRM_KEY_REQID,
+  NFT_XFRM_KEY_SPI,
+  __NFT_XFRM_KEY_MAX,
+};
+#define NFT_XFRM_KEY_MAX (__NFT_XFRM_KEY_MAX - 1)
+enum nft_trace_attributes {
+  NFTA_TRACE_UNSPEC,
+  NFTA_TRACE_TABLE,
+  NFTA_TRACE_CHAIN,
+  NFTA_TRACE_RULE_HANDLE,
+  NFTA_TRACE_TYPE,
+  NFTA_TRACE_VERDICT,
+  NFTA_TRACE_ID,
+  NFTA_TRACE_LL_HEADER,
+  NFTA_TRACE_NETWORK_HEADER,
+  NFTA_TRACE_TRANSPORT_HEADER,
+  NFTA_TRACE_IIF,
+  NFTA_TRACE_IIFTYPE,
+  NFTA_TRACE_OIF,
+  NFTA_TRACE_OIFTYPE,
+  NFTA_TRACE_MARK,
+  NFTA_TRACE_NFPROTO,
+  NFTA_TRACE_POLICY,
+  NFTA_TRACE_PAD,
+  __NFTA_TRACE_MAX
+};
+#define NFTA_TRACE_MAX (__NFTA_TRACE_MAX - 1)
+enum nft_trace_types {
+  NFT_TRACETYPE_UNSPEC,
+  NFT_TRACETYPE_POLICY,
+  NFT_TRACETYPE_RETURN,
+  NFT_TRACETYPE_RULE,
+  __NFT_TRACETYPE_MAX
+};
+#define NFT_TRACETYPE_MAX (__NFT_TRACETYPE_MAX - 1)
+enum nft_ng_attributes {
+  NFTA_NG_UNSPEC,
+  NFTA_NG_DREG,
+  NFTA_NG_MODULUS,
+  NFTA_NG_TYPE,
+  NFTA_NG_OFFSET,
+  NFTA_NG_SET_NAME,
+  NFTA_NG_SET_ID,
+  __NFTA_NG_MAX
+};
+#define NFTA_NG_MAX (__NFTA_NG_MAX - 1)
+enum nft_ng_types {
+  NFT_NG_INCREMENTAL,
+  NFT_NG_RANDOM,
+  __NFT_NG_MAX
+};
+#define NFT_NG_MAX (__NFT_NG_MAX - 1)
+enum nft_tunnel_key_ip_attributes {
+  NFTA_TUNNEL_KEY_IP_UNSPEC,
+  NFTA_TUNNEL_KEY_IP_SRC,
+  NFTA_TUNNEL_KEY_IP_DST,
+  __NFTA_TUNNEL_KEY_IP_MAX
+};
+#define NFTA_TUNNEL_KEY_IP_MAX (__NFTA_TUNNEL_KEY_IP_MAX - 1)
+enum nft_tunnel_ip6_attributes {
+  NFTA_TUNNEL_KEY_IP6_UNSPEC,
+  NFTA_TUNNEL_KEY_IP6_SRC,
+  NFTA_TUNNEL_KEY_IP6_DST,
+  NFTA_TUNNEL_KEY_IP6_FLOWLABEL,
+  __NFTA_TUNNEL_KEY_IP6_MAX
+};
+#define NFTA_TUNNEL_KEY_IP6_MAX (__NFTA_TUNNEL_KEY_IP6_MAX - 1)
+enum nft_tunnel_opts_attributes {
+  NFTA_TUNNEL_KEY_OPTS_UNSPEC,
+  NFTA_TUNNEL_KEY_OPTS_VXLAN,
+  NFTA_TUNNEL_KEY_OPTS_ERSPAN,
+  NFTA_TUNNEL_KEY_OPTS_GENEVE,
+  __NFTA_TUNNEL_KEY_OPTS_MAX
+};
+#define NFTA_TUNNEL_KEY_OPTS_MAX (__NFTA_TUNNEL_KEY_OPTS_MAX - 1)
+enum nft_tunnel_opts_vxlan_attributes {
+  NFTA_TUNNEL_KEY_VXLAN_UNSPEC,
+  NFTA_TUNNEL_KEY_VXLAN_GBP,
+  __NFTA_TUNNEL_KEY_VXLAN_MAX
+};
+#define NFTA_TUNNEL_KEY_VXLAN_MAX (__NFTA_TUNNEL_KEY_VXLAN_MAX - 1)
+enum nft_tunnel_opts_erspan_attributes {
+  NFTA_TUNNEL_KEY_ERSPAN_UNSPEC,
+  NFTA_TUNNEL_KEY_ERSPAN_VERSION,
+  NFTA_TUNNEL_KEY_ERSPAN_V1_INDEX,
+  NFTA_TUNNEL_KEY_ERSPAN_V2_HWID,
+  NFTA_TUNNEL_KEY_ERSPAN_V2_DIR,
+  __NFTA_TUNNEL_KEY_ERSPAN_MAX
+};
+#define NFTA_TUNNEL_KEY_ERSPAN_MAX (__NFTA_TUNNEL_KEY_ERSPAN_MAX - 1)
+enum nft_tunnel_opts_geneve_attributes {
+  NFTA_TUNNEL_KEY_GENEVE_UNSPEC,
+  NFTA_TUNNEL_KEY_GENEVE_CLASS,
+  NFTA_TUNNEL_KEY_GENEVE_TYPE,
+  NFTA_TUNNEL_KEY_GENEVE_DATA,
+  __NFTA_TUNNEL_KEY_GENEVE_MAX
+};
+#define NFTA_TUNNEL_KEY_GENEVE_MAX (__NFTA_TUNNEL_KEY_GENEVE_MAX - 1)
+enum nft_tunnel_flags {
+  NFT_TUNNEL_F_ZERO_CSUM_TX = (1 << 0),
+  NFT_TUNNEL_F_DONT_FRAGMENT = (1 << 1),
+  NFT_TUNNEL_F_SEQ_NUMBER = (1 << 2),
+};
+#define NFT_TUNNEL_F_MASK (NFT_TUNNEL_F_ZERO_CSUM_TX | NFT_TUNNEL_F_DONT_FRAGMENT | NFT_TUNNEL_F_SEQ_NUMBER)
+enum nft_tunnel_key_attributes {
+  NFTA_TUNNEL_KEY_UNSPEC,
+  NFTA_TUNNEL_KEY_ID,
+  NFTA_TUNNEL_KEY_IP,
+  NFTA_TUNNEL_KEY_IP6,
+  NFTA_TUNNEL_KEY_FLAGS,
+  NFTA_TUNNEL_KEY_TOS,
+  NFTA_TUNNEL_KEY_TTL,
+  NFTA_TUNNEL_KEY_SPORT,
+  NFTA_TUNNEL_KEY_DPORT,
+  NFTA_TUNNEL_KEY_OPTS,
+  __NFTA_TUNNEL_KEY_MAX
+};
+#define NFTA_TUNNEL_KEY_MAX (__NFTA_TUNNEL_KEY_MAX - 1)
+enum nft_tunnel_keys {
+  NFT_TUNNEL_PATH,
+  NFT_TUNNEL_ID,
+  __NFT_TUNNEL_MAX
+};
+#define NFT_TUNNEL_MAX (__NFT_TUNNEL_MAX - 1)
+enum nft_tunnel_mode {
+  NFT_TUNNEL_MODE_NONE,
+  NFT_TUNNEL_MODE_RX,
+  NFT_TUNNEL_MODE_TX,
+  __NFT_TUNNEL_MODE_MAX
+};
+#define NFT_TUNNEL_MODE_MAX (__NFT_TUNNEL_MODE_MAX - 1)
+enum nft_tunnel_attributes {
+  NFTA_TUNNEL_UNSPEC,
+  NFTA_TUNNEL_KEY,
+  NFTA_TUNNEL_DREG,
+  NFTA_TUNNEL_MODE,
+  __NFTA_TUNNEL_MAX
+};
+#define NFTA_TUNNEL_MAX (__NFTA_TUNNEL_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nf_tables_compat.h b/i686-linux-musl/include/linux/netfilter/nf_tables_compat.h
new file mode 100644
index 0000000..32c129d
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nf_tables_compat.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _NFT_COMPAT_NFNETLINK_H_
+#define _NFT_COMPAT_NFNETLINK_H_
+enum nft_target_attributes {
+  NFTA_TARGET_UNSPEC,
+  NFTA_TARGET_NAME,
+  NFTA_TARGET_REV,
+  NFTA_TARGET_INFO,
+  __NFTA_TARGET_MAX
+};
+#define NFTA_TARGET_MAX (__NFTA_TARGET_MAX - 1)
+enum nft_match_attributes {
+  NFTA_MATCH_UNSPEC,
+  NFTA_MATCH_NAME,
+  NFTA_MATCH_REV,
+  NFTA_MATCH_INFO,
+  __NFTA_MATCH_MAX
+};
+#define NFTA_MATCH_MAX (__NFTA_MATCH_MAX - 1)
+#define NFT_COMPAT_NAME_MAX 32
+enum {
+  NFNL_MSG_COMPAT_GET,
+  NFNL_MSG_COMPAT_MAX
+};
+enum {
+  NFTA_COMPAT_UNSPEC = 0,
+  NFTA_COMPAT_NAME,
+  NFTA_COMPAT_REV,
+  NFTA_COMPAT_TYPE,
+  __NFTA_COMPAT_MAX,
+};
+#define NFTA_COMPAT_MAX (__NFTA_COMPAT_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nfnetlink.h b/i686-linux-musl/include/linux/netfilter/nfnetlink.h
new file mode 100644
index 0000000..705de74
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nfnetlink.h
@@ -0,0 +1,77 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_NFNETLINK_H
+#define _UAPI_NFNETLINK_H
+#include <linux/types.h>
+#include <linux/netfilter/nfnetlink_compat.h>
+enum nfnetlink_groups {
+  NFNLGRP_NONE,
+#define NFNLGRP_NONE NFNLGRP_NONE
+  NFNLGRP_CONNTRACK_NEW,
+#define NFNLGRP_CONNTRACK_NEW NFNLGRP_CONNTRACK_NEW
+  NFNLGRP_CONNTRACK_UPDATE,
+#define NFNLGRP_CONNTRACK_UPDATE NFNLGRP_CONNTRACK_UPDATE
+  NFNLGRP_CONNTRACK_DESTROY,
+#define NFNLGRP_CONNTRACK_DESTROY NFNLGRP_CONNTRACK_DESTROY
+  NFNLGRP_CONNTRACK_EXP_NEW,
+#define NFNLGRP_CONNTRACK_EXP_NEW NFNLGRP_CONNTRACK_EXP_NEW
+  NFNLGRP_CONNTRACK_EXP_UPDATE,
+#define NFNLGRP_CONNTRACK_EXP_UPDATE NFNLGRP_CONNTRACK_EXP_UPDATE
+  NFNLGRP_CONNTRACK_EXP_DESTROY,
+#define NFNLGRP_CONNTRACK_EXP_DESTROY NFNLGRP_CONNTRACK_EXP_DESTROY
+  NFNLGRP_NFTABLES,
+#define NFNLGRP_NFTABLES NFNLGRP_NFTABLES
+  NFNLGRP_ACCT_QUOTA,
+#define NFNLGRP_ACCT_QUOTA NFNLGRP_ACCT_QUOTA
+  NFNLGRP_NFTRACE,
+#define NFNLGRP_NFTRACE NFNLGRP_NFTRACE
+  __NFNLGRP_MAX,
+};
+#define NFNLGRP_MAX (__NFNLGRP_MAX - 1)
+struct nfgenmsg {
+  __u8 nfgen_family;
+  __u8 version;
+  __be16 res_id;
+};
+#define NFNETLINK_V0 0
+#define NFNL_SUBSYS_ID(x) ((x & 0xff00) >> 8)
+#define NFNL_MSG_TYPE(x) (x & 0x00ff)
+#define NFNL_SUBSYS_NONE 0
+#define NFNL_SUBSYS_CTNETLINK 1
+#define NFNL_SUBSYS_CTNETLINK_EXP 2
+#define NFNL_SUBSYS_QUEUE 3
+#define NFNL_SUBSYS_ULOG 4
+#define NFNL_SUBSYS_OSF 5
+#define NFNL_SUBSYS_IPSET 6
+#define NFNL_SUBSYS_ACCT 7
+#define NFNL_SUBSYS_CTNETLINK_TIMEOUT 8
+#define NFNL_SUBSYS_CTHELPER 9
+#define NFNL_SUBSYS_NFTABLES 10
+#define NFNL_SUBSYS_NFT_COMPAT 11
+#define NFNL_SUBSYS_HOOK 12
+#define NFNL_SUBSYS_COUNT 13
+#define NFNL_MSG_BATCH_BEGIN NLMSG_MIN_TYPE
+#define NFNL_MSG_BATCH_END NLMSG_MIN_TYPE + 1
+enum nfnl_batch_attributes {
+  NFNL_BATCH_UNSPEC,
+  NFNL_BATCH_GENID,
+  __NFNL_BATCH_MAX
+};
+#define NFNL_BATCH_MAX (__NFNL_BATCH_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nfnetlink_acct.h b/i686-linux-musl/include/linux/netfilter/nfnetlink_acct.h
new file mode 100644
index 0000000..497337b
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nfnetlink_acct.h
@@ -0,0 +1,57 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_NFNL_ACCT_H_
+#define _UAPI_NFNL_ACCT_H_
+#ifndef NFACCT_NAME_MAX
+#define NFACCT_NAME_MAX 32
+#endif
+enum nfnl_acct_msg_types {
+  NFNL_MSG_ACCT_NEW,
+  NFNL_MSG_ACCT_GET,
+  NFNL_MSG_ACCT_GET_CTRZERO,
+  NFNL_MSG_ACCT_DEL,
+  NFNL_MSG_ACCT_OVERQUOTA,
+  NFNL_MSG_ACCT_MAX
+};
+enum nfnl_acct_flags {
+  NFACCT_F_QUOTA_PKTS = (1 << 0),
+  NFACCT_F_QUOTA_BYTES = (1 << 1),
+  NFACCT_F_OVERQUOTA = (1 << 2),
+};
+enum nfnl_acct_type {
+  NFACCT_UNSPEC,
+  NFACCT_NAME,
+  NFACCT_PKTS,
+  NFACCT_BYTES,
+  NFACCT_USE,
+  NFACCT_FLAGS,
+  NFACCT_QUOTA,
+  NFACCT_FILTER,
+  NFACCT_PAD,
+  __NFACCT_MAX
+};
+#define NFACCT_MAX (__NFACCT_MAX - 1)
+enum nfnl_attr_filter_type {
+  NFACCT_FILTER_UNSPEC,
+  NFACCT_FILTER_MASK,
+  NFACCT_FILTER_VALUE,
+  __NFACCT_FILTER_MAX
+};
+#define NFACCT_FILTER_MAX (__NFACCT_FILTER_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nfnetlink_compat.h b/i686-linux-musl/include/linux/netfilter/nfnetlink_compat.h
new file mode 100644
index 0000000..07110bf
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nfnetlink_compat.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _NFNETLINK_COMPAT_H
+#define _NFNETLINK_COMPAT_H
+#include <linux/types.h>
+#define NF_NETLINK_CONNTRACK_NEW 0x00000001
+#define NF_NETLINK_CONNTRACK_UPDATE 0x00000002
+#define NF_NETLINK_CONNTRACK_DESTROY 0x00000004
+#define NF_NETLINK_CONNTRACK_EXP_NEW 0x00000008
+#define NF_NETLINK_CONNTRACK_EXP_UPDATE 0x00000010
+#define NF_NETLINK_CONNTRACK_EXP_DESTROY 0x00000020
+struct nfattr {
+  __u16 nfa_len;
+  __u16 nfa_type;
+};
+#define NFNL_NFA_NEST 0x8000
+#define NFA_TYPE(attr) ((attr)->nfa_type & 0x7fff)
+#define NFA_ALIGNTO 4
+#define NFA_ALIGN(len) (((len) + NFA_ALIGNTO - 1) & ~(NFA_ALIGNTO - 1))
+#define NFA_OK(nfa,len) ((len) > 0 && (nfa)->nfa_len >= sizeof(struct nfattr) && (nfa)->nfa_len <= (len))
+#define NFA_NEXT(nfa,attrlen) ((attrlen) -= NFA_ALIGN((nfa)->nfa_len), (struct nfattr *) (((char *) (nfa)) + NFA_ALIGN((nfa)->nfa_len)))
+#define NFA_LENGTH(len) (NFA_ALIGN(sizeof(struct nfattr)) + (len))
+#define NFA_SPACE(len) NFA_ALIGN(NFA_LENGTH(len))
+#define NFA_DATA(nfa) ((void *) (((char *) (nfa)) + NFA_LENGTH(0)))
+#define NFA_PAYLOAD(nfa) ((int) ((nfa)->nfa_len) - NFA_LENGTH(0))
+#define NFA_NEST(skb,type) \
+({ struct nfattr * __start = (struct nfattr *) skb_tail_pointer(skb); NFA_PUT(skb, (NFNL_NFA_NEST | type), 0, NULL); __start; })
+#define NFA_NEST_END(skb,start) \
+({ (start)->nfa_len = skb_tail_pointer(skb) - (unsigned char *) (start); (skb)->len; })
+#define NFA_NEST_CANCEL(skb,start) \
+({ if(start) skb_trim(skb, (unsigned char *) (start) - (skb)->data); - 1; })
+#define NFM_NFA(n) ((struct nfattr *) (((char *) (n)) + NLMSG_ALIGN(sizeof(struct nfgenmsg))))
+#define NFM_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct nfgenmsg))
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nfnetlink_conntrack.h b/i686-linux-musl/include/linux/netfilter/nfnetlink_conntrack.h
new file mode 100644
index 0000000..200f1a0
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nfnetlink_conntrack.h
@@ -0,0 +1,279 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IPCONNTRACK_NETLINK_H
+#define _IPCONNTRACK_NETLINK_H
+#include <linux/netfilter/nfnetlink.h>
+enum cntl_msg_types {
+  IPCTNL_MSG_CT_NEW,
+  IPCTNL_MSG_CT_GET,
+  IPCTNL_MSG_CT_DELETE,
+  IPCTNL_MSG_CT_GET_CTRZERO,
+  IPCTNL_MSG_CT_GET_STATS_CPU,
+  IPCTNL_MSG_CT_GET_STATS,
+  IPCTNL_MSG_CT_GET_DYING,
+  IPCTNL_MSG_CT_GET_UNCONFIRMED,
+  IPCTNL_MSG_MAX
+};
+enum ctnl_exp_msg_types {
+  IPCTNL_MSG_EXP_NEW,
+  IPCTNL_MSG_EXP_GET,
+  IPCTNL_MSG_EXP_DELETE,
+  IPCTNL_MSG_EXP_GET_STATS_CPU,
+  IPCTNL_MSG_EXP_MAX
+};
+enum ctattr_type {
+  CTA_UNSPEC,
+  CTA_TUPLE_ORIG,
+  CTA_TUPLE_REPLY,
+  CTA_STATUS,
+  CTA_PROTOINFO,
+  CTA_HELP,
+  CTA_NAT_SRC,
+#define CTA_NAT CTA_NAT_SRC
+  CTA_TIMEOUT,
+  CTA_MARK,
+  CTA_COUNTERS_ORIG,
+  CTA_COUNTERS_REPLY,
+  CTA_USE,
+  CTA_ID,
+  CTA_NAT_DST,
+  CTA_TUPLE_MASTER,
+  CTA_SEQ_ADJ_ORIG,
+  CTA_NAT_SEQ_ADJ_ORIG = CTA_SEQ_ADJ_ORIG,
+  CTA_SEQ_ADJ_REPLY,
+  CTA_NAT_SEQ_ADJ_REPLY = CTA_SEQ_ADJ_REPLY,
+  CTA_SECMARK,
+  CTA_ZONE,
+  CTA_SECCTX,
+  CTA_TIMESTAMP,
+  CTA_MARK_MASK,
+  CTA_LABELS,
+  CTA_LABELS_MASK,
+  CTA_SYNPROXY,
+  CTA_FILTER,
+  CTA_STATUS_MASK,
+  __CTA_MAX
+};
+#define CTA_MAX (__CTA_MAX - 1)
+enum ctattr_tuple {
+  CTA_TUPLE_UNSPEC,
+  CTA_TUPLE_IP,
+  CTA_TUPLE_PROTO,
+  CTA_TUPLE_ZONE,
+  __CTA_TUPLE_MAX
+};
+#define CTA_TUPLE_MAX (__CTA_TUPLE_MAX - 1)
+enum ctattr_ip {
+  CTA_IP_UNSPEC,
+  CTA_IP_V4_SRC,
+  CTA_IP_V4_DST,
+  CTA_IP_V6_SRC,
+  CTA_IP_V6_DST,
+  __CTA_IP_MAX
+};
+#define CTA_IP_MAX (__CTA_IP_MAX - 1)
+enum ctattr_l4proto {
+  CTA_PROTO_UNSPEC,
+  CTA_PROTO_NUM,
+  CTA_PROTO_SRC_PORT,
+  CTA_PROTO_DST_PORT,
+  CTA_PROTO_ICMP_ID,
+  CTA_PROTO_ICMP_TYPE,
+  CTA_PROTO_ICMP_CODE,
+  CTA_PROTO_ICMPV6_ID,
+  CTA_PROTO_ICMPV6_TYPE,
+  CTA_PROTO_ICMPV6_CODE,
+  __CTA_PROTO_MAX
+};
+#define CTA_PROTO_MAX (__CTA_PROTO_MAX - 1)
+enum ctattr_protoinfo {
+  CTA_PROTOINFO_UNSPEC,
+  CTA_PROTOINFO_TCP,
+  CTA_PROTOINFO_DCCP,
+  CTA_PROTOINFO_SCTP,
+  __CTA_PROTOINFO_MAX
+};
+#define CTA_PROTOINFO_MAX (__CTA_PROTOINFO_MAX - 1)
+enum ctattr_protoinfo_tcp {
+  CTA_PROTOINFO_TCP_UNSPEC,
+  CTA_PROTOINFO_TCP_STATE,
+  CTA_PROTOINFO_TCP_WSCALE_ORIGINAL,
+  CTA_PROTOINFO_TCP_WSCALE_REPLY,
+  CTA_PROTOINFO_TCP_FLAGS_ORIGINAL,
+  CTA_PROTOINFO_TCP_FLAGS_REPLY,
+  __CTA_PROTOINFO_TCP_MAX
+};
+#define CTA_PROTOINFO_TCP_MAX (__CTA_PROTOINFO_TCP_MAX - 1)
+enum ctattr_protoinfo_dccp {
+  CTA_PROTOINFO_DCCP_UNSPEC,
+  CTA_PROTOINFO_DCCP_STATE,
+  CTA_PROTOINFO_DCCP_ROLE,
+  CTA_PROTOINFO_DCCP_HANDSHAKE_SEQ,
+  CTA_PROTOINFO_DCCP_PAD,
+  __CTA_PROTOINFO_DCCP_MAX,
+};
+#define CTA_PROTOINFO_DCCP_MAX (__CTA_PROTOINFO_DCCP_MAX - 1)
+enum ctattr_protoinfo_sctp {
+  CTA_PROTOINFO_SCTP_UNSPEC,
+  CTA_PROTOINFO_SCTP_STATE,
+  CTA_PROTOINFO_SCTP_VTAG_ORIGINAL,
+  CTA_PROTOINFO_SCTP_VTAG_REPLY,
+  __CTA_PROTOINFO_SCTP_MAX
+};
+#define CTA_PROTOINFO_SCTP_MAX (__CTA_PROTOINFO_SCTP_MAX - 1)
+enum ctattr_counters {
+  CTA_COUNTERS_UNSPEC,
+  CTA_COUNTERS_PACKETS,
+  CTA_COUNTERS_BYTES,
+  CTA_COUNTERS32_PACKETS,
+  CTA_COUNTERS32_BYTES,
+  CTA_COUNTERS_PAD,
+  __CTA_COUNTERS_MAX
+};
+#define CTA_COUNTERS_MAX (__CTA_COUNTERS_MAX - 1)
+enum ctattr_tstamp {
+  CTA_TIMESTAMP_UNSPEC,
+  CTA_TIMESTAMP_START,
+  CTA_TIMESTAMP_STOP,
+  CTA_TIMESTAMP_PAD,
+  __CTA_TIMESTAMP_MAX
+};
+#define CTA_TIMESTAMP_MAX (__CTA_TIMESTAMP_MAX - 1)
+enum ctattr_nat {
+  CTA_NAT_UNSPEC,
+  CTA_NAT_V4_MINIP,
+#define CTA_NAT_MINIP CTA_NAT_V4_MINIP
+  CTA_NAT_V4_MAXIP,
+#define CTA_NAT_MAXIP CTA_NAT_V4_MAXIP
+  CTA_NAT_PROTO,
+  CTA_NAT_V6_MINIP,
+  CTA_NAT_V6_MAXIP,
+  __CTA_NAT_MAX
+};
+#define CTA_NAT_MAX (__CTA_NAT_MAX - 1)
+enum ctattr_protonat {
+  CTA_PROTONAT_UNSPEC,
+  CTA_PROTONAT_PORT_MIN,
+  CTA_PROTONAT_PORT_MAX,
+  __CTA_PROTONAT_MAX
+};
+#define CTA_PROTONAT_MAX (__CTA_PROTONAT_MAX - 1)
+enum ctattr_seqadj {
+  CTA_SEQADJ_UNSPEC,
+  CTA_SEQADJ_CORRECTION_POS,
+  CTA_SEQADJ_OFFSET_BEFORE,
+  CTA_SEQADJ_OFFSET_AFTER,
+  __CTA_SEQADJ_MAX
+};
+#define CTA_SEQADJ_MAX (__CTA_SEQADJ_MAX - 1)
+enum ctattr_natseq {
+  CTA_NAT_SEQ_UNSPEC,
+  CTA_NAT_SEQ_CORRECTION_POS,
+  CTA_NAT_SEQ_OFFSET_BEFORE,
+  CTA_NAT_SEQ_OFFSET_AFTER,
+  __CTA_NAT_SEQ_MAX
+};
+#define CTA_NAT_SEQ_MAX (__CTA_NAT_SEQ_MAX - 1)
+enum ctattr_synproxy {
+  CTA_SYNPROXY_UNSPEC,
+  CTA_SYNPROXY_ISN,
+  CTA_SYNPROXY_ITS,
+  CTA_SYNPROXY_TSOFF,
+  __CTA_SYNPROXY_MAX,
+};
+#define CTA_SYNPROXY_MAX (__CTA_SYNPROXY_MAX - 1)
+enum ctattr_expect {
+  CTA_EXPECT_UNSPEC,
+  CTA_EXPECT_MASTER,
+  CTA_EXPECT_TUPLE,
+  CTA_EXPECT_MASK,
+  CTA_EXPECT_TIMEOUT,
+  CTA_EXPECT_ID,
+  CTA_EXPECT_HELP_NAME,
+  CTA_EXPECT_ZONE,
+  CTA_EXPECT_FLAGS,
+  CTA_EXPECT_CLASS,
+  CTA_EXPECT_NAT,
+  CTA_EXPECT_FN,
+  __CTA_EXPECT_MAX
+};
+#define CTA_EXPECT_MAX (__CTA_EXPECT_MAX - 1)
+enum ctattr_expect_nat {
+  CTA_EXPECT_NAT_UNSPEC,
+  CTA_EXPECT_NAT_DIR,
+  CTA_EXPECT_NAT_TUPLE,
+  __CTA_EXPECT_NAT_MAX
+};
+#define CTA_EXPECT_NAT_MAX (__CTA_EXPECT_NAT_MAX - 1)
+enum ctattr_help {
+  CTA_HELP_UNSPEC,
+  CTA_HELP_NAME,
+  CTA_HELP_INFO,
+  __CTA_HELP_MAX
+};
+#define CTA_HELP_MAX (__CTA_HELP_MAX - 1)
+enum ctattr_secctx {
+  CTA_SECCTX_UNSPEC,
+  CTA_SECCTX_NAME,
+  __CTA_SECCTX_MAX
+};
+#define CTA_SECCTX_MAX (__CTA_SECCTX_MAX - 1)
+enum ctattr_stats_cpu {
+  CTA_STATS_UNSPEC,
+  CTA_STATS_SEARCHED,
+  CTA_STATS_FOUND,
+  CTA_STATS_NEW,
+  CTA_STATS_INVALID,
+  CTA_STATS_IGNORE,
+  CTA_STATS_DELETE,
+  CTA_STATS_DELETE_LIST,
+  CTA_STATS_INSERT,
+  CTA_STATS_INSERT_FAILED,
+  CTA_STATS_DROP,
+  CTA_STATS_EARLY_DROP,
+  CTA_STATS_ERROR,
+  CTA_STATS_SEARCH_RESTART,
+  CTA_STATS_CLASH_RESOLVE,
+  CTA_STATS_CHAIN_TOOLONG,
+  __CTA_STATS_MAX,
+};
+#define CTA_STATS_MAX (__CTA_STATS_MAX - 1)
+enum ctattr_stats_global {
+  CTA_STATS_GLOBAL_UNSPEC,
+  CTA_STATS_GLOBAL_ENTRIES,
+  CTA_STATS_GLOBAL_MAX_ENTRIES,
+  __CTA_STATS_GLOBAL_MAX,
+};
+#define CTA_STATS_GLOBAL_MAX (__CTA_STATS_GLOBAL_MAX - 1)
+enum ctattr_expect_stats {
+  CTA_STATS_EXP_UNSPEC,
+  CTA_STATS_EXP_NEW,
+  CTA_STATS_EXP_CREATE,
+  CTA_STATS_EXP_DELETE,
+  __CTA_STATS_EXP_MAX,
+};
+#define CTA_STATS_EXP_MAX (__CTA_STATS_EXP_MAX - 1)
+enum ctattr_filter {
+  CTA_FILTER_UNSPEC,
+  CTA_FILTER_ORIG_FLAGS,
+  CTA_FILTER_REPLY_FLAGS,
+  __CTA_FILTER_MAX
+};
+#define CTA_FILTER_MAX (__CTA_FILTER_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nfnetlink_cthelper.h b/i686-linux-musl/include/linux/netfilter/nfnetlink_cthelper.h
new file mode 100644
index 0000000..e8c2825
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nfnetlink_cthelper.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _NFNL_CTHELPER_H_
+#define _NFNL_CTHELPER_H_
+#define NFCT_HELPER_STATUS_DISABLED 0
+#define NFCT_HELPER_STATUS_ENABLED 1
+enum nfnl_cthelper_msg_types {
+  NFNL_MSG_CTHELPER_NEW,
+  NFNL_MSG_CTHELPER_GET,
+  NFNL_MSG_CTHELPER_DEL,
+  NFNL_MSG_CTHELPER_MAX
+};
+enum nfnl_cthelper_type {
+  NFCTH_UNSPEC,
+  NFCTH_NAME,
+  NFCTH_TUPLE,
+  NFCTH_QUEUE_NUM,
+  NFCTH_POLICY,
+  NFCTH_PRIV_DATA_LEN,
+  NFCTH_STATUS,
+  __NFCTH_MAX
+};
+#define NFCTH_MAX (__NFCTH_MAX - 1)
+enum nfnl_cthelper_policy_type {
+  NFCTH_POLICY_SET_UNSPEC,
+  NFCTH_POLICY_SET_NUM,
+  NFCTH_POLICY_SET,
+  NFCTH_POLICY_SET1 = NFCTH_POLICY_SET,
+  NFCTH_POLICY_SET2,
+  NFCTH_POLICY_SET3,
+  NFCTH_POLICY_SET4,
+  __NFCTH_POLICY_SET_MAX
+};
+#define NFCTH_POLICY_SET_MAX (__NFCTH_POLICY_SET_MAX - 1)
+enum nfnl_cthelper_pol_type {
+  NFCTH_POLICY_UNSPEC,
+  NFCTH_POLICY_NAME,
+  NFCTH_POLICY_EXPECT_MAX,
+  NFCTH_POLICY_EXPECT_TIMEOUT,
+  __NFCTH_POLICY_MAX
+};
+#define NFCTH_POLICY_MAX (__NFCTH_POLICY_MAX - 1)
+enum nfnl_cthelper_tuple_type {
+  NFCTH_TUPLE_UNSPEC,
+  NFCTH_TUPLE_L3PROTONUM,
+  NFCTH_TUPLE_L4PROTONUM,
+  __NFCTH_TUPLE_MAX,
+};
+#define NFCTH_TUPLE_MAX (__NFCTH_TUPLE_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nfnetlink_cttimeout.h b/i686-linux-musl/include/linux/netfilter/nfnetlink_cttimeout.h
new file mode 100644
index 0000000..da9fe71
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nfnetlink_cttimeout.h
@@ -0,0 +1,122 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _CTTIMEOUT_NETLINK_H
+#define _CTTIMEOUT_NETLINK_H
+#include <linux/netfilter/nfnetlink.h>
+enum ctnl_timeout_msg_types {
+  IPCTNL_MSG_TIMEOUT_NEW,
+  IPCTNL_MSG_TIMEOUT_GET,
+  IPCTNL_MSG_TIMEOUT_DELETE,
+  IPCTNL_MSG_TIMEOUT_DEFAULT_SET,
+  IPCTNL_MSG_TIMEOUT_DEFAULT_GET,
+  IPCTNL_MSG_TIMEOUT_MAX
+};
+enum ctattr_timeout {
+  CTA_TIMEOUT_UNSPEC,
+  CTA_TIMEOUT_NAME,
+  CTA_TIMEOUT_L3PROTO,
+  CTA_TIMEOUT_L4PROTO,
+  CTA_TIMEOUT_DATA,
+  CTA_TIMEOUT_USE,
+  __CTA_TIMEOUT_MAX
+};
+#define CTA_TIMEOUT_MAX (__CTA_TIMEOUT_MAX - 1)
+enum ctattr_timeout_generic {
+  CTA_TIMEOUT_GENERIC_UNSPEC,
+  CTA_TIMEOUT_GENERIC_TIMEOUT,
+  __CTA_TIMEOUT_GENERIC_MAX
+};
+#define CTA_TIMEOUT_GENERIC_MAX (__CTA_TIMEOUT_GENERIC_MAX - 1)
+enum ctattr_timeout_tcp {
+  CTA_TIMEOUT_TCP_UNSPEC,
+  CTA_TIMEOUT_TCP_SYN_SENT,
+  CTA_TIMEOUT_TCP_SYN_RECV,
+  CTA_TIMEOUT_TCP_ESTABLISHED,
+  CTA_TIMEOUT_TCP_FIN_WAIT,
+  CTA_TIMEOUT_TCP_CLOSE_WAIT,
+  CTA_TIMEOUT_TCP_LAST_ACK,
+  CTA_TIMEOUT_TCP_TIME_WAIT,
+  CTA_TIMEOUT_TCP_CLOSE,
+  CTA_TIMEOUT_TCP_SYN_SENT2,
+  CTA_TIMEOUT_TCP_RETRANS,
+  CTA_TIMEOUT_TCP_UNACK,
+  __CTA_TIMEOUT_TCP_MAX
+};
+#define CTA_TIMEOUT_TCP_MAX (__CTA_TIMEOUT_TCP_MAX - 1)
+enum ctattr_timeout_udp {
+  CTA_TIMEOUT_UDP_UNSPEC,
+  CTA_TIMEOUT_UDP_UNREPLIED,
+  CTA_TIMEOUT_UDP_REPLIED,
+  __CTA_TIMEOUT_UDP_MAX
+};
+#define CTA_TIMEOUT_UDP_MAX (__CTA_TIMEOUT_UDP_MAX - 1)
+enum ctattr_timeout_udplite {
+  CTA_TIMEOUT_UDPLITE_UNSPEC,
+  CTA_TIMEOUT_UDPLITE_UNREPLIED,
+  CTA_TIMEOUT_UDPLITE_REPLIED,
+  __CTA_TIMEOUT_UDPLITE_MAX
+};
+#define CTA_TIMEOUT_UDPLITE_MAX (__CTA_TIMEOUT_UDPLITE_MAX - 1)
+enum ctattr_timeout_icmp {
+  CTA_TIMEOUT_ICMP_UNSPEC,
+  CTA_TIMEOUT_ICMP_TIMEOUT,
+  __CTA_TIMEOUT_ICMP_MAX
+};
+#define CTA_TIMEOUT_ICMP_MAX (__CTA_TIMEOUT_ICMP_MAX - 1)
+enum ctattr_timeout_dccp {
+  CTA_TIMEOUT_DCCP_UNSPEC,
+  CTA_TIMEOUT_DCCP_REQUEST,
+  CTA_TIMEOUT_DCCP_RESPOND,
+  CTA_TIMEOUT_DCCP_PARTOPEN,
+  CTA_TIMEOUT_DCCP_OPEN,
+  CTA_TIMEOUT_DCCP_CLOSEREQ,
+  CTA_TIMEOUT_DCCP_CLOSING,
+  CTA_TIMEOUT_DCCP_TIMEWAIT,
+  __CTA_TIMEOUT_DCCP_MAX
+};
+#define CTA_TIMEOUT_DCCP_MAX (__CTA_TIMEOUT_DCCP_MAX - 1)
+enum ctattr_timeout_sctp {
+  CTA_TIMEOUT_SCTP_UNSPEC,
+  CTA_TIMEOUT_SCTP_CLOSED,
+  CTA_TIMEOUT_SCTP_COOKIE_WAIT,
+  CTA_TIMEOUT_SCTP_COOKIE_ECHOED,
+  CTA_TIMEOUT_SCTP_ESTABLISHED,
+  CTA_TIMEOUT_SCTP_SHUTDOWN_SENT,
+  CTA_TIMEOUT_SCTP_SHUTDOWN_RECD,
+  CTA_TIMEOUT_SCTP_SHUTDOWN_ACK_SENT,
+  CTA_TIMEOUT_SCTP_HEARTBEAT_SENT,
+  CTA_TIMEOUT_SCTP_HEARTBEAT_ACKED,
+  __CTA_TIMEOUT_SCTP_MAX
+};
+#define CTA_TIMEOUT_SCTP_MAX (__CTA_TIMEOUT_SCTP_MAX - 1)
+enum ctattr_timeout_icmpv6 {
+  CTA_TIMEOUT_ICMPV6_UNSPEC,
+  CTA_TIMEOUT_ICMPV6_TIMEOUT,
+  __CTA_TIMEOUT_ICMPV6_MAX
+};
+#define CTA_TIMEOUT_ICMPV6_MAX (__CTA_TIMEOUT_ICMPV6_MAX - 1)
+enum ctattr_timeout_gre {
+  CTA_TIMEOUT_GRE_UNSPEC,
+  CTA_TIMEOUT_GRE_UNREPLIED,
+  CTA_TIMEOUT_GRE_REPLIED,
+  __CTA_TIMEOUT_GRE_MAX
+};
+#define CTA_TIMEOUT_GRE_MAX (__CTA_TIMEOUT_GRE_MAX - 1)
+#define CTNL_TIMEOUT_NAME_MAX 32
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nfnetlink_hook.h b/i686-linux-musl/include/linux/netfilter/nfnetlink_hook.h
new file mode 100644
index 0000000..ce1692c
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nfnetlink_hook.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _NFNL_HOOK_H_
+#define _NFNL_HOOK_H_
+enum nfnl_hook_msg_types {
+  NFNL_MSG_HOOK_GET,
+  NFNL_MSG_HOOK_MAX,
+};
+enum nfnl_hook_attributes {
+  NFNLA_HOOK_UNSPEC,
+  NFNLA_HOOK_HOOKNUM,
+  NFNLA_HOOK_PRIORITY,
+  NFNLA_HOOK_DEV,
+  NFNLA_HOOK_FUNCTION_NAME,
+  NFNLA_HOOK_MODULE_NAME,
+  NFNLA_HOOK_CHAIN_INFO,
+  __NFNLA_HOOK_MAX
+};
+#define NFNLA_HOOK_MAX (__NFNLA_HOOK_MAX - 1)
+enum nfnl_hook_chain_info_attributes {
+  NFNLA_HOOK_INFO_UNSPEC,
+  NFNLA_HOOK_INFO_DESC,
+  NFNLA_HOOK_INFO_TYPE,
+  __NFNLA_HOOK_INFO_MAX,
+};
+#define NFNLA_HOOK_INFO_MAX (__NFNLA_HOOK_INFO_MAX - 1)
+enum nfnl_hook_chain_desc_attributes {
+  NFNLA_CHAIN_UNSPEC,
+  NFNLA_CHAIN_TABLE,
+  NFNLA_CHAIN_FAMILY,
+  NFNLA_CHAIN_NAME,
+  __NFNLA_CHAIN_MAX,
+};
+#define NFNLA_CHAIN_MAX (__NFNLA_CHAIN_MAX - 1)
+enum nfnl_hook_chaintype {
+  NFNL_HOOK_TYPE_NFTABLES = 0x1,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nfnetlink_log.h b/i686-linux-musl/include/linux/netfilter/nfnetlink_log.h
new file mode 100644
index 0000000..f6a2708
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nfnetlink_log.h
@@ -0,0 +1,107 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _NFNETLINK_LOG_H
+#define _NFNETLINK_LOG_H
+#include <linux/types.h>
+#include <linux/netfilter/nfnetlink.h>
+enum nfulnl_msg_types {
+  NFULNL_MSG_PACKET,
+  NFULNL_MSG_CONFIG,
+  NFULNL_MSG_MAX
+};
+struct nfulnl_msg_packet_hdr {
+  __be16 hw_protocol;
+  __u8 hook;
+  __u8 _pad;
+};
+struct nfulnl_msg_packet_hw {
+  __be16 hw_addrlen;
+  __u16 _pad;
+  __u8 hw_addr[8];
+};
+struct nfulnl_msg_packet_timestamp {
+  __aligned_be64 sec;
+  __aligned_be64 usec;
+};
+enum nfulnl_vlan_attr {
+  NFULA_VLAN_UNSPEC,
+  NFULA_VLAN_PROTO,
+  NFULA_VLAN_TCI,
+  __NFULA_VLAN_MAX,
+};
+#define NFULA_VLAN_MAX (__NFULA_VLAN_MAX + 1)
+enum nfulnl_attr_type {
+  NFULA_UNSPEC,
+  NFULA_PACKET_HDR,
+  NFULA_MARK,
+  NFULA_TIMESTAMP,
+  NFULA_IFINDEX_INDEV,
+  NFULA_IFINDEX_OUTDEV,
+  NFULA_IFINDEX_PHYSINDEV,
+  NFULA_IFINDEX_PHYSOUTDEV,
+  NFULA_HWADDR,
+  NFULA_PAYLOAD,
+  NFULA_PREFIX,
+  NFULA_UID,
+  NFULA_SEQ,
+  NFULA_SEQ_GLOBAL,
+  NFULA_GID,
+  NFULA_HWTYPE,
+  NFULA_HWHEADER,
+  NFULA_HWLEN,
+  NFULA_CT,
+  NFULA_CT_INFO,
+  NFULA_VLAN,
+  NFULA_L2HDR,
+  __NFULA_MAX
+};
+#define NFULA_MAX (__NFULA_MAX - 1)
+enum nfulnl_msg_config_cmds {
+  NFULNL_CFG_CMD_NONE,
+  NFULNL_CFG_CMD_BIND,
+  NFULNL_CFG_CMD_UNBIND,
+  NFULNL_CFG_CMD_PF_BIND,
+  NFULNL_CFG_CMD_PF_UNBIND,
+};
+struct nfulnl_msg_config_cmd {
+  __u8 command;
+} __attribute__((packed));
+struct nfulnl_msg_config_mode {
+  __be32 copy_range;
+  __u8 copy_mode;
+  __u8 _pad;
+} __attribute__((packed));
+enum nfulnl_attr_config {
+  NFULA_CFG_UNSPEC,
+  NFULA_CFG_CMD,
+  NFULA_CFG_MODE,
+  NFULA_CFG_NLBUFSIZ,
+  NFULA_CFG_TIMEOUT,
+  NFULA_CFG_QTHRESH,
+  NFULA_CFG_FLAGS,
+  __NFULA_CFG_MAX
+};
+#define NFULA_CFG_MAX (__NFULA_CFG_MAX - 1)
+#define NFULNL_COPY_NONE 0x00
+#define NFULNL_COPY_META 0x01
+#define NFULNL_COPY_PACKET 0x02
+#define NFULNL_CFG_F_SEQ 0x0001
+#define NFULNL_CFG_F_SEQ_GLOBAL 0x0002
+#define NFULNL_CFG_F_CONNTRACK 0x0004
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nfnetlink_osf.h b/i686-linux-musl/include/linux/netfilter/nfnetlink_osf.h
new file mode 100644
index 0000000..3f930da
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nfnetlink_osf.h
@@ -0,0 +1,97 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _NF_OSF_H
+#define _NF_OSF_H
+#include <linux/types.h>
+#include <linux/ip.h>
+#include <linux/tcp.h>
+#define MAXGENRELEN 32
+#define NF_OSF_GENRE (1 << 0)
+#define NF_OSF_TTL (1 << 1)
+#define NF_OSF_LOG (1 << 2)
+#define NF_OSF_INVERT (1 << 3)
+#define NF_OSF_LOGLEVEL_ALL 0
+#define NF_OSF_LOGLEVEL_FIRST 1
+#define NF_OSF_LOGLEVEL_ALL_KNOWN 2
+#define NF_OSF_TTL_TRUE 0
+#define NF_OSF_TTL_LESS 1
+#define NF_OSF_TTL_NOCHECK 2
+#define NF_OSF_FLAGMASK (NF_OSF_GENRE | NF_OSF_TTL | NF_OSF_LOG | NF_OSF_INVERT)
+struct nf_osf_wc {
+  __u32 wc;
+  __u32 val;
+};
+struct nf_osf_opt {
+  __u16 kind, length;
+  struct nf_osf_wc wc;
+};
+struct nf_osf_info {
+  char genre[MAXGENRELEN];
+  __u32 len;
+  __u32 flags;
+  __u32 loglevel;
+  __u32 ttl;
+};
+struct nf_osf_user_finger {
+  struct nf_osf_wc wss;
+  __u8 ttl, df;
+  __u16 ss, mss;
+  __u16 opt_num;
+  char genre[MAXGENRELEN];
+  char version[MAXGENRELEN];
+  char subtype[MAXGENRELEN];
+  struct nf_osf_opt opt[MAX_IPOPTLEN];
+};
+struct nf_osf_nlmsg {
+  struct nf_osf_user_finger f;
+  struct iphdr ip;
+  struct tcphdr tcp;
+};
+enum iana_options {
+  OSFOPT_EOL = 0,
+  OSFOPT_NOP,
+  OSFOPT_MSS,
+  OSFOPT_WSO,
+  OSFOPT_SACKP,
+  OSFOPT_SACK,
+  OSFOPT_ECHO,
+  OSFOPT_ECHOREPLY,
+  OSFOPT_TS,
+  OSFOPT_POCP,
+  OSFOPT_POSP,
+  OSFOPT_EMPTY = 255,
+};
+enum nf_osf_window_size_options {
+  OSF_WSS_PLAIN = 0,
+  OSF_WSS_MSS,
+  OSF_WSS_MTU,
+  OSF_WSS_MODULO,
+  OSF_WSS_MAX,
+};
+enum nf_osf_attr_type {
+  OSF_ATTR_UNSPEC,
+  OSF_ATTR_FINGER,
+  OSF_ATTR_MAX,
+};
+enum nf_osf_msg_types {
+  OSF_MSG_ADD,
+  OSF_MSG_REMOVE,
+  OSF_MSG_MAX,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/nfnetlink_queue.h b/i686-linux-musl/include/linux/netfilter/nfnetlink_queue.h
new file mode 100644
index 0000000..75fa359
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/nfnetlink_queue.h
@@ -0,0 +1,120 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _NFNETLINK_QUEUE_H
+#define _NFNETLINK_QUEUE_H
+#include <linux/types.h>
+#include <linux/netfilter/nfnetlink.h>
+enum nfqnl_msg_types {
+  NFQNL_MSG_PACKET,
+  NFQNL_MSG_VERDICT,
+  NFQNL_MSG_CONFIG,
+  NFQNL_MSG_VERDICT_BATCH,
+  NFQNL_MSG_MAX
+};
+struct nfqnl_msg_packet_hdr {
+  __be32 packet_id;
+  __be16 hw_protocol;
+  __u8 hook;
+} __attribute__((packed));
+struct nfqnl_msg_packet_hw {
+  __be16 hw_addrlen;
+  __u16 _pad;
+  __u8 hw_addr[8];
+};
+struct nfqnl_msg_packet_timestamp {
+  __aligned_be64 sec;
+  __aligned_be64 usec;
+};
+enum nfqnl_vlan_attr {
+  NFQA_VLAN_UNSPEC,
+  NFQA_VLAN_PROTO,
+  NFQA_VLAN_TCI,
+  __NFQA_VLAN_MAX,
+};
+#define NFQA_VLAN_MAX (__NFQA_VLAN_MAX - 1)
+enum nfqnl_attr_type {
+  NFQA_UNSPEC,
+  NFQA_PACKET_HDR,
+  NFQA_VERDICT_HDR,
+  NFQA_MARK,
+  NFQA_TIMESTAMP,
+  NFQA_IFINDEX_INDEV,
+  NFQA_IFINDEX_OUTDEV,
+  NFQA_IFINDEX_PHYSINDEV,
+  NFQA_IFINDEX_PHYSOUTDEV,
+  NFQA_HWADDR,
+  NFQA_PAYLOAD,
+  NFQA_CT,
+  NFQA_CT_INFO,
+  NFQA_CAP_LEN,
+  NFQA_SKB_INFO,
+  NFQA_EXP,
+  NFQA_UID,
+  NFQA_GID,
+  NFQA_SECCTX,
+  NFQA_VLAN,
+  NFQA_L2HDR,
+  __NFQA_MAX
+};
+#define NFQA_MAX (__NFQA_MAX - 1)
+struct nfqnl_msg_verdict_hdr {
+  __be32 verdict;
+  __be32 id;
+};
+enum nfqnl_msg_config_cmds {
+  NFQNL_CFG_CMD_NONE,
+  NFQNL_CFG_CMD_BIND,
+  NFQNL_CFG_CMD_UNBIND,
+  NFQNL_CFG_CMD_PF_BIND,
+  NFQNL_CFG_CMD_PF_UNBIND,
+};
+struct nfqnl_msg_config_cmd {
+  __u8 command;
+  __u8 _pad;
+  __be16 pf;
+};
+enum nfqnl_config_mode {
+  NFQNL_COPY_NONE,
+  NFQNL_COPY_META,
+  NFQNL_COPY_PACKET,
+};
+struct nfqnl_msg_config_params {
+  __be32 copy_range;
+  __u8 copy_mode;
+} __attribute__((packed));
+enum nfqnl_attr_config {
+  NFQA_CFG_UNSPEC,
+  NFQA_CFG_CMD,
+  NFQA_CFG_PARAMS,
+  NFQA_CFG_QUEUE_MAXLEN,
+  NFQA_CFG_MASK,
+  NFQA_CFG_FLAGS,
+  __NFQA_CFG_MAX
+};
+#define NFQA_CFG_MAX (__NFQA_CFG_MAX - 1)
+#define NFQA_CFG_F_FAIL_OPEN (1 << 0)
+#define NFQA_CFG_F_CONNTRACK (1 << 1)
+#define NFQA_CFG_F_GSO (1 << 2)
+#define NFQA_CFG_F_UID_GID (1 << 3)
+#define NFQA_CFG_F_SECCTX (1 << 4)
+#define NFQA_CFG_F_MAX (1 << 5)
+#define NFQA_SKB_CSUMNOTREADY (1 << 0)
+#define NFQA_SKB_GSO (1 << 1)
+#define NFQA_SKB_CSUM_NOTVERIFIED (1 << 2)
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/x_tables.h b/i686-linux-musl/include/linux/netfilter/x_tables.h
new file mode 100644
index 0000000..46bde57
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/x_tables.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_X_TABLES_H
+#define _UAPI_X_TABLES_H
+#include <linux/const.h>
+#include <linux/types.h>
+#define XT_FUNCTION_MAXNAMELEN 30
+#define XT_EXTENSION_MAXNAMELEN 29
+#define XT_TABLE_MAXNAMELEN 32
+struct xt_entry_match {
+  union {
+    struct {
+      __u16 match_size;
+      char name[XT_EXTENSION_MAXNAMELEN];
+      __u8 revision;
+    } user;
+    struct {
+      __u16 match_size;
+      struct xt_match * match;
+    } kernel;
+    __u16 match_size;
+  } u;
+  unsigned char data[0];
+};
+struct xt_entry_target {
+  union {
+    struct {
+      __u16 target_size;
+      char name[XT_EXTENSION_MAXNAMELEN];
+      __u8 revision;
+    } user;
+    struct {
+      __u16 target_size;
+      struct xt_target * target;
+    } kernel;
+    __u16 target_size;
+  } u;
+  unsigned char data[0];
+};
+#define XT_TARGET_INIT(__name,__size) \
+{.target.u.user = {.target_size = XT_ALIGN(__size),.name = __name, }, \
+}
+struct xt_standard_target {
+  struct xt_entry_target target;
+  int verdict;
+};
+struct xt_error_target {
+  struct xt_entry_target target;
+  char errorname[XT_FUNCTION_MAXNAMELEN];
+};
+struct xt_get_revision {
+  char name[XT_EXTENSION_MAXNAMELEN];
+  __u8 revision;
+};
+#define XT_CONTINUE 0xFFFFFFFF
+#define XT_RETURN (- NF_REPEAT - 1)
+struct _xt_align {
+  __u8 u8;
+  __u16 u16;
+  __u32 u32;
+  __u64 u64;
+};
+#define XT_ALIGN(s) __ALIGN_KERNEL((s), __alignof__(struct _xt_align))
+#define XT_STANDARD_TARGET ""
+#define XT_ERROR_TARGET "ERROR"
+#define SET_COUNTER(c,b,p) do { (c).bcnt = (b); (c).pcnt = (p); } while(0)
+#define ADD_COUNTER(c,b,p) do { (c).bcnt += (b); (c).pcnt += (p); } while(0)
+struct xt_counters {
+  __u64 pcnt, bcnt;
+};
+struct xt_counters_info {
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int num_counters;
+  struct xt_counters counters[0];
+};
+#define XT_INV_PROTO 0x40
+#define XT_MATCH_ITERATE(type,e,fn,args...) \
+({ unsigned int __i; int __ret = 0; struct xt_entry_match * __m; for(__i = sizeof(type); __i < (e)->target_offset; __i += __m->u.match_size) { __m = (void *) e + __i; __ret = fn(__m, ##args); if(__ret != 0) break; } __ret; \
+})
+#define XT_ENTRY_ITERATE_CONTINUE(type,entries,size,n,fn,args...) \
+({ unsigned int __i, __n; int __ret = 0; type * __entry; for(__i = 0, __n = 0; __i < (size); __i += __entry->next_offset, __n ++) { __entry = (void *) (entries) + __i; if(__n < n) continue; __ret = fn(__entry, ##args); if(__ret != 0) break; } __ret; \
+})
+#define XT_ENTRY_ITERATE(type,entries,size,fn,args...) XT_ENTRY_ITERATE_CONTINUE(type, entries, size, 0, fn, args)
+#define xt_entry_foreach(pos,ehead,esize) for((pos) = (typeof(pos)) (ehead); (pos) < (typeof(pos)) ((char *) (ehead) + (esize)); (pos) = (typeof(pos)) ((char *) (pos) + (pos)->next_offset))
+#define xt_ematch_foreach(pos,entry) for((pos) = (struct xt_entry_match *) entry->elems; (pos) < (struct xt_entry_match *) ((char *) (entry) + (entry)->target_offset); (pos) = (struct xt_entry_match *) ((char *) (pos) + (pos)->u.match_size))
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_AUDIT.h b/i686-linux-musl/include/linux/netfilter/xt_AUDIT.h
new file mode 100644
index 0000000..a238375
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_AUDIT.h
@@ -0,0 +1,32 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_AUDIT_TARGET_H
+#define _XT_AUDIT_TARGET_H
+#include <linux/types.h>
+enum {
+  XT_AUDIT_TYPE_ACCEPT = 0,
+  XT_AUDIT_TYPE_DROP,
+  XT_AUDIT_TYPE_REJECT,
+  __XT_AUDIT_TYPE_MAX,
+};
+#define XT_AUDIT_TYPE_MAX (__XT_AUDIT_TYPE_MAX - 1)
+struct xt_audit_info {
+  __u8 type;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_CHECKSUM.h b/i686-linux-musl/include/linux/netfilter/xt_CHECKSUM.h
new file mode 100644
index 0000000..ecbce0e
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_CHECKSUM.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_CHECKSUM_TARGET_H
+#define _XT_CHECKSUM_TARGET_H
+#include <linux/types.h>
+#define XT_CHECKSUM_OP_FILL 0x01
+struct xt_CHECKSUM_info {
+  __u8 operation;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_CLASSIFY.h b/i686-linux-musl/include/linux/netfilter/xt_CLASSIFY.h
new file mode 100644
index 0000000..df0fcd2
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_CLASSIFY.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_CLASSIFY_H
+#define _XT_CLASSIFY_H
+#include <linux/types.h>
+struct xt_classify_target_info {
+  __u32 priority;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_CONNMARK.h b/i686-linux-musl/include/linux/netfilter/xt_CONNMARK.h
new file mode 100644
index 0000000..449511e
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_CONNMARK.h
@@ -0,0 +1,22 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_CONNMARK_H_target
+#define _XT_CONNMARK_H_target
+#include <linux/netfilter/xt_connmark.h>
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_CONNSECMARK.h b/i686-linux-musl/include/linux/netfilter/xt_CONNSECMARK.h
new file mode 100644
index 0000000..d58385a
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_CONNSECMARK.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_CONNSECMARK_H_target
+#define _XT_CONNSECMARK_H_target
+#include <linux/types.h>
+enum {
+  CONNSECMARK_SAVE = 1,
+  CONNSECMARK_RESTORE,
+};
+struct xt_connsecmark_target_info {
+  __u8 mode;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_CT.h b/i686-linux-musl/include/linux/netfilter/xt_CT.h
new file mode 100644
index 0000000..9c4b255
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_CT.h
@@ -0,0 +1,47 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_CT_H
+#define _XT_CT_H
+#include <linux/types.h>
+enum {
+  XT_CT_NOTRACK = 1 << 0,
+  XT_CT_NOTRACK_ALIAS = 1 << 1,
+  XT_CT_ZONE_DIR_ORIG = 1 << 2,
+  XT_CT_ZONE_DIR_REPL = 1 << 3,
+  XT_CT_ZONE_MARK = 1 << 4,
+  XT_CT_MASK = XT_CT_NOTRACK | XT_CT_NOTRACK_ALIAS | XT_CT_ZONE_DIR_ORIG | XT_CT_ZONE_DIR_REPL | XT_CT_ZONE_MARK,
+};
+struct xt_ct_target_info {
+  __u16 flags;
+  __u16 zone;
+  __u32 ct_events;
+  __u32 exp_events;
+  char helper[16];
+  struct nf_conn * ct __attribute__((aligned(8)));
+};
+struct xt_ct_target_info_v1 {
+  __u16 flags;
+  __u16 zone;
+  __u32 ct_events;
+  __u32 exp_events;
+  char helper[16];
+  char timeout[32];
+  struct nf_conn * ct __attribute__((aligned(8)));
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_DSCP.h b/i686-linux-musl/include/linux/netfilter/xt_DSCP.h
new file mode 100644
index 0000000..adc3785
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_DSCP.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_DSCP_TARGET_H
+#define _XT_DSCP_TARGET_H
+#include <linux/netfilter/xt_dscp.h>
+#include <linux/types.h>
+struct xt_DSCP_info {
+  __u8 dscp;
+};
+struct xt_tos_target_info {
+  __u8 tos_value;
+  __u8 tos_mask;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_HMARK.h b/i686-linux-musl/include/linux/netfilter/xt_HMARK.h
new file mode 100644
index 0000000..b72c23c
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_HMARK.h
@@ -0,0 +1,64 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef XT_HMARK_H_
+#define XT_HMARK_H_
+#include <linux/types.h>
+#include <linux/netfilter.h>
+enum {
+  XT_HMARK_SADDR_MASK,
+  XT_HMARK_DADDR_MASK,
+  XT_HMARK_SPI,
+  XT_HMARK_SPI_MASK,
+  XT_HMARK_SPORT,
+  XT_HMARK_DPORT,
+  XT_HMARK_SPORT_MASK,
+  XT_HMARK_DPORT_MASK,
+  XT_HMARK_PROTO_MASK,
+  XT_HMARK_RND,
+  XT_HMARK_MODULUS,
+  XT_HMARK_OFFSET,
+  XT_HMARK_CT,
+  XT_HMARK_METHOD_L3,
+  XT_HMARK_METHOD_L3_4,
+};
+#define XT_HMARK_FLAG(flag) (1 << flag)
+union hmark_ports {
+  struct {
+    __u16 src;
+    __u16 dst;
+  } p16;
+  struct {
+    __be16 src;
+    __be16 dst;
+  } b16;
+  __u32 v32;
+  __be32 b32;
+};
+struct xt_hmark_info {
+  union nf_inet_addr src_mask;
+  union nf_inet_addr dst_mask;
+  union hmark_ports port_mask;
+  union hmark_ports port_set;
+  __u32 flags;
+  __u16 proto_mask;
+  __u32 hashrnd;
+  __u32 hmodulus;
+  __u32 hoffset;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_IDLETIMER.h b/i686-linux-musl/include/linux/netfilter/xt_IDLETIMER.h
new file mode 100644
index 0000000..f4defb6
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_IDLETIMER.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_IDLETIMER_H
+#define _XT_IDLETIMER_H
+#include <linux/types.h>
+#define MAX_IDLETIMER_LABEL_SIZE 28
+#define XT_IDLETIMER_ALARM 0x01
+struct idletimer_tg_info {
+  __u32 timeout;
+  char label[MAX_IDLETIMER_LABEL_SIZE];
+  struct idletimer_tg * timer __attribute__((aligned(8)));
+};
+struct idletimer_tg_info_v1 {
+  __u32 timeout;
+  char label[MAX_IDLETIMER_LABEL_SIZE];
+  __u8 send_nl_msg;
+  __u8 timer_type;
+  struct idletimer_tg * timer __attribute__((aligned(8)));
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_LED.h b/i686-linux-musl/include/linux/netfilter/xt_LED.h
new file mode 100644
index 0000000..cbd1522
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_LED.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_LED_H
+#define _XT_LED_H
+#include <linux/types.h>
+struct xt_led_info {
+  char id[27];
+  __u8 always_blink;
+  __u32 delay;
+  void * internal_data __attribute__((aligned(8)));
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_LOG.h b/i686-linux-musl/include/linux/netfilter/xt_LOG.h
new file mode 100644
index 0000000..c80c936
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_LOG.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_LOG_H
+#define _XT_LOG_H
+#define XT_LOG_TCPSEQ 0x01
+#define XT_LOG_TCPOPT 0x02
+#define XT_LOG_IPOPT 0x04
+#define XT_LOG_UID 0x08
+#define XT_LOG_NFLOG 0x10
+#define XT_LOG_MACDECODE 0x20
+#define XT_LOG_MASK 0x2f
+struct xt_log_info {
+  unsigned char level;
+  unsigned char logflags;
+  char prefix[30];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_MARK.h b/i686-linux-musl/include/linux/netfilter/xt_MARK.h
new file mode 100644
index 0000000..e091cc6
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_MARK.h
@@ -0,0 +1,22 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_MARK_H_target
+#define _XT_MARK_H_target
+#include <linux/netfilter/xt_mark.h>
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_NFLOG.h b/i686-linux-musl/include/linux/netfilter/xt_NFLOG.h
new file mode 100644
index 0000000..135109c
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_NFLOG.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_NFLOG_TARGET
+#define _XT_NFLOG_TARGET
+#include <linux/types.h>
+#define XT_NFLOG_DEFAULT_GROUP 0x1
+#define XT_NFLOG_DEFAULT_THRESHOLD 0
+#define XT_NFLOG_MASK 0x1
+#define XT_NFLOG_F_COPY_LEN 0x1
+struct xt_nflog_info {
+  __u32 len;
+  __u16 group;
+  __u16 threshold;
+  __u16 flags;
+  __u16 pad;
+  char prefix[64];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_NFQUEUE.h b/i686-linux-musl/include/linux/netfilter/xt_NFQUEUE.h
new file mode 100644
index 0000000..977ba5f
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_NFQUEUE.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_NFQ_TARGET_H
+#define _XT_NFQ_TARGET_H
+#include <linux/types.h>
+struct xt_NFQ_info {
+  __u16 queuenum;
+};
+struct xt_NFQ_info_v1 {
+  __u16 queuenum;
+  __u16 queues_total;
+};
+struct xt_NFQ_info_v2 {
+  __u16 queuenum;
+  __u16 queues_total;
+  __u16 bypass;
+};
+struct xt_NFQ_info_v3 {
+  __u16 queuenum;
+  __u16 queues_total;
+  __u16 flags;
+#define NFQ_FLAG_BYPASS 0x01
+#define NFQ_FLAG_CPU_FANOUT 0x02
+#define NFQ_FLAG_MASK 0x03
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_RATEEST.h b/i686-linux-musl/include/linux/netfilter/xt_RATEEST.h
new file mode 100644
index 0000000..0517d79
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_RATEEST.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_RATEEST_TARGET_H
+#define _XT_RATEEST_TARGET_H
+#include <linux/types.h>
+#include <linux/if.h>
+struct xt_rateest_target_info {
+  char name[IFNAMSIZ];
+  __s8 interval;
+  __u8 ewma_log;
+  struct xt_rateest * est __attribute__((aligned(8)));
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_SECMARK.h b/i686-linux-musl/include/linux/netfilter/xt_SECMARK.h
new file mode 100644
index 0000000..6dd8dbc
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_SECMARK.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_SECMARK_H_target
+#define _XT_SECMARK_H_target
+#include <linux/types.h>
+#define SECMARK_MODE_SEL 0x01
+#define SECMARK_SECCTX_MAX 256
+struct xt_secmark_target_info {
+  __u8 mode;
+  __u32 secid;
+  char secctx[SECMARK_SECCTX_MAX];
+};
+struct xt_secmark_target_info_v1 {
+  __u8 mode;
+  char secctx[SECMARK_SECCTX_MAX];
+  __u32 secid;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_SYNPROXY.h b/i686-linux-musl/include/linux/netfilter/xt_SYNPROXY.h
new file mode 100644
index 0000000..4d7f436
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_SYNPROXY.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_SYNPROXY_H
+#define _XT_SYNPROXY_H
+#include <linux/netfilter/nf_synproxy.h>
+#define XT_SYNPROXY_OPT_MSS NF_SYNPROXY_OPT_MSS
+#define XT_SYNPROXY_OPT_WSCALE NF_SYNPROXY_OPT_WSCALE
+#define XT_SYNPROXY_OPT_SACK_PERM NF_SYNPROXY_OPT_SACK_PERM
+#define XT_SYNPROXY_OPT_TIMESTAMP NF_SYNPROXY_OPT_TIMESTAMP
+#define XT_SYNPROXY_OPT_ECN NF_SYNPROXY_OPT_ECN
+#define xt_synproxy_info nf_synproxy_info
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_TCPMSS.h b/i686-linux-musl/include/linux/netfilter/xt_TCPMSS.h
new file mode 100644
index 0000000..ec6adc6
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_TCPMSS.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_TCPMSS_H
+#define _XT_TCPMSS_H
+#include <linux/types.h>
+struct xt_tcpmss_info {
+  __u16 mss;
+};
+#define XT_TCPMSS_CLAMP_PMTU 0xffff
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_TCPOPTSTRIP.h b/i686-linux-musl/include/linux/netfilter/xt_TCPOPTSTRIP.h
new file mode 100644
index 0000000..7b7a25b
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_TCPOPTSTRIP.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_TCPOPTSTRIP_H
+#define _XT_TCPOPTSTRIP_H
+#include <linux/types.h>
+#define tcpoptstrip_set_bit(bmap,idx) (bmap[(idx) >> 5] |= 1U << (idx & 31))
+#define tcpoptstrip_test_bit(bmap,idx) (((1U << (idx & 31)) & bmap[(idx) >> 5]) != 0)
+struct xt_tcpoptstrip_target_info {
+  __u32 strip_bmap[8];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_TEE.h b/i686-linux-musl/include/linux/netfilter/xt_TEE.h
new file mode 100644
index 0000000..4dca1d7
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_TEE.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_TEE_TARGET_H
+#define _XT_TEE_TARGET_H
+#include <linux/netfilter.h>
+struct xt_tee_tginfo {
+  union nf_inet_addr gw;
+  char oif[16];
+  struct xt_tee_priv * priv __attribute__((aligned(8)));
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_TPROXY.h b/i686-linux-musl/include/linux/netfilter/xt_TPROXY.h
new file mode 100644
index 0000000..3cfbc90
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_TPROXY.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_TPROXY_H
+#define _XT_TPROXY_H
+#include <linux/types.h>
+#include <linux/netfilter.h>
+struct xt_tproxy_target_info {
+  __u32 mark_mask;
+  __u32 mark_value;
+  __be32 laddr;
+  __be16 lport;
+};
+struct xt_tproxy_target_info_v1 {
+  __u32 mark_mask;
+  __u32 mark_value;
+  union nf_inet_addr laddr;
+  __be16 lport;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_addrtype.h b/i686-linux-musl/include/linux/netfilter/xt_addrtype.h
new file mode 100644
index 0000000..a4acc5d
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_addrtype.h
@@ -0,0 +1,53 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_ADDRTYPE_H
+#define _XT_ADDRTYPE_H
+#include <linux/types.h>
+enum {
+  XT_ADDRTYPE_INVERT_SOURCE = 0x0001,
+  XT_ADDRTYPE_INVERT_DEST = 0x0002,
+  XT_ADDRTYPE_LIMIT_IFACE_IN = 0x0004,
+  XT_ADDRTYPE_LIMIT_IFACE_OUT = 0x0008,
+};
+enum {
+  XT_ADDRTYPE_UNSPEC = 1 << 0,
+  XT_ADDRTYPE_UNICAST = 1 << 1,
+  XT_ADDRTYPE_LOCAL = 1 << 2,
+  XT_ADDRTYPE_BROADCAST = 1 << 3,
+  XT_ADDRTYPE_ANYCAST = 1 << 4,
+  XT_ADDRTYPE_MULTICAST = 1 << 5,
+  XT_ADDRTYPE_BLACKHOLE = 1 << 6,
+  XT_ADDRTYPE_UNREACHABLE = 1 << 7,
+  XT_ADDRTYPE_PROHIBIT = 1 << 8,
+  XT_ADDRTYPE_THROW = 1 << 9,
+  XT_ADDRTYPE_NAT = 1 << 10,
+  XT_ADDRTYPE_XRESOLVE = 1 << 11,
+};
+struct xt_addrtype_info_v1 {
+  __u16 source;
+  __u16 dest;
+  __u32 flags;
+};
+struct xt_addrtype_info {
+  __u16 source;
+  __u16 dest;
+  __u32 invert_source;
+  __u32 invert_dest;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_bpf.h b/i686-linux-musl/include/linux/netfilter/xt_bpf.h
new file mode 100644
index 0000000..043af45
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_bpf.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_BPF_H
+#define _XT_BPF_H
+#include <linux/filter.h>
+#include <linux/limits.h>
+#include <linux/types.h>
+#define XT_BPF_MAX_NUM_INSTR 64
+#define XT_BPF_PATH_MAX (XT_BPF_MAX_NUM_INSTR * sizeof(struct sock_filter))
+struct bpf_prog;
+struct xt_bpf_info {
+  __u16 bpf_program_num_elem;
+  struct sock_filter bpf_program[XT_BPF_MAX_NUM_INSTR];
+  struct bpf_prog * filter __attribute__((aligned(8)));
+};
+enum xt_bpf_modes {
+  XT_BPF_MODE_BYTECODE,
+  XT_BPF_MODE_FD_PINNED,
+  XT_BPF_MODE_FD_ELF,
+};
+#define XT_BPF_MODE_PATH_PINNED XT_BPF_MODE_FD_PINNED
+struct xt_bpf_info_v1 {
+  __u16 mode;
+  __u16 bpf_program_num_elem;
+  __s32 fd;
+  union {
+    struct sock_filter bpf_program[XT_BPF_MAX_NUM_INSTR];
+    char path[XT_BPF_PATH_MAX];
+  };
+  struct bpf_prog * filter __attribute__((aligned(8)));
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_cgroup.h b/i686-linux-musl/include/linux/netfilter/xt_cgroup.h
new file mode 100644
index 0000000..6d939ea
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_cgroup.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_XT_CGROUP_H
+#define _UAPI_XT_CGROUP_H
+#include <linux/types.h>
+#include <linux/limits.h>
+struct xt_cgroup_info_v0 {
+  __u32 id;
+  __u32 invert;
+};
+struct xt_cgroup_info_v1 {
+  __u8 has_path;
+  __u8 has_classid;
+  __u8 invert_path;
+  __u8 invert_classid;
+  char path[PATH_MAX];
+  __u32 classid;
+  void * priv __attribute__((aligned(8)));
+};
+#define XT_CGROUP_PATH_MAX 512
+struct xt_cgroup_info_v2 {
+  __u8 has_path;
+  __u8 has_classid;
+  __u8 invert_path;
+  __u8 invert_classid;
+  union {
+    char path[XT_CGROUP_PATH_MAX];
+    __u32 classid;
+  };
+  void * priv __attribute__((aligned(8)));
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_cluster.h b/i686-linux-musl/include/linux/netfilter/xt_cluster.h
new file mode 100644
index 0000000..e532f7d
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_cluster.h
@@ -0,0 +1,32 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_CLUSTER_MATCH_H
+#define _XT_CLUSTER_MATCH_H
+#include <linux/types.h>
+enum xt_cluster_flags {
+  XT_CLUSTER_F_INV = (1 << 0)
+};
+struct xt_cluster_match_info {
+  __u32 total_nodes;
+  __u32 node_mask;
+  __u32 hash_seed;
+  __u32 flags;
+};
+#define XT_CLUSTER_NODES_MAX 32
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_comment.h b/i686-linux-musl/include/linux/netfilter/xt_comment.h
new file mode 100644
index 0000000..2b44718
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_comment.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_COMMENT_H
+#define _XT_COMMENT_H
+#define XT_MAX_COMMENT_LEN 256
+struct xt_comment_info {
+  char comment[XT_MAX_COMMENT_LEN];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_connbytes.h b/i686-linux-musl/include/linux/netfilter/xt_connbytes.h
new file mode 100644
index 0000000..a3efa02
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_connbytes.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_CONNBYTES_H
+#define _XT_CONNBYTES_H
+#include <linux/types.h>
+enum xt_connbytes_what {
+  XT_CONNBYTES_PKTS,
+  XT_CONNBYTES_BYTES,
+  XT_CONNBYTES_AVGPKT,
+};
+enum xt_connbytes_direction {
+  XT_CONNBYTES_DIR_ORIGINAL,
+  XT_CONNBYTES_DIR_REPLY,
+  XT_CONNBYTES_DIR_BOTH,
+};
+struct xt_connbytes_info {
+  struct {
+    __aligned_u64 from;
+    __aligned_u64 to;
+  } count;
+  __u8 what;
+  __u8 direction;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_connlabel.h b/i686-linux-musl/include/linux/netfilter/xt_connlabel.h
new file mode 100644
index 0000000..7548fa1
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_connlabel.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_XT_CONNLABEL_H
+#define _UAPI_XT_CONNLABEL_H
+#include <linux/types.h>
+#define XT_CONNLABEL_MAXBIT 127
+enum xt_connlabel_mtopts {
+  XT_CONNLABEL_OP_INVERT = 1 << 0,
+  XT_CONNLABEL_OP_SET = 1 << 1,
+};
+struct xt_connlabel_mtinfo {
+  __u16 bit;
+  __u16 options;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_connlimit.h b/i686-linux-musl/include/linux/netfilter/xt_connlimit.h
new file mode 100644
index 0000000..9ff2de9
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_connlimit.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_CONNLIMIT_H
+#define _XT_CONNLIMIT_H
+#include <linux/types.h>
+#include <linux/netfilter.h>
+struct xt_connlimit_data;
+enum {
+  XT_CONNLIMIT_INVERT = 1 << 0,
+  XT_CONNLIMIT_DADDR = 1 << 1,
+};
+struct xt_connlimit_info {
+  union {
+    union nf_inet_addr mask;
+    union {
+      __be32 v4_mask;
+      __be32 v6_mask[4];
+    };
+  };
+  unsigned int limit;
+  __u32 flags;
+  struct nf_conncount_data * data __attribute__((aligned(8)));
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_connmark.h b/i686-linux-musl/include/linux/netfilter/xt_connmark.h
new file mode 100644
index 0000000..f14474f
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_connmark.h
@@ -0,0 +1,43 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_CONNMARK_H
+#define _XT_CONNMARK_H
+#include <linux/types.h>
+enum {
+  XT_CONNMARK_SET = 0,
+  XT_CONNMARK_SAVE,
+  XT_CONNMARK_RESTORE
+};
+enum {
+  D_SHIFT_LEFT = 0,
+  D_SHIFT_RIGHT,
+};
+struct xt_connmark_tginfo1 {
+  __u32 ctmark, ctmask, nfmask;
+  __u8 mode;
+};
+struct xt_connmark_tginfo2 {
+  __u32 ctmark, ctmask, nfmask;
+  __u8 shift_dir, shift_bits, mode;
+};
+struct xt_connmark_mtinfo1 {
+  __u32 mark, mask;
+  __u8 invert;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_conntrack.h b/i686-linux-musl/include/linux/netfilter/xt_conntrack.h
new file mode 100644
index 0000000..5472cc5
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_conntrack.h
@@ -0,0 +1,83 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_CONNTRACK_H
+#define _XT_CONNTRACK_H
+#include <linux/types.h>
+#include <linux/netfilter.h>
+#include <linux/netfilter/nf_conntrack_tuple_common.h>
+#define XT_CONNTRACK_STATE_BIT(ctinfo) (1 << ((ctinfo) % IP_CT_IS_REPLY + 1))
+#define XT_CONNTRACK_STATE_INVALID (1 << 0)
+#define XT_CONNTRACK_STATE_SNAT (1 << (IP_CT_NUMBER + 1))
+#define XT_CONNTRACK_STATE_DNAT (1 << (IP_CT_NUMBER + 2))
+#define XT_CONNTRACK_STATE_UNTRACKED (1 << (IP_CT_NUMBER + 3))
+enum {
+  XT_CONNTRACK_STATE = 1 << 0,
+  XT_CONNTRACK_PROTO = 1 << 1,
+  XT_CONNTRACK_ORIGSRC = 1 << 2,
+  XT_CONNTRACK_ORIGDST = 1 << 3,
+  XT_CONNTRACK_REPLSRC = 1 << 4,
+  XT_CONNTRACK_REPLDST = 1 << 5,
+  XT_CONNTRACK_STATUS = 1 << 6,
+  XT_CONNTRACK_EXPIRES = 1 << 7,
+  XT_CONNTRACK_ORIGSRC_PORT = 1 << 8,
+  XT_CONNTRACK_ORIGDST_PORT = 1 << 9,
+  XT_CONNTRACK_REPLSRC_PORT = 1 << 10,
+  XT_CONNTRACK_REPLDST_PORT = 1 << 11,
+  XT_CONNTRACK_DIRECTION = 1 << 12,
+  XT_CONNTRACK_STATE_ALIAS = 1 << 13,
+};
+struct xt_conntrack_mtinfo1 {
+  union nf_inet_addr origsrc_addr, origsrc_mask;
+  union nf_inet_addr origdst_addr, origdst_mask;
+  union nf_inet_addr replsrc_addr, replsrc_mask;
+  union nf_inet_addr repldst_addr, repldst_mask;
+  __u32 expires_min, expires_max;
+  __u16 l4proto;
+  __be16 origsrc_port, origdst_port;
+  __be16 replsrc_port, repldst_port;
+  __u16 match_flags, invert_flags;
+  __u8 state_mask, status_mask;
+};
+struct xt_conntrack_mtinfo2 {
+  union nf_inet_addr origsrc_addr, origsrc_mask;
+  union nf_inet_addr origdst_addr, origdst_mask;
+  union nf_inet_addr replsrc_addr, replsrc_mask;
+  union nf_inet_addr repldst_addr, repldst_mask;
+  __u32 expires_min, expires_max;
+  __u16 l4proto;
+  __be16 origsrc_port, origdst_port;
+  __be16 replsrc_port, repldst_port;
+  __u16 match_flags, invert_flags;
+  __u16 state_mask, status_mask;
+};
+struct xt_conntrack_mtinfo3 {
+  union nf_inet_addr origsrc_addr, origsrc_mask;
+  union nf_inet_addr origdst_addr, origdst_mask;
+  union nf_inet_addr replsrc_addr, replsrc_mask;
+  union nf_inet_addr repldst_addr, repldst_mask;
+  __u32 expires_min, expires_max;
+  __u16 l4proto;
+  __u16 origsrc_port, origdst_port;
+  __u16 replsrc_port, repldst_port;
+  __u16 match_flags, invert_flags;
+  __u16 state_mask, status_mask;
+  __u16 origsrc_port_high, origdst_port_high;
+  __u16 replsrc_port_high, repldst_port_high;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_cpu.h b/i686-linux-musl/include/linux/netfilter/xt_cpu.h
new file mode 100644
index 0000000..76e8134
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_cpu.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_CPU_H
+#define _XT_CPU_H
+#include <linux/types.h>
+struct xt_cpu_info {
+  __u32 cpu;
+  __u32 invert;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_dccp.h b/i686-linux-musl/include/linux/netfilter/xt_dccp.h
new file mode 100644
index 0000000..b4e5748
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_dccp.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_DCCP_H_
+#define _XT_DCCP_H_
+#include <linux/types.h>
+#define XT_DCCP_SRC_PORTS 0x01
+#define XT_DCCP_DEST_PORTS 0x02
+#define XT_DCCP_TYPE 0x04
+#define XT_DCCP_OPTION 0x08
+#define XT_DCCP_VALID_FLAGS 0x0f
+struct xt_dccp_info {
+  __u16 dpts[2];
+  __u16 spts[2];
+  __u16 flags;
+  __u16 invflags;
+  __u16 typemask;
+  __u8 option;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_devgroup.h b/i686-linux-musl/include/linux/netfilter/xt_devgroup.h
new file mode 100644
index 0000000..639484a
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_devgroup.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_DEVGROUP_H
+#define _XT_DEVGROUP_H
+#include <linux/types.h>
+enum xt_devgroup_flags {
+  XT_DEVGROUP_MATCH_SRC = 0x1,
+  XT_DEVGROUP_INVERT_SRC = 0x2,
+  XT_DEVGROUP_MATCH_DST = 0x4,
+  XT_DEVGROUP_INVERT_DST = 0x8,
+};
+struct xt_devgroup_info {
+  __u32 flags;
+  __u32 src_group;
+  __u32 src_mask;
+  __u32 dst_group;
+  __u32 dst_mask;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_dscp.h b/i686-linux-musl/include/linux/netfilter/xt_dscp.h
new file mode 100644
index 0000000..f34afc0
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_dscp.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_DSCP_H
+#define _XT_DSCP_H
+#include <linux/types.h>
+#define XT_DSCP_MASK 0xfc
+#define XT_DSCP_SHIFT 2
+#define XT_DSCP_MAX 0x3f
+struct xt_dscp_info {
+  __u8 dscp;
+  __u8 invert;
+};
+struct xt_tos_match_info {
+  __u8 tos_mask;
+  __u8 tos_value;
+  __u8 invert;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_ecn.h b/i686-linux-musl/include/linux/netfilter/xt_ecn.h
new file mode 100644
index 0000000..aee7d84
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_ecn.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_ECN_H
+#define _XT_ECN_H
+#include <linux/types.h>
+#include <linux/netfilter/xt_dscp.h>
+#define XT_ECN_IP_MASK (~XT_DSCP_MASK)
+#define XT_ECN_OP_MATCH_IP 0x01
+#define XT_ECN_OP_MATCH_ECE 0x10
+#define XT_ECN_OP_MATCH_CWR 0x20
+#define XT_ECN_OP_MATCH_MASK 0xce
+struct xt_ecn_info {
+  __u8 operation;
+  __u8 invert;
+  __u8 ip_ect;
+  union {
+    struct {
+      __u8 ect;
+    } tcp;
+  } proto;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_esp.h b/i686-linux-musl/include/linux/netfilter/xt_esp.h
new file mode 100644
index 0000000..22e7632
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_esp.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_ESP_H
+#define _XT_ESP_H
+#include <linux/types.h>
+struct xt_esp {
+  __u32 spis[2];
+  __u8 invflags;
+};
+#define XT_ESP_INV_SPI 0x01
+#define XT_ESP_INV_MASK 0x01
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_hashlimit.h b/i686-linux-musl/include/linux/netfilter/xt_hashlimit.h
new file mode 100644
index 0000000..572c85d
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_hashlimit.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_XT_HASHLIMIT_H
+#define _UAPI_XT_HASHLIMIT_H
+#include <linux/types.h>
+#include <linux/limits.h>
+#include <linux/if.h>
+#define XT_HASHLIMIT_SCALE 10000
+#define XT_HASHLIMIT_SCALE_v2 1000000llu
+#define XT_HASHLIMIT_BYTE_SHIFT 4
+struct xt_hashlimit_htable;
+enum {
+  XT_HASHLIMIT_HASH_DIP = 1 << 0,
+  XT_HASHLIMIT_HASH_DPT = 1 << 1,
+  XT_HASHLIMIT_HASH_SIP = 1 << 2,
+  XT_HASHLIMIT_HASH_SPT = 1 << 3,
+  XT_HASHLIMIT_INVERT = 1 << 4,
+  XT_HASHLIMIT_BYTES = 1 << 5,
+  XT_HASHLIMIT_RATE_MATCH = 1 << 6,
+};
+struct hashlimit_cfg {
+  __u32 mode;
+  __u32 avg;
+  __u32 burst;
+  __u32 size;
+  __u32 max;
+  __u32 gc_interval;
+  __u32 expire;
+};
+struct xt_hashlimit_info {
+  char name[IFNAMSIZ];
+  struct hashlimit_cfg cfg;
+  struct xt_hashlimit_htable * hinfo;
+  union {
+    void * ptr;
+    struct xt_hashlimit_info * master;
+  } u;
+};
+struct hashlimit_cfg1 {
+  __u32 mode;
+  __u32 avg;
+  __u32 burst;
+  __u32 size;
+  __u32 max;
+  __u32 gc_interval;
+  __u32 expire;
+  __u8 srcmask, dstmask;
+};
+struct hashlimit_cfg2 {
+  __u64 avg;
+  __u64 burst;
+  __u32 mode;
+  __u32 size;
+  __u32 max;
+  __u32 gc_interval;
+  __u32 expire;
+  __u8 srcmask, dstmask;
+};
+struct hashlimit_cfg3 {
+  __u64 avg;
+  __u64 burst;
+  __u32 mode;
+  __u32 size;
+  __u32 max;
+  __u32 gc_interval;
+  __u32 expire;
+  __u32 interval;
+  __u8 srcmask, dstmask;
+};
+struct xt_hashlimit_mtinfo1 {
+  char name[IFNAMSIZ];
+  struct hashlimit_cfg1 cfg;
+  struct xt_hashlimit_htable * hinfo __attribute__((aligned(8)));
+};
+struct xt_hashlimit_mtinfo2 {
+  char name[NAME_MAX];
+  struct hashlimit_cfg2 cfg;
+  struct xt_hashlimit_htable * hinfo __attribute__((aligned(8)));
+};
+struct xt_hashlimit_mtinfo3 {
+  char name[NAME_MAX];
+  struct hashlimit_cfg3 cfg;
+  struct xt_hashlimit_htable * hinfo __attribute__((aligned(8)));
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_helper.h b/i686-linux-musl/include/linux/netfilter/xt_helper.h
new file mode 100644
index 0000000..d792274
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_helper.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_HELPER_H
+#define _XT_HELPER_H
+struct xt_helper_info {
+  int invert;
+  char name[30];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_ipcomp.h b/i686-linux-musl/include/linux/netfilter/xt_ipcomp.h
new file mode 100644
index 0000000..4e99d70
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_ipcomp.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_IPCOMP_H
+#define _XT_IPCOMP_H
+#include <linux/types.h>
+struct xt_ipcomp {
+  __u32 spis[2];
+  __u8 invflags;
+  __u8 hdrres;
+};
+#define XT_IPCOMP_INV_SPI 0x01
+#define XT_IPCOMP_INV_MASK 0x01
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_iprange.h b/i686-linux-musl/include/linux/netfilter/xt_iprange.h
new file mode 100644
index 0000000..57ab108
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_iprange.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_NETFILTER_XT_IPRANGE_H
+#define _LINUX_NETFILTER_XT_IPRANGE_H 1
+#include <linux/types.h>
+#include <linux/netfilter.h>
+enum {
+  IPRANGE_SRC = 1 << 0,
+  IPRANGE_DST = 1 << 1,
+  IPRANGE_SRC_INV = 1 << 4,
+  IPRANGE_DST_INV = 1 << 5,
+};
+struct xt_iprange_mtinfo {
+  union nf_inet_addr src_min, src_max;
+  union nf_inet_addr dst_min, dst_max;
+  __u8 flags;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_ipvs.h b/i686-linux-musl/include/linux/netfilter/xt_ipvs.h
new file mode 100644
index 0000000..6f649b1
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_ipvs.h
@@ -0,0 +1,43 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_IPVS_H
+#define _XT_IPVS_H
+#include <linux/types.h>
+#include <linux/netfilter.h>
+enum {
+  XT_IPVS_IPVS_PROPERTY = 1 << 0,
+  XT_IPVS_PROTO = 1 << 1,
+  XT_IPVS_VADDR = 1 << 2,
+  XT_IPVS_VPORT = 1 << 3,
+  XT_IPVS_DIR = 1 << 4,
+  XT_IPVS_METHOD = 1 << 5,
+  XT_IPVS_VPORTCTL = 1 << 6,
+  XT_IPVS_MASK = (1 << 7) - 1,
+  XT_IPVS_ONCE_MASK = XT_IPVS_MASK & ~XT_IPVS_IPVS_PROPERTY
+};
+struct xt_ipvs_mtinfo {
+  union nf_inet_addr vaddr, vmask;
+  __be16 vport;
+  __u8 l4proto;
+  __u8 fwd_method;
+  __be16 vportctl;
+  __u8 invert;
+  __u8 bitmask;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_l2tp.h b/i686-linux-musl/include/linux/netfilter/xt_l2tp.h
new file mode 100644
index 0000000..cad9921
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_l2tp.h
@@ -0,0 +1,39 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_NETFILTER_XT_L2TP_H
+#define _LINUX_NETFILTER_XT_L2TP_H
+#include <linux/types.h>
+enum xt_l2tp_type {
+  XT_L2TP_TYPE_CONTROL,
+  XT_L2TP_TYPE_DATA,
+};
+struct xt_l2tp_info {
+  __u32 tid;
+  __u32 sid;
+  __u8 version;
+  __u8 type;
+  __u8 flags;
+};
+enum {
+  XT_L2TP_TID = (1 << 0),
+  XT_L2TP_SID = (1 << 1),
+  XT_L2TP_VERSION = (1 << 2),
+  XT_L2TP_TYPE = (1 << 3),
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_length.h b/i686-linux-musl/include/linux/netfilter/xt_length.h
new file mode 100644
index 0000000..4a0792a
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_length.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_LENGTH_H
+#define _XT_LENGTH_H
+#include <linux/types.h>
+struct xt_length_info {
+  __u16 min, max;
+  __u8 invert;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_limit.h b/i686-linux-musl/include/linux/netfilter/xt_limit.h
new file mode 100644
index 0000000..785679f
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_limit.h
@@ -0,0 +1,32 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_RATE_H
+#define _XT_RATE_H
+#include <linux/types.h>
+#define XT_LIMIT_SCALE 10000
+struct xt_limit_priv;
+struct xt_rateinfo {
+  __u32 avg;
+  __u32 burst;
+  unsigned long prev;
+  __u32 credit;
+  __u32 credit_cap, cost;
+  struct xt_limit_priv * master;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_mac.h b/i686-linux-musl/include/linux/netfilter/xt_mac.h
new file mode 100644
index 0000000..bc7b7c8
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_mac.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_MAC_H
+#define _XT_MAC_H
+#include <linux/if_ether.h>
+struct xt_mac_info {
+  unsigned char srcaddr[ETH_ALEN];
+  int invert;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_mark.h b/i686-linux-musl/include/linux/netfilter/xt_mark.h
new file mode 100644
index 0000000..0ec01e9
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_mark.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_MARK_H
+#define _XT_MARK_H
+#include <linux/types.h>
+struct xt_mark_tginfo2 {
+  __u32 mark, mask;
+};
+struct xt_mark_mtinfo1 {
+  __u32 mark, mask;
+  __u8 invert;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_multiport.h b/i686-linux-musl/include/linux/netfilter/xt_multiport.h
new file mode 100644
index 0000000..fff7045
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_multiport.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_MULTIPORT_H
+#define _XT_MULTIPORT_H
+#include <linux/types.h>
+enum xt_multiport_flags {
+  XT_MULTIPORT_SOURCE,
+  XT_MULTIPORT_DESTINATION,
+  XT_MULTIPORT_EITHER
+};
+#define XT_MULTI_PORTS 15
+struct xt_multiport {
+  __u8 flags;
+  __u8 count;
+  __u16 ports[XT_MULTI_PORTS];
+};
+struct xt_multiport_v1 {
+  __u8 flags;
+  __u8 count;
+  __u16 ports[XT_MULTI_PORTS];
+  __u8 pflags[XT_MULTI_PORTS];
+  __u8 invert;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_nfacct.h b/i686-linux-musl/include/linux/netfilter/xt_nfacct.h
new file mode 100644
index 0000000..a2b042e
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_nfacct.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_NFACCT_MATCH_H
+#define _XT_NFACCT_MATCH_H
+#include <linux/netfilter/nfnetlink_acct.h>
+struct nf_acct;
+struct xt_nfacct_match_info {
+  char name[NFACCT_NAME_MAX];
+  struct nf_acct * nfacct;
+};
+struct xt_nfacct_match_info_v1 {
+  char name[NFACCT_NAME_MAX];
+  struct nf_acct * nfacct __attribute__((aligned(8)));
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_osf.h b/i686-linux-musl/include/linux/netfilter/xt_osf.h
new file mode 100644
index 0000000..892ad40
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_osf.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_OSF_H
+#define _XT_OSF_H
+#include <linux/types.h>
+#include <linux/netfilter/nfnetlink_osf.h>
+#define XT_OSF_GENRE NF_OSF_GENRE
+#define XT_OSF_INVERT NF_OSF_INVERT
+#define XT_OSF_TTL NF_OSF_TTL
+#define XT_OSF_LOG NF_OSF_LOG
+#define XT_OSF_LOGLEVEL_ALL NF_OSF_LOGLEVEL_ALL
+#define XT_OSF_LOGLEVEL_FIRST NF_OSF_LOGLEVEL_FIRST
+#define XT_OSF_LOGLEVEL_ALL_KNOWN NF_OSF_LOGLEVEL_ALL_KNOWN
+#define XT_OSF_TTL_TRUE NF_OSF_TTL_TRUE
+#define XT_OSF_TTL_NOCHECK NF_OSF_TTL_NOCHECK
+#define XT_OSF_TTL_LESS NF_OSF_TTL_LESS
+#define xt_osf_wc nf_osf_wc
+#define xt_osf_opt nf_osf_opt
+#define xt_osf_info nf_osf_info
+#define xt_osf_user_finger nf_osf_user_finger
+#define xt_osf_finger nf_osf_finger
+#define xt_osf_nlmsg nf_osf_nlmsg
+#define xt_osf_window_size_options nf_osf_window_size_options
+#define xt_osf_attr_type nf_osf_attr_type
+#define xt_osf_msg_types nf_osf_msg_types
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_owner.h b/i686-linux-musl/include/linux/netfilter/xt_owner.h
new file mode 100644
index 0000000..e077aad
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_owner.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_OWNER_MATCH_H
+#define _XT_OWNER_MATCH_H
+#include <linux/types.h>
+enum {
+  XT_OWNER_UID = 1 << 0,
+  XT_OWNER_GID = 1 << 1,
+  XT_OWNER_SOCKET = 1 << 2,
+  XT_OWNER_SUPPL_GROUPS = 1 << 3,
+};
+#define XT_OWNER_MASK (XT_OWNER_UID | XT_OWNER_GID | XT_OWNER_SOCKET | XT_OWNER_SUPPL_GROUPS)
+struct xt_owner_match_info {
+  __u32 uid_min, uid_max;
+  __u32 gid_min, gid_max;
+  __u8 match, invert;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_physdev.h b/i686-linux-musl/include/linux/netfilter/xt_physdev.h
new file mode 100644
index 0000000..be3734c
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_physdev.h
@@ -0,0 +1,37 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_XT_PHYSDEV_H
+#define _UAPI_XT_PHYSDEV_H
+#include <linux/types.h>
+#include <linux/if.h>
+#define XT_PHYSDEV_OP_IN 0x01
+#define XT_PHYSDEV_OP_OUT 0x02
+#define XT_PHYSDEV_OP_BRIDGED 0x04
+#define XT_PHYSDEV_OP_ISIN 0x08
+#define XT_PHYSDEV_OP_ISOUT 0x10
+#define XT_PHYSDEV_OP_MASK (0x20 - 1)
+struct xt_physdev_info {
+  char physindev[IFNAMSIZ];
+  char in_mask[IFNAMSIZ];
+  char physoutdev[IFNAMSIZ];
+  char out_mask[IFNAMSIZ];
+  __u8 invert;
+  __u8 bitmask;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_pkttype.h b/i686-linux-musl/include/linux/netfilter/xt_pkttype.h
new file mode 100644
index 0000000..f9b2f3f
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_pkttype.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_PKTTYPE_H
+#define _XT_PKTTYPE_H
+struct xt_pkttype_info {
+  int pkttype;
+  int invert;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_policy.h b/i686-linux-musl/include/linux/netfilter/xt_policy.h
new file mode 100644
index 0000000..495aeb0
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_policy.h
@@ -0,0 +1,64 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_POLICY_H
+#define _XT_POLICY_H
+#include <linux/netfilter.h>
+#include <linux/types.h>
+#include <linux/in.h>
+#include <linux/in6.h>
+#define XT_POLICY_MAX_ELEM 4
+enum xt_policy_flags {
+  XT_POLICY_MATCH_IN = 0x1,
+  XT_POLICY_MATCH_OUT = 0x2,
+  XT_POLICY_MATCH_NONE = 0x4,
+  XT_POLICY_MATCH_STRICT = 0x8,
+};
+enum xt_policy_modes {
+  XT_POLICY_MODE_TRANSPORT,
+  XT_POLICY_MODE_TUNNEL
+};
+struct xt_policy_spec {
+  __u8 saddr : 1, daddr : 1, proto : 1, mode : 1, spi : 1, reqid : 1;
+};
+union xt_policy_addr {
+  struct in_addr a4;
+  struct in6_addr a6;
+};
+struct xt_policy_elem {
+  union {
+    struct {
+      union xt_policy_addr saddr;
+      union xt_policy_addr smask;
+      union xt_policy_addr daddr;
+      union xt_policy_addr dmask;
+    };
+  };
+  __be32 spi;
+  __u32 reqid;
+  __u8 proto;
+  __u8 mode;
+  struct xt_policy_spec match;
+  struct xt_policy_spec invert;
+};
+struct xt_policy_info {
+  struct xt_policy_elem pol[XT_POLICY_MAX_ELEM];
+  __u16 flags;
+  __u16 len;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_quota.h b/i686-linux-musl/include/linux/netfilter/xt_quota.h
new file mode 100644
index 0000000..96743f4
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_quota.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_QUOTA_H
+#define _XT_QUOTA_H
+#include <linux/types.h>
+enum xt_quota_flags {
+  XT_QUOTA_INVERT = 0x1,
+};
+#define XT_QUOTA_MASK 0x1
+struct xt_quota_priv;
+struct xt_quota_info {
+  __u32 flags;
+  __u32 pad;
+  __aligned_u64 quota;
+  struct xt_quota_priv * master;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_rateest.h b/i686-linux-musl/include/linux/netfilter/xt_rateest.h
new file mode 100644
index 0000000..5d509b3
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_rateest.h
@@ -0,0 +1,49 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_RATEEST_MATCH_H
+#define _XT_RATEEST_MATCH_H
+#include <linux/types.h>
+#include <linux/if.h>
+enum xt_rateest_match_flags {
+  XT_RATEEST_MATCH_INVERT = 1 << 0,
+  XT_RATEEST_MATCH_ABS = 1 << 1,
+  XT_RATEEST_MATCH_REL = 1 << 2,
+  XT_RATEEST_MATCH_DELTA = 1 << 3,
+  XT_RATEEST_MATCH_BPS = 1 << 4,
+  XT_RATEEST_MATCH_PPS = 1 << 5,
+};
+enum xt_rateest_match_mode {
+  XT_RATEEST_MATCH_NONE,
+  XT_RATEEST_MATCH_EQ,
+  XT_RATEEST_MATCH_LT,
+  XT_RATEEST_MATCH_GT,
+};
+struct xt_rateest_match_info {
+  char name1[IFNAMSIZ];
+  char name2[IFNAMSIZ];
+  __u16 flags;
+  __u16 mode;
+  __u32 bps1;
+  __u32 pps1;
+  __u32 bps2;
+  __u32 pps2;
+  struct xt_rateest * est1 __attribute__((aligned(8)));
+  struct xt_rateest * est2 __attribute__((aligned(8)));
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_realm.h b/i686-linux-musl/include/linux/netfilter/xt_realm.h
new file mode 100644
index 0000000..6c78694
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_realm.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_REALM_H
+#define _XT_REALM_H
+#include <linux/types.h>
+struct xt_realm_info {
+  __u32 id;
+  __u32 mask;
+  __u8 invert;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_recent.h b/i686-linux-musl/include/linux/netfilter/xt_recent.h
new file mode 100644
index 0000000..d7b3609
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_recent.h
@@ -0,0 +1,53 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_NETFILTER_XT_RECENT_H
+#define _LINUX_NETFILTER_XT_RECENT_H 1
+#include <linux/types.h>
+#include <linux/netfilter.h>
+enum {
+  XT_RECENT_CHECK = 1 << 0,
+  XT_RECENT_SET = 1 << 1,
+  XT_RECENT_UPDATE = 1 << 2,
+  XT_RECENT_REMOVE = 1 << 3,
+  XT_RECENT_TTL = 1 << 4,
+  XT_RECENT_REAP = 1 << 5,
+  XT_RECENT_SOURCE = 0,
+  XT_RECENT_DEST = 1,
+  XT_RECENT_NAME_LEN = 200,
+};
+#define XT_RECENT_MODIFIERS (XT_RECENT_TTL | XT_RECENT_REAP)
+#define XT_RECENT_VALID_FLAGS (XT_RECENT_CHECK | XT_RECENT_SET | XT_RECENT_UPDATE | XT_RECENT_REMOVE | XT_RECENT_TTL | XT_RECENT_REAP)
+struct xt_recent_mtinfo {
+  __u32 seconds;
+  __u32 hit_count;
+  __u8 check_set;
+  __u8 invert;
+  char name[XT_RECENT_NAME_LEN];
+  __u8 side;
+};
+struct xt_recent_mtinfo_v1 {
+  __u32 seconds;
+  __u32 hit_count;
+  __u8 check_set;
+  __u8 invert;
+  char name[XT_RECENT_NAME_LEN];
+  __u8 side;
+  union nf_inet_addr mask;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_rpfilter.h b/i686-linux-musl/include/linux/netfilter/xt_rpfilter.h
new file mode 100644
index 0000000..958d92a
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_rpfilter.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_RPATH_H
+#define _XT_RPATH_H
+#include <linux/types.h>
+enum {
+  XT_RPFILTER_LOOSE = 1 << 0,
+  XT_RPFILTER_VALID_MARK = 1 << 1,
+  XT_RPFILTER_ACCEPT_LOCAL = 1 << 2,
+  XT_RPFILTER_INVERT = 1 << 3,
+};
+struct xt_rpfilter_info {
+  __u8 flags;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_sctp.h b/i686-linux-musl/include/linux/netfilter/xt_sctp.h
new file mode 100644
index 0000000..98dd0d1
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_sctp.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_SCTP_H_
+#define _XT_SCTP_H_
+#include <linux/types.h>
+#define XT_SCTP_SRC_PORTS 0x01
+#define XT_SCTP_DEST_PORTS 0x02
+#define XT_SCTP_CHUNK_TYPES 0x04
+#define XT_SCTP_VALID_FLAGS 0x07
+struct xt_sctp_flag_info {
+  __u8 chunktype;
+  __u8 flag;
+  __u8 flag_mask;
+};
+#define XT_NUM_SCTP_FLAGS 4
+struct xt_sctp_info {
+  __u16 dpts[2];
+  __u16 spts[2];
+  __u32 chunkmap[256 / sizeof(__u32)];
+#define SCTP_CHUNK_MATCH_ANY 0x01
+#define SCTP_CHUNK_MATCH_ALL 0x02
+#define SCTP_CHUNK_MATCH_ONLY 0x04
+  __u32 chunk_match_type;
+  struct xt_sctp_flag_info flag_info[XT_NUM_SCTP_FLAGS];
+  int flag_count;
+  __u32 flags;
+  __u32 invflags;
+};
+#define bytes(type) (sizeof(type) * 8)
+#define SCTP_CHUNKMAP_SET(chunkmap,type) do { (chunkmap)[type / bytes(__u32)] |= 1u << (type % bytes(__u32)); } while(0)
+#define SCTP_CHUNKMAP_CLEAR(chunkmap,type) do { (chunkmap)[type / bytes(__u32)] &= ~(1u << (type % bytes(__u32))); } while(0)
+#define SCTP_CHUNKMAP_IS_SET(chunkmap,type) \
+({ ((chunkmap)[type / bytes(__u32)] & (1u << (type % bytes(__u32)))) ? 1 : 0; \
+})
+#define SCTP_CHUNKMAP_RESET(chunkmap) memset((chunkmap), 0, sizeof(chunkmap))
+#define SCTP_CHUNKMAP_SET_ALL(chunkmap) memset((chunkmap), ~0U, sizeof(chunkmap))
+#define SCTP_CHUNKMAP_COPY(destmap,srcmap) memcpy((destmap), (srcmap), sizeof(srcmap))
+#define SCTP_CHUNKMAP_IS_CLEAR(chunkmap) __sctp_chunkmap_is_clear((chunkmap), ARRAY_SIZE(chunkmap))
+#define SCTP_CHUNKMAP_IS_ALL_SET(chunkmap) __sctp_chunkmap_is_all_set((chunkmap), ARRAY_SIZE(chunkmap))
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_set.h b/i686-linux-musl/include/linux/netfilter/xt_set.h
new file mode 100644
index 0000000..5374159
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_set.h
@@ -0,0 +1,81 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_SET_H
+#define _XT_SET_H
+#include <linux/types.h>
+#include <linux/netfilter/ipset/ip_set.h>
+#define IPSET_SRC 0x01
+#define IPSET_DST 0x02
+#define IPSET_MATCH_INV 0x04
+struct xt_set_info_v0 {
+  ip_set_id_t index;
+  union {
+    __u32 flags[IPSET_DIM_MAX + 1];
+    struct {
+      __u32 __flags[IPSET_DIM_MAX];
+      __u8 dim;
+      __u8 flags;
+    } compat;
+  } u;
+};
+struct xt_set_info_match_v0 {
+  struct xt_set_info_v0 match_set;
+};
+struct xt_set_info_target_v0 {
+  struct xt_set_info_v0 add_set;
+  struct xt_set_info_v0 del_set;
+};
+struct xt_set_info {
+  ip_set_id_t index;
+  __u8 dim;
+  __u8 flags;
+};
+struct xt_set_info_match_v1 {
+  struct xt_set_info match_set;
+};
+struct xt_set_info_target_v1 {
+  struct xt_set_info add_set;
+  struct xt_set_info del_set;
+};
+struct xt_set_info_target_v2 {
+  struct xt_set_info add_set;
+  struct xt_set_info del_set;
+  __u32 flags;
+  __u32 timeout;
+};
+struct xt_set_info_match_v3 {
+  struct xt_set_info match_set;
+  struct ip_set_counter_match0 packets;
+  struct ip_set_counter_match0 bytes;
+  __u32 flags;
+};
+struct xt_set_info_target_v3 {
+  struct xt_set_info add_set;
+  struct xt_set_info del_set;
+  struct xt_set_info map_set;
+  __u32 flags;
+  __u32 timeout;
+};
+struct xt_set_info_match_v4 {
+  struct xt_set_info match_set;
+  struct ip_set_counter_match packets;
+  struct ip_set_counter_match bytes;
+  __u32 flags;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_socket.h b/i686-linux-musl/include/linux/netfilter/xt_socket.h
new file mode 100644
index 0000000..055b579
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_socket.h
@@ -0,0 +1,39 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_SOCKET_H
+#define _XT_SOCKET_H
+#include <linux/types.h>
+enum {
+  XT_SOCKET_TRANSPARENT = 1 << 0,
+  XT_SOCKET_NOWILDCARD = 1 << 1,
+  XT_SOCKET_RESTORESKMARK = 1 << 2,
+};
+struct xt_socket_mtinfo1 {
+  __u8 flags;
+};
+#define XT_SOCKET_FLAGS_V1 XT_SOCKET_TRANSPARENT
+struct xt_socket_mtinfo2 {
+  __u8 flags;
+};
+#define XT_SOCKET_FLAGS_V2 (XT_SOCKET_TRANSPARENT | XT_SOCKET_NOWILDCARD)
+struct xt_socket_mtinfo3 {
+  __u8 flags;
+};
+#define XT_SOCKET_FLAGS_V3 (XT_SOCKET_TRANSPARENT | XT_SOCKET_NOWILDCARD | XT_SOCKET_RESTORESKMARK)
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_state.h b/i686-linux-musl/include/linux/netfilter/xt_state.h
new file mode 100644
index 0000000..d692e60
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_state.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_STATE_H
+#define _XT_STATE_H
+#define XT_STATE_BIT(ctinfo) (1 << ((ctinfo) % IP_CT_IS_REPLY + 1))
+#define XT_STATE_INVALID (1 << 0)
+#define XT_STATE_UNTRACKED (1 << (IP_CT_NUMBER + 1))
+struct xt_state_info {
+  unsigned int statemask;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_statistic.h b/i686-linux-musl/include/linux/netfilter/xt_statistic.h
new file mode 100644
index 0000000..3aae832
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_statistic.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_STATISTIC_H
+#define _XT_STATISTIC_H
+#include <linux/types.h>
+enum xt_statistic_mode {
+  XT_STATISTIC_MODE_RANDOM,
+  XT_STATISTIC_MODE_NTH,
+  __XT_STATISTIC_MODE_MAX
+};
+#define XT_STATISTIC_MODE_MAX (__XT_STATISTIC_MODE_MAX - 1)
+enum xt_statistic_flags {
+  XT_STATISTIC_INVERT = 0x1,
+};
+#define XT_STATISTIC_MASK 0x1
+struct xt_statistic_priv;
+struct xt_statistic_info {
+  __u16 mode;
+  __u16 flags;
+  union {
+    struct {
+      __u32 probability;
+    } random;
+    struct {
+      __u32 every;
+      __u32 packet;
+      __u32 count;
+    } nth;
+  } u;
+  struct xt_statistic_priv * master __attribute__((aligned(8)));
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_string.h b/i686-linux-musl/include/linux/netfilter/xt_string.h
new file mode 100644
index 0000000..9296dfb
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_string.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_STRING_H
+#define _XT_STRING_H
+#include <linux/types.h>
+#define XT_STRING_MAX_PATTERN_SIZE 128
+#define XT_STRING_MAX_ALGO_NAME_SIZE 16
+enum {
+  XT_STRING_FLAG_INVERT = 0x01,
+  XT_STRING_FLAG_IGNORECASE = 0x02
+};
+struct xt_string_info {
+  __u16 from_offset;
+  __u16 to_offset;
+  char algo[XT_STRING_MAX_ALGO_NAME_SIZE];
+  char pattern[XT_STRING_MAX_PATTERN_SIZE];
+  __u8 patlen;
+  union {
+    struct {
+      __u8 invert;
+    } v0;
+    struct {
+      __u8 flags;
+    } v1;
+  } u;
+  struct ts_config __attribute__((aligned(8))) * config;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_tcpmss.h b/i686-linux-musl/include/linux/netfilter/xt_tcpmss.h
new file mode 100644
index 0000000..87a9fdd
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_tcpmss.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_TCPMSS_MATCH_H
+#define _XT_TCPMSS_MATCH_H
+#include <linux/types.h>
+struct xt_tcpmss_match_info {
+  __u16 mss_min, mss_max;
+  __u8 invert;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_tcpudp.h b/i686-linux-musl/include/linux/netfilter/xt_tcpudp.h
new file mode 100644
index 0000000..4bca77f
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_tcpudp.h
@@ -0,0 +1,43 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_TCPUDP_H
+#define _XT_TCPUDP_H
+#include <linux/types.h>
+struct xt_tcp {
+  __u16 spts[2];
+  __u16 dpts[2];
+  __u8 option;
+  __u8 flg_mask;
+  __u8 flg_cmp;
+  __u8 invflags;
+};
+#define XT_TCP_INV_SRCPT 0x01
+#define XT_TCP_INV_DSTPT 0x02
+#define XT_TCP_INV_FLAGS 0x04
+#define XT_TCP_INV_OPTION 0x08
+#define XT_TCP_INV_MASK 0x0F
+struct xt_udp {
+  __u16 spts[2];
+  __u16 dpts[2];
+  __u8 invflags;
+};
+#define XT_UDP_INV_SRCPT 0x01
+#define XT_UDP_INV_DSTPT 0x02
+#define XT_UDP_INV_MASK 0x03
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_time.h b/i686-linux-musl/include/linux/netfilter/xt_time.h
new file mode 100644
index 0000000..ded53b8
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_time.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_TIME_H
+#define _XT_TIME_H 1
+#include <linux/types.h>
+struct xt_time_info {
+  __u32 date_start;
+  __u32 date_stop;
+  __u32 daytime_start;
+  __u32 daytime_stop;
+  __u32 monthdays_match;
+  __u8 weekdays_match;
+  __u8 flags;
+};
+enum {
+  XT_TIME_LOCAL_TZ = 1 << 0,
+  XT_TIME_CONTIGUOUS = 1 << 1,
+  XT_TIME_ALL_MONTHDAYS = 0xFFFFFFFE,
+  XT_TIME_ALL_WEEKDAYS = 0xFE,
+  XT_TIME_MIN_DAYTIME = 0,
+  XT_TIME_MAX_DAYTIME = 24 * 60 * 60 - 1,
+};
+#define XT_TIME_ALL_FLAGS (XT_TIME_LOCAL_TZ | XT_TIME_CONTIGUOUS)
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter/xt_u32.h b/i686-linux-musl/include/linux/netfilter/xt_u32.h
new file mode 100644
index 0000000..d7de9c9
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter/xt_u32.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _XT_U32_H
+#define _XT_U32_H 1
+#include <linux/types.h>
+enum xt_u32_ops {
+  XT_U32_AND,
+  XT_U32_LEFTSH,
+  XT_U32_RIGHTSH,
+  XT_U32_AT,
+};
+struct xt_u32_location_element {
+  __u32 number;
+  __u8 nextop;
+};
+struct xt_u32_value_element {
+  __u32 min;
+  __u32 max;
+};
+#define XT_U32_MAXSIZE 10
+struct xt_u32_test {
+  struct xt_u32_location_element location[XT_U32_MAXSIZE + 1];
+  struct xt_u32_value_element value[XT_U32_MAXSIZE + 1];
+  __u8 nnums;
+  __u8 nvalues;
+};
+struct xt_u32 {
+  struct xt_u32_test tests[XT_U32_MAXSIZE + 1];
+  __u8 ntests;
+  __u8 invert;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_arp.h b/i686-linux-musl/include/linux/netfilter_arp.h
new file mode 100644
index 0000000..a5e427c
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_arp.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_ARP_NETFILTER_H
+#define __LINUX_ARP_NETFILTER_H
+#include <linux/netfilter.h>
+#define NF_ARP 0
+#define NF_ARP_IN 0
+#define NF_ARP_OUT 1
+#define NF_ARP_FORWARD 2
+#define NF_ARP_NUMHOOKS 3
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_arp/arp_tables.h b/i686-linux-musl/include/linux/netfilter_arp/arp_tables.h
new file mode 100644
index 0000000..340625f
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_arp/arp_tables.h
@@ -0,0 +1,109 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ARPTABLES_H
+#define _UAPI_ARPTABLES_H
+#include <linux/types.h>
+#include <linux/compiler.h>
+#include <linux/if.h>
+#include <linux/netfilter_arp.h>
+#include <linux/netfilter/x_tables.h>
+#define ARPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
+#define ARPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
+#define arpt_entry_target xt_entry_target
+#define arpt_standard_target xt_standard_target
+#define arpt_error_target xt_error_target
+#define ARPT_CONTINUE XT_CONTINUE
+#define ARPT_RETURN XT_RETURN
+#define arpt_counters_info xt_counters_info
+#define arpt_counters xt_counters
+#define ARPT_STANDARD_TARGET XT_STANDARD_TARGET
+#define ARPT_ERROR_TARGET XT_ERROR_TARGET
+#define ARPT_ENTRY_ITERATE(entries,size,fn,args...) XT_ENTRY_ITERATE(struct arpt_entry, entries, size, fn, ##args)
+#define ARPT_DEV_ADDR_LEN_MAX 16
+struct arpt_devaddr_info {
+  char addr[ARPT_DEV_ADDR_LEN_MAX];
+  char mask[ARPT_DEV_ADDR_LEN_MAX];
+};
+struct arpt_arp {
+  struct in_addr src, tgt;
+  struct in_addr smsk, tmsk;
+  __u8 arhln, arhln_mask;
+  struct arpt_devaddr_info src_devaddr;
+  struct arpt_devaddr_info tgt_devaddr;
+  __be16 arpop, arpop_mask;
+  __be16 arhrd, arhrd_mask;
+  __be16 arpro, arpro_mask;
+  char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
+  unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
+  __u8 flags;
+  __u16 invflags;
+};
+#define ARPT_F_MASK 0x00
+#define ARPT_INV_VIA_IN 0x0001
+#define ARPT_INV_VIA_OUT 0x0002
+#define ARPT_INV_SRCIP 0x0004
+#define ARPT_INV_TGTIP 0x0008
+#define ARPT_INV_SRCDEVADDR 0x0010
+#define ARPT_INV_TGTDEVADDR 0x0020
+#define ARPT_INV_ARPOP 0x0040
+#define ARPT_INV_ARPHRD 0x0080
+#define ARPT_INV_ARPPRO 0x0100
+#define ARPT_INV_ARPHLN 0x0200
+#define ARPT_INV_MASK 0x03FF
+struct arpt_entry {
+  struct arpt_arp arp;
+  __u16 target_offset;
+  __u16 next_offset;
+  unsigned int comefrom;
+  struct xt_counters counters;
+  unsigned char elems[0];
+};
+#define ARPT_BASE_CTL 96
+#define ARPT_SO_SET_REPLACE (ARPT_BASE_CTL)
+#define ARPT_SO_SET_ADD_COUNTERS (ARPT_BASE_CTL + 1)
+#define ARPT_SO_SET_MAX ARPT_SO_SET_ADD_COUNTERS
+#define ARPT_SO_GET_INFO (ARPT_BASE_CTL)
+#define ARPT_SO_GET_ENTRIES (ARPT_BASE_CTL + 1)
+#define ARPT_SO_GET_REVISION_TARGET (ARPT_BASE_CTL + 3)
+#define ARPT_SO_GET_MAX (ARPT_SO_GET_REVISION_TARGET)
+struct arpt_getinfo {
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int valid_hooks;
+  unsigned int hook_entry[NF_ARP_NUMHOOKS];
+  unsigned int underflow[NF_ARP_NUMHOOKS];
+  unsigned int num_entries;
+  unsigned int size;
+};
+struct arpt_replace {
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int valid_hooks;
+  unsigned int num_entries;
+  unsigned int size;
+  unsigned int hook_entry[NF_ARP_NUMHOOKS];
+  unsigned int underflow[NF_ARP_NUMHOOKS];
+  unsigned int num_counters;
+  struct xt_counters __user * counters;
+  struct arpt_entry entries[0];
+};
+struct arpt_get_entries {
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int size;
+  struct arpt_entry entrytable[0];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_arp/arpt_mangle.h b/i686-linux-musl/include/linux/netfilter_arp/arpt_mangle.h
new file mode 100644
index 0000000..ff07a0a
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_arp/arpt_mangle.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ARPT_MANGLE_H
+#define _ARPT_MANGLE_H
+#include <linux/netfilter_arp/arp_tables.h>
+#define ARPT_MANGLE_ADDR_LEN_MAX sizeof(struct in_addr)
+struct arpt_mangle {
+  char src_devaddr[ARPT_DEV_ADDR_LEN_MAX];
+  char tgt_devaddr[ARPT_DEV_ADDR_LEN_MAX];
+  union {
+    struct in_addr src_ip;
+  } u_s;
+  union {
+    struct in_addr tgt_ip;
+  } u_t;
+  __u8 flags;
+  int target;
+};
+#define ARPT_MANGLE_SDEV 0x01
+#define ARPT_MANGLE_TDEV 0x02
+#define ARPT_MANGLE_SIP 0x04
+#define ARPT_MANGLE_TIP 0x08
+#define ARPT_MANGLE_MASK 0x0f
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge.h b/i686-linux-musl/include/linux/netfilter_bridge.h
new file mode 100644
index 0000000..e1434f4
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_BRIDGE_NETFILTER_H
+#define _UAPI__LINUX_BRIDGE_NETFILTER_H
+#include <linux/in.h>
+#include <linux/netfilter.h>
+#include <linux/if_ether.h>
+#include <linux/if_vlan.h>
+#include <linux/if_pppox.h>
+#include <limits.h>
+#define NF_BR_PRE_ROUTING 0
+#define NF_BR_LOCAL_IN 1
+#define NF_BR_FORWARD 2
+#define NF_BR_LOCAL_OUT 3
+#define NF_BR_POST_ROUTING 4
+#define NF_BR_BROUTING 5
+#define NF_BR_NUMHOOKS 6
+enum nf_br_hook_priorities {
+  NF_BR_PRI_FIRST = INT_MIN,
+  NF_BR_PRI_NAT_DST_BRIDGED = - 300,
+  NF_BR_PRI_FILTER_BRIDGED = - 200,
+  NF_BR_PRI_BRNF = 0,
+  NF_BR_PRI_NAT_DST_OTHER = 100,
+  NF_BR_PRI_FILTER_OTHER = 200,
+  NF_BR_PRI_NAT_SRC = 300,
+  NF_BR_PRI_LAST = INT_MAX,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebt_802_3.h b/i686-linux-musl/include/linux/netfilter_bridge/ebt_802_3.h
new file mode 100644
index 0000000..5f11ba4
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebt_802_3.h
@@ -0,0 +1,58 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_BRIDGE_EBT_802_3_H
+#define _UAPI__LINUX_BRIDGE_EBT_802_3_H
+#include <linux/types.h>
+#include <linux/if_ether.h>
+#define EBT_802_3_SAP 0x01
+#define EBT_802_3_TYPE 0x02
+#define EBT_802_3_MATCH "802_3"
+#define CHECK_TYPE 0xaa
+#define IS_UI 0x03
+#define EBT_802_3_MASK (EBT_802_3_SAP | EBT_802_3_TYPE | EBT_802_3)
+struct hdr_ui {
+  __u8 dsap;
+  __u8 ssap;
+  __u8 ctrl;
+  __u8 orig[3];
+  __be16 type;
+};
+struct hdr_ni {
+  __u8 dsap;
+  __u8 ssap;
+  __be16 ctrl;
+  __u8 orig[3];
+  __be16 type;
+};
+struct ebt_802_3_hdr {
+  __u8 daddr[ETH_ALEN];
+  __u8 saddr[ETH_ALEN];
+  __be16 len;
+  union {
+    struct hdr_ui ui;
+    struct hdr_ni ni;
+  } llc;
+};
+struct ebt_802_3_info {
+  __u8 sap;
+  __be16 type;
+  __u8 bitmask;
+  __u8 invflags;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebt_among.h b/i686-linux-musl/include/linux/netfilter_bridge/ebt_among.h
new file mode 100644
index 0000000..74cd550
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebt_among.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_BRIDGE_EBT_AMONG_H
+#define __LINUX_BRIDGE_EBT_AMONG_H
+#include <linux/types.h>
+#define EBT_AMONG_DST 0x01
+#define EBT_AMONG_SRC 0x02
+struct ebt_mac_wormhash_tuple {
+  __u32 cmp[2];
+  __be32 ip;
+};
+struct ebt_mac_wormhash {
+  int table[257];
+  int poolsize;
+  struct ebt_mac_wormhash_tuple pool[0];
+};
+#define ebt_mac_wormhash_size(x) ((x) ? sizeof(struct ebt_mac_wormhash) + (x)->poolsize * sizeof(struct ebt_mac_wormhash_tuple) : 0)
+struct ebt_among_info {
+  int wh_dst_ofs;
+  int wh_src_ofs;
+  int bitmask;
+};
+#define EBT_AMONG_DST_NEG 0x1
+#define EBT_AMONG_SRC_NEG 0x2
+#define ebt_among_wh_dst(x) ((x)->wh_dst_ofs ? (struct ebt_mac_wormhash *) ((char *) (x) + (x)->wh_dst_ofs) : NULL)
+#define ebt_among_wh_src(x) ((x)->wh_src_ofs ? (struct ebt_mac_wormhash *) ((char *) (x) + (x)->wh_src_ofs) : NULL)
+#define EBT_AMONG_MATCH "among"
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebt_arp.h b/i686-linux-musl/include/linux/netfilter_bridge/ebt_arp.h
new file mode 100644
index 0000000..17fb19f
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebt_arp.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_BRIDGE_EBT_ARP_H
+#define __LINUX_BRIDGE_EBT_ARP_H
+#include <linux/types.h>
+#include <linux/if_ether.h>
+#define EBT_ARP_OPCODE 0x01
+#define EBT_ARP_HTYPE 0x02
+#define EBT_ARP_PTYPE 0x04
+#define EBT_ARP_SRC_IP 0x08
+#define EBT_ARP_DST_IP 0x10
+#define EBT_ARP_SRC_MAC 0x20
+#define EBT_ARP_DST_MAC 0x40
+#define EBT_ARP_GRAT 0x80
+#define EBT_ARP_MASK (EBT_ARP_OPCODE | EBT_ARP_HTYPE | EBT_ARP_PTYPE | EBT_ARP_SRC_IP | EBT_ARP_DST_IP | EBT_ARP_SRC_MAC | EBT_ARP_DST_MAC | EBT_ARP_GRAT)
+#define EBT_ARP_MATCH "arp"
+struct ebt_arp_info {
+  __be16 htype;
+  __be16 ptype;
+  __be16 opcode;
+  __be32 saddr;
+  __be32 smsk;
+  __be32 daddr;
+  __be32 dmsk;
+  unsigned char smaddr[ETH_ALEN];
+  unsigned char smmsk[ETH_ALEN];
+  unsigned char dmaddr[ETH_ALEN];
+  unsigned char dmmsk[ETH_ALEN];
+  __u8 bitmask;
+  __u8 invflags;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebt_arpreply.h b/i686-linux-musl/include/linux/netfilter_bridge/ebt_arpreply.h
new file mode 100644
index 0000000..c880f01
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebt_arpreply.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_BRIDGE_EBT_ARPREPLY_H
+#define __LINUX_BRIDGE_EBT_ARPREPLY_H
+#include <linux/if_ether.h>
+struct ebt_arpreply_info {
+  unsigned char mac[ETH_ALEN];
+  int target;
+};
+#define EBT_ARPREPLY_TARGET "arpreply"
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebt_ip.h b/i686-linux-musl/include/linux/netfilter_bridge/ebt_ip.h
new file mode 100644
index 0000000..6ee8afb
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebt_ip.h
@@ -0,0 +1,51 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_BRIDGE_EBT_IP_H
+#define __LINUX_BRIDGE_EBT_IP_H
+#include <linux/types.h>
+#define EBT_IP_SOURCE 0x01
+#define EBT_IP_DEST 0x02
+#define EBT_IP_TOS 0x04
+#define EBT_IP_PROTO 0x08
+#define EBT_IP_SPORT 0x10
+#define EBT_IP_DPORT 0x20
+#define EBT_IP_ICMP 0x40
+#define EBT_IP_IGMP 0x80
+#define EBT_IP_MASK (EBT_IP_SOURCE | EBT_IP_DEST | EBT_IP_TOS | EBT_IP_PROTO | EBT_IP_SPORT | EBT_IP_DPORT | EBT_IP_ICMP | EBT_IP_IGMP)
+#define EBT_IP_MATCH "ip"
+struct ebt_ip_info {
+  __be32 saddr;
+  __be32 daddr;
+  __be32 smsk;
+  __be32 dmsk;
+  __u8 tos;
+  __u8 protocol;
+  __u8 bitmask;
+  __u8 invflags;
+  union {
+    __u16 sport[2];
+    __u8 icmp_type[2];
+    __u8 igmp_type[2];
+  };
+  union {
+    __u16 dport[2];
+    __u8 icmp_code[2];
+  };
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebt_ip6.h b/i686-linux-musl/include/linux/netfilter_bridge/ebt_ip6.h
new file mode 100644
index 0000000..d49e074
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebt_ip6.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_BRIDGE_EBT_IP6_H
+#define __LINUX_BRIDGE_EBT_IP6_H
+#include <linux/types.h>
+#include <linux/in6.h>
+#define EBT_IP6_SOURCE 0x01
+#define EBT_IP6_DEST 0x02
+#define EBT_IP6_TCLASS 0x04
+#define EBT_IP6_PROTO 0x08
+#define EBT_IP6_SPORT 0x10
+#define EBT_IP6_DPORT 0x20
+#define EBT_IP6_ICMP6 0x40
+#define EBT_IP6_MASK (EBT_IP6_SOURCE | EBT_IP6_DEST | EBT_IP6_TCLASS | EBT_IP6_PROTO | EBT_IP6_SPORT | EBT_IP6_DPORT | EBT_IP6_ICMP6)
+#define EBT_IP6_MATCH "ip6"
+struct ebt_ip6_info {
+  struct in6_addr saddr;
+  struct in6_addr daddr;
+  struct in6_addr smsk;
+  struct in6_addr dmsk;
+  __u8 tclass;
+  __u8 protocol;
+  __u8 bitmask;
+  __u8 invflags;
+  union {
+    __u16 sport[2];
+    __u8 icmpv6_type[2];
+  };
+  union {
+    __u16 dport[2];
+    __u8 icmpv6_code[2];
+  };
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebt_limit.h b/i686-linux-musl/include/linux/netfilter_bridge/ebt_limit.h
new file mode 100644
index 0000000..80e1a09
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebt_limit.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_BRIDGE_EBT_LIMIT_H
+#define __LINUX_BRIDGE_EBT_LIMIT_H
+#include <linux/types.h>
+#define EBT_LIMIT_MATCH "limit"
+#define EBT_LIMIT_SCALE 10000
+struct ebt_limit_info {
+  __u32 avg;
+  __u32 burst;
+  unsigned long prev;
+  __u32 credit;
+  __u32 credit_cap, cost;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebt_log.h b/i686-linux-musl/include/linux/netfilter_bridge/ebt_log.h
new file mode 100644
index 0000000..dbe3fec
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebt_log.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_BRIDGE_EBT_LOG_H
+#define __LINUX_BRIDGE_EBT_LOG_H
+#include <linux/types.h>
+#define EBT_LOG_IP 0x01
+#define EBT_LOG_ARP 0x02
+#define EBT_LOG_NFLOG 0x04
+#define EBT_LOG_IP6 0x08
+#define EBT_LOG_MASK (EBT_LOG_IP | EBT_LOG_ARP | EBT_LOG_IP6)
+#define EBT_LOG_PREFIX_SIZE 30
+#define EBT_LOG_WATCHER "log"
+struct ebt_log_info {
+  __u8 loglevel;
+  __u8 prefix[EBT_LOG_PREFIX_SIZE];
+  __u32 bitmask;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebt_mark_m.h b/i686-linux-musl/include/linux/netfilter_bridge/ebt_mark_m.h
new file mode 100644
index 0000000..cc35658
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebt_mark_m.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_BRIDGE_EBT_MARK_M_H
+#define __LINUX_BRIDGE_EBT_MARK_M_H
+#include <linux/types.h>
+#define EBT_MARK_AND 0x01
+#define EBT_MARK_OR 0x02
+#define EBT_MARK_MASK (EBT_MARK_AND | EBT_MARK_OR)
+struct ebt_mark_m_info {
+  unsigned long mark, mask;
+  __u8 invert;
+  __u8 bitmask;
+};
+#define EBT_MARK_MATCH "mark_m"
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebt_mark_t.h b/i686-linux-musl/include/linux/netfilter_bridge/ebt_mark_t.h
new file mode 100644
index 0000000..5b662f9
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebt_mark_t.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_BRIDGE_EBT_MARK_T_H
+#define __LINUX_BRIDGE_EBT_MARK_T_H
+#define MARK_SET_VALUE (0xfffffff0)
+#define MARK_OR_VALUE (0xffffffe0)
+#define MARK_AND_VALUE (0xffffffd0)
+#define MARK_XOR_VALUE (0xffffffc0)
+struct ebt_mark_t_info {
+  unsigned long mark;
+  int target;
+};
+#define EBT_MARK_TARGET "mark"
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebt_nat.h b/i686-linux-musl/include/linux/netfilter_bridge/ebt_nat.h
new file mode 100644
index 0000000..c0b58c0
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebt_nat.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_BRIDGE_EBT_NAT_H
+#define __LINUX_BRIDGE_EBT_NAT_H
+#include <linux/if_ether.h>
+#define NAT_ARP_BIT (0x00000010)
+struct ebt_nat_info {
+  unsigned char mac[ETH_ALEN];
+  int target;
+};
+#define EBT_SNAT_TARGET "snat"
+#define EBT_DNAT_TARGET "dnat"
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebt_nflog.h b/i686-linux-musl/include/linux/netfilter_bridge/ebt_nflog.h
new file mode 100644
index 0000000..de50e04
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebt_nflog.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_BRIDGE_EBT_NFLOG_H
+#define __LINUX_BRIDGE_EBT_NFLOG_H
+#include <linux/types.h>
+#define EBT_NFLOG_MASK 0x0
+#define EBT_NFLOG_PREFIX_SIZE 64
+#define EBT_NFLOG_WATCHER "nflog"
+#define EBT_NFLOG_DEFAULT_GROUP 0x1
+#define EBT_NFLOG_DEFAULT_THRESHOLD 1
+struct ebt_nflog_info {
+  __u32 len;
+  __u16 group;
+  __u16 threshold;
+  __u16 flags;
+  __u16 pad;
+  char prefix[EBT_NFLOG_PREFIX_SIZE];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebt_pkttype.h b/i686-linux-musl/include/linux/netfilter_bridge/ebt_pkttype.h
new file mode 100644
index 0000000..dfb7e70
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebt_pkttype.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_BRIDGE_EBT_PKTTYPE_H
+#define __LINUX_BRIDGE_EBT_PKTTYPE_H
+#include <linux/types.h>
+struct ebt_pkttype_info {
+  __u8 pkt_type;
+  __u8 invert;
+};
+#define EBT_PKTTYPE_MATCH "pkttype"
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebt_redirect.h b/i686-linux-musl/include/linux/netfilter_bridge/ebt_redirect.h
new file mode 100644
index 0000000..e329c74
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebt_redirect.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_BRIDGE_EBT_REDIRECT_H
+#define __LINUX_BRIDGE_EBT_REDIRECT_H
+struct ebt_redirect_info {
+  int target;
+};
+#define EBT_REDIRECT_TARGET "redirect"
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebt_stp.h b/i686-linux-musl/include/linux/netfilter_bridge/ebt_stp.h
new file mode 100644
index 0000000..47565e3
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebt_stp.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_BRIDGE_EBT_STP_H
+#define __LINUX_BRIDGE_EBT_STP_H
+#include <linux/types.h>
+#define EBT_STP_TYPE 0x0001
+#define EBT_STP_FLAGS 0x0002
+#define EBT_STP_ROOTPRIO 0x0004
+#define EBT_STP_ROOTADDR 0x0008
+#define EBT_STP_ROOTCOST 0x0010
+#define EBT_STP_SENDERPRIO 0x0020
+#define EBT_STP_SENDERADDR 0x0040
+#define EBT_STP_PORT 0x0080
+#define EBT_STP_MSGAGE 0x0100
+#define EBT_STP_MAXAGE 0x0200
+#define EBT_STP_HELLOTIME 0x0400
+#define EBT_STP_FWDD 0x0800
+#define EBT_STP_MASK 0x0fff
+#define EBT_STP_CONFIG_MASK 0x0ffe
+#define EBT_STP_MATCH "stp"
+struct ebt_stp_config_info {
+  __u8 flags;
+  __u16 root_priol, root_priou;
+  char root_addr[6], root_addrmsk[6];
+  __u32 root_costl, root_costu;
+  __u16 sender_priol, sender_priou;
+  char sender_addr[6], sender_addrmsk[6];
+  __u16 portl, portu;
+  __u16 msg_agel, msg_ageu;
+  __u16 max_agel, max_ageu;
+  __u16 hello_timel, hello_timeu;
+  __u16 forward_delayl, forward_delayu;
+};
+struct ebt_stp_info {
+  __u8 type;
+  struct ebt_stp_config_info config;
+  __u16 bitmask;
+  __u16 invflags;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebt_vlan.h b/i686-linux-musl/include/linux/netfilter_bridge/ebt_vlan.h
new file mode 100644
index 0000000..9cc2420
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebt_vlan.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_BRIDGE_EBT_VLAN_H
+#define __LINUX_BRIDGE_EBT_VLAN_H
+#include <linux/types.h>
+#define EBT_VLAN_ID 0x01
+#define EBT_VLAN_PRIO 0x02
+#define EBT_VLAN_ENCAP 0x04
+#define EBT_VLAN_MASK (EBT_VLAN_ID | EBT_VLAN_PRIO | EBT_VLAN_ENCAP)
+#define EBT_VLAN_MATCH "vlan"
+struct ebt_vlan_info {
+  __u16 id;
+  __u8 prio;
+  __be16 encap;
+  __u8 bitmask;
+  __u8 invflags;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_bridge/ebtables.h b/i686-linux-musl/include/linux/netfilter_bridge/ebtables.h
new file mode 100644
index 0000000..7c8f435
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_bridge/ebtables.h
@@ -0,0 +1,155 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_BRIDGE_EFF_H
+#define _UAPI__LINUX_BRIDGE_EFF_H
+#include <linux/types.h>
+#include <linux/if.h>
+#include <linux/netfilter_bridge.h>
+#define EBT_TABLE_MAXNAMELEN 32
+#define EBT_CHAIN_MAXNAMELEN EBT_TABLE_MAXNAMELEN
+#define EBT_FUNCTION_MAXNAMELEN EBT_TABLE_MAXNAMELEN
+#define EBT_EXTENSION_MAXNAMELEN 31
+#define EBT_ACCEPT - 1
+#define EBT_DROP - 2
+#define EBT_CONTINUE - 3
+#define EBT_RETURN - 4
+#define NUM_STANDARD_TARGETS 4
+#define EBT_VERDICT_BITS 0x0000000F
+struct xt_match;
+struct xt_target;
+struct ebt_counter {
+  __u64 pcnt;
+  __u64 bcnt;
+};
+struct ebt_replace {
+  char name[EBT_TABLE_MAXNAMELEN];
+  unsigned int valid_hooks;
+  unsigned int nentries;
+  unsigned int entries_size;
+  struct ebt_entries __user * hook_entry[NF_BR_NUMHOOKS];
+  unsigned int num_counters;
+  struct ebt_counter __user * counters;
+  char __user * entries;
+};
+struct ebt_replace_kernel {
+  char name[EBT_TABLE_MAXNAMELEN];
+  unsigned int valid_hooks;
+  unsigned int nentries;
+  unsigned int entries_size;
+  struct ebt_entries * hook_entry[NF_BR_NUMHOOKS];
+  unsigned int num_counters;
+  struct ebt_counter * counters;
+  char * entries;
+};
+struct ebt_entries {
+  unsigned int distinguisher;
+  char name[EBT_CHAIN_MAXNAMELEN];
+  unsigned int counter_offset;
+  int policy;
+  unsigned int nentries;
+  char data[0] __attribute__((aligned(__alignof__(struct ebt_replace))));
+};
+#define EBT_ENTRY_OR_ENTRIES 0x01
+#define EBT_NOPROTO 0x02
+#define EBT_802_3 0x04
+#define EBT_SOURCEMAC 0x08
+#define EBT_DESTMAC 0x10
+#define EBT_F_MASK (EBT_NOPROTO | EBT_802_3 | EBT_SOURCEMAC | EBT_DESTMAC | EBT_ENTRY_OR_ENTRIES)
+#define EBT_IPROTO 0x01
+#define EBT_IIN 0x02
+#define EBT_IOUT 0x04
+#define EBT_ISOURCE 0x8
+#define EBT_IDEST 0x10
+#define EBT_ILOGICALIN 0x20
+#define EBT_ILOGICALOUT 0x40
+#define EBT_INV_MASK (EBT_IPROTO | EBT_IIN | EBT_IOUT | EBT_ILOGICALIN | EBT_ILOGICALOUT | EBT_ISOURCE | EBT_IDEST)
+struct ebt_entry_match {
+  union {
+    struct {
+      char name[EBT_EXTENSION_MAXNAMELEN];
+      __u8 revision;
+    };
+    struct xt_match * match;
+  } u;
+  unsigned int match_size;
+  unsigned char data[0] __attribute__((aligned(__alignof__(struct ebt_replace))));
+};
+struct ebt_entry_watcher {
+  union {
+    struct {
+      char name[EBT_EXTENSION_MAXNAMELEN];
+      __u8 revision;
+    };
+    struct xt_target * watcher;
+  } u;
+  unsigned int watcher_size;
+  unsigned char data[0] __attribute__((aligned(__alignof__(struct ebt_replace))));
+};
+struct ebt_entry_target {
+  union {
+    struct {
+      char name[EBT_EXTENSION_MAXNAMELEN];
+      __u8 revision;
+    };
+    struct xt_target * target;
+  } u;
+  unsigned int target_size;
+  unsigned char data[0] __attribute__((aligned(__alignof__(struct ebt_replace))));
+};
+#define EBT_STANDARD_TARGET "standard"
+struct ebt_standard_target {
+  struct ebt_entry_target target;
+  int verdict;
+};
+struct ebt_entry {
+  unsigned int bitmask;
+  unsigned int invflags;
+  __be16 ethproto;
+  char in[IFNAMSIZ];
+  char logical_in[IFNAMSIZ];
+  char out[IFNAMSIZ];
+  char logical_out[IFNAMSIZ];
+  unsigned char sourcemac[ETH_ALEN];
+  unsigned char sourcemsk[ETH_ALEN];
+  unsigned char destmac[ETH_ALEN];
+  unsigned char destmsk[ETH_ALEN];
+  unsigned int watchers_offset;
+  unsigned int target_offset;
+  unsigned int next_offset;
+  unsigned char elems[0] __attribute__((aligned(__alignof__(struct ebt_replace))));
+};
+#define EBT_BASE_CTL 128
+#define EBT_SO_SET_ENTRIES (EBT_BASE_CTL)
+#define EBT_SO_SET_COUNTERS (EBT_SO_SET_ENTRIES + 1)
+#define EBT_SO_SET_MAX (EBT_SO_SET_COUNTERS + 1)
+#define EBT_SO_GET_INFO (EBT_BASE_CTL)
+#define EBT_SO_GET_ENTRIES (EBT_SO_GET_INFO + 1)
+#define EBT_SO_GET_INIT_INFO (EBT_SO_GET_ENTRIES + 1)
+#define EBT_SO_GET_INIT_ENTRIES (EBT_SO_GET_INIT_INFO + 1)
+#define EBT_SO_GET_MAX (EBT_SO_GET_INIT_ENTRIES + 1)
+#define EBT_MATCH_ITERATE(e,fn,args...) \
+({ unsigned int __i; int __ret = 0; struct ebt_entry_match * __match; for(__i = sizeof(struct ebt_entry); __i < (e)->watchers_offset; __i += __match->match_size + sizeof(struct ebt_entry_match)) { __match = (void *) (e) + __i; __ret = fn(__match, ##args); if(__ret != 0) break; } if(__ret == 0) { if(__i != (e)->watchers_offset) __ret = - EINVAL; } __ret; \
+})
+#define EBT_WATCHER_ITERATE(e,fn,args...) \
+({ unsigned int __i; int __ret = 0; struct ebt_entry_watcher * __watcher; for(__i = e->watchers_offset; __i < (e)->target_offset; __i += __watcher->watcher_size + sizeof(struct ebt_entry_watcher)) { __watcher = (void *) (e) + __i; __ret = fn(__watcher, ##args); if(__ret != 0) break; } if(__ret == 0) { if(__i != (e)->target_offset) __ret = - EINVAL; } __ret; \
+})
+#define EBT_ENTRY_ITERATE(entries,size,fn,args...) \
+({ unsigned int __i; int __ret = 0; struct ebt_entry * __entry; for(__i = 0; __i < (size);) { __entry = (void *) (entries) + __i; __ret = fn(__entry, ##args); if(__ret != 0) break; if(__entry->bitmask != 0) __i += __entry->next_offset; else __i += sizeof(struct ebt_entries); } if(__ret == 0) { if(__i != (size)) __ret = - EINVAL; } __ret; \
+})
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_decnet.h b/i686-linux-musl/include/linux/netfilter_decnet.h
new file mode 100644
index 0000000..c9c16ca
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_decnet.h
@@ -0,0 +1,57 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_DECNET_NETFILTER_H
+#define __LINUX_DECNET_NETFILTER_H
+#include <linux/netfilter.h>
+#include <limits.h>
+#define NF_DN_NUMHOOKS 7
+#define NF_DN_PRE_ROUTING 0
+#define NF_DN_LOCAL_IN 1
+#define NF_DN_FORWARD 2
+#define NF_DN_LOCAL_OUT 3
+#define NF_DN_POST_ROUTING 4
+#define NF_DN_HELLO 5
+#define NF_DN_ROUTE 6
+enum nf_dn_hook_priorities {
+  NF_DN_PRI_FIRST = INT_MIN,
+  NF_DN_PRI_CONNTRACK = - 200,
+  NF_DN_PRI_MANGLE = - 150,
+  NF_DN_PRI_NAT_DST = - 100,
+  NF_DN_PRI_FILTER = 0,
+  NF_DN_PRI_NAT_SRC = 100,
+  NF_DN_PRI_DNRTMSG = 200,
+  NF_DN_PRI_LAST = INT_MAX,
+};
+struct nf_dn_rtmsg {
+  int nfdn_ifindex;
+};
+#define NFDN_RTMSG(r) ((unsigned char *) (r) + NLMSG_ALIGN(sizeof(struct nf_dn_rtmsg)))
+#define DNRMG_L1_GROUP 0x01
+#define DNRMG_L2_GROUP 0x02
+enum {
+  DNRNG_NLGRP_NONE,
+#define DNRNG_NLGRP_NONE DNRNG_NLGRP_NONE
+  DNRNG_NLGRP_L1,
+#define DNRNG_NLGRP_L1 DNRNG_NLGRP_L1
+  DNRNG_NLGRP_L2,
+#define DNRNG_NLGRP_L2 DNRNG_NLGRP_L2
+  __DNRNG_NLGRP_MAX
+};
+#define DNRNG_NLGRP_MAX (__DNRNG_NLGRP_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv4.h b/i686-linux-musl/include/linux/netfilter_ipv4.h
new file mode 100644
index 0000000..bb2a1d9
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv4.h
@@ -0,0 +1,47 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_IP_NETFILTER_H
+#define _UAPI__LINUX_IP_NETFILTER_H
+#include <linux/netfilter.h>
+#include <limits.h>
+#define NF_IP_PRE_ROUTING 0
+#define NF_IP_LOCAL_IN 1
+#define NF_IP_FORWARD 2
+#define NF_IP_LOCAL_OUT 3
+#define NF_IP_POST_ROUTING 4
+#define NF_IP_NUMHOOKS 5
+enum nf_ip_hook_priorities {
+  NF_IP_PRI_FIRST = INT_MIN,
+  NF_IP_PRI_RAW_BEFORE_DEFRAG = - 450,
+  NF_IP_PRI_CONNTRACK_DEFRAG = - 400,
+  NF_IP_PRI_RAW = - 300,
+  NF_IP_PRI_SELINUX_FIRST = - 225,
+  NF_IP_PRI_CONNTRACK = - 200,
+  NF_IP_PRI_MANGLE = - 150,
+  NF_IP_PRI_NAT_DST = - 100,
+  NF_IP_PRI_FILTER = 0,
+  NF_IP_PRI_SECURITY = 50,
+  NF_IP_PRI_NAT_SRC = 100,
+  NF_IP_PRI_SELINUX_LAST = 225,
+  NF_IP_PRI_CONNTRACK_HELPER = 300,
+  NF_IP_PRI_CONNTRACK_CONFIRM = INT_MAX,
+  NF_IP_PRI_LAST = INT_MAX,
+};
+#define SO_ORIGINAL_DST 80
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv4/ip_tables.h b/i686-linux-musl/include/linux/netfilter_ipv4/ip_tables.h
new file mode 100644
index 0000000..033c519
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv4/ip_tables.h
@@ -0,0 +1,126 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_IPTABLES_H
+#define _UAPI_IPTABLES_H
+#include <linux/types.h>
+#include <linux/compiler.h>
+#include <linux/if.h>
+#include <linux/netfilter_ipv4.h>
+#include <linux/netfilter/x_tables.h>
+#define IPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
+#define IPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
+#define ipt_match xt_match
+#define ipt_target xt_target
+#define ipt_table xt_table
+#define ipt_get_revision xt_get_revision
+#define ipt_entry_match xt_entry_match
+#define ipt_entry_target xt_entry_target
+#define ipt_standard_target xt_standard_target
+#define ipt_error_target xt_error_target
+#define ipt_counters xt_counters
+#define IPT_CONTINUE XT_CONTINUE
+#define IPT_RETURN XT_RETURN
+#include <linux/netfilter/xt_tcpudp.h>
+#define ipt_udp xt_udp
+#define ipt_tcp xt_tcp
+#define IPT_TCP_INV_SRCPT XT_TCP_INV_SRCPT
+#define IPT_TCP_INV_DSTPT XT_TCP_INV_DSTPT
+#define IPT_TCP_INV_FLAGS XT_TCP_INV_FLAGS
+#define IPT_TCP_INV_OPTION XT_TCP_INV_OPTION
+#define IPT_TCP_INV_MASK XT_TCP_INV_MASK
+#define IPT_UDP_INV_SRCPT XT_UDP_INV_SRCPT
+#define IPT_UDP_INV_DSTPT XT_UDP_INV_DSTPT
+#define IPT_UDP_INV_MASK XT_UDP_INV_MASK
+#define ipt_counters_info xt_counters_info
+#define IPT_STANDARD_TARGET XT_STANDARD_TARGET
+#define IPT_ERROR_TARGET XT_ERROR_TARGET
+#define IPT_MATCH_ITERATE(e,fn,args...) XT_MATCH_ITERATE(struct ipt_entry, e, fn, ##args)
+#define IPT_ENTRY_ITERATE(entries,size,fn,args...) XT_ENTRY_ITERATE(struct ipt_entry, entries, size, fn, ##args)
+struct ipt_ip {
+  struct in_addr src, dst;
+  struct in_addr smsk, dmsk;
+  char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
+  unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
+  __u16 proto;
+  __u8 flags;
+  __u8 invflags;
+};
+#define IPT_F_FRAG 0x01
+#define IPT_F_GOTO 0x02
+#define IPT_F_MASK 0x03
+#define IPT_INV_VIA_IN 0x01
+#define IPT_INV_VIA_OUT 0x02
+#define IPT_INV_TOS 0x04
+#define IPT_INV_SRCIP 0x08
+#define IPT_INV_DSTIP 0x10
+#define IPT_INV_FRAG 0x20
+#define IPT_INV_PROTO XT_INV_PROTO
+#define IPT_INV_MASK 0x7F
+struct ipt_entry {
+  struct ipt_ip ip;
+  unsigned int nfcache;
+  __u16 target_offset;
+  __u16 next_offset;
+  unsigned int comefrom;
+  struct xt_counters counters;
+  unsigned char elems[0];
+};
+#define IPT_BASE_CTL 64
+#define IPT_SO_SET_REPLACE (IPT_BASE_CTL)
+#define IPT_SO_SET_ADD_COUNTERS (IPT_BASE_CTL + 1)
+#define IPT_SO_SET_MAX IPT_SO_SET_ADD_COUNTERS
+#define IPT_SO_GET_INFO (IPT_BASE_CTL)
+#define IPT_SO_GET_ENTRIES (IPT_BASE_CTL + 1)
+#define IPT_SO_GET_REVISION_MATCH (IPT_BASE_CTL + 2)
+#define IPT_SO_GET_REVISION_TARGET (IPT_BASE_CTL + 3)
+#define IPT_SO_GET_MAX IPT_SO_GET_REVISION_TARGET
+struct ipt_icmp {
+  __u8 type;
+  __u8 code[2];
+  __u8 invflags;
+};
+#define IPT_ICMP_INV 0x01
+struct ipt_getinfo {
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int valid_hooks;
+  unsigned int hook_entry[NF_INET_NUMHOOKS];
+  unsigned int underflow[NF_INET_NUMHOOKS];
+  unsigned int num_entries;
+  unsigned int size;
+};
+struct ipt_replace {
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int valid_hooks;
+  unsigned int num_entries;
+  unsigned int size;
+  unsigned int hook_entry[NF_INET_NUMHOOKS];
+  unsigned int underflow[NF_INET_NUMHOOKS];
+  unsigned int num_counters;
+  struct xt_counters __user * counters;
+  struct ipt_entry entries[0];
+};
+struct ipt_get_entries {
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int size;
+  struct ipt_entry entrytable[0];
+};
+static __inline__ struct xt_entry_target * ipt_get_target(struct ipt_entry * e) {
+  return(struct xt_entry_target *) ((char *) e + e->target_offset);
+}
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h b/i686-linux-musl/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h
new file mode 100644
index 0000000..b5376b8
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IPT_CLUSTERIP_H_target
+#define _IPT_CLUSTERIP_H_target
+#include <linux/types.h>
+#include <linux/if_ether.h>
+enum clusterip_hashmode {
+  CLUSTERIP_HASHMODE_SIP = 0,
+  CLUSTERIP_HASHMODE_SIP_SPT,
+  CLUSTERIP_HASHMODE_SIP_SPT_DPT,
+};
+#define CLUSTERIP_HASHMODE_MAX CLUSTERIP_HASHMODE_SIP_SPT_DPT
+#define CLUSTERIP_MAX_NODES 16
+#define CLUSTERIP_FLAG_NEW 0x00000001
+struct clusterip_config;
+struct ipt_clusterip_tgt_info {
+  __u32 flags;
+  __u8 clustermac[ETH_ALEN];
+  __u16 num_total_nodes;
+  __u16 num_local_nodes;
+  __u16 local_nodes[CLUSTERIP_MAX_NODES];
+  __u32 hash_mode;
+  __u32 hash_initval;
+  struct clusterip_config * config;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv4/ipt_ECN.h b/i686-linux-musl/include/linux/netfilter_ipv4/ipt_ECN.h
new file mode 100644
index 0000000..a67f997
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv4/ipt_ECN.h
@@ -0,0 +1,37 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IPT_ECN_TARGET_H
+#define _IPT_ECN_TARGET_H
+#include <linux/types.h>
+#include <linux/netfilter/xt_DSCP.h>
+#define IPT_ECN_IP_MASK (~XT_DSCP_MASK)
+#define IPT_ECN_OP_SET_IP 0x01
+#define IPT_ECN_OP_SET_ECE 0x10
+#define IPT_ECN_OP_SET_CWR 0x20
+#define IPT_ECN_OP_MASK 0xce
+struct ipt_ECN_info {
+  __u8 operation;
+  __u8 ip_ect;
+  union {
+    struct {
+      __u8 ece : 1, cwr : 1;
+    } tcp;
+  } proto;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv4/ipt_LOG.h b/i686-linux-musl/include/linux/netfilter_ipv4/ipt_LOG.h
new file mode 100644
index 0000000..c049244
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv4/ipt_LOG.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IPT_LOG_H
+#define _IPT_LOG_H
+#define IPT_LOG_TCPSEQ 0x01
+#define IPT_LOG_TCPOPT 0x02
+#define IPT_LOG_IPOPT 0x04
+#define IPT_LOG_UID 0x08
+#define IPT_LOG_NFLOG 0x10
+#define IPT_LOG_MACDECODE 0x20
+#define IPT_LOG_MASK 0x2f
+struct ipt_log_info {
+  unsigned char level;
+  unsigned char logflags;
+  char prefix[30];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv4/ipt_REJECT.h b/i686-linux-musl/include/linux/netfilter_ipv4/ipt_REJECT.h
new file mode 100644
index 0000000..2650d04
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv4/ipt_REJECT.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IPT_REJECT_H
+#define _IPT_REJECT_H
+enum ipt_reject_with {
+  IPT_ICMP_NET_UNREACHABLE,
+  IPT_ICMP_HOST_UNREACHABLE,
+  IPT_ICMP_PROT_UNREACHABLE,
+  IPT_ICMP_PORT_UNREACHABLE,
+  IPT_ICMP_ECHOREPLY,
+  IPT_ICMP_NET_PROHIBITED,
+  IPT_ICMP_HOST_PROHIBITED,
+  IPT_TCP_RESET,
+  IPT_ICMP_ADMIN_PROHIBITED
+};
+struct ipt_reject_info {
+  enum ipt_reject_with with;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv4/ipt_TTL.h b/i686-linux-musl/include/linux/netfilter_ipv4/ipt_TTL.h
new file mode 100644
index 0000000..d4509ac
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv4/ipt_TTL.h
@@ -0,0 +1,32 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IPT_TTL_H
+#define _IPT_TTL_H
+#include <linux/types.h>
+enum {
+  IPT_TTL_SET = 0,
+  IPT_TTL_INC,
+  IPT_TTL_DEC
+};
+#define IPT_TTL_MAXMODE IPT_TTL_DEC
+struct ipt_TTL_info {
+  __u8 mode;
+  __u8 ttl;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv4/ipt_ah.h b/i686-linux-musl/include/linux/netfilter_ipv4/ipt_ah.h
new file mode 100644
index 0000000..652db9c
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv4/ipt_ah.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IPT_AH_H
+#define _IPT_AH_H
+#include <linux/types.h>
+struct ipt_ah {
+  __u32 spis[2];
+  __u8 invflags;
+};
+#define IPT_AH_INV_SPI 0x01
+#define IPT_AH_INV_MASK 0x01
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv4/ipt_ecn.h b/i686-linux-musl/include/linux/netfilter_ipv4/ipt_ecn.h
new file mode 100644
index 0000000..a892af5
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv4/ipt_ecn.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IPT_ECN_H
+#define _IPT_ECN_H
+#include <linux/netfilter/xt_ecn.h>
+#define ipt_ecn_info xt_ecn_info
+enum {
+  IPT_ECN_IP_MASK = XT_ECN_IP_MASK,
+  IPT_ECN_OP_MATCH_IP = XT_ECN_OP_MATCH_IP,
+  IPT_ECN_OP_MATCH_ECE = XT_ECN_OP_MATCH_ECE,
+  IPT_ECN_OP_MATCH_CWR = XT_ECN_OP_MATCH_CWR,
+  IPT_ECN_OP_MATCH_MASK = XT_ECN_OP_MATCH_MASK,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv4/ipt_ttl.h b/i686-linux-musl/include/linux/netfilter_ipv4/ipt_ttl.h
new file mode 100644
index 0000000..26c1a4f
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv4/ipt_ttl.h
@@ -0,0 +1,32 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IPT_TTL_H
+#define _IPT_TTL_H
+#include <linux/types.h>
+enum {
+  IPT_TTL_EQ = 0,
+  IPT_TTL_NE,
+  IPT_TTL_LT,
+  IPT_TTL_GT,
+};
+struct ipt_ttl_info {
+  __u8 mode;
+  __u8 ttl;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv6.h b/i686-linux-musl/include/linux/netfilter_ipv6.h
new file mode 100644
index 0000000..f454eb6
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv6.h
@@ -0,0 +1,45 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_IP6_NETFILTER_H
+#define _UAPI__LINUX_IP6_NETFILTER_H
+#include <linux/netfilter.h>
+#include <limits.h>
+#define NF_IP6_PRE_ROUTING 0
+#define NF_IP6_LOCAL_IN 1
+#define NF_IP6_FORWARD 2
+#define NF_IP6_LOCAL_OUT 3
+#define NF_IP6_POST_ROUTING 4
+#define NF_IP6_NUMHOOKS 5
+enum nf_ip6_hook_priorities {
+  NF_IP6_PRI_FIRST = INT_MIN,
+  NF_IP6_PRI_RAW_BEFORE_DEFRAG = - 450,
+  NF_IP6_PRI_CONNTRACK_DEFRAG = - 400,
+  NF_IP6_PRI_RAW = - 300,
+  NF_IP6_PRI_SELINUX_FIRST = - 225,
+  NF_IP6_PRI_CONNTRACK = - 200,
+  NF_IP6_PRI_MANGLE = - 150,
+  NF_IP6_PRI_NAT_DST = - 100,
+  NF_IP6_PRI_FILTER = 0,
+  NF_IP6_PRI_SECURITY = 50,
+  NF_IP6_PRI_NAT_SRC = 100,
+  NF_IP6_PRI_SELINUX_LAST = 225,
+  NF_IP6_PRI_CONNTRACK_HELPER = 300,
+  NF_IP6_PRI_LAST = INT_MAX,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv6/ip6_tables.h b/i686-linux-musl/include/linux/netfilter_ipv6/ip6_tables.h
new file mode 100644
index 0000000..b3f426d
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv6/ip6_tables.h
@@ -0,0 +1,146 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_IP6_TABLES_H
+#define _UAPI_IP6_TABLES_H
+#include <linux/types.h>
+#include <linux/compiler.h>
+#include <linux/if.h>
+#include <linux/netfilter_ipv6.h>
+#include <linux/netfilter/x_tables.h>
+#define IP6T_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
+#define IP6T_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
+#define ip6t_match xt_match
+#define ip6t_target xt_target
+#define ip6t_table xt_table
+#define ip6t_get_revision xt_get_revision
+#define ip6t_entry_match xt_entry_match
+#define ip6t_entry_target xt_entry_target
+#define ip6t_standard_target xt_standard_target
+#define ip6t_error_target xt_error_target
+#define ip6t_counters xt_counters
+#define IP6T_CONTINUE XT_CONTINUE
+#define IP6T_RETURN XT_RETURN
+#include <linux/netfilter/xt_tcpudp.h>
+#define ip6t_tcp xt_tcp
+#define ip6t_udp xt_udp
+#define IP6T_TCP_INV_SRCPT XT_TCP_INV_SRCPT
+#define IP6T_TCP_INV_DSTPT XT_TCP_INV_DSTPT
+#define IP6T_TCP_INV_FLAGS XT_TCP_INV_FLAGS
+#define IP6T_TCP_INV_OPTION XT_TCP_INV_OPTION
+#define IP6T_TCP_INV_MASK XT_TCP_INV_MASK
+#define IP6T_UDP_INV_SRCPT XT_UDP_INV_SRCPT
+#define IP6T_UDP_INV_DSTPT XT_UDP_INV_DSTPT
+#define IP6T_UDP_INV_MASK XT_UDP_INV_MASK
+#define ip6t_counters_info xt_counters_info
+#define IP6T_STANDARD_TARGET XT_STANDARD_TARGET
+#define IP6T_ERROR_TARGET XT_ERROR_TARGET
+#define IP6T_MATCH_ITERATE(e,fn,args...) XT_MATCH_ITERATE(struct ip6t_entry, e, fn, ##args)
+#define IP6T_ENTRY_ITERATE(entries,size,fn,args...) XT_ENTRY_ITERATE(struct ip6t_entry, entries, size, fn, ##args)
+struct ip6t_ip6 {
+  struct in6_addr src, dst;
+  struct in6_addr smsk, dmsk;
+  char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
+  unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
+  __u16 proto;
+  __u8 tos;
+  __u8 flags;
+  __u8 invflags;
+};
+#define IP6T_F_PROTO 0x01
+#define IP6T_F_TOS 0x02
+#define IP6T_F_GOTO 0x04
+#define IP6T_F_MASK 0x07
+#define IP6T_INV_VIA_IN 0x01
+#define IP6T_INV_VIA_OUT 0x02
+#define IP6T_INV_TOS 0x04
+#define IP6T_INV_SRCIP 0x08
+#define IP6T_INV_DSTIP 0x10
+#define IP6T_INV_FRAG 0x20
+#define IP6T_INV_PROTO XT_INV_PROTO
+#define IP6T_INV_MASK 0x7F
+struct ip6t_entry {
+  struct ip6t_ip6 ipv6;
+  unsigned int nfcache;
+  __u16 target_offset;
+  __u16 next_offset;
+  unsigned int comefrom;
+  struct xt_counters counters;
+  unsigned char elems[0];
+};
+struct ip6t_standard {
+  struct ip6t_entry entry;
+  struct xt_standard_target target;
+};
+struct ip6t_error {
+  struct ip6t_entry entry;
+  struct xt_error_target target;
+};
+#define IP6T_ENTRY_INIT(__size) \
+{.target_offset = sizeof(struct ip6t_entry),.next_offset = (__size), \
+}
+#define IP6T_STANDARD_INIT(__verdict) \
+{.entry = IP6T_ENTRY_INIT(sizeof(struct ip6t_standard)),.target = XT_TARGET_INIT(XT_STANDARD_TARGET, sizeof(struct xt_standard_target)),.target.verdict = - (__verdict) - 1, \
+}
+#define IP6T_ERROR_INIT \
+{.entry = IP6T_ENTRY_INIT(sizeof(struct ip6t_error)),.target = XT_TARGET_INIT(XT_ERROR_TARGET, sizeof(struct xt_error_target)),.target.errorname = "ERROR", \
+}
+#define IP6T_BASE_CTL 64
+#define IP6T_SO_SET_REPLACE (IP6T_BASE_CTL)
+#define IP6T_SO_SET_ADD_COUNTERS (IP6T_BASE_CTL + 1)
+#define IP6T_SO_SET_MAX IP6T_SO_SET_ADD_COUNTERS
+#define IP6T_SO_GET_INFO (IP6T_BASE_CTL)
+#define IP6T_SO_GET_ENTRIES (IP6T_BASE_CTL + 1)
+#define IP6T_SO_GET_REVISION_MATCH (IP6T_BASE_CTL + 4)
+#define IP6T_SO_GET_REVISION_TARGET (IP6T_BASE_CTL + 5)
+#define IP6T_SO_GET_MAX IP6T_SO_GET_REVISION_TARGET
+#define IP6T_SO_ORIGINAL_DST 80
+struct ip6t_icmp {
+  __u8 type;
+  __u8 code[2];
+  __u8 invflags;
+};
+#define IP6T_ICMP_INV 0x01
+struct ip6t_getinfo {
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int valid_hooks;
+  unsigned int hook_entry[NF_INET_NUMHOOKS];
+  unsigned int underflow[NF_INET_NUMHOOKS];
+  unsigned int num_entries;
+  unsigned int size;
+};
+struct ip6t_replace {
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int valid_hooks;
+  unsigned int num_entries;
+  unsigned int size;
+  unsigned int hook_entry[NF_INET_NUMHOOKS];
+  unsigned int underflow[NF_INET_NUMHOOKS];
+  unsigned int num_counters;
+  struct xt_counters __user * counters;
+  struct ip6t_entry entries[0];
+};
+struct ip6t_get_entries {
+  char name[XT_TABLE_MAXNAMELEN];
+  unsigned int size;
+  struct ip6t_entry entrytable[0];
+};
+static __inline__ struct xt_entry_target * ip6t_get_target(struct ip6t_entry * e) {
+  return(struct xt_entry_target *) ((char *) e + e->target_offset);
+}
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_HL.h b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_HL.h
new file mode 100644
index 0000000..85983c6
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_HL.h
@@ -0,0 +1,32 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IP6T_HL_H
+#define _IP6T_HL_H
+#include <linux/types.h>
+enum {
+  IP6T_HL_SET = 0,
+  IP6T_HL_INC,
+  IP6T_HL_DEC
+};
+#define IP6T_HL_MAXMODE IP6T_HL_DEC
+struct ip6t_HL_info {
+  __u8 mode;
+  __u8 hop_limit;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_LOG.h b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_LOG.h
new file mode 100644
index 0000000..eb3f26a
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_LOG.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IP6T_LOG_H
+#define _IP6T_LOG_H
+#define IP6T_LOG_TCPSEQ 0x01
+#define IP6T_LOG_TCPOPT 0x02
+#define IP6T_LOG_IPOPT 0x04
+#define IP6T_LOG_UID 0x08
+#define IP6T_LOG_NFLOG 0x10
+#define IP6T_LOG_MACDECODE 0x20
+#define IP6T_LOG_MASK 0x2f
+struct ip6t_log_info {
+  unsigned char level;
+  unsigned char logflags;
+  char prefix[30];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_NPT.h b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_NPT.h
new file mode 100644
index 0000000..4f41cde
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_NPT.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __NETFILTER_IP6T_NPT
+#define __NETFILTER_IP6T_NPT
+#include <linux/types.h>
+#include <linux/netfilter.h>
+struct ip6t_npt_tginfo {
+  union nf_inet_addr src_pfx;
+  union nf_inet_addr dst_pfx;
+  __u8 src_pfx_len;
+  __u8 dst_pfx_len;
+  __sum16 adjustment;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_REJECT.h b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_REJECT.h
new file mode 100644
index 0000000..96fcdbe
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_REJECT.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IP6T_REJECT_H
+#define _IP6T_REJECT_H
+#include <linux/types.h>
+enum ip6t_reject_with {
+  IP6T_ICMP6_NO_ROUTE,
+  IP6T_ICMP6_ADM_PROHIBITED,
+  IP6T_ICMP6_NOT_NEIGHBOUR,
+  IP6T_ICMP6_ADDR_UNREACH,
+  IP6T_ICMP6_PORT_UNREACH,
+  IP6T_ICMP6_ECHOREPLY,
+  IP6T_TCP_RESET,
+  IP6T_ICMP6_POLICY_FAIL,
+  IP6T_ICMP6_REJECT_ROUTE
+};
+struct ip6t_reject_info {
+  __u32 with;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_ah.h b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_ah.h
new file mode 100644
index 0000000..a566e6c
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_ah.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IP6T_AH_H
+#define _IP6T_AH_H
+#include <linux/types.h>
+struct ip6t_ah {
+  __u32 spis[2];
+  __u32 hdrlen;
+  __u8 hdrres;
+  __u8 invflags;
+};
+#define IP6T_AH_SPI 0x01
+#define IP6T_AH_LEN 0x02
+#define IP6T_AH_RES 0x04
+#define IP6T_AH_INV_SPI 0x01
+#define IP6T_AH_INV_LEN 0x02
+#define IP6T_AH_INV_MASK 0x03
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_frag.h b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_frag.h
new file mode 100644
index 0000000..accbe18
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_frag.h
@@ -0,0 +1,37 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IP6T_FRAG_H
+#define _IP6T_FRAG_H
+#include <linux/types.h>
+struct ip6t_frag {
+  __u32 ids[2];
+  __u32 hdrlen;
+  __u8 flags;
+  __u8 invflags;
+};
+#define IP6T_FRAG_IDS 0x01
+#define IP6T_FRAG_LEN 0x02
+#define IP6T_FRAG_RES 0x04
+#define IP6T_FRAG_FST 0x08
+#define IP6T_FRAG_MF 0x10
+#define IP6T_FRAG_NMF 0x20
+#define IP6T_FRAG_INV_IDS 0x01
+#define IP6T_FRAG_INV_LEN 0x02
+#define IP6T_FRAG_INV_MASK 0x03
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_hl.h b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_hl.h
new file mode 100644
index 0000000..048636d
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_hl.h
@@ -0,0 +1,32 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IP6T_HL_H
+#define _IP6T_HL_H
+#include <linux/types.h>
+enum {
+  IP6T_HL_EQ = 0,
+  IP6T_HL_NE,
+  IP6T_HL_LT,
+  IP6T_HL_GT,
+};
+struct ip6t_hl_info {
+  __u8 mode;
+  __u8 hop_limit;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_ipv6header.h b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_ipv6header.h
new file mode 100644
index 0000000..3c5dca5
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_ipv6header.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __IPV6HEADER_H
+#define __IPV6HEADER_H
+#include <linux/types.h>
+struct ip6t_ipv6header_info {
+  __u8 matchflags;
+  __u8 invflags;
+  __u8 modeflag;
+};
+#define MASK_HOPOPTS 128
+#define MASK_DSTOPTS 64
+#define MASK_ROUTING 32
+#define MASK_FRAGMENT 16
+#define MASK_AH 8
+#define MASK_ESP 4
+#define MASK_NONE 2
+#define MASK_PROTO 1
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_mh.h b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_mh.h
new file mode 100644
index 0000000..849119f
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_mh.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IP6T_MH_H
+#define _IP6T_MH_H
+#include <linux/types.h>
+struct ip6t_mh {
+  __u8 types[2];
+  __u8 invflags;
+};
+#define IP6T_MH_INV_TYPE 0x01
+#define IP6T_MH_INV_MASK 0x01
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_opts.h b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_opts.h
new file mode 100644
index 0000000..21052ee
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_opts.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IP6T_OPTS_H
+#define _IP6T_OPTS_H
+#include <linux/types.h>
+#define IP6T_OPTS_OPTSNR 16
+struct ip6t_opts {
+  __u32 hdrlen;
+  __u8 flags;
+  __u8 invflags;
+  __u16 opts[IP6T_OPTS_OPTSNR];
+  __u8 optsnr;
+};
+#define IP6T_OPTS_LEN 0x01
+#define IP6T_OPTS_OPTS 0x02
+#define IP6T_OPTS_NSTRICT 0x04
+#define IP6T_OPTS_INV_LEN 0x01
+#define IP6T_OPTS_INV_MASK 0x01
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_rt.h b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_rt.h
new file mode 100644
index 0000000..2203b82
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_rt.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IP6T_RT_H
+#define _IP6T_RT_H
+#include <linux/types.h>
+#include <linux/in6.h>
+#define IP6T_RT_HOPS 16
+struct ip6t_rt {
+  __u32 rt_type;
+  __u32 segsleft[2];
+  __u32 hdrlen;
+  __u8 flags;
+  __u8 invflags;
+  struct in6_addr addrs[IP6T_RT_HOPS];
+  __u8 addrnr;
+};
+#define IP6T_RT_TYP 0x01
+#define IP6T_RT_SGS 0x02
+#define IP6T_RT_LEN 0x04
+#define IP6T_RT_RES 0x08
+#define IP6T_RT_FST_MASK 0x30
+#define IP6T_RT_FST 0x10
+#define IP6T_RT_FST_NSTRICT 0x20
+#define IP6T_RT_INV_TYP 0x01
+#define IP6T_RT_INV_SGS 0x02
+#define IP6T_RT_INV_LEN 0x04
+#define IP6T_RT_INV_MASK 0x07
+#endif
diff --git a/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_srh.h b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_srh.h
new file mode 100644
index 0000000..a9474e7
--- /dev/null
+++ b/i686-linux-musl/include/linux/netfilter_ipv6/ip6t_srh.h
@@ -0,0 +1,77 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IP6T_SRH_H
+#define _IP6T_SRH_H
+#include <linux/types.h>
+#include <linux/netfilter.h>
+#define IP6T_SRH_NEXTHDR 0x0001
+#define IP6T_SRH_LEN_EQ 0x0002
+#define IP6T_SRH_LEN_GT 0x0004
+#define IP6T_SRH_LEN_LT 0x0008
+#define IP6T_SRH_SEGS_EQ 0x0010
+#define IP6T_SRH_SEGS_GT 0x0020
+#define IP6T_SRH_SEGS_LT 0x0040
+#define IP6T_SRH_LAST_EQ 0x0080
+#define IP6T_SRH_LAST_GT 0x0100
+#define IP6T_SRH_LAST_LT 0x0200
+#define IP6T_SRH_TAG 0x0400
+#define IP6T_SRH_PSID 0x0800
+#define IP6T_SRH_NSID 0x1000
+#define IP6T_SRH_LSID 0x2000
+#define IP6T_SRH_MASK 0x3FFF
+#define IP6T_SRH_INV_NEXTHDR 0x0001
+#define IP6T_SRH_INV_LEN_EQ 0x0002
+#define IP6T_SRH_INV_LEN_GT 0x0004
+#define IP6T_SRH_INV_LEN_LT 0x0008
+#define IP6T_SRH_INV_SEGS_EQ 0x0010
+#define IP6T_SRH_INV_SEGS_GT 0x0020
+#define IP6T_SRH_INV_SEGS_LT 0x0040
+#define IP6T_SRH_INV_LAST_EQ 0x0080
+#define IP6T_SRH_INV_LAST_GT 0x0100
+#define IP6T_SRH_INV_LAST_LT 0x0200
+#define IP6T_SRH_INV_TAG 0x0400
+#define IP6T_SRH_INV_PSID 0x0800
+#define IP6T_SRH_INV_NSID 0x1000
+#define IP6T_SRH_INV_LSID 0x2000
+#define IP6T_SRH_INV_MASK 0x3FFF
+struct ip6t_srh {
+  __u8 next_hdr;
+  __u8 hdr_len;
+  __u8 segs_left;
+  __u8 last_entry;
+  __u16 tag;
+  __u16 mt_flags;
+  __u16 mt_invflags;
+};
+struct ip6t_srh1 {
+  __u8 next_hdr;
+  __u8 hdr_len;
+  __u8 segs_left;
+  __u8 last_entry;
+  __u16 tag;
+  struct in6_addr psid_addr;
+  struct in6_addr nsid_addr;
+  struct in6_addr lsid_addr;
+  struct in6_addr psid_msk;
+  struct in6_addr nsid_msk;
+  struct in6_addr lsid_msk;
+  __u16 mt_flags;
+  __u16 mt_invflags;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netlink.h b/i686-linux-musl/include/linux/netlink.h
new file mode 100644
index 0000000..77825cc
--- /dev/null
+++ b/i686-linux-musl/include/linux/netlink.h
@@ -0,0 +1,198 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_NETLINK_H
+#define _UAPI__LINUX_NETLINK_H
+#include <linux/const.h>
+#include <linux/socket.h>
+#include <linux/types.h>
+#define NETLINK_ROUTE 0
+#define NETLINK_UNUSED 1
+#define NETLINK_USERSOCK 2
+#define NETLINK_FIREWALL 3
+#define NETLINK_SOCK_DIAG 4
+#define NETLINK_NFLOG 5
+#define NETLINK_XFRM 6
+#define NETLINK_SELINUX 7
+#define NETLINK_ISCSI 8
+#define NETLINK_AUDIT 9
+#define NETLINK_FIB_LOOKUP 10
+#define NETLINK_CONNECTOR 11
+#define NETLINK_NETFILTER 12
+#define NETLINK_IP6_FW 13
+#define NETLINK_DNRTMSG 14
+#define NETLINK_KOBJECT_UEVENT 15
+#define NETLINK_GENERIC 16
+#define NETLINK_SCSITRANSPORT 18
+#define NETLINK_ECRYPTFS 19
+#define NETLINK_RDMA 20
+#define NETLINK_CRYPTO 21
+#define NETLINK_SMC 22
+#define NETLINK_INET_DIAG NETLINK_SOCK_DIAG
+#define MAX_LINKS 32
+struct sockaddr_nl {
+  __kernel_sa_family_t nl_family;
+  unsigned short nl_pad;
+  __u32 nl_pid;
+  __u32 nl_groups;
+};
+struct nlmsghdr {
+  __u32 nlmsg_len;
+  __u16 nlmsg_type;
+  __u16 nlmsg_flags;
+  __u32 nlmsg_seq;
+  __u32 nlmsg_pid;
+};
+#define NLM_F_REQUEST 0x01
+#define NLM_F_MULTI 0x02
+#define NLM_F_ACK 0x04
+#define NLM_F_ECHO 0x08
+#define NLM_F_DUMP_INTR 0x10
+#define NLM_F_DUMP_FILTERED 0x20
+#define NLM_F_ROOT 0x100
+#define NLM_F_MATCH 0x200
+#define NLM_F_ATOMIC 0x400
+#define NLM_F_DUMP (NLM_F_ROOT | NLM_F_MATCH)
+#define NLM_F_REPLACE 0x100
+#define NLM_F_EXCL 0x200
+#define NLM_F_CREATE 0x400
+#define NLM_F_APPEND 0x800
+#define NLM_F_NONREC 0x100
+#define NLM_F_CAPPED 0x100
+#define NLM_F_ACK_TLVS 0x200
+#define NLMSG_ALIGNTO 4U
+#define NLMSG_ALIGN(len) (((len) + NLMSG_ALIGNTO - 1) & ~(NLMSG_ALIGNTO - 1))
+#define NLMSG_HDRLEN ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
+#define NLMSG_LENGTH(len) ((len) + NLMSG_HDRLEN)
+#define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len))
+#define NLMSG_DATA(nlh) ((void *) (((char *) nlh) + NLMSG_HDRLEN))
+#define NLMSG_NEXT(nlh,len) ((len) -= NLMSG_ALIGN((nlh)->nlmsg_len), (struct nlmsghdr *) (((char *) (nlh)) + NLMSG_ALIGN((nlh)->nlmsg_len)))
+#define NLMSG_OK(nlh,len) ((len) >= (int) sizeof(struct nlmsghdr) && (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) && (nlh)->nlmsg_len <= (len))
+#define NLMSG_PAYLOAD(nlh,len) ((nlh)->nlmsg_len - NLMSG_SPACE((len)))
+#define NLMSG_NOOP 0x1
+#define NLMSG_ERROR 0x2
+#define NLMSG_DONE 0x3
+#define NLMSG_OVERRUN 0x4
+#define NLMSG_MIN_TYPE 0x10
+struct nlmsgerr {
+  int error;
+  struct nlmsghdr msg;
+};
+enum nlmsgerr_attrs {
+  NLMSGERR_ATTR_UNUSED,
+  NLMSGERR_ATTR_MSG,
+  NLMSGERR_ATTR_OFFS,
+  NLMSGERR_ATTR_COOKIE,
+  NLMSGERR_ATTR_POLICY,
+  __NLMSGERR_ATTR_MAX,
+  NLMSGERR_ATTR_MAX = __NLMSGERR_ATTR_MAX - 1
+};
+#define NETLINK_ADD_MEMBERSHIP 1
+#define NETLINK_DROP_MEMBERSHIP 2
+#define NETLINK_PKTINFO 3
+#define NETLINK_BROADCAST_ERROR 4
+#define NETLINK_NO_ENOBUFS 5
+#define NETLINK_RX_RING 6
+#define NETLINK_TX_RING 7
+#define NETLINK_LISTEN_ALL_NSID 8
+#define NETLINK_LIST_MEMBERSHIPS 9
+#define NETLINK_CAP_ACK 10
+#define NETLINK_EXT_ACK 11
+#define NETLINK_GET_STRICT_CHK 12
+struct nl_pktinfo {
+  __u32 group;
+};
+struct nl_mmap_req {
+  unsigned int nm_block_size;
+  unsigned int nm_block_nr;
+  unsigned int nm_frame_size;
+  unsigned int nm_frame_nr;
+};
+struct nl_mmap_hdr {
+  unsigned int nm_status;
+  unsigned int nm_len;
+  __u32 nm_group;
+  __u32 nm_pid;
+  __u32 nm_uid;
+  __u32 nm_gid;
+};
+enum nl_mmap_status {
+  NL_MMAP_STATUS_UNUSED,
+  NL_MMAP_STATUS_RESERVED,
+  NL_MMAP_STATUS_VALID,
+  NL_MMAP_STATUS_COPY,
+  NL_MMAP_STATUS_SKIP,
+};
+#define NL_MMAP_MSG_ALIGNMENT NLMSG_ALIGNTO
+#define NL_MMAP_MSG_ALIGN(sz) __ALIGN_KERNEL(sz, NL_MMAP_MSG_ALIGNMENT)
+#define NL_MMAP_HDRLEN NL_MMAP_MSG_ALIGN(sizeof(struct nl_mmap_hdr))
+#define NET_MAJOR 36
+enum {
+  NETLINK_UNCONNECTED = 0,
+  NETLINK_CONNECTED,
+};
+struct nlattr {
+  __u16 nla_len;
+  __u16 nla_type;
+};
+#define NLA_F_NESTED (1 << 15)
+#define NLA_F_NET_BYTEORDER (1 << 14)
+#define NLA_TYPE_MASK ~(NLA_F_NESTED | NLA_F_NET_BYTEORDER)
+#define NLA_ALIGNTO 4
+#define NLA_ALIGN(len) (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))
+#define NLA_HDRLEN ((int) NLA_ALIGN(sizeof(struct nlattr)))
+struct nla_bitfield32 {
+  __u32 value;
+  __u32 selector;
+};
+enum netlink_attribute_type {
+  NL_ATTR_TYPE_INVALID,
+  NL_ATTR_TYPE_FLAG,
+  NL_ATTR_TYPE_U8,
+  NL_ATTR_TYPE_U16,
+  NL_ATTR_TYPE_U32,
+  NL_ATTR_TYPE_U64,
+  NL_ATTR_TYPE_S8,
+  NL_ATTR_TYPE_S16,
+  NL_ATTR_TYPE_S32,
+  NL_ATTR_TYPE_S64,
+  NL_ATTR_TYPE_BINARY,
+  NL_ATTR_TYPE_STRING,
+  NL_ATTR_TYPE_NUL_STRING,
+  NL_ATTR_TYPE_NESTED,
+  NL_ATTR_TYPE_NESTED_ARRAY,
+  NL_ATTR_TYPE_BITFIELD32,
+};
+enum netlink_policy_type_attr {
+  NL_POLICY_TYPE_ATTR_UNSPEC,
+  NL_POLICY_TYPE_ATTR_TYPE,
+  NL_POLICY_TYPE_ATTR_MIN_VALUE_S,
+  NL_POLICY_TYPE_ATTR_MAX_VALUE_S,
+  NL_POLICY_TYPE_ATTR_MIN_VALUE_U,
+  NL_POLICY_TYPE_ATTR_MAX_VALUE_U,
+  NL_POLICY_TYPE_ATTR_MIN_LENGTH,
+  NL_POLICY_TYPE_ATTR_MAX_LENGTH,
+  NL_POLICY_TYPE_ATTR_POLICY_IDX,
+  NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE,
+  NL_POLICY_TYPE_ATTR_BITFIELD32_MASK,
+  NL_POLICY_TYPE_ATTR_PAD,
+  NL_POLICY_TYPE_ATTR_MASK,
+  __NL_POLICY_TYPE_ATTR_MAX,
+  NL_POLICY_TYPE_ATTR_MAX = __NL_POLICY_TYPE_ATTR_MAX - 1
+};
+#endif
diff --git a/i686-linux-musl/include/linux/netlink_diag.h b/i686-linux-musl/include/linux/netlink_diag.h
new file mode 100644
index 0000000..afe1521
--- /dev/null
+++ b/i686-linux-musl/include/linux/netlink_diag.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __NETLINK_DIAG_H__
+#define __NETLINK_DIAG_H__
+#include <linux/types.h>
+struct netlink_diag_req {
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
+  __u16 pad;
+  __u32 ndiag_ino;
+  __u32 ndiag_show;
+  __u32 ndiag_cookie[2];
+};
+struct netlink_diag_msg {
+  __u8 ndiag_family;
+  __u8 ndiag_type;
+  __u8 ndiag_protocol;
+  __u8 ndiag_state;
+  __u32 ndiag_portid;
+  __u32 ndiag_dst_portid;
+  __u32 ndiag_dst_group;
+  __u32 ndiag_ino;
+  __u32 ndiag_cookie[2];
+};
+struct netlink_diag_ring {
+  __u32 ndr_block_size;
+  __u32 ndr_block_nr;
+  __u32 ndr_frame_size;
+  __u32 ndr_frame_nr;
+};
+enum {
+  NETLINK_DIAG_MEMINFO,
+  NETLINK_DIAG_GROUPS,
+  NETLINK_DIAG_RX_RING,
+  NETLINK_DIAG_TX_RING,
+  NETLINK_DIAG_FLAGS,
+  __NETLINK_DIAG_MAX,
+};
+#define NETLINK_DIAG_MAX (__NETLINK_DIAG_MAX - 1)
+#define NDIAG_PROTO_ALL ((__u8) ~0)
+#define NDIAG_SHOW_MEMINFO 0x00000001
+#define NDIAG_SHOW_GROUPS 0x00000002
+#define NDIAG_SHOW_RING_CFG 0x00000004
+#define NDIAG_SHOW_FLAGS 0x00000008
+#define NDIAG_FLAG_CB_RUNNING 0x00000001
+#define NDIAG_FLAG_PKTINFO 0x00000002
+#define NDIAG_FLAG_BROADCAST_ERROR 0x00000004
+#define NDIAG_FLAG_NO_ENOBUFS 0x00000008
+#define NDIAG_FLAG_LISTEN_ALL_NSID 0x00000010
+#define NDIAG_FLAG_CAP_ACK 0x00000020
+#endif
diff --git a/i686-linux-musl/include/linux/netrom.h b/i686-linux-musl/include/linux/netrom.h
new file mode 100644
index 0000000..917b850
--- /dev/null
+++ b/i686-linux-musl/include/linux/netrom.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef NETROM_KERNEL_H
+#define NETROM_KERNEL_H
+#include <linux/ax25.h>
+#define NETROM_MTU 236
+#define NETROM_T1 1
+#define NETROM_T2 2
+#define NETROM_N2 3
+#define NETROM_T4 6
+#define NETROM_IDLE 7
+#define SIOCNRDECOBS (SIOCPROTOPRIVATE + 2)
+struct nr_route_struct {
+#define NETROM_NEIGH 0
+#define NETROM_NODE 1
+  int type;
+  ax25_address callsign;
+  char device[16];
+  unsigned int quality;
+  char mnemonic[7];
+  ax25_address neighbour;
+  unsigned int obs_count;
+  unsigned int ndigis;
+  ax25_address digipeaters[AX25_MAX_DIGIS];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/nexthop.h b/i686-linux-musl/include/linux/nexthop.h
new file mode 100644
index 0000000..4bc9ff0
--- /dev/null
+++ b/i686-linux-musl/include/linux/nexthop.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_NEXTHOP_H
+#define _UAPI_LINUX_NEXTHOP_H
+#include <linux/types.h>
+struct nhmsg {
+  unsigned char nh_family;
+  unsigned char nh_scope;
+  unsigned char nh_protocol;
+  unsigned char resvd;
+  unsigned int nh_flags;
+};
+struct nexthop_grp {
+  __u32 id;
+  __u8 weight;
+  __u8 resvd1;
+  __u16 resvd2;
+};
+enum {
+  NEXTHOP_GRP_TYPE_MPATH,
+  NEXTHOP_GRP_TYPE_RES,
+  __NEXTHOP_GRP_TYPE_MAX,
+};
+#define NEXTHOP_GRP_TYPE_MAX (__NEXTHOP_GRP_TYPE_MAX - 1)
+enum {
+  NHA_UNSPEC,
+  NHA_ID,
+  NHA_GROUP,
+  NHA_GROUP_TYPE,
+  NHA_BLACKHOLE,
+  NHA_OIF,
+  NHA_GATEWAY,
+  NHA_ENCAP_TYPE,
+  NHA_ENCAP,
+  NHA_GROUPS,
+  NHA_MASTER,
+  NHA_FDB,
+  NHA_RES_GROUP,
+  NHA_RES_BUCKET,
+  __NHA_MAX,
+};
+#define NHA_MAX (__NHA_MAX - 1)
+enum {
+  NHA_RES_GROUP_UNSPEC,
+  NHA_RES_GROUP_PAD = NHA_RES_GROUP_UNSPEC,
+  NHA_RES_GROUP_BUCKETS,
+  NHA_RES_GROUP_IDLE_TIMER,
+  NHA_RES_GROUP_UNBALANCED_TIMER,
+  NHA_RES_GROUP_UNBALANCED_TIME,
+  __NHA_RES_GROUP_MAX,
+};
+#define NHA_RES_GROUP_MAX (__NHA_RES_GROUP_MAX - 1)
+enum {
+  NHA_RES_BUCKET_UNSPEC,
+  NHA_RES_BUCKET_PAD = NHA_RES_BUCKET_UNSPEC,
+  NHA_RES_BUCKET_INDEX,
+  NHA_RES_BUCKET_IDLE_TIME,
+  NHA_RES_BUCKET_NH_ID,
+  __NHA_RES_BUCKET_MAX,
+};
+#define NHA_RES_BUCKET_MAX (__NHA_RES_BUCKET_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/nfc.h b/i686-linux-musl/include/linux/nfc.h
new file mode 100644
index 0000000..ff980f4
--- /dev/null
+++ b/i686-linux-musl/include/linux/nfc.h
@@ -0,0 +1,176 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_NFC_H
+#define __LINUX_NFC_H
+#include <linux/types.h>
+#include <linux/socket.h>
+#define NFC_GENL_NAME "nfc"
+#define NFC_GENL_VERSION 1
+#define NFC_GENL_MCAST_EVENT_NAME "events"
+enum nfc_commands {
+  NFC_CMD_UNSPEC,
+  NFC_CMD_GET_DEVICE,
+  NFC_CMD_DEV_UP,
+  NFC_CMD_DEV_DOWN,
+  NFC_CMD_DEP_LINK_UP,
+  NFC_CMD_DEP_LINK_DOWN,
+  NFC_CMD_START_POLL,
+  NFC_CMD_STOP_POLL,
+  NFC_CMD_GET_TARGET,
+  NFC_EVENT_TARGETS_FOUND,
+  NFC_EVENT_DEVICE_ADDED,
+  NFC_EVENT_DEVICE_REMOVED,
+  NFC_EVENT_TARGET_LOST,
+  NFC_EVENT_TM_ACTIVATED,
+  NFC_EVENT_TM_DEACTIVATED,
+  NFC_CMD_LLC_GET_PARAMS,
+  NFC_CMD_LLC_SET_PARAMS,
+  NFC_CMD_ENABLE_SE,
+  NFC_CMD_DISABLE_SE,
+  NFC_CMD_LLC_SDREQ,
+  NFC_EVENT_LLC_SDRES,
+  NFC_CMD_FW_DOWNLOAD,
+  NFC_EVENT_SE_ADDED,
+  NFC_EVENT_SE_REMOVED,
+  NFC_EVENT_SE_CONNECTIVITY,
+  NFC_EVENT_SE_TRANSACTION,
+  NFC_CMD_GET_SE,
+  NFC_CMD_SE_IO,
+  NFC_CMD_ACTIVATE_TARGET,
+  NFC_CMD_VENDOR,
+  NFC_CMD_DEACTIVATE_TARGET,
+  __NFC_CMD_AFTER_LAST
+};
+#define NFC_CMD_MAX (__NFC_CMD_AFTER_LAST - 1)
+enum nfc_attrs {
+  NFC_ATTR_UNSPEC,
+  NFC_ATTR_DEVICE_INDEX,
+  NFC_ATTR_DEVICE_NAME,
+  NFC_ATTR_PROTOCOLS,
+  NFC_ATTR_TARGET_INDEX,
+  NFC_ATTR_TARGET_SENS_RES,
+  NFC_ATTR_TARGET_SEL_RES,
+  NFC_ATTR_TARGET_NFCID1,
+  NFC_ATTR_TARGET_SENSB_RES,
+  NFC_ATTR_TARGET_SENSF_RES,
+  NFC_ATTR_COMM_MODE,
+  NFC_ATTR_RF_MODE,
+  NFC_ATTR_DEVICE_POWERED,
+  NFC_ATTR_IM_PROTOCOLS,
+  NFC_ATTR_TM_PROTOCOLS,
+  NFC_ATTR_LLC_PARAM_LTO,
+  NFC_ATTR_LLC_PARAM_RW,
+  NFC_ATTR_LLC_PARAM_MIUX,
+  NFC_ATTR_SE,
+  NFC_ATTR_LLC_SDP,
+  NFC_ATTR_FIRMWARE_NAME,
+  NFC_ATTR_SE_INDEX,
+  NFC_ATTR_SE_TYPE,
+  NFC_ATTR_SE_AID,
+  NFC_ATTR_FIRMWARE_DOWNLOAD_STATUS,
+  NFC_ATTR_SE_APDU,
+  NFC_ATTR_TARGET_ISO15693_DSFID,
+  NFC_ATTR_TARGET_ISO15693_UID,
+  NFC_ATTR_SE_PARAMS,
+  NFC_ATTR_VENDOR_ID,
+  NFC_ATTR_VENDOR_SUBCMD,
+  NFC_ATTR_VENDOR_DATA,
+  __NFC_ATTR_AFTER_LAST
+};
+#define NFC_ATTR_MAX (__NFC_ATTR_AFTER_LAST - 1)
+enum nfc_sdp_attr {
+  NFC_SDP_ATTR_UNSPEC,
+  NFC_SDP_ATTR_URI,
+  NFC_SDP_ATTR_SAP,
+  __NFC_SDP_ATTR_AFTER_LAST
+};
+#define NFC_SDP_ATTR_MAX (__NFC_SDP_ATTR_AFTER_LAST - 1)
+#define NFC_DEVICE_NAME_MAXSIZE 8
+#define NFC_NFCID1_MAXSIZE 10
+#define NFC_NFCID2_MAXSIZE 8
+#define NFC_NFCID3_MAXSIZE 10
+#define NFC_SENSB_RES_MAXSIZE 12
+#define NFC_SENSF_RES_MAXSIZE 18
+#define NFC_ATR_REQ_MAXSIZE 64
+#define NFC_ATR_RES_MAXSIZE 64
+#define NFC_ATR_REQ_GB_MAXSIZE 48
+#define NFC_ATR_RES_GB_MAXSIZE 47
+#define NFC_GB_MAXSIZE 48
+#define NFC_FIRMWARE_NAME_MAXSIZE 32
+#define NFC_ISO15693_UID_MAXSIZE 8
+#define NFC_PROTO_JEWEL 1
+#define NFC_PROTO_MIFARE 2
+#define NFC_PROTO_FELICA 3
+#define NFC_PROTO_ISO14443 4
+#define NFC_PROTO_NFC_DEP 5
+#define NFC_PROTO_ISO14443_B 6
+#define NFC_PROTO_ISO15693 7
+#define NFC_PROTO_MAX 8
+#define NFC_COMM_ACTIVE 0
+#define NFC_COMM_PASSIVE 1
+#define NFC_RF_INITIATOR 0
+#define NFC_RF_TARGET 1
+#define NFC_RF_NONE 2
+#define NFC_PROTO_JEWEL_MASK (1 << NFC_PROTO_JEWEL)
+#define NFC_PROTO_MIFARE_MASK (1 << NFC_PROTO_MIFARE)
+#define NFC_PROTO_FELICA_MASK (1 << NFC_PROTO_FELICA)
+#define NFC_PROTO_ISO14443_MASK (1 << NFC_PROTO_ISO14443)
+#define NFC_PROTO_NFC_DEP_MASK (1 << NFC_PROTO_NFC_DEP)
+#define NFC_PROTO_ISO14443_B_MASK (1 << NFC_PROTO_ISO14443_B)
+#define NFC_PROTO_ISO15693_MASK (1 << NFC_PROTO_ISO15693)
+#define NFC_SE_UICC 0x1
+#define NFC_SE_EMBEDDED 0x2
+#define NFC_SE_DISABLED 0x0
+#define NFC_SE_ENABLED 0x1
+struct sockaddr_nfc {
+  __kernel_sa_family_t sa_family;
+  __u32 dev_idx;
+  __u32 target_idx;
+  __u32 nfc_protocol;
+};
+#define NFC_LLCP_MAX_SERVICE_NAME 63
+struct sockaddr_nfc_llcp {
+  __kernel_sa_family_t sa_family;
+  __u32 dev_idx;
+  __u32 target_idx;
+  __u32 nfc_protocol;
+  __u8 dsap;
+  __u8 ssap;
+  char service_name[NFC_LLCP_MAX_SERVICE_NAME];
+;
+  __kernel_size_t service_name_len;
+};
+#define NFC_SOCKPROTO_RAW 0
+#define NFC_SOCKPROTO_LLCP 1
+#define NFC_SOCKPROTO_MAX 2
+#define NFC_HEADER_SIZE 1
+#define NFC_RAW_HEADER_SIZE 2
+#define NFC_DIRECTION_RX 0x00
+#define NFC_DIRECTION_TX 0x01
+#define RAW_PAYLOAD_LLCP 0
+#define RAW_PAYLOAD_NCI 1
+#define RAW_PAYLOAD_HCI 2
+#define RAW_PAYLOAD_DIGITAL 3
+#define RAW_PAYLOAD_PROPRIETARY 4
+#define NFC_LLCP_RW 0
+#define NFC_LLCP_MIUX 1
+#define NFC_LLCP_REMOTE_MIU 2
+#define NFC_LLCP_REMOTE_LTO 3
+#define NFC_LLCP_REMOTE_RW 4
+#endif
diff --git a/i686-linux-musl/include/linux/nfs.h b/i686-linux-musl/include/linux/nfs.h
new file mode 100644
index 0000000..e8c0499
--- /dev/null
+++ b/i686-linux-musl/include/linux/nfs.h
@@ -0,0 +1,129 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_NFS_H
+#define _UAPI_LINUX_NFS_H
+#include <linux/types.h>
+#define NFS_PROGRAM 100003
+#define NFS_PORT 2049
+#define NFS_RDMA_PORT 20049
+#define NFS_MAXDATA 8192
+#define NFS_MAXPATHLEN 1024
+#define NFS_MAXNAMLEN 255
+#define NFS_MAXGROUPS 16
+#define NFS_FHSIZE 32
+#define NFS_COOKIESIZE 4
+#define NFS_FIFO_DEV (- 1)
+#define NFSMODE_FMT 0170000
+#define NFSMODE_DIR 0040000
+#define NFSMODE_CHR 0020000
+#define NFSMODE_BLK 0060000
+#define NFSMODE_REG 0100000
+#define NFSMODE_LNK 0120000
+#define NFSMODE_SOCK 0140000
+#define NFSMODE_FIFO 0010000
+#define NFS_MNT_PROGRAM 100005
+#define NFS_MNT_VERSION 1
+#define NFS_MNT3_VERSION 3
+#define NFS_PIPE_DIRNAME "nfs"
+enum nfs_stat {
+  NFS_OK = 0,
+  NFSERR_PERM = 1,
+  NFSERR_NOENT = 2,
+  NFSERR_IO = 5,
+  NFSERR_NXIO = 6,
+  NFSERR_EAGAIN = 11,
+  NFSERR_ACCES = 13,
+  NFSERR_EXIST = 17,
+  NFSERR_XDEV = 18,
+  NFSERR_NODEV = 19,
+  NFSERR_NOTDIR = 20,
+  NFSERR_ISDIR = 21,
+  NFSERR_INVAL = 22,
+  NFSERR_FBIG = 27,
+  NFSERR_NOSPC = 28,
+  NFSERR_ROFS = 30,
+  NFSERR_MLINK = 31,
+  NFSERR_OPNOTSUPP = 45,
+  NFSERR_NAMETOOLONG = 63,
+  NFSERR_NOTEMPTY = 66,
+  NFSERR_DQUOT = 69,
+  NFSERR_STALE = 70,
+  NFSERR_REMOTE = 71,
+  NFSERR_WFLUSH = 99,
+  NFSERR_BADHANDLE = 10001,
+  NFSERR_NOT_SYNC = 10002,
+  NFSERR_BAD_COOKIE = 10003,
+  NFSERR_NOTSUPP = 10004,
+  NFSERR_TOOSMALL = 10005,
+  NFSERR_SERVERFAULT = 10006,
+  NFSERR_BADTYPE = 10007,
+  NFSERR_JUKEBOX = 10008,
+  NFSERR_SAME = 10009,
+  NFSERR_DENIED = 10010,
+  NFSERR_EXPIRED = 10011,
+  NFSERR_LOCKED = 10012,
+  NFSERR_GRACE = 10013,
+  NFSERR_FHEXPIRED = 10014,
+  NFSERR_SHARE_DENIED = 10015,
+  NFSERR_WRONGSEC = 10016,
+  NFSERR_CLID_INUSE = 10017,
+  NFSERR_RESOURCE = 10018,
+  NFSERR_MOVED = 10019,
+  NFSERR_NOFILEHANDLE = 10020,
+  NFSERR_MINOR_VERS_MISMATCH = 10021,
+  NFSERR_STALE_CLIENTID = 10022,
+  NFSERR_STALE_STATEID = 10023,
+  NFSERR_OLD_STATEID = 10024,
+  NFSERR_BAD_STATEID = 10025,
+  NFSERR_BAD_SEQID = 10026,
+  NFSERR_NOT_SAME = 10027,
+  NFSERR_LOCK_RANGE = 10028,
+  NFSERR_SYMLINK = 10029,
+  NFSERR_RESTOREFH = 10030,
+  NFSERR_LEASE_MOVED = 10031,
+  NFSERR_ATTRNOTSUPP = 10032,
+  NFSERR_NO_GRACE = 10033,
+  NFSERR_RECLAIM_BAD = 10034,
+  NFSERR_RECLAIM_CONFLICT = 10035,
+  NFSERR_BAD_XDR = 10036,
+  NFSERR_LOCKS_HELD = 10037,
+  NFSERR_OPENMODE = 10038,
+  NFSERR_BADOWNER = 10039,
+  NFSERR_BADCHAR = 10040,
+  NFSERR_BADNAME = 10041,
+  NFSERR_BAD_RANGE = 10042,
+  NFSERR_LOCK_NOTSUPP = 10043,
+  NFSERR_OP_ILLEGAL = 10044,
+  NFSERR_DEADLOCK = 10045,
+  NFSERR_FILE_OPEN = 10046,
+  NFSERR_ADMIN_REVOKED = 10047,
+  NFSERR_CB_PATH_DOWN = 10048,
+};
+enum nfs_ftype {
+  NFNON = 0,
+  NFREG = 1,
+  NFDIR = 2,
+  NFBLK = 3,
+  NFCHR = 4,
+  NFLNK = 5,
+  NFSOCK = 6,
+  NFBAD = 7,
+  NFFIFO = 8
+};
+#endif
diff --git a/i686-linux-musl/include/linux/nfs2.h b/i686-linux-musl/include/linux/nfs2.h
new file mode 100644
index 0000000..4cbca12
--- /dev/null
+++ b/i686-linux-musl/include/linux/nfs2.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_NFS2_H
+#define _LINUX_NFS2_H
+#define NFS2_PORT 2049
+#define NFS2_MAXDATA 8192
+#define NFS2_MAXPATHLEN 1024
+#define NFS2_MAXNAMLEN 255
+#define NFS2_MAXGROUPS 16
+#define NFS2_FHSIZE 32
+#define NFS2_COOKIESIZE 4
+#define NFS2_FIFO_DEV (- 1)
+#define NFS2MODE_FMT 0170000
+#define NFS2MODE_DIR 0040000
+#define NFS2MODE_CHR 0020000
+#define NFS2MODE_BLK 0060000
+#define NFS2MODE_REG 0100000
+#define NFS2MODE_LNK 0120000
+#define NFS2MODE_SOCK 0140000
+#define NFS2MODE_FIFO 0010000
+enum nfs2_ftype {
+  NF2NON = 0,
+  NF2REG = 1,
+  NF2DIR = 2,
+  NF2BLK = 3,
+  NF2CHR = 4,
+  NF2LNK = 5,
+  NF2SOCK = 6,
+  NF2BAD = 7,
+  NF2FIFO = 8
+};
+struct nfs2_fh {
+  char data[NFS2_FHSIZE];
+};
+#define NFS2_VERSION 2
+#define NFSPROC_NULL 0
+#define NFSPROC_GETATTR 1
+#define NFSPROC_SETATTR 2
+#define NFSPROC_ROOT 3
+#define NFSPROC_LOOKUP 4
+#define NFSPROC_READLINK 5
+#define NFSPROC_READ 6
+#define NFSPROC_WRITECACHE 7
+#define NFSPROC_WRITE 8
+#define NFSPROC_CREATE 9
+#define NFSPROC_REMOVE 10
+#define NFSPROC_RENAME 11
+#define NFSPROC_LINK 12
+#define NFSPROC_SYMLINK 13
+#define NFSPROC_MKDIR 14
+#define NFSPROC_RMDIR 15
+#define NFSPROC_READDIR 16
+#define NFSPROC_STATFS 17
+#endif
diff --git a/i686-linux-musl/include/linux/nfs3.h b/i686-linux-musl/include/linux/nfs3.h
new file mode 100644
index 0000000..af0d668
--- /dev/null
+++ b/i686-linux-musl/include/linux/nfs3.h
@@ -0,0 +1,103 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_NFS3_H
+#define _UAPI_LINUX_NFS3_H
+#define NFS3_PORT 2049
+#define NFS3_MAXDATA 32768
+#define NFS3_MAXPATHLEN PATH_MAX
+#define NFS3_MAXNAMLEN NAME_MAX
+#define NFS3_MAXGROUPS 16
+#define NFS3_FHSIZE 64
+#define NFS3_COOKIESIZE 4
+#define NFS3_CREATEVERFSIZE 8
+#define NFS3_COOKIEVERFSIZE 8
+#define NFS3_WRITEVERFSIZE 8
+#define NFS3_FIFO_DEV (- 1)
+#define NFS3MODE_FMT 0170000
+#define NFS3MODE_DIR 0040000
+#define NFS3MODE_CHR 0020000
+#define NFS3MODE_BLK 0060000
+#define NFS3MODE_REG 0100000
+#define NFS3MODE_LNK 0120000
+#define NFS3MODE_SOCK 0140000
+#define NFS3MODE_FIFO 0010000
+#define NFS3_ACCESS_READ 0x0001
+#define NFS3_ACCESS_LOOKUP 0x0002
+#define NFS3_ACCESS_MODIFY 0x0004
+#define NFS3_ACCESS_EXTEND 0x0008
+#define NFS3_ACCESS_DELETE 0x0010
+#define NFS3_ACCESS_EXECUTE 0x0020
+#define NFS3_ACCESS_FULL 0x003f
+enum nfs3_createmode {
+  NFS3_CREATE_UNCHECKED = 0,
+  NFS3_CREATE_GUARDED = 1,
+  NFS3_CREATE_EXCLUSIVE = 2
+};
+#define NFS3_FSF_LINK 0x0001
+#define NFS3_FSF_SYMLINK 0x0002
+#define NFS3_FSF_HOMOGENEOUS 0x0008
+#define NFS3_FSF_CANSETTIME 0x0010
+#define NFS3_FSF_DEFAULT 0x001B
+#define NFS3_FSF_BILLYBOY 0x0018
+#define NFS3_FSF_READONLY 0x0008
+enum nfs3_ftype {
+  NF3NON = 0,
+  NF3REG = 1,
+  NF3DIR = 2,
+  NF3BLK = 3,
+  NF3CHR = 4,
+  NF3LNK = 5,
+  NF3SOCK = 6,
+  NF3FIFO = 7,
+  NF3BAD = 8
+};
+enum nfs3_time_how {
+  DONT_CHANGE = 0,
+  SET_TO_SERVER_TIME = 1,
+  SET_TO_CLIENT_TIME = 2,
+};
+struct nfs3_fh {
+  unsigned short size;
+  unsigned char data[NFS3_FHSIZE];
+};
+#define NFS3_VERSION 3
+#define NFS3PROC_NULL 0
+#define NFS3PROC_GETATTR 1
+#define NFS3PROC_SETATTR 2
+#define NFS3PROC_LOOKUP 3
+#define NFS3PROC_ACCESS 4
+#define NFS3PROC_READLINK 5
+#define NFS3PROC_READ 6
+#define NFS3PROC_WRITE 7
+#define NFS3PROC_CREATE 8
+#define NFS3PROC_MKDIR 9
+#define NFS3PROC_SYMLINK 10
+#define NFS3PROC_MKNOD 11
+#define NFS3PROC_REMOVE 12
+#define NFS3PROC_RMDIR 13
+#define NFS3PROC_RENAME 14
+#define NFS3PROC_LINK 15
+#define NFS3PROC_READDIR 16
+#define NFS3PROC_READDIRPLUS 17
+#define NFS3PROC_FSSTAT 18
+#define NFS3PROC_FSINFO 19
+#define NFS3PROC_PATHCONF 20
+#define NFS3PROC_COMMIT 21
+#define NFS_MNT3_VERSION 3
+#endif
diff --git a/i686-linux-musl/include/linux/nfs4.h b/i686-linux-musl/include/linux/nfs4.h
new file mode 100644
index 0000000..9d614ce
--- /dev/null
+++ b/i686-linux-musl/include/linux/nfs4.h
@@ -0,0 +1,147 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_NFS4_H
+#define _UAPI_LINUX_NFS4_H
+#include <linux/types.h>
+#define NFS4_BITMAP_SIZE 3
+#define NFS4_VERIFIER_SIZE 8
+#define NFS4_STATEID_SEQID_SIZE 4
+#define NFS4_STATEID_OTHER_SIZE 12
+#define NFS4_STATEID_SIZE (NFS4_STATEID_SEQID_SIZE + NFS4_STATEID_OTHER_SIZE)
+#define NFS4_FHSIZE 128
+#define NFS4_MAXPATHLEN PATH_MAX
+#define NFS4_MAXNAMLEN NAME_MAX
+#define NFS4_OPAQUE_LIMIT 1024
+#define NFS4_MAX_SESSIONID_LEN 16
+#define NFS4_ACCESS_READ 0x0001
+#define NFS4_ACCESS_LOOKUP 0x0002
+#define NFS4_ACCESS_MODIFY 0x0004
+#define NFS4_ACCESS_EXTEND 0x0008
+#define NFS4_ACCESS_DELETE 0x0010
+#define NFS4_ACCESS_EXECUTE 0x0020
+#define NFS4_ACCESS_XAREAD 0x0040
+#define NFS4_ACCESS_XAWRITE 0x0080
+#define NFS4_ACCESS_XALIST 0x0100
+#define NFS4_FH_PERSISTENT 0x0000
+#define NFS4_FH_NOEXPIRE_WITH_OPEN 0x0001
+#define NFS4_FH_VOLATILE_ANY 0x0002
+#define NFS4_FH_VOL_MIGRATION 0x0004
+#define NFS4_FH_VOL_RENAME 0x0008
+#define NFS4_OPEN_RESULT_CONFIRM 0x0002
+#define NFS4_OPEN_RESULT_LOCKTYPE_POSIX 0x0004
+#define NFS4_OPEN_RESULT_MAY_NOTIFY_LOCK 0x0020
+#define NFS4_SHARE_ACCESS_MASK 0x000F
+#define NFS4_SHARE_ACCESS_READ 0x0001
+#define NFS4_SHARE_ACCESS_WRITE 0x0002
+#define NFS4_SHARE_ACCESS_BOTH 0x0003
+#define NFS4_SHARE_DENY_READ 0x0001
+#define NFS4_SHARE_DENY_WRITE 0x0002
+#define NFS4_SHARE_DENY_BOTH 0x0003
+#define NFS4_SHARE_WANT_MASK 0xFF00
+#define NFS4_SHARE_WANT_NO_PREFERENCE 0x0000
+#define NFS4_SHARE_WANT_READ_DELEG 0x0100
+#define NFS4_SHARE_WANT_WRITE_DELEG 0x0200
+#define NFS4_SHARE_WANT_ANY_DELEG 0x0300
+#define NFS4_SHARE_WANT_NO_DELEG 0x0400
+#define NFS4_SHARE_WANT_CANCEL 0x0500
+#define NFS4_SHARE_WHEN_MASK 0xF0000
+#define NFS4_SHARE_SIGNAL_DELEG_WHEN_RESRC_AVAIL 0x10000
+#define NFS4_SHARE_PUSH_DELEG_WHEN_UNCONTENDED 0x20000
+#define NFS4_CDFC4_FORE 0x1
+#define NFS4_CDFC4_BACK 0x2
+#define NFS4_CDFC4_BOTH 0x3
+#define NFS4_CDFC4_FORE_OR_BOTH 0x3
+#define NFS4_CDFC4_BACK_OR_BOTH 0x7
+#define NFS4_CDFS4_FORE 0x1
+#define NFS4_CDFS4_BACK 0x2
+#define NFS4_CDFS4_BOTH 0x3
+#define NFS4_SET_TO_SERVER_TIME 0
+#define NFS4_SET_TO_CLIENT_TIME 1
+#define NFS4_ACE_ACCESS_ALLOWED_ACE_TYPE 0
+#define NFS4_ACE_ACCESS_DENIED_ACE_TYPE 1
+#define NFS4_ACE_SYSTEM_AUDIT_ACE_TYPE 2
+#define NFS4_ACE_SYSTEM_ALARM_ACE_TYPE 3
+#define ACL4_SUPPORT_ALLOW_ACL 0x01
+#define ACL4_SUPPORT_DENY_ACL 0x02
+#define ACL4_SUPPORT_AUDIT_ACL 0x04
+#define ACL4_SUPPORT_ALARM_ACL 0x08
+#define NFS4_ACL_AUTO_INHERIT 0x00000001
+#define NFS4_ACL_PROTECTED 0x00000002
+#define NFS4_ACL_DEFAULTED 0x00000004
+#define NFS4_ACE_FILE_INHERIT_ACE 0x00000001
+#define NFS4_ACE_DIRECTORY_INHERIT_ACE 0x00000002
+#define NFS4_ACE_NO_PROPAGATE_INHERIT_ACE 0x00000004
+#define NFS4_ACE_INHERIT_ONLY_ACE 0x00000008
+#define NFS4_ACE_SUCCESSFUL_ACCESS_ACE_FLAG 0x00000010
+#define NFS4_ACE_FAILED_ACCESS_ACE_FLAG 0x00000020
+#define NFS4_ACE_IDENTIFIER_GROUP 0x00000040
+#define NFS4_ACE_INHERITED_ACE 0x00000080
+#define NFS4_ACE_READ_DATA 0x00000001
+#define NFS4_ACE_LIST_DIRECTORY 0x00000001
+#define NFS4_ACE_WRITE_DATA 0x00000002
+#define NFS4_ACE_ADD_FILE 0x00000002
+#define NFS4_ACE_APPEND_DATA 0x00000004
+#define NFS4_ACE_ADD_SUBDIRECTORY 0x00000004
+#define NFS4_ACE_READ_NAMED_ATTRS 0x00000008
+#define NFS4_ACE_WRITE_NAMED_ATTRS 0x00000010
+#define NFS4_ACE_EXECUTE 0x00000020
+#define NFS4_ACE_DELETE_CHILD 0x00000040
+#define NFS4_ACE_READ_ATTRIBUTES 0x00000080
+#define NFS4_ACE_WRITE_ATTRIBUTES 0x00000100
+#define NFS4_ACE_WRITE_RETENTION 0x00000200
+#define NFS4_ACE_WRITE_RETENTION_HOLD 0x00000400
+#define NFS4_ACE_DELETE 0x00010000
+#define NFS4_ACE_READ_ACL 0x00020000
+#define NFS4_ACE_WRITE_ACL 0x00040000
+#define NFS4_ACE_WRITE_OWNER 0x00080000
+#define NFS4_ACE_SYNCHRONIZE 0x00100000
+#define NFS4_ACE_GENERIC_READ 0x00120081
+#define NFS4_ACE_GENERIC_WRITE 0x00160106
+#define NFS4_ACE_GENERIC_EXECUTE 0x001200A0
+#define NFS4_ACE_MASK_ALL 0x001F01FF
+#define EXCHGID4_FLAG_SUPP_MOVED_REFER 0x00000001
+#define EXCHGID4_FLAG_SUPP_MOVED_MIGR 0x00000002
+#define EXCHGID4_FLAG_BIND_PRINC_STATEID 0x00000100
+#define EXCHGID4_FLAG_USE_NON_PNFS 0x00010000
+#define EXCHGID4_FLAG_USE_PNFS_MDS 0x00020000
+#define EXCHGID4_FLAG_USE_PNFS_DS 0x00040000
+#define EXCHGID4_FLAG_MASK_PNFS 0x00070000
+#define EXCHGID4_FLAG_UPD_CONFIRMED_REC_A 0x40000000
+#define EXCHGID4_FLAG_CONFIRMED_R 0x80000000
+#define EXCHGID4_FLAG_SUPP_FENCE_OPS 0x00000004
+#define EXCHGID4_FLAG_MASK_A 0x40070103
+#define EXCHGID4_FLAG_MASK_R 0x80070103
+#define EXCHGID4_2_FLAG_MASK_R 0x80070107
+#define SEQ4_STATUS_CB_PATH_DOWN 0x00000001
+#define SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRING 0x00000002
+#define SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRED 0x00000004
+#define SEQ4_STATUS_EXPIRED_ALL_STATE_REVOKED 0x00000008
+#define SEQ4_STATUS_EXPIRED_SOME_STATE_REVOKED 0x00000010
+#define SEQ4_STATUS_ADMIN_STATE_REVOKED 0x00000020
+#define SEQ4_STATUS_RECALLABLE_STATE_REVOKED 0x00000040
+#define SEQ4_STATUS_LEASE_MOVED 0x00000080
+#define SEQ4_STATUS_RESTART_RECLAIM_NEEDED 0x00000100
+#define SEQ4_STATUS_CB_PATH_DOWN_SESSION 0x00000200
+#define SEQ4_STATUS_BACKCHANNEL_FAULT 0x00000400
+#define NFS4_SECINFO_STYLE4_CURRENT_FH 0
+#define NFS4_SECINFO_STYLE4_PARENT 1
+#define NFS4_MAX_UINT64 (~(__u64) 0)
+#define NFS4_MAX_OPS 8
+#define NFS4_MAX_BACK_CHANNEL_OPS 2
+#endif
diff --git a/i686-linux-musl/include/linux/nfs4_mount.h b/i686-linux-musl/include/linux/nfs4_mount.h
new file mode 100644
index 0000000..0f794dd
--- /dev/null
+++ b/i686-linux-musl/include/linux/nfs4_mount.h
@@ -0,0 +1,53 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_NFS4_MOUNT_H
+#define _LINUX_NFS4_MOUNT_H
+#define NFS4_MOUNT_VERSION 1
+struct nfs_string {
+  unsigned int len;
+  const char __user * data;
+};
+struct nfs4_mount_data {
+  int version;
+  int flags;
+  int rsize;
+  int wsize;
+  int timeo;
+  int retrans;
+  int acregmin;
+  int acregmax;
+  int acdirmin;
+  int acdirmax;
+  struct nfs_string client_addr;
+  struct nfs_string mnt_path;
+  struct nfs_string hostname;
+  unsigned int host_addrlen;
+  struct sockaddr __user * host_addr;
+  int proto;
+  int auth_flavourlen;
+  int __user * auth_flavours;
+};
+#define NFS4_MOUNT_SOFT 0x0001
+#define NFS4_MOUNT_INTR 0x0002
+#define NFS4_MOUNT_NOCTO 0x0010
+#define NFS4_MOUNT_NOAC 0x0020
+#define NFS4_MOUNT_STRICTLOCK 0x1000
+#define NFS4_MOUNT_UNSHARED 0x8000
+#define NFS4_MOUNT_FLAGMASK 0x9033
+#endif
diff --git a/i686-linux-musl/include/linux/nfs_fs.h b/i686-linux-musl/include/linux/nfs_fs.h
new file mode 100644
index 0000000..f8228ec
--- /dev/null
+++ b/i686-linux-musl/include/linux/nfs_fs.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_NFS_FS_H
+#define _UAPI_LINUX_NFS_FS_H
+#include <linux/magic.h>
+#define NFS_DEF_UDP_TIMEO (11)
+#define NFS_DEF_UDP_RETRANS (3)
+#define NFS_DEF_TCP_TIMEO (600)
+#define NFS_DEF_TCP_RETRANS (2)
+#define NFS_MAX_UDP_TIMEOUT (60 * HZ)
+#define NFS_MAX_TCP_TIMEOUT (600 * HZ)
+#define NFS_DEF_ACREGMIN (3)
+#define NFS_DEF_ACREGMAX (60)
+#define NFS_DEF_ACDIRMIN (30)
+#define NFS_DEF_ACDIRMAX (60)
+#define FLUSH_SYNC 1
+#define FLUSH_STABLE 4
+#define FLUSH_LOWPRI 8
+#define FLUSH_HIGHPRI 16
+#define FLUSH_COND_STABLE 32
+#define NFSDBG_VFS 0x0001
+#define NFSDBG_DIRCACHE 0x0002
+#define NFSDBG_LOOKUPCACHE 0x0004
+#define NFSDBG_PAGECACHE 0x0008
+#define NFSDBG_PROC 0x0010
+#define NFSDBG_XDR 0x0020
+#define NFSDBG_FILE 0x0040
+#define NFSDBG_ROOT 0x0080
+#define NFSDBG_CALLBACK 0x0100
+#define NFSDBG_CLIENT 0x0200
+#define NFSDBG_MOUNT 0x0400
+#define NFSDBG_FSCACHE 0x0800
+#define NFSDBG_PNFS 0x1000
+#define NFSDBG_PNFS_LD 0x2000
+#define NFSDBG_STATE 0x4000
+#define NFSDBG_XATTRCACHE 0x8000
+#define NFSDBG_ALL 0xFFFF
+#endif
diff --git a/i686-linux-musl/include/linux/nfs_idmap.h b/i686-linux-musl/include/linux/nfs_idmap.h
new file mode 100644
index 0000000..6287cc6
--- /dev/null
+++ b/i686-linux-musl/include/linux/nfs_idmap.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPINFS_IDMAP_H
+#define _UAPINFS_IDMAP_H
+#include <linux/types.h>
+#define IDMAP_NAMESZ 128
+#define IDMAP_TYPE_USER 0
+#define IDMAP_TYPE_GROUP 1
+#define IDMAP_CONV_IDTONAME 0
+#define IDMAP_CONV_NAMETOID 1
+#define IDMAP_STATUS_INVALIDMSG 0x01
+#define IDMAP_STATUS_AGAIN 0x02
+#define IDMAP_STATUS_LOOKUPFAIL 0x04
+#define IDMAP_STATUS_SUCCESS 0x08
+struct idmap_msg {
+  __u8 im_type;
+  __u8 im_conv;
+  char im_name[IDMAP_NAMESZ];
+  __u32 im_id;
+  __u8 im_status;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/nfs_mount.h b/i686-linux-musl/include/linux/nfs_mount.h
new file mode 100644
index 0000000..5b00222
--- /dev/null
+++ b/i686-linux-musl/include/linux/nfs_mount.h
@@ -0,0 +1,65 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_NFS_MOUNT_H
+#define _LINUX_NFS_MOUNT_H
+#include <linux/in.h>
+#include <linux/nfs.h>
+#include <linux/nfs2.h>
+#include <linux/nfs3.h>
+#define NFS_MOUNT_VERSION 6
+#define NFS_MAX_CONTEXT_LEN 256
+struct nfs_mount_data {
+  int version;
+  int fd;
+  struct nfs2_fh old_root;
+  int flags;
+  int rsize;
+  int wsize;
+  int timeo;
+  int retrans;
+  int acregmin;
+  int acregmax;
+  int acdirmin;
+  int acdirmax;
+  struct sockaddr_in addr;
+  char hostname[NFS_MAXNAMLEN + 1];
+  int namlen;
+  unsigned int bsize;
+  struct nfs3_fh root;
+  int pseudoflavor;
+  char context[NFS_MAX_CONTEXT_LEN + 1];
+};
+#define NFS_MOUNT_SOFT 0x0001
+#define NFS_MOUNT_INTR 0x0002
+#define NFS_MOUNT_SECURE 0x0004
+#define NFS_MOUNT_POSIX 0x0008
+#define NFS_MOUNT_NOCTO 0x0010
+#define NFS_MOUNT_NOAC 0x0020
+#define NFS_MOUNT_TCP 0x0040
+#define NFS_MOUNT_VER3 0x0080
+#define NFS_MOUNT_KERBEROS 0x0100
+#define NFS_MOUNT_NONLM 0x0200
+#define NFS_MOUNT_BROKEN_SUID 0x0400
+#define NFS_MOUNT_NOACL 0x0800
+#define NFS_MOUNT_STRICTLOCK 0x1000
+#define NFS_MOUNT_SECFLAVOUR 0x2000
+#define NFS_MOUNT_NORDIRPLUS 0x4000
+#define NFS_MOUNT_UNSHARED 0x8000
+#define NFS_MOUNT_FLAGMASK 0xFFFF
+#endif
diff --git a/i686-linux-musl/include/linux/nfsacl.h b/i686-linux-musl/include/linux/nfsacl.h
new file mode 100644
index 0000000..65dccad
--- /dev/null
+++ b/i686-linux-musl/include/linux/nfsacl.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_NFSACL_H
+#define _UAPI__LINUX_NFSACL_H
+#define NFS_ACL_PROGRAM 100227
+#define ACLPROC2_NULL 0
+#define ACLPROC2_GETACL 1
+#define ACLPROC2_SETACL 2
+#define ACLPROC2_GETATTR 3
+#define ACLPROC2_ACCESS 4
+#define ACLPROC3_NULL 0
+#define ACLPROC3_GETACL 1
+#define ACLPROC3_SETACL 2
+#define NFS_ACL 0x0001
+#define NFS_ACLCNT 0x0002
+#define NFS_DFACL 0x0004
+#define NFS_DFACLCNT 0x0008
+#define NFS_ACL_MASK 0x000f
+#define NFS_ACL_DEFAULT 0x1000
+#endif
diff --git a/i686-linux-musl/include/linux/nfsd/cld.h b/i686-linux-musl/include/linux/nfsd/cld.h
new file mode 100644
index 0000000..92b89c0
--- /dev/null
+++ b/i686-linux-musl/include/linux/nfsd/cld.h
@@ -0,0 +1,75 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _NFSD_CLD_H
+#define _NFSD_CLD_H
+#include <linux/types.h>
+#define CLD_UPCALL_VERSION 2
+#define NFS4_OPAQUE_LIMIT 1024
+#ifndef SHA256_DIGEST_SIZE
+#define SHA256_DIGEST_SIZE 32
+#endif
+enum cld_command {
+  Cld_Create,
+  Cld_Remove,
+  Cld_Check,
+  Cld_GraceDone,
+  Cld_GraceStart,
+  Cld_GetVersion,
+};
+struct cld_name {
+  __u16 cn_len;
+  unsigned char cn_id[NFS4_OPAQUE_LIMIT];
+} __attribute__((packed));
+struct cld_princhash {
+  __u8 cp_len;
+  unsigned char cp_data[SHA256_DIGEST_SIZE];
+} __attribute__((packed));
+struct cld_clntinfo {
+  struct cld_name cc_name;
+  struct cld_princhash cc_princhash;
+} __attribute__((packed));
+struct cld_msg {
+  __u8 cm_vers;
+  __u8 cm_cmd;
+  __s16 cm_status;
+  __u32 cm_xid;
+  union {
+    __s64 cm_gracetime;
+    struct cld_name cm_name;
+    __u8 cm_version;
+  } __attribute__((packed)) cm_u;
+} __attribute__((packed));
+struct cld_msg_v2 {
+  __u8 cm_vers;
+  __u8 cm_cmd;
+  __s16 cm_status;
+  __u32 cm_xid;
+  union {
+    struct cld_name cm_name;
+    __u8 cm_version;
+    struct cld_clntinfo cm_clntinfo;
+  } __attribute__((packed)) cm_u;
+} __attribute__((packed));
+struct cld_msg_hdr {
+  __u8 cm_vers;
+  __u8 cm_cmd;
+  __s16 cm_status;
+  __u32 cm_xid;
+} __attribute__((packed));
+#endif
diff --git a/i686-linux-musl/include/linux/nfsd/debug.h b/i686-linux-musl/include/linux/nfsd/debug.h
new file mode 100644
index 0000000..d4ccf69
--- /dev/null
+++ b/i686-linux-musl/include/linux/nfsd/debug.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPILINUX_NFSD_DEBUG_H
+#define _UAPILINUX_NFSD_DEBUG_H
+#include <linux/sunrpc/debug.h>
+#define NFSDDBG_SOCK 0x0001
+#define NFSDDBG_FH 0x0002
+#define NFSDDBG_EXPORT 0x0004
+#define NFSDDBG_SVC 0x0008
+#define NFSDDBG_PROC 0x0010
+#define NFSDDBG_FILEOP 0x0020
+#define NFSDDBG_AUTH 0x0040
+#define NFSDDBG_REPCACHE 0x0080
+#define NFSDDBG_XDR 0x0100
+#define NFSDDBG_LOCKD 0x0200
+#define NFSDDBG_PNFS 0x0400
+#define NFSDDBG_ALL 0x7FFF
+#define NFSDDBG_NOCHANGE 0xFFFF
+#endif
diff --git a/i686-linux-musl/include/linux/nfsd/export.h b/i686-linux-musl/include/linux/nfsd/export.h
new file mode 100644
index 0000000..4716fb1
--- /dev/null
+++ b/i686-linux-musl/include/linux/nfsd/export.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPINFSD_EXPORT_H
+#define _UAPINFSD_EXPORT_H
+#include <linux/types.h>
+#define NFSCLNT_IDMAX 1024
+#define NFSCLNT_ADDRMAX 16
+#define NFSCLNT_KEYMAX 32
+#define NFSEXP_READONLY 0x0001
+#define NFSEXP_INSECURE_PORT 0x0002
+#define NFSEXP_ROOTSQUASH 0x0004
+#define NFSEXP_ALLSQUASH 0x0008
+#define NFSEXP_ASYNC 0x0010
+#define NFSEXP_GATHERED_WRITES 0x0020
+#define NFSEXP_NOREADDIRPLUS 0x0040
+#define NFSEXP_SECURITY_LABEL 0x0080
+#define NFSEXP_NOHIDE 0x0200
+#define NFSEXP_NOSUBTREECHECK 0x0400
+#define NFSEXP_NOAUTHNLM 0x0800
+#define NFSEXP_MSNFS 0x1000
+#define NFSEXP_FSID 0x2000
+#define NFSEXP_CROSSMOUNT 0x4000
+#define NFSEXP_NOACL 0x8000
+#define NFSEXP_V4ROOT 0x10000
+#define NFSEXP_PNFS 0x20000
+#define NFSEXP_ALLFLAGS 0x3FEFF
+#define NFSEXP_SECINFO_FLAGS (NFSEXP_READONLY | NFSEXP_ROOTSQUASH | NFSEXP_ALLSQUASH | NFSEXP_INSECURE_PORT)
+#endif
diff --git a/i686-linux-musl/include/linux/nfsd/stats.h b/i686-linux-musl/include/linux/nfsd/stats.h
new file mode 100644
index 0000000..91b4a74
--- /dev/null
+++ b/i686-linux-musl/include/linux/nfsd/stats.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPILINUX_NFSD_STATS_H
+#define _UAPILINUX_NFSD_STATS_H
+#include <linux/nfs4.h>
+#define NFSD_USAGE_WRAP (HZ * 1000000)
+#endif
diff --git a/i686-linux-musl/include/linux/nilfs2_api.h b/i686-linux-musl/include/linux/nilfs2_api.h
new file mode 100644
index 0000000..d6a6b8f
--- /dev/null
+++ b/i686-linux-musl/include/linux/nilfs2_api.h
@@ -0,0 +1,145 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_NILFS2_API_H
+#define _LINUX_NILFS2_API_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+struct nilfs_cpinfo {
+  __u32 ci_flags;
+  __u32 ci_pad;
+  __u64 ci_cno;
+  __u64 ci_create;
+  __u64 ci_nblk_inc;
+  __u64 ci_inodes_count;
+  __u64 ci_blocks_count;
+  __u64 ci_next;
+};
+enum {
+  NILFS_CPINFO_SNAPSHOT,
+  NILFS_CPINFO_INVALID,
+  NILFS_CPINFO_SKETCH,
+  NILFS_CPINFO_MINOR,
+};
+#define NILFS_CPINFO_FNS(flag,name) static inline int nilfs_cpinfo_ ##name(const struct nilfs_cpinfo * cpinfo) \
+{ return ! ! (cpinfo->ci_flags & (1UL << NILFS_CPINFO_ ##flag)); \
+}
+struct nilfs_suinfo {
+  __u64 sui_lastmod;
+  __u32 sui_nblocks;
+  __u32 sui_flags;
+};
+enum {
+  NILFS_SUINFO_ACTIVE,
+  NILFS_SUINFO_DIRTY,
+  NILFS_SUINFO_ERROR,
+};
+#define NILFS_SUINFO_FNS(flag,name) static inline int nilfs_suinfo_ ##name(const struct nilfs_suinfo * si) \
+{ return si->sui_flags & (1UL << NILFS_SUINFO_ ##flag); \
+}
+struct nilfs_suinfo_update {
+  __u64 sup_segnum;
+  __u32 sup_flags;
+  __u32 sup_reserved;
+  struct nilfs_suinfo sup_sui;
+};
+enum {
+  NILFS_SUINFO_UPDATE_LASTMOD,
+  NILFS_SUINFO_UPDATE_NBLOCKS,
+  NILFS_SUINFO_UPDATE_FLAGS,
+  __NR_NILFS_SUINFO_UPDATE_FIELDS,
+};
+#define NILFS_SUINFO_UPDATE_FNS(flag,name) static inline void nilfs_suinfo_update_set_ ##name(struct nilfs_suinfo_update * sup) \
+{ sup->sup_flags |= 1UL << NILFS_SUINFO_UPDATE_ ##flag; \
+} static inline void nilfs_suinfo_update_clear_ ##name(struct nilfs_suinfo_update * sup) \
+{ sup->sup_flags &= ~(1UL << NILFS_SUINFO_UPDATE_ ##flag); \
+} static inline int nilfs_suinfo_update_ ##name(const struct nilfs_suinfo_update * sup) \
+{ return ! ! (sup->sup_flags & (1UL << NILFS_SUINFO_UPDATE_ ##flag)); \
+}
+enum {
+  NILFS_CHECKPOINT,
+  NILFS_SNAPSHOT,
+};
+struct nilfs_cpmode {
+  __u64 cm_cno;
+  __u32 cm_mode;
+  __u32 cm_pad;
+};
+struct nilfs_argv {
+  __u64 v_base;
+  __u32 v_nmembs;
+  __u16 v_size;
+  __u16 v_flags;
+  __u64 v_index;
+};
+struct nilfs_period {
+  __u64 p_start;
+  __u64 p_end;
+};
+struct nilfs_cpstat {
+  __u64 cs_cno;
+  __u64 cs_ncps;
+  __u64 cs_nsss;
+};
+struct nilfs_sustat {
+  __u64 ss_nsegs;
+  __u64 ss_ncleansegs;
+  __u64 ss_ndirtysegs;
+  __u64 ss_ctime;
+  __u64 ss_nongc_ctime;
+  __u64 ss_prot_seq;
+};
+struct nilfs_vinfo {
+  __u64 vi_vblocknr;
+  __u64 vi_start;
+  __u64 vi_end;
+  __u64 vi_blocknr;
+};
+struct nilfs_vdesc {
+  __u64 vd_ino;
+  __u64 vd_cno;
+  __u64 vd_vblocknr;
+  struct nilfs_period vd_period;
+  __u64 vd_blocknr;
+  __u64 vd_offset;
+  __u32 vd_flags;
+  __u32 vd_pad;
+};
+struct nilfs_bdesc {
+  __u64 bd_ino;
+  __u64 bd_oblocknr;
+  __u64 bd_blocknr;
+  __u64 bd_offset;
+  __u32 bd_level;
+  __u32 bd_pad;
+};
+#define NILFS_IOCTL_IDENT 'n'
+#define NILFS_IOCTL_CHANGE_CPMODE _IOW(NILFS_IOCTL_IDENT, 0x80, struct nilfs_cpmode)
+#define NILFS_IOCTL_DELETE_CHECKPOINT _IOW(NILFS_IOCTL_IDENT, 0x81, __u64)
+#define NILFS_IOCTL_GET_CPINFO _IOR(NILFS_IOCTL_IDENT, 0x82, struct nilfs_argv)
+#define NILFS_IOCTL_GET_CPSTAT _IOR(NILFS_IOCTL_IDENT, 0x83, struct nilfs_cpstat)
+#define NILFS_IOCTL_GET_SUINFO _IOR(NILFS_IOCTL_IDENT, 0x84, struct nilfs_argv)
+#define NILFS_IOCTL_GET_SUSTAT _IOR(NILFS_IOCTL_IDENT, 0x85, struct nilfs_sustat)
+#define NILFS_IOCTL_GET_VINFO _IOWR(NILFS_IOCTL_IDENT, 0x86, struct nilfs_argv)
+#define NILFS_IOCTL_GET_BDESCS _IOWR(NILFS_IOCTL_IDENT, 0x87, struct nilfs_argv)
+#define NILFS_IOCTL_CLEAN_SEGMENTS _IOW(NILFS_IOCTL_IDENT, 0x88, struct nilfs_argv[5])
+#define NILFS_IOCTL_SYNC _IOR(NILFS_IOCTL_IDENT, 0x8A, __u64)
+#define NILFS_IOCTL_RESIZE _IOW(NILFS_IOCTL_IDENT, 0x8B, __u64)
+#define NILFS_IOCTL_SET_ALLOC_RANGE _IOW(NILFS_IOCTL_IDENT, 0x8C, __u64[2])
+#define NILFS_IOCTL_SET_SUINFO _IOW(NILFS_IOCTL_IDENT, 0x8D, struct nilfs_argv)
+#endif
diff --git a/i686-linux-musl/include/linux/nilfs2_ondisk.h b/i686-linux-musl/include/linux/nilfs2_ondisk.h
new file mode 100644
index 0000000..a05e7b7
--- /dev/null
+++ b/i686-linux-musl/include/linux/nilfs2_ondisk.h
@@ -0,0 +1,288 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_NILFS2_ONDISK_H
+#define _LINUX_NILFS2_ONDISK_H
+#include <linux/types.h>
+#include <linux/magic.h>
+#include <asm/byteorder.h>
+#define NILFS_INODE_BMAP_SIZE 7
+struct nilfs_inode {
+  __le64 i_blocks;
+  __le64 i_size;
+  __le64 i_ctime;
+  __le64 i_mtime;
+  __le32 i_ctime_nsec;
+  __le32 i_mtime_nsec;
+  __le32 i_uid;
+  __le32 i_gid;
+  __le16 i_mode;
+  __le16 i_links_count;
+  __le32 i_flags;
+  __le64 i_bmap[NILFS_INODE_BMAP_SIZE];
+#define i_device_code i_bmap[0]
+  __le64 i_xattr;
+  __le32 i_generation;
+  __le32 i_pad;
+};
+#define NILFS_MIN_INODE_SIZE 128
+struct nilfs_super_root {
+  __le32 sr_sum;
+  __le16 sr_bytes;
+  __le16 sr_flags;
+  __le64 sr_nongc_ctime;
+  struct nilfs_inode sr_dat;
+  struct nilfs_inode sr_cpfile;
+  struct nilfs_inode sr_sufile;
+};
+#define NILFS_SR_MDT_OFFSET(inode_size,i) ((unsigned long) & ((struct nilfs_super_root *) 0)->sr_dat + (inode_size) * (i))
+#define NILFS_SR_DAT_OFFSET(inode_size) NILFS_SR_MDT_OFFSET(inode_size, 0)
+#define NILFS_SR_CPFILE_OFFSET(inode_size) NILFS_SR_MDT_OFFSET(inode_size, 1)
+#define NILFS_SR_SUFILE_OFFSET(inode_size) NILFS_SR_MDT_OFFSET(inode_size, 2)
+#define NILFS_SR_BYTES(inode_size) NILFS_SR_MDT_OFFSET(inode_size, 3)
+#define NILFS_DFL_MAX_MNT_COUNT 50
+#define NILFS_VALID_FS 0x0001
+#define NILFS_ERROR_FS 0x0002
+#define NILFS_RESIZE_FS 0x0004
+#define NILFS_MOUNT_ERROR_MODE 0x0070
+#define NILFS_MOUNT_ERRORS_CONT 0x0010
+#define NILFS_MOUNT_ERRORS_RO 0x0020
+#define NILFS_MOUNT_ERRORS_PANIC 0x0040
+#define NILFS_MOUNT_BARRIER 0x1000
+#define NILFS_MOUNT_STRICT_ORDER 0x2000
+#define NILFS_MOUNT_NORECOVERY 0x4000
+#define NILFS_MOUNT_DISCARD 0x8000
+struct nilfs_super_block {
+  __le32 s_rev_level;
+  __le16 s_minor_rev_level;
+  __le16 s_magic;
+  __le16 s_bytes;
+  __le16 s_flags;
+  __le32 s_crc_seed;
+  __le32 s_sum;
+  __le32 s_log_block_size;
+  __le64 s_nsegments;
+  __le64 s_dev_size;
+  __le64 s_first_data_block;
+  __le32 s_blocks_per_segment;
+  __le32 s_r_segments_percentage;
+  __le64 s_last_cno;
+  __le64 s_last_pseg;
+  __le64 s_last_seq;
+  __le64 s_free_blocks_count;
+  __le64 s_ctime;
+  __le64 s_mtime;
+  __le64 s_wtime;
+  __le16 s_mnt_count;
+  __le16 s_max_mnt_count;
+  __le16 s_state;
+  __le16 s_errors;
+  __le64 s_lastcheck;
+  __le32 s_checkinterval;
+  __le32 s_creator_os;
+  __le16 s_def_resuid;
+  __le16 s_def_resgid;
+  __le32 s_first_ino;
+  __le16 s_inode_size;
+  __le16 s_dat_entry_size;
+  __le16 s_checkpoint_size;
+  __le16 s_segment_usage_size;
+  __u8 s_uuid[16];
+  char s_volume_name[80];
+  __le32 s_c_interval;
+  __le32 s_c_block_max;
+  __le64 s_feature_compat;
+  __le64 s_feature_compat_ro;
+  __le64 s_feature_incompat;
+  __u32 s_reserved[186];
+};
+#define NILFS_OS_LINUX 0
+#define NILFS_CURRENT_REV 2
+#define NILFS_MINOR_REV 0
+#define NILFS_MIN_SUPP_REV 2
+#define NILFS_FEATURE_COMPAT_RO_BLOCK_COUNT 0x00000001ULL
+#define NILFS_FEATURE_COMPAT_SUPP 0ULL
+#define NILFS_FEATURE_COMPAT_RO_SUPP NILFS_FEATURE_COMPAT_RO_BLOCK_COUNT
+#define NILFS_FEATURE_INCOMPAT_SUPP 0ULL
+#define NILFS_SB_BYTES ((long) & ((struct nilfs_super_block *) 0)->s_reserved)
+#define NILFS_ROOT_INO 2
+#define NILFS_DAT_INO 3
+#define NILFS_CPFILE_INO 4
+#define NILFS_SUFILE_INO 5
+#define NILFS_IFILE_INO 6
+#define NILFS_ATIME_INO 7
+#define NILFS_XATTR_INO 8
+#define NILFS_SKETCH_INO 10
+#define NILFS_USER_INO 11
+#define NILFS_SB_OFFSET_BYTES 1024
+#define NILFS_SEG_MIN_BLOCKS 16
+#define NILFS_PSEG_MIN_BLOCKS 2
+#define NILFS_MIN_NRSVSEGS 8
+#define NILFS_ROOT_METADATA_FILE(ino) ((ino) >= NILFS_DAT_INO && (ino) <= NILFS_SUFILE_INO)
+#define NILFS_SB2_OFFSET_BYTES(devsize) ((((devsize) >> 12) - 1) << 12)
+#define NILFS_LINK_MAX 32000
+#define NILFS_NAME_LEN 255
+#define NILFS_MIN_BLOCK_SIZE 1024
+#define NILFS_MAX_BLOCK_SIZE 65536
+struct nilfs_dir_entry {
+  __le64 inode;
+  __le16 rec_len;
+  __u8 name_len;
+  __u8 file_type;
+  char name[NILFS_NAME_LEN];
+  char pad;
+};
+enum {
+  NILFS_FT_UNKNOWN,
+  NILFS_FT_REG_FILE,
+  NILFS_FT_DIR,
+  NILFS_FT_CHRDEV,
+  NILFS_FT_BLKDEV,
+  NILFS_FT_FIFO,
+  NILFS_FT_SOCK,
+  NILFS_FT_SYMLINK,
+  NILFS_FT_MAX
+};
+#define NILFS_DIR_PAD 8
+#define NILFS_DIR_ROUND (NILFS_DIR_PAD - 1)
+#define NILFS_DIR_REC_LEN(name_len) (((name_len) + 12 + NILFS_DIR_ROUND) & ~NILFS_DIR_ROUND)
+#define NILFS_MAX_REC_LEN ((1 << 16) - 1)
+struct nilfs_finfo {
+  __le64 fi_ino;
+  __le64 fi_cno;
+  __le32 fi_nblocks;
+  __le32 fi_ndatablk;
+};
+struct nilfs_binfo_v {
+  __le64 bi_vblocknr;
+  __le64 bi_blkoff;
+};
+struct nilfs_binfo_dat {
+  __le64 bi_blkoff;
+  __u8 bi_level;
+  __u8 bi_pad[7];
+};
+union nilfs_binfo {
+  struct nilfs_binfo_v bi_v;
+  struct nilfs_binfo_dat bi_dat;
+};
+struct nilfs_segment_summary {
+  __le32 ss_datasum;
+  __le32 ss_sumsum;
+  __le32 ss_magic;
+  __le16 ss_bytes;
+  __le16 ss_flags;
+  __le64 ss_seq;
+  __le64 ss_create;
+  __le64 ss_next;
+  __le32 ss_nblocks;
+  __le32 ss_nfinfo;
+  __le32 ss_sumbytes;
+  __le32 ss_pad;
+  __le64 ss_cno;
+};
+#define NILFS_SEGSUM_MAGIC 0x1eaffa11
+#define NILFS_SS_LOGBGN 0x0001
+#define NILFS_SS_LOGEND 0x0002
+#define NILFS_SS_SR 0x0004
+#define NILFS_SS_SYNDT 0x0008
+#define NILFS_SS_GC 0x0010
+struct nilfs_btree_node {
+  __u8 bn_flags;
+  __u8 bn_level;
+  __le16 bn_nchildren;
+  __le32 bn_pad;
+};
+#define NILFS_BTREE_NODE_ROOT 0x01
+#define NILFS_BTREE_LEVEL_DATA 0
+#define NILFS_BTREE_LEVEL_NODE_MIN (NILFS_BTREE_LEVEL_DATA + 1)
+#define NILFS_BTREE_LEVEL_MAX 14
+struct nilfs_direct_node {
+  __u8 dn_flags;
+  __u8 pad[7];
+};
+struct nilfs_palloc_group_desc {
+  __le32 pg_nfrees;
+};
+struct nilfs_dat_entry {
+  __le64 de_blocknr;
+  __le64 de_start;
+  __le64 de_end;
+  __le64 de_rsv;
+};
+#define NILFS_MIN_DAT_ENTRY_SIZE 32
+struct nilfs_snapshot_list {
+  __le64 ssl_next;
+  __le64 ssl_prev;
+};
+struct nilfs_checkpoint {
+  __le32 cp_flags;
+  __le32 cp_checkpoints_count;
+  struct nilfs_snapshot_list cp_snapshot_list;
+  __le64 cp_cno;
+  __le64 cp_create;
+  __le64 cp_nblk_inc;
+  __le64 cp_inodes_count;
+  __le64 cp_blocks_count;
+  struct nilfs_inode cp_ifile_inode;
+};
+#define NILFS_MIN_CHECKPOINT_SIZE (64 + NILFS_MIN_INODE_SIZE)
+enum {
+  NILFS_CHECKPOINT_SNAPSHOT,
+  NILFS_CHECKPOINT_INVALID,
+  NILFS_CHECKPOINT_SKETCH,
+  NILFS_CHECKPOINT_MINOR,
+};
+#define NILFS_CHECKPOINT_FNS(flag,name) static inline void nilfs_checkpoint_set_ ##name(struct nilfs_checkpoint * cp) \
+{ cp->cp_flags = __cpu_to_le32(__le32_to_cpu(cp->cp_flags) | (1UL << NILFS_CHECKPOINT_ ##flag)); \
+} static inline void nilfs_checkpoint_clear_ ##name(struct nilfs_checkpoint * cp) \
+{ cp->cp_flags = __cpu_to_le32(__le32_to_cpu(cp->cp_flags) & ~(1UL << NILFS_CHECKPOINT_ ##flag)); \
+} static inline int nilfs_checkpoint_ ##name(const struct nilfs_checkpoint * cp) \
+{ return ! ! (__le32_to_cpu(cp->cp_flags) & (1UL << NILFS_CHECKPOINT_ ##flag)); \
+}
+struct nilfs_cpfile_header {
+  __le64 ch_ncheckpoints;
+  __le64 ch_nsnapshots;
+  struct nilfs_snapshot_list ch_snapshot_list;
+};
+#define NILFS_CPFILE_FIRST_CHECKPOINT_OFFSET ((sizeof(struct nilfs_cpfile_header) + sizeof(struct nilfs_checkpoint) - 1) / sizeof(struct nilfs_checkpoint))
+struct nilfs_segment_usage {
+  __le64 su_lastmod;
+  __le32 su_nblocks;
+  __le32 su_flags;
+};
+#define NILFS_MIN_SEGMENT_USAGE_SIZE 16
+enum {
+  NILFS_SEGMENT_USAGE_ACTIVE,
+  NILFS_SEGMENT_USAGE_DIRTY,
+  NILFS_SEGMENT_USAGE_ERROR,
+};
+#define NILFS_SEGMENT_USAGE_FNS(flag,name) static inline void nilfs_segment_usage_set_ ##name(struct nilfs_segment_usage * su) \
+{ su->su_flags = __cpu_to_le32(__le32_to_cpu(su->su_flags) | (1UL << NILFS_SEGMENT_USAGE_ ##flag)); \
+} static inline void nilfs_segment_usage_clear_ ##name(struct nilfs_segment_usage * su) \
+{ su->su_flags = __cpu_to_le32(__le32_to_cpu(su->su_flags) & ~(1UL << NILFS_SEGMENT_USAGE_ ##flag)); \
+} static inline int nilfs_segment_usage_ ##name(const struct nilfs_segment_usage * su) \
+{ return ! ! (__le32_to_cpu(su->su_flags) & (1UL << NILFS_SEGMENT_USAGE_ ##flag)); \
+}
+struct nilfs_sufile_header {
+  __le64 sh_ncleansegs;
+  __le64 sh_ndirtysegs;
+  __le64 sh_last_alloc;
+};
+#define NILFS_SUFILE_FIRST_SEGMENT_USAGE_OFFSET ((sizeof(struct nilfs_sufile_header) + sizeof(struct nilfs_segment_usage) - 1) / sizeof(struct nilfs_segment_usage))
+#endif
diff --git a/i686-linux-musl/include/linux/nitro_enclaves.h b/i686-linux-musl/include/linux/nitro_enclaves.h
new file mode 100644
index 0000000..20b26ef
--- /dev/null
+++ b/i686-linux-musl/include/linux/nitro_enclaves.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_NITRO_ENCLAVES_H_
+#define _UAPI_LINUX_NITRO_ENCLAVES_H_
+#include <linux/types.h>
+#define NE_CREATE_VM _IOR(0xAE, 0x20, __u64)
+#define NE_ADD_VCPU _IOWR(0xAE, 0x21, __u32)
+#define NE_GET_IMAGE_LOAD_INFO _IOWR(0xAE, 0x22, struct ne_image_load_info)
+#define NE_SET_USER_MEMORY_REGION _IOW(0xAE, 0x23, struct ne_user_memory_region)
+#define NE_START_ENCLAVE _IOWR(0xAE, 0x24, struct ne_enclave_start_info)
+#define NE_ERR_VCPU_ALREADY_USED (256)
+#define NE_ERR_VCPU_NOT_IN_CPU_POOL (257)
+#define NE_ERR_VCPU_INVALID_CPU_CORE (258)
+#define NE_ERR_INVALID_MEM_REGION_SIZE (259)
+#define NE_ERR_INVALID_MEM_REGION_ADDR (260)
+#define NE_ERR_UNALIGNED_MEM_REGION_ADDR (261)
+#define NE_ERR_MEM_REGION_ALREADY_USED (262)
+#define NE_ERR_MEM_NOT_HUGE_PAGE (263)
+#define NE_ERR_MEM_DIFFERENT_NUMA_NODE (264)
+#define NE_ERR_MEM_MAX_REGIONS (265)
+#define NE_ERR_NO_MEM_REGIONS_ADDED (266)
+#define NE_ERR_NO_VCPUS_ADDED (267)
+#define NE_ERR_ENCLAVE_MEM_MIN_SIZE (268)
+#define NE_ERR_FULL_CORES_NOT_USED (269)
+#define NE_ERR_NOT_IN_INIT_STATE (270)
+#define NE_ERR_INVALID_VCPU (271)
+#define NE_ERR_NO_CPUS_AVAIL_IN_POOL (272)
+#define NE_ERR_INVALID_PAGE_SIZE (273)
+#define NE_ERR_INVALID_FLAG_VALUE (274)
+#define NE_ERR_INVALID_ENCLAVE_CID (275)
+#define NE_EIF_IMAGE (0x01)
+#define NE_IMAGE_LOAD_MAX_FLAG_VAL (0x02)
+struct ne_image_load_info {
+  __u64 flags;
+  __u64 memory_offset;
+};
+#define NE_DEFAULT_MEMORY_REGION (0x00)
+#define NE_MEMORY_REGION_MAX_FLAG_VAL (0x01)
+struct ne_user_memory_region {
+  __u64 flags;
+  __u64 memory_size;
+  __u64 userspace_addr;
+};
+#define NE_ENCLAVE_PRODUCTION_MODE (0x00)
+#define NE_ENCLAVE_DEBUG_MODE (0x01)
+#define NE_ENCLAVE_START_MAX_FLAG_VAL (0x02)
+struct ne_enclave_start_info {
+  __u64 flags;
+  __u64 enclave_cid;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/nl80211-vnd-intel.h b/i686-linux-musl/include/linux/nl80211-vnd-intel.h
new file mode 100644
index 0000000..9ade75a
--- /dev/null
+++ b/i686-linux-musl/include/linux/nl80211-vnd-intel.h
@@ -0,0 +1,49 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __VENDOR_CMD_INTEL_H__
+#define __VENDOR_CMD_INTEL_H__
+#define INTEL_OUI 0x001735
+enum iwl_mvm_vendor_cmd {
+  IWL_MVM_VENDOR_CMD_GET_CSME_CONN_INFO = 0x2d,
+  IWL_MVM_VENDOR_CMD_HOST_GET_OWNERSHIP = 0x30,
+  IWL_MVM_VENDOR_CMD_ROAMING_FORBIDDEN_EVENT = 0x32,
+};
+enum iwl_vendor_auth_akm_mode {
+  IWL_VENDOR_AUTH_OPEN,
+  IWL_VENDOR_AUTH_RSNA = 0x6,
+  IWL_VENDOR_AUTH_RSNA_PSK,
+  IWL_VENDOR_AUTH_SAE = 0x9,
+  IWL_VENDOR_AUTH_MAX,
+};
+enum iwl_mvm_vendor_attr {
+  __IWL_MVM_VENDOR_ATTR_INVALID = 0x00,
+  IWL_MVM_VENDOR_ATTR_VIF_ADDR = 0x02,
+  IWL_MVM_VENDOR_ATTR_ADDR = 0x0a,
+  IWL_MVM_VENDOR_ATTR_SSID = 0x3d,
+  IWL_MVM_VENDOR_ATTR_STA_CIPHER = 0x51,
+  IWL_MVM_VENDOR_ATTR_ROAMING_FORBIDDEN = 0x64,
+  IWL_MVM_VENDOR_ATTR_AUTH_MODE = 0x65,
+  IWL_MVM_VENDOR_ATTR_CHANNEL_NUM = 0x66,
+  IWL_MVM_VENDOR_ATTR_BAND = 0x69,
+  IWL_MVM_VENDOR_ATTR_COLLOC_CHANNEL = 0x70,
+  IWL_MVM_VENDOR_ATTR_COLLOC_ADDR = 0x71,
+  NUM_IWL_MVM_VENDOR_ATTR,
+  MAX_IWL_MVM_VENDOR_ATTR = NUM_IWL_MVM_VENDOR_ATTR - 1,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/nl80211.h b/i686-linux-musl/include/linux/nl80211.h
new file mode 100644
index 0000000..edcda8a
--- /dev/null
+++ b/i686-linux-musl/include/linux/nl80211.h
@@ -0,0 +1,1862 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_NL80211_H
+#define __LINUX_NL80211_H
+#include <linux/types.h>
+#define NL80211_GENL_NAME "nl80211"
+#define NL80211_MULTICAST_GROUP_CONFIG "config"
+#define NL80211_MULTICAST_GROUP_SCAN "scan"
+#define NL80211_MULTICAST_GROUP_REG "regulatory"
+#define NL80211_MULTICAST_GROUP_MLME "mlme"
+#define NL80211_MULTICAST_GROUP_VENDOR "vendor"
+#define NL80211_MULTICAST_GROUP_NAN "nan"
+#define NL80211_MULTICAST_GROUP_TESTMODE "testmode"
+#define NL80211_EDMG_BW_CONFIG_MIN 4
+#define NL80211_EDMG_BW_CONFIG_MAX 15
+#define NL80211_EDMG_CHANNELS_MIN 1
+#define NL80211_EDMG_CHANNELS_MAX 0x3c
+enum nl80211_commands {
+  NL80211_CMD_UNSPEC,
+  NL80211_CMD_GET_WIPHY,
+  NL80211_CMD_SET_WIPHY,
+  NL80211_CMD_NEW_WIPHY,
+  NL80211_CMD_DEL_WIPHY,
+  NL80211_CMD_GET_INTERFACE,
+  NL80211_CMD_SET_INTERFACE,
+  NL80211_CMD_NEW_INTERFACE,
+  NL80211_CMD_DEL_INTERFACE,
+  NL80211_CMD_GET_KEY,
+  NL80211_CMD_SET_KEY,
+  NL80211_CMD_NEW_KEY,
+  NL80211_CMD_DEL_KEY,
+  NL80211_CMD_GET_BEACON,
+  NL80211_CMD_SET_BEACON,
+  NL80211_CMD_START_AP,
+  NL80211_CMD_NEW_BEACON = NL80211_CMD_START_AP,
+  NL80211_CMD_STOP_AP,
+  NL80211_CMD_DEL_BEACON = NL80211_CMD_STOP_AP,
+  NL80211_CMD_GET_STATION,
+  NL80211_CMD_SET_STATION,
+  NL80211_CMD_NEW_STATION,
+  NL80211_CMD_DEL_STATION,
+  NL80211_CMD_GET_MPATH,
+  NL80211_CMD_SET_MPATH,
+  NL80211_CMD_NEW_MPATH,
+  NL80211_CMD_DEL_MPATH,
+  NL80211_CMD_SET_BSS,
+  NL80211_CMD_SET_REG,
+  NL80211_CMD_REQ_SET_REG,
+  NL80211_CMD_GET_MESH_CONFIG,
+  NL80211_CMD_SET_MESH_CONFIG,
+  NL80211_CMD_SET_MGMT_EXTRA_IE,
+  NL80211_CMD_GET_REG,
+  NL80211_CMD_GET_SCAN,
+  NL80211_CMD_TRIGGER_SCAN,
+  NL80211_CMD_NEW_SCAN_RESULTS,
+  NL80211_CMD_SCAN_ABORTED,
+  NL80211_CMD_REG_CHANGE,
+  NL80211_CMD_AUTHENTICATE,
+  NL80211_CMD_ASSOCIATE,
+  NL80211_CMD_DEAUTHENTICATE,
+  NL80211_CMD_DISASSOCIATE,
+  NL80211_CMD_MICHAEL_MIC_FAILURE,
+  NL80211_CMD_REG_BEACON_HINT,
+  NL80211_CMD_JOIN_IBSS,
+  NL80211_CMD_LEAVE_IBSS,
+  NL80211_CMD_TESTMODE,
+  NL80211_CMD_CONNECT,
+  NL80211_CMD_ROAM,
+  NL80211_CMD_DISCONNECT,
+  NL80211_CMD_SET_WIPHY_NETNS,
+  NL80211_CMD_GET_SURVEY,
+  NL80211_CMD_NEW_SURVEY_RESULTS,
+  NL80211_CMD_SET_PMKSA,
+  NL80211_CMD_DEL_PMKSA,
+  NL80211_CMD_FLUSH_PMKSA,
+  NL80211_CMD_REMAIN_ON_CHANNEL,
+  NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL,
+  NL80211_CMD_SET_TX_BITRATE_MASK,
+  NL80211_CMD_REGISTER_FRAME,
+  NL80211_CMD_REGISTER_ACTION = NL80211_CMD_REGISTER_FRAME,
+  NL80211_CMD_FRAME,
+  NL80211_CMD_ACTION = NL80211_CMD_FRAME,
+  NL80211_CMD_FRAME_TX_STATUS,
+  NL80211_CMD_ACTION_TX_STATUS = NL80211_CMD_FRAME_TX_STATUS,
+  NL80211_CMD_SET_POWER_SAVE,
+  NL80211_CMD_GET_POWER_SAVE,
+  NL80211_CMD_SET_CQM,
+  NL80211_CMD_NOTIFY_CQM,
+  NL80211_CMD_SET_CHANNEL,
+  NL80211_CMD_SET_WDS_PEER,
+  NL80211_CMD_FRAME_WAIT_CANCEL,
+  NL80211_CMD_JOIN_MESH,
+  NL80211_CMD_LEAVE_MESH,
+  NL80211_CMD_UNPROT_DEAUTHENTICATE,
+  NL80211_CMD_UNPROT_DISASSOCIATE,
+  NL80211_CMD_NEW_PEER_CANDIDATE,
+  NL80211_CMD_GET_WOWLAN,
+  NL80211_CMD_SET_WOWLAN,
+  NL80211_CMD_START_SCHED_SCAN,
+  NL80211_CMD_STOP_SCHED_SCAN,
+  NL80211_CMD_SCHED_SCAN_RESULTS,
+  NL80211_CMD_SCHED_SCAN_STOPPED,
+  NL80211_CMD_SET_REKEY_OFFLOAD,
+  NL80211_CMD_PMKSA_CANDIDATE,
+  NL80211_CMD_TDLS_OPER,
+  NL80211_CMD_TDLS_MGMT,
+  NL80211_CMD_UNEXPECTED_FRAME,
+  NL80211_CMD_PROBE_CLIENT,
+  NL80211_CMD_REGISTER_BEACONS,
+  NL80211_CMD_UNEXPECTED_4ADDR_FRAME,
+  NL80211_CMD_SET_NOACK_MAP,
+  NL80211_CMD_CH_SWITCH_NOTIFY,
+  NL80211_CMD_START_P2P_DEVICE,
+  NL80211_CMD_STOP_P2P_DEVICE,
+  NL80211_CMD_CONN_FAILED,
+  NL80211_CMD_SET_MCAST_RATE,
+  NL80211_CMD_SET_MAC_ACL,
+  NL80211_CMD_RADAR_DETECT,
+  NL80211_CMD_GET_PROTOCOL_FEATURES,
+  NL80211_CMD_UPDATE_FT_IES,
+  NL80211_CMD_FT_EVENT,
+  NL80211_CMD_CRIT_PROTOCOL_START,
+  NL80211_CMD_CRIT_PROTOCOL_STOP,
+  NL80211_CMD_GET_COALESCE,
+  NL80211_CMD_SET_COALESCE,
+  NL80211_CMD_CHANNEL_SWITCH,
+  NL80211_CMD_VENDOR,
+  NL80211_CMD_SET_QOS_MAP,
+  NL80211_CMD_ADD_TX_TS,
+  NL80211_CMD_DEL_TX_TS,
+  NL80211_CMD_GET_MPP,
+  NL80211_CMD_JOIN_OCB,
+  NL80211_CMD_LEAVE_OCB,
+  NL80211_CMD_CH_SWITCH_STARTED_NOTIFY,
+  NL80211_CMD_TDLS_CHANNEL_SWITCH,
+  NL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH,
+  NL80211_CMD_WIPHY_REG_CHANGE,
+  NL80211_CMD_ABORT_SCAN,
+  NL80211_CMD_START_NAN,
+  NL80211_CMD_STOP_NAN,
+  NL80211_CMD_ADD_NAN_FUNCTION,
+  NL80211_CMD_DEL_NAN_FUNCTION,
+  NL80211_CMD_CHANGE_NAN_CONFIG,
+  NL80211_CMD_NAN_MATCH,
+  NL80211_CMD_SET_MULTICAST_TO_UNICAST,
+  NL80211_CMD_UPDATE_CONNECT_PARAMS,
+  NL80211_CMD_SET_PMK,
+  NL80211_CMD_DEL_PMK,
+  NL80211_CMD_PORT_AUTHORIZED,
+  NL80211_CMD_RELOAD_REGDB,
+  NL80211_CMD_EXTERNAL_AUTH,
+  NL80211_CMD_STA_OPMODE_CHANGED,
+  NL80211_CMD_CONTROL_PORT_FRAME,
+  NL80211_CMD_GET_FTM_RESPONDER_STATS,
+  NL80211_CMD_PEER_MEASUREMENT_START,
+  NL80211_CMD_PEER_MEASUREMENT_RESULT,
+  NL80211_CMD_PEER_MEASUREMENT_COMPLETE,
+  NL80211_CMD_NOTIFY_RADAR,
+  NL80211_CMD_UPDATE_OWE_INFO,
+  NL80211_CMD_PROBE_MESH_LINK,
+  NL80211_CMD_SET_TID_CONFIG,
+  NL80211_CMD_UNPROT_BEACON,
+  NL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS,
+  NL80211_CMD_SET_SAR_SPECS,
+  NL80211_CMD_OBSS_COLOR_COLLISION,
+  NL80211_CMD_COLOR_CHANGE_REQUEST,
+  NL80211_CMD_COLOR_CHANGE_STARTED,
+  NL80211_CMD_COLOR_CHANGE_ABORTED,
+  NL80211_CMD_COLOR_CHANGE_COMPLETED,
+  NL80211_CMD_SET_FILS_AAD,
+  __NL80211_CMD_AFTER_LAST,
+  NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
+};
+#define NL80211_CMD_SET_BSS NL80211_CMD_SET_BSS
+#define NL80211_CMD_SET_MGMT_EXTRA_IE NL80211_CMD_SET_MGMT_EXTRA_IE
+#define NL80211_CMD_REG_CHANGE NL80211_CMD_REG_CHANGE
+#define NL80211_CMD_AUTHENTICATE NL80211_CMD_AUTHENTICATE
+#define NL80211_CMD_ASSOCIATE NL80211_CMD_ASSOCIATE
+#define NL80211_CMD_DEAUTHENTICATE NL80211_CMD_DEAUTHENTICATE
+#define NL80211_CMD_DISASSOCIATE NL80211_CMD_DISASSOCIATE
+#define NL80211_CMD_REG_BEACON_HINT NL80211_CMD_REG_BEACON_HINT
+#define NL80211_ATTR_FEATURE_FLAGS NL80211_ATTR_FEATURE_FLAGS
+#define NL80211_CMD_GET_MESH_PARAMS NL80211_CMD_GET_MESH_CONFIG
+#define NL80211_CMD_SET_MESH_PARAMS NL80211_CMD_SET_MESH_CONFIG
+#define NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE NL80211_MESH_SETUP_IE
+enum nl80211_attrs {
+  NL80211_ATTR_UNSPEC,
+  NL80211_ATTR_WIPHY,
+  NL80211_ATTR_WIPHY_NAME,
+  NL80211_ATTR_IFINDEX,
+  NL80211_ATTR_IFNAME,
+  NL80211_ATTR_IFTYPE,
+  NL80211_ATTR_MAC,
+  NL80211_ATTR_KEY_DATA,
+  NL80211_ATTR_KEY_IDX,
+  NL80211_ATTR_KEY_CIPHER,
+  NL80211_ATTR_KEY_SEQ,
+  NL80211_ATTR_KEY_DEFAULT,
+  NL80211_ATTR_BEACON_INTERVAL,
+  NL80211_ATTR_DTIM_PERIOD,
+  NL80211_ATTR_BEACON_HEAD,
+  NL80211_ATTR_BEACON_TAIL,
+  NL80211_ATTR_STA_AID,
+  NL80211_ATTR_STA_FLAGS,
+  NL80211_ATTR_STA_LISTEN_INTERVAL,
+  NL80211_ATTR_STA_SUPPORTED_RATES,
+  NL80211_ATTR_STA_VLAN,
+  NL80211_ATTR_STA_INFO,
+  NL80211_ATTR_WIPHY_BANDS,
+  NL80211_ATTR_MNTR_FLAGS,
+  NL80211_ATTR_MESH_ID,
+  NL80211_ATTR_STA_PLINK_ACTION,
+  NL80211_ATTR_MPATH_NEXT_HOP,
+  NL80211_ATTR_MPATH_INFO,
+  NL80211_ATTR_BSS_CTS_PROT,
+  NL80211_ATTR_BSS_SHORT_PREAMBLE,
+  NL80211_ATTR_BSS_SHORT_SLOT_TIME,
+  NL80211_ATTR_HT_CAPABILITY,
+  NL80211_ATTR_SUPPORTED_IFTYPES,
+  NL80211_ATTR_REG_ALPHA2,
+  NL80211_ATTR_REG_RULES,
+  NL80211_ATTR_MESH_CONFIG,
+  NL80211_ATTR_BSS_BASIC_RATES,
+  NL80211_ATTR_WIPHY_TXQ_PARAMS,
+  NL80211_ATTR_WIPHY_FREQ,
+  NL80211_ATTR_WIPHY_CHANNEL_TYPE,
+  NL80211_ATTR_KEY_DEFAULT_MGMT,
+  NL80211_ATTR_MGMT_SUBTYPE,
+  NL80211_ATTR_IE,
+  NL80211_ATTR_MAX_NUM_SCAN_SSIDS,
+  NL80211_ATTR_SCAN_FREQUENCIES,
+  NL80211_ATTR_SCAN_SSIDS,
+  NL80211_ATTR_GENERATION,
+  NL80211_ATTR_BSS,
+  NL80211_ATTR_REG_INITIATOR,
+  NL80211_ATTR_REG_TYPE,
+  NL80211_ATTR_SUPPORTED_COMMANDS,
+  NL80211_ATTR_FRAME,
+  NL80211_ATTR_SSID,
+  NL80211_ATTR_AUTH_TYPE,
+  NL80211_ATTR_REASON_CODE,
+  NL80211_ATTR_KEY_TYPE,
+  NL80211_ATTR_MAX_SCAN_IE_LEN,
+  NL80211_ATTR_CIPHER_SUITES,
+  NL80211_ATTR_FREQ_BEFORE,
+  NL80211_ATTR_FREQ_AFTER,
+  NL80211_ATTR_FREQ_FIXED,
+  NL80211_ATTR_WIPHY_RETRY_SHORT,
+  NL80211_ATTR_WIPHY_RETRY_LONG,
+  NL80211_ATTR_WIPHY_FRAG_THRESHOLD,
+  NL80211_ATTR_WIPHY_RTS_THRESHOLD,
+  NL80211_ATTR_TIMED_OUT,
+  NL80211_ATTR_USE_MFP,
+  NL80211_ATTR_STA_FLAGS2,
+  NL80211_ATTR_CONTROL_PORT,
+  NL80211_ATTR_TESTDATA,
+  NL80211_ATTR_PRIVACY,
+  NL80211_ATTR_DISCONNECTED_BY_AP,
+  NL80211_ATTR_STATUS_CODE,
+  NL80211_ATTR_CIPHER_SUITES_PAIRWISE,
+  NL80211_ATTR_CIPHER_SUITE_GROUP,
+  NL80211_ATTR_WPA_VERSIONS,
+  NL80211_ATTR_AKM_SUITES,
+  NL80211_ATTR_REQ_IE,
+  NL80211_ATTR_RESP_IE,
+  NL80211_ATTR_PREV_BSSID,
+  NL80211_ATTR_KEY,
+  NL80211_ATTR_KEYS,
+  NL80211_ATTR_PID,
+  NL80211_ATTR_4ADDR,
+  NL80211_ATTR_SURVEY_INFO,
+  NL80211_ATTR_PMKID,
+  NL80211_ATTR_MAX_NUM_PMKIDS,
+  NL80211_ATTR_DURATION,
+  NL80211_ATTR_COOKIE,
+  NL80211_ATTR_WIPHY_COVERAGE_CLASS,
+  NL80211_ATTR_TX_RATES,
+  NL80211_ATTR_FRAME_MATCH,
+  NL80211_ATTR_ACK,
+  NL80211_ATTR_PS_STATE,
+  NL80211_ATTR_CQM,
+  NL80211_ATTR_LOCAL_STATE_CHANGE,
+  NL80211_ATTR_AP_ISOLATE,
+  NL80211_ATTR_WIPHY_TX_POWER_SETTING,
+  NL80211_ATTR_WIPHY_TX_POWER_LEVEL,
+  NL80211_ATTR_TX_FRAME_TYPES,
+  NL80211_ATTR_RX_FRAME_TYPES,
+  NL80211_ATTR_FRAME_TYPE,
+  NL80211_ATTR_CONTROL_PORT_ETHERTYPE,
+  NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT,
+  NL80211_ATTR_SUPPORT_IBSS_RSN,
+  NL80211_ATTR_WIPHY_ANTENNA_TX,
+  NL80211_ATTR_WIPHY_ANTENNA_RX,
+  NL80211_ATTR_MCAST_RATE,
+  NL80211_ATTR_OFFCHANNEL_TX_OK,
+  NL80211_ATTR_BSS_HT_OPMODE,
+  NL80211_ATTR_KEY_DEFAULT_TYPES,
+  NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION,
+  NL80211_ATTR_MESH_SETUP,
+  NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX,
+  NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX,
+  NL80211_ATTR_SUPPORT_MESH_AUTH,
+  NL80211_ATTR_STA_PLINK_STATE,
+  NL80211_ATTR_WOWLAN_TRIGGERS,
+  NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED,
+  NL80211_ATTR_SCHED_SCAN_INTERVAL,
+  NL80211_ATTR_INTERFACE_COMBINATIONS,
+  NL80211_ATTR_SOFTWARE_IFTYPES,
+  NL80211_ATTR_REKEY_DATA,
+  NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS,
+  NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN,
+  NL80211_ATTR_SCAN_SUPP_RATES,
+  NL80211_ATTR_HIDDEN_SSID,
+  NL80211_ATTR_IE_PROBE_RESP,
+  NL80211_ATTR_IE_ASSOC_RESP,
+  NL80211_ATTR_STA_WME,
+  NL80211_ATTR_SUPPORT_AP_UAPSD,
+  NL80211_ATTR_ROAM_SUPPORT,
+  NL80211_ATTR_SCHED_SCAN_MATCH,
+  NL80211_ATTR_MAX_MATCH_SETS,
+  NL80211_ATTR_PMKSA_CANDIDATE,
+  NL80211_ATTR_TX_NO_CCK_RATE,
+  NL80211_ATTR_TDLS_ACTION,
+  NL80211_ATTR_TDLS_DIALOG_TOKEN,
+  NL80211_ATTR_TDLS_OPERATION,
+  NL80211_ATTR_TDLS_SUPPORT,
+  NL80211_ATTR_TDLS_EXTERNAL_SETUP,
+  NL80211_ATTR_DEVICE_AP_SME,
+  NL80211_ATTR_DONT_WAIT_FOR_ACK,
+  NL80211_ATTR_FEATURE_FLAGS,
+  NL80211_ATTR_PROBE_RESP_OFFLOAD,
+  NL80211_ATTR_PROBE_RESP,
+  NL80211_ATTR_DFS_REGION,
+  NL80211_ATTR_DISABLE_HT,
+  NL80211_ATTR_HT_CAPABILITY_MASK,
+  NL80211_ATTR_NOACK_MAP,
+  NL80211_ATTR_INACTIVITY_TIMEOUT,
+  NL80211_ATTR_RX_SIGNAL_DBM,
+  NL80211_ATTR_BG_SCAN_PERIOD,
+  NL80211_ATTR_WDEV,
+  NL80211_ATTR_USER_REG_HINT_TYPE,
+  NL80211_ATTR_CONN_FAILED_REASON,
+  NL80211_ATTR_AUTH_DATA,
+  NL80211_ATTR_VHT_CAPABILITY,
+  NL80211_ATTR_SCAN_FLAGS,
+  NL80211_ATTR_CHANNEL_WIDTH,
+  NL80211_ATTR_CENTER_FREQ1,
+  NL80211_ATTR_CENTER_FREQ2,
+  NL80211_ATTR_P2P_CTWINDOW,
+  NL80211_ATTR_P2P_OPPPS,
+  NL80211_ATTR_LOCAL_MESH_POWER_MODE,
+  NL80211_ATTR_ACL_POLICY,
+  NL80211_ATTR_MAC_ADDRS,
+  NL80211_ATTR_MAC_ACL_MAX,
+  NL80211_ATTR_RADAR_EVENT,
+  NL80211_ATTR_EXT_CAPA,
+  NL80211_ATTR_EXT_CAPA_MASK,
+  NL80211_ATTR_STA_CAPABILITY,
+  NL80211_ATTR_STA_EXT_CAPABILITY,
+  NL80211_ATTR_PROTOCOL_FEATURES,
+  NL80211_ATTR_SPLIT_WIPHY_DUMP,
+  NL80211_ATTR_DISABLE_VHT,
+  NL80211_ATTR_VHT_CAPABILITY_MASK,
+  NL80211_ATTR_MDID,
+  NL80211_ATTR_IE_RIC,
+  NL80211_ATTR_CRIT_PROT_ID,
+  NL80211_ATTR_MAX_CRIT_PROT_DURATION,
+  NL80211_ATTR_PEER_AID,
+  NL80211_ATTR_COALESCE_RULE,
+  NL80211_ATTR_CH_SWITCH_COUNT,
+  NL80211_ATTR_CH_SWITCH_BLOCK_TX,
+  NL80211_ATTR_CSA_IES,
+  NL80211_ATTR_CNTDWN_OFFS_BEACON,
+  NL80211_ATTR_CNTDWN_OFFS_PRESP,
+  NL80211_ATTR_RXMGMT_FLAGS,
+  NL80211_ATTR_STA_SUPPORTED_CHANNELS,
+  NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES,
+  NL80211_ATTR_HANDLE_DFS,
+  NL80211_ATTR_SUPPORT_5_MHZ,
+  NL80211_ATTR_SUPPORT_10_MHZ,
+  NL80211_ATTR_OPMODE_NOTIF,
+  NL80211_ATTR_VENDOR_ID,
+  NL80211_ATTR_VENDOR_SUBCMD,
+  NL80211_ATTR_VENDOR_DATA,
+  NL80211_ATTR_VENDOR_EVENTS,
+  NL80211_ATTR_QOS_MAP,
+  NL80211_ATTR_MAC_HINT,
+  NL80211_ATTR_WIPHY_FREQ_HINT,
+  NL80211_ATTR_MAX_AP_ASSOC_STA,
+  NL80211_ATTR_TDLS_PEER_CAPABILITY,
+  NL80211_ATTR_SOCKET_OWNER,
+  NL80211_ATTR_CSA_C_OFFSETS_TX,
+  NL80211_ATTR_MAX_CSA_COUNTERS,
+  NL80211_ATTR_TDLS_INITIATOR,
+  NL80211_ATTR_USE_RRM,
+  NL80211_ATTR_WIPHY_DYN_ACK,
+  NL80211_ATTR_TSID,
+  NL80211_ATTR_USER_PRIO,
+  NL80211_ATTR_ADMITTED_TIME,
+  NL80211_ATTR_SMPS_MODE,
+  NL80211_ATTR_OPER_CLASS,
+  NL80211_ATTR_MAC_MASK,
+  NL80211_ATTR_WIPHY_SELF_MANAGED_REG,
+  NL80211_ATTR_EXT_FEATURES,
+  NL80211_ATTR_SURVEY_RADIO_STATS,
+  NL80211_ATTR_NETNS_FD,
+  NL80211_ATTR_SCHED_SCAN_DELAY,
+  NL80211_ATTR_REG_INDOOR,
+  NL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS,
+  NL80211_ATTR_MAX_SCAN_PLAN_INTERVAL,
+  NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS,
+  NL80211_ATTR_SCHED_SCAN_PLANS,
+  NL80211_ATTR_PBSS,
+  NL80211_ATTR_BSS_SELECT,
+  NL80211_ATTR_STA_SUPPORT_P2P_PS,
+  NL80211_ATTR_PAD,
+  NL80211_ATTR_IFTYPE_EXT_CAPA,
+  NL80211_ATTR_MU_MIMO_GROUP_DATA,
+  NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR,
+  NL80211_ATTR_SCAN_START_TIME_TSF,
+  NL80211_ATTR_SCAN_START_TIME_TSF_BSSID,
+  NL80211_ATTR_MEASUREMENT_DURATION,
+  NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY,
+  NL80211_ATTR_MESH_PEER_AID,
+  NL80211_ATTR_NAN_MASTER_PREF,
+  NL80211_ATTR_BANDS,
+  NL80211_ATTR_NAN_FUNC,
+  NL80211_ATTR_NAN_MATCH,
+  NL80211_ATTR_FILS_KEK,
+  NL80211_ATTR_FILS_NONCES,
+  NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED,
+  NL80211_ATTR_BSSID,
+  NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI,
+  NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST,
+  NL80211_ATTR_TIMEOUT_REASON,
+  NL80211_ATTR_FILS_ERP_USERNAME,
+  NL80211_ATTR_FILS_ERP_REALM,
+  NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM,
+  NL80211_ATTR_FILS_ERP_RRK,
+  NL80211_ATTR_FILS_CACHE_ID,
+  NL80211_ATTR_PMK,
+  NL80211_ATTR_SCHED_SCAN_MULTI,
+  NL80211_ATTR_SCHED_SCAN_MAX_REQS,
+  NL80211_ATTR_WANT_1X_4WAY_HS,
+  NL80211_ATTR_PMKR0_NAME,
+  NL80211_ATTR_PORT_AUTHORIZED,
+  NL80211_ATTR_EXTERNAL_AUTH_ACTION,
+  NL80211_ATTR_EXTERNAL_AUTH_SUPPORT,
+  NL80211_ATTR_NSS,
+  NL80211_ATTR_ACK_SIGNAL,
+  NL80211_ATTR_CONTROL_PORT_OVER_NL80211,
+  NL80211_ATTR_TXQ_STATS,
+  NL80211_ATTR_TXQ_LIMIT,
+  NL80211_ATTR_TXQ_MEMORY_LIMIT,
+  NL80211_ATTR_TXQ_QUANTUM,
+  NL80211_ATTR_HE_CAPABILITY,
+  NL80211_ATTR_FTM_RESPONDER,
+  NL80211_ATTR_FTM_RESPONDER_STATS,
+  NL80211_ATTR_TIMEOUT,
+  NL80211_ATTR_PEER_MEASUREMENTS,
+  NL80211_ATTR_AIRTIME_WEIGHT,
+  NL80211_ATTR_STA_TX_POWER_SETTING,
+  NL80211_ATTR_STA_TX_POWER,
+  NL80211_ATTR_SAE_PASSWORD,
+  NL80211_ATTR_TWT_RESPONDER,
+  NL80211_ATTR_HE_OBSS_PD,
+  NL80211_ATTR_WIPHY_EDMG_CHANNELS,
+  NL80211_ATTR_WIPHY_EDMG_BW_CONFIG,
+  NL80211_ATTR_VLAN_ID,
+  NL80211_ATTR_HE_BSS_COLOR,
+  NL80211_ATTR_IFTYPE_AKM_SUITES,
+  NL80211_ATTR_TID_CONFIG,
+  NL80211_ATTR_CONTROL_PORT_NO_PREAUTH,
+  NL80211_ATTR_PMK_LIFETIME,
+  NL80211_ATTR_PMK_REAUTH_THRESHOLD,
+  NL80211_ATTR_RECEIVE_MULTICAST,
+  NL80211_ATTR_WIPHY_FREQ_OFFSET,
+  NL80211_ATTR_CENTER_FREQ1_OFFSET,
+  NL80211_ATTR_SCAN_FREQ_KHZ,
+  NL80211_ATTR_HE_6GHZ_CAPABILITY,
+  NL80211_ATTR_FILS_DISCOVERY,
+  NL80211_ATTR_UNSOL_BCAST_PROBE_RESP,
+  NL80211_ATTR_S1G_CAPABILITY,
+  NL80211_ATTR_S1G_CAPABILITY_MASK,
+  NL80211_ATTR_SAE_PWE,
+  NL80211_ATTR_RECONNECT_REQUESTED,
+  NL80211_ATTR_SAR_SPEC,
+  NL80211_ATTR_DISABLE_HE,
+  NL80211_ATTR_OBSS_COLOR_BITMAP,
+  NL80211_ATTR_COLOR_CHANGE_COUNT,
+  NL80211_ATTR_COLOR_CHANGE_COLOR,
+  NL80211_ATTR_COLOR_CHANGE_ELEMS,
+  NL80211_ATTR_MBSSID_CONFIG,
+  NL80211_ATTR_MBSSID_ELEMS,
+  __NL80211_ATTR_AFTER_LAST,
+  NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
+  NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
+};
+#define NL80211_ATTR_SCAN_GENERATION NL80211_ATTR_GENERATION
+#define NL80211_ATTR_MESH_PARAMS NL80211_ATTR_MESH_CONFIG
+#define NL80211_ATTR_IFACE_SOCKET_OWNER NL80211_ATTR_SOCKET_OWNER
+#define NL80211_ATTR_SAE_DATA NL80211_ATTR_AUTH_DATA
+#define NL80211_ATTR_CSA_C_OFF_BEACON NL80211_ATTR_CNTDWN_OFFS_BEACON
+#define NL80211_ATTR_CSA_C_OFF_PRESP NL80211_ATTR_CNTDWN_OFFS_PRESP
+#define NL80211_CMD_CONNECT NL80211_CMD_CONNECT
+#define NL80211_ATTR_HT_CAPABILITY NL80211_ATTR_HT_CAPABILITY
+#define NL80211_ATTR_BSS_BASIC_RATES NL80211_ATTR_BSS_BASIC_RATES
+#define NL80211_ATTR_WIPHY_TXQ_PARAMS NL80211_ATTR_WIPHY_TXQ_PARAMS
+#define NL80211_ATTR_WIPHY_FREQ NL80211_ATTR_WIPHY_FREQ
+#define NL80211_ATTR_WIPHY_CHANNEL_TYPE NL80211_ATTR_WIPHY_CHANNEL_TYPE
+#define NL80211_ATTR_MGMT_SUBTYPE NL80211_ATTR_MGMT_SUBTYPE
+#define NL80211_ATTR_IE NL80211_ATTR_IE
+#define NL80211_ATTR_REG_INITIATOR NL80211_ATTR_REG_INITIATOR
+#define NL80211_ATTR_REG_TYPE NL80211_ATTR_REG_TYPE
+#define NL80211_ATTR_FRAME NL80211_ATTR_FRAME
+#define NL80211_ATTR_SSID NL80211_ATTR_SSID
+#define NL80211_ATTR_AUTH_TYPE NL80211_ATTR_AUTH_TYPE
+#define NL80211_ATTR_REASON_CODE NL80211_ATTR_REASON_CODE
+#define NL80211_ATTR_CIPHER_SUITES_PAIRWISE NL80211_ATTR_CIPHER_SUITES_PAIRWISE
+#define NL80211_ATTR_CIPHER_SUITE_GROUP NL80211_ATTR_CIPHER_SUITE_GROUP
+#define NL80211_ATTR_WPA_VERSIONS NL80211_ATTR_WPA_VERSIONS
+#define NL80211_ATTR_AKM_SUITES NL80211_ATTR_AKM_SUITES
+#define NL80211_ATTR_KEY NL80211_ATTR_KEY
+#define NL80211_ATTR_KEYS NL80211_ATTR_KEYS
+#define NL80211_ATTR_FEATURE_FLAGS NL80211_ATTR_FEATURE_FLAGS
+#define NL80211_WIPHY_NAME_MAXLEN 64
+#define NL80211_MAX_SUPP_RATES 32
+#define NL80211_MAX_SUPP_HT_RATES 77
+#define NL80211_MAX_SUPP_REG_RULES 128
+#define NL80211_TKIP_DATA_OFFSET_ENCR_KEY 0
+#define NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY 16
+#define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24
+#define NL80211_HT_CAPABILITY_LEN 26
+#define NL80211_VHT_CAPABILITY_LEN 12
+#define NL80211_HE_MIN_CAPABILITY_LEN 16
+#define NL80211_HE_MAX_CAPABILITY_LEN 54
+#define NL80211_MAX_NR_CIPHER_SUITES 5
+#define NL80211_MAX_NR_AKM_SUITES 2
+#define NL80211_MIN_REMAIN_ON_CHANNEL_TIME 10
+#define NL80211_SCAN_RSSI_THOLD_OFF - 300
+#define NL80211_CQM_TXE_MAX_INTVL 1800
+enum nl80211_iftype {
+  NL80211_IFTYPE_UNSPECIFIED,
+  NL80211_IFTYPE_ADHOC,
+  NL80211_IFTYPE_STATION,
+  NL80211_IFTYPE_AP,
+  NL80211_IFTYPE_AP_VLAN,
+  NL80211_IFTYPE_WDS,
+  NL80211_IFTYPE_MONITOR,
+  NL80211_IFTYPE_MESH_POINT,
+  NL80211_IFTYPE_P2P_CLIENT,
+  NL80211_IFTYPE_P2P_GO,
+  NL80211_IFTYPE_P2P_DEVICE,
+  NL80211_IFTYPE_OCB,
+  NL80211_IFTYPE_NAN,
+  NUM_NL80211_IFTYPES,
+  NL80211_IFTYPE_MAX = NUM_NL80211_IFTYPES - 1
+};
+enum nl80211_sta_flags {
+  __NL80211_STA_FLAG_INVALID,
+  NL80211_STA_FLAG_AUTHORIZED,
+  NL80211_STA_FLAG_SHORT_PREAMBLE,
+  NL80211_STA_FLAG_WME,
+  NL80211_STA_FLAG_MFP,
+  NL80211_STA_FLAG_AUTHENTICATED,
+  NL80211_STA_FLAG_TDLS_PEER,
+  NL80211_STA_FLAG_ASSOCIATED,
+  __NL80211_STA_FLAG_AFTER_LAST,
+  NL80211_STA_FLAG_MAX = __NL80211_STA_FLAG_AFTER_LAST - 1
+};
+enum nl80211_sta_p2p_ps_status {
+  NL80211_P2P_PS_UNSUPPORTED = 0,
+  NL80211_P2P_PS_SUPPORTED,
+  NUM_NL80211_P2P_PS_STATUS,
+};
+#define NL80211_STA_FLAG_MAX_OLD_API NL80211_STA_FLAG_TDLS_PEER
+struct nl80211_sta_flag_update {
+  __u32 mask;
+  __u32 set;
+} __attribute__((packed));
+enum nl80211_he_gi {
+  NL80211_RATE_INFO_HE_GI_0_8,
+  NL80211_RATE_INFO_HE_GI_1_6,
+  NL80211_RATE_INFO_HE_GI_3_2,
+};
+enum nl80211_he_ltf {
+  NL80211_RATE_INFO_HE_1XLTF,
+  NL80211_RATE_INFO_HE_2XLTF,
+  NL80211_RATE_INFO_HE_4XLTF,
+};
+enum nl80211_he_ru_alloc {
+  NL80211_RATE_INFO_HE_RU_ALLOC_26,
+  NL80211_RATE_INFO_HE_RU_ALLOC_52,
+  NL80211_RATE_INFO_HE_RU_ALLOC_106,
+  NL80211_RATE_INFO_HE_RU_ALLOC_242,
+  NL80211_RATE_INFO_HE_RU_ALLOC_484,
+  NL80211_RATE_INFO_HE_RU_ALLOC_996,
+  NL80211_RATE_INFO_HE_RU_ALLOC_2x996,
+};
+enum nl80211_rate_info {
+  __NL80211_RATE_INFO_INVALID,
+  NL80211_RATE_INFO_BITRATE,
+  NL80211_RATE_INFO_MCS,
+  NL80211_RATE_INFO_40_MHZ_WIDTH,
+  NL80211_RATE_INFO_SHORT_GI,
+  NL80211_RATE_INFO_BITRATE32,
+  NL80211_RATE_INFO_VHT_MCS,
+  NL80211_RATE_INFO_VHT_NSS,
+  NL80211_RATE_INFO_80_MHZ_WIDTH,
+  NL80211_RATE_INFO_80P80_MHZ_WIDTH,
+  NL80211_RATE_INFO_160_MHZ_WIDTH,
+  NL80211_RATE_INFO_10_MHZ_WIDTH,
+  NL80211_RATE_INFO_5_MHZ_WIDTH,
+  NL80211_RATE_INFO_HE_MCS,
+  NL80211_RATE_INFO_HE_NSS,
+  NL80211_RATE_INFO_HE_GI,
+  NL80211_RATE_INFO_HE_DCM,
+  NL80211_RATE_INFO_HE_RU_ALLOC,
+  __NL80211_RATE_INFO_AFTER_LAST,
+  NL80211_RATE_INFO_MAX = __NL80211_RATE_INFO_AFTER_LAST - 1
+};
+enum nl80211_sta_bss_param {
+  __NL80211_STA_BSS_PARAM_INVALID,
+  NL80211_STA_BSS_PARAM_CTS_PROT,
+  NL80211_STA_BSS_PARAM_SHORT_PREAMBLE,
+  NL80211_STA_BSS_PARAM_SHORT_SLOT_TIME,
+  NL80211_STA_BSS_PARAM_DTIM_PERIOD,
+  NL80211_STA_BSS_PARAM_BEACON_INTERVAL,
+  __NL80211_STA_BSS_PARAM_AFTER_LAST,
+  NL80211_STA_BSS_PARAM_MAX = __NL80211_STA_BSS_PARAM_AFTER_LAST - 1
+};
+enum nl80211_sta_info {
+  __NL80211_STA_INFO_INVALID,
+  NL80211_STA_INFO_INACTIVE_TIME,
+  NL80211_STA_INFO_RX_BYTES,
+  NL80211_STA_INFO_TX_BYTES,
+  NL80211_STA_INFO_LLID,
+  NL80211_STA_INFO_PLID,
+  NL80211_STA_INFO_PLINK_STATE,
+  NL80211_STA_INFO_SIGNAL,
+  NL80211_STA_INFO_TX_BITRATE,
+  NL80211_STA_INFO_RX_PACKETS,
+  NL80211_STA_INFO_TX_PACKETS,
+  NL80211_STA_INFO_TX_RETRIES,
+  NL80211_STA_INFO_TX_FAILED,
+  NL80211_STA_INFO_SIGNAL_AVG,
+  NL80211_STA_INFO_RX_BITRATE,
+  NL80211_STA_INFO_BSS_PARAM,
+  NL80211_STA_INFO_CONNECTED_TIME,
+  NL80211_STA_INFO_STA_FLAGS,
+  NL80211_STA_INFO_BEACON_LOSS,
+  NL80211_STA_INFO_T_OFFSET,
+  NL80211_STA_INFO_LOCAL_PM,
+  NL80211_STA_INFO_PEER_PM,
+  NL80211_STA_INFO_NONPEER_PM,
+  NL80211_STA_INFO_RX_BYTES64,
+  NL80211_STA_INFO_TX_BYTES64,
+  NL80211_STA_INFO_CHAIN_SIGNAL,
+  NL80211_STA_INFO_CHAIN_SIGNAL_AVG,
+  NL80211_STA_INFO_EXPECTED_THROUGHPUT,
+  NL80211_STA_INFO_RX_DROP_MISC,
+  NL80211_STA_INFO_BEACON_RX,
+  NL80211_STA_INFO_BEACON_SIGNAL_AVG,
+  NL80211_STA_INFO_TID_STATS,
+  NL80211_STA_INFO_RX_DURATION,
+  NL80211_STA_INFO_PAD,
+  NL80211_STA_INFO_ACK_SIGNAL,
+  NL80211_STA_INFO_ACK_SIGNAL_AVG,
+  NL80211_STA_INFO_RX_MPDUS,
+  NL80211_STA_INFO_FCS_ERROR_COUNT,
+  NL80211_STA_INFO_CONNECTED_TO_GATE,
+  NL80211_STA_INFO_TX_DURATION,
+  NL80211_STA_INFO_AIRTIME_WEIGHT,
+  NL80211_STA_INFO_AIRTIME_LINK_METRIC,
+  NL80211_STA_INFO_ASSOC_AT_BOOTTIME,
+  NL80211_STA_INFO_CONNECTED_TO_AS,
+  __NL80211_STA_INFO_AFTER_LAST,
+  NL80211_STA_INFO_MAX = __NL80211_STA_INFO_AFTER_LAST - 1
+};
+#define NL80211_STA_INFO_DATA_ACK_SIGNAL_AVG NL80211_STA_INFO_ACK_SIGNAL_AVG
+enum nl80211_tid_stats {
+  __NL80211_TID_STATS_INVALID,
+  NL80211_TID_STATS_RX_MSDU,
+  NL80211_TID_STATS_TX_MSDU,
+  NL80211_TID_STATS_TX_MSDU_RETRIES,
+  NL80211_TID_STATS_TX_MSDU_FAILED,
+  NL80211_TID_STATS_PAD,
+  NL80211_TID_STATS_TXQ_STATS,
+  NUM_NL80211_TID_STATS,
+  NL80211_TID_STATS_MAX = NUM_NL80211_TID_STATS - 1
+};
+enum nl80211_txq_stats {
+  __NL80211_TXQ_STATS_INVALID,
+  NL80211_TXQ_STATS_BACKLOG_BYTES,
+  NL80211_TXQ_STATS_BACKLOG_PACKETS,
+  NL80211_TXQ_STATS_FLOWS,
+  NL80211_TXQ_STATS_DROPS,
+  NL80211_TXQ_STATS_ECN_MARKS,
+  NL80211_TXQ_STATS_OVERLIMIT,
+  NL80211_TXQ_STATS_OVERMEMORY,
+  NL80211_TXQ_STATS_COLLISIONS,
+  NL80211_TXQ_STATS_TX_BYTES,
+  NL80211_TXQ_STATS_TX_PACKETS,
+  NL80211_TXQ_STATS_MAX_FLOWS,
+  NUM_NL80211_TXQ_STATS,
+  NL80211_TXQ_STATS_MAX = NUM_NL80211_TXQ_STATS - 1
+};
+enum nl80211_mpath_flags {
+  NL80211_MPATH_FLAG_ACTIVE = 1 << 0,
+  NL80211_MPATH_FLAG_RESOLVING = 1 << 1,
+  NL80211_MPATH_FLAG_SN_VALID = 1 << 2,
+  NL80211_MPATH_FLAG_FIXED = 1 << 3,
+  NL80211_MPATH_FLAG_RESOLVED = 1 << 4,
+};
+enum nl80211_mpath_info {
+  __NL80211_MPATH_INFO_INVALID,
+  NL80211_MPATH_INFO_FRAME_QLEN,
+  NL80211_MPATH_INFO_SN,
+  NL80211_MPATH_INFO_METRIC,
+  NL80211_MPATH_INFO_EXPTIME,
+  NL80211_MPATH_INFO_FLAGS,
+  NL80211_MPATH_INFO_DISCOVERY_TIMEOUT,
+  NL80211_MPATH_INFO_DISCOVERY_RETRIES,
+  NL80211_MPATH_INFO_HOP_COUNT,
+  NL80211_MPATH_INFO_PATH_CHANGE,
+  __NL80211_MPATH_INFO_AFTER_LAST,
+  NL80211_MPATH_INFO_MAX = __NL80211_MPATH_INFO_AFTER_LAST - 1
+};
+enum nl80211_band_iftype_attr {
+  __NL80211_BAND_IFTYPE_ATTR_INVALID,
+  NL80211_BAND_IFTYPE_ATTR_IFTYPES,
+  NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC,
+  NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY,
+  NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET,
+  NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
+  NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA,
+  NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS,
+  __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
+  NL80211_BAND_IFTYPE_ATTR_MAX = __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST - 1
+};
+enum nl80211_band_attr {
+  __NL80211_BAND_ATTR_INVALID,
+  NL80211_BAND_ATTR_FREQS,
+  NL80211_BAND_ATTR_RATES,
+  NL80211_BAND_ATTR_HT_MCS_SET,
+  NL80211_BAND_ATTR_HT_CAPA,
+  NL80211_BAND_ATTR_HT_AMPDU_FACTOR,
+  NL80211_BAND_ATTR_HT_AMPDU_DENSITY,
+  NL80211_BAND_ATTR_VHT_MCS_SET,
+  NL80211_BAND_ATTR_VHT_CAPA,
+  NL80211_BAND_ATTR_IFTYPE_DATA,
+  NL80211_BAND_ATTR_EDMG_CHANNELS,
+  NL80211_BAND_ATTR_EDMG_BW_CONFIG,
+  __NL80211_BAND_ATTR_AFTER_LAST,
+  NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1
+};
+#define NL80211_BAND_ATTR_HT_CAPA NL80211_BAND_ATTR_HT_CAPA
+enum nl80211_wmm_rule {
+  __NL80211_WMMR_INVALID,
+  NL80211_WMMR_CW_MIN,
+  NL80211_WMMR_CW_MAX,
+  NL80211_WMMR_AIFSN,
+  NL80211_WMMR_TXOP,
+  __NL80211_WMMR_LAST,
+  NL80211_WMMR_MAX = __NL80211_WMMR_LAST - 1
+};
+enum nl80211_frequency_attr {
+  __NL80211_FREQUENCY_ATTR_INVALID,
+  NL80211_FREQUENCY_ATTR_FREQ,
+  NL80211_FREQUENCY_ATTR_DISABLED,
+  NL80211_FREQUENCY_ATTR_NO_IR,
+  __NL80211_FREQUENCY_ATTR_NO_IBSS,
+  NL80211_FREQUENCY_ATTR_RADAR,
+  NL80211_FREQUENCY_ATTR_MAX_TX_POWER,
+  NL80211_FREQUENCY_ATTR_DFS_STATE,
+  NL80211_FREQUENCY_ATTR_DFS_TIME,
+  NL80211_FREQUENCY_ATTR_NO_HT40_MINUS,
+  NL80211_FREQUENCY_ATTR_NO_HT40_PLUS,
+  NL80211_FREQUENCY_ATTR_NO_80MHZ,
+  NL80211_FREQUENCY_ATTR_NO_160MHZ,
+  NL80211_FREQUENCY_ATTR_DFS_CAC_TIME,
+  NL80211_FREQUENCY_ATTR_INDOOR_ONLY,
+  NL80211_FREQUENCY_ATTR_IR_CONCURRENT,
+  NL80211_FREQUENCY_ATTR_NO_20MHZ,
+  NL80211_FREQUENCY_ATTR_NO_10MHZ,
+  NL80211_FREQUENCY_ATTR_WMM,
+  NL80211_FREQUENCY_ATTR_NO_HE,
+  NL80211_FREQUENCY_ATTR_OFFSET,
+  NL80211_FREQUENCY_ATTR_1MHZ,
+  NL80211_FREQUENCY_ATTR_2MHZ,
+  NL80211_FREQUENCY_ATTR_4MHZ,
+  NL80211_FREQUENCY_ATTR_8MHZ,
+  NL80211_FREQUENCY_ATTR_16MHZ,
+  __NL80211_FREQUENCY_ATTR_AFTER_LAST,
+  NL80211_FREQUENCY_ATTR_MAX = __NL80211_FREQUENCY_ATTR_AFTER_LAST - 1
+};
+#define NL80211_FREQUENCY_ATTR_MAX_TX_POWER NL80211_FREQUENCY_ATTR_MAX_TX_POWER
+#define NL80211_FREQUENCY_ATTR_PASSIVE_SCAN NL80211_FREQUENCY_ATTR_NO_IR
+#define NL80211_FREQUENCY_ATTR_NO_IBSS NL80211_FREQUENCY_ATTR_NO_IR
+#define NL80211_FREQUENCY_ATTR_NO_IR NL80211_FREQUENCY_ATTR_NO_IR
+#define NL80211_FREQUENCY_ATTR_GO_CONCURRENT NL80211_FREQUENCY_ATTR_IR_CONCURRENT
+enum nl80211_bitrate_attr {
+  __NL80211_BITRATE_ATTR_INVALID,
+  NL80211_BITRATE_ATTR_RATE,
+  NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE,
+  __NL80211_BITRATE_ATTR_AFTER_LAST,
+  NL80211_BITRATE_ATTR_MAX = __NL80211_BITRATE_ATTR_AFTER_LAST - 1
+};
+enum nl80211_reg_initiator {
+  NL80211_REGDOM_SET_BY_CORE,
+  NL80211_REGDOM_SET_BY_USER,
+  NL80211_REGDOM_SET_BY_DRIVER,
+  NL80211_REGDOM_SET_BY_COUNTRY_IE,
+};
+enum nl80211_reg_type {
+  NL80211_REGDOM_TYPE_COUNTRY,
+  NL80211_REGDOM_TYPE_WORLD,
+  NL80211_REGDOM_TYPE_CUSTOM_WORLD,
+  NL80211_REGDOM_TYPE_INTERSECTION,
+};
+enum nl80211_reg_rule_attr {
+  __NL80211_REG_RULE_ATTR_INVALID,
+  NL80211_ATTR_REG_RULE_FLAGS,
+  NL80211_ATTR_FREQ_RANGE_START,
+  NL80211_ATTR_FREQ_RANGE_END,
+  NL80211_ATTR_FREQ_RANGE_MAX_BW,
+  NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN,
+  NL80211_ATTR_POWER_RULE_MAX_EIRP,
+  NL80211_ATTR_DFS_CAC_TIME,
+  __NL80211_REG_RULE_ATTR_AFTER_LAST,
+  NL80211_REG_RULE_ATTR_MAX = __NL80211_REG_RULE_ATTR_AFTER_LAST - 1
+};
+enum nl80211_sched_scan_match_attr {
+  __NL80211_SCHED_SCAN_MATCH_ATTR_INVALID,
+  NL80211_SCHED_SCAN_MATCH_ATTR_SSID,
+  NL80211_SCHED_SCAN_MATCH_ATTR_RSSI,
+  NL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI,
+  NL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST,
+  NL80211_SCHED_SCAN_MATCH_ATTR_BSSID,
+  NL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI,
+  __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST,
+  NL80211_SCHED_SCAN_MATCH_ATTR_MAX = __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST - 1
+};
+#define NL80211_ATTR_SCHED_SCAN_MATCH_SSID NL80211_SCHED_SCAN_MATCH_ATTR_SSID
+enum nl80211_reg_rule_flags {
+  NL80211_RRF_NO_OFDM = 1 << 0,
+  NL80211_RRF_NO_CCK = 1 << 1,
+  NL80211_RRF_NO_INDOOR = 1 << 2,
+  NL80211_RRF_NO_OUTDOOR = 1 << 3,
+  NL80211_RRF_DFS = 1 << 4,
+  NL80211_RRF_PTP_ONLY = 1 << 5,
+  NL80211_RRF_PTMP_ONLY = 1 << 6,
+  NL80211_RRF_NO_IR = 1 << 7,
+  __NL80211_RRF_NO_IBSS = 1 << 8,
+  NL80211_RRF_AUTO_BW = 1 << 11,
+  NL80211_RRF_IR_CONCURRENT = 1 << 12,
+  NL80211_RRF_NO_HT40MINUS = 1 << 13,
+  NL80211_RRF_NO_HT40PLUS = 1 << 14,
+  NL80211_RRF_NO_80MHZ = 1 << 15,
+  NL80211_RRF_NO_160MHZ = 1 << 16,
+  NL80211_RRF_NO_HE = 1 << 17,
+};
+#define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
+#define NL80211_RRF_NO_IBSS NL80211_RRF_NO_IR
+#define NL80211_RRF_NO_IR NL80211_RRF_NO_IR
+#define NL80211_RRF_NO_HT40 (NL80211_RRF_NO_HT40MINUS | NL80211_RRF_NO_HT40PLUS)
+#define NL80211_RRF_GO_CONCURRENT NL80211_RRF_IR_CONCURRENT
+#define NL80211_RRF_NO_IR_ALL (NL80211_RRF_NO_IR | __NL80211_RRF_NO_IBSS)
+enum nl80211_dfs_regions {
+  NL80211_DFS_UNSET = 0,
+  NL80211_DFS_FCC = 1,
+  NL80211_DFS_ETSI = 2,
+  NL80211_DFS_JP = 3,
+};
+enum nl80211_user_reg_hint_type {
+  NL80211_USER_REG_HINT_USER = 0,
+  NL80211_USER_REG_HINT_CELL_BASE = 1,
+  NL80211_USER_REG_HINT_INDOOR = 2,
+};
+enum nl80211_survey_info {
+  __NL80211_SURVEY_INFO_INVALID,
+  NL80211_SURVEY_INFO_FREQUENCY,
+  NL80211_SURVEY_INFO_NOISE,
+  NL80211_SURVEY_INFO_IN_USE,
+  NL80211_SURVEY_INFO_TIME,
+  NL80211_SURVEY_INFO_TIME_BUSY,
+  NL80211_SURVEY_INFO_TIME_EXT_BUSY,
+  NL80211_SURVEY_INFO_TIME_RX,
+  NL80211_SURVEY_INFO_TIME_TX,
+  NL80211_SURVEY_INFO_TIME_SCAN,
+  NL80211_SURVEY_INFO_PAD,
+  NL80211_SURVEY_INFO_TIME_BSS_RX,
+  NL80211_SURVEY_INFO_FREQUENCY_OFFSET,
+  __NL80211_SURVEY_INFO_AFTER_LAST,
+  NL80211_SURVEY_INFO_MAX = __NL80211_SURVEY_INFO_AFTER_LAST - 1
+};
+#define NL80211_SURVEY_INFO_CHANNEL_TIME NL80211_SURVEY_INFO_TIME
+#define NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY NL80211_SURVEY_INFO_TIME_BUSY
+#define NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY NL80211_SURVEY_INFO_TIME_EXT_BUSY
+#define NL80211_SURVEY_INFO_CHANNEL_TIME_RX NL80211_SURVEY_INFO_TIME_RX
+#define NL80211_SURVEY_INFO_CHANNEL_TIME_TX NL80211_SURVEY_INFO_TIME_TX
+enum nl80211_mntr_flags {
+  __NL80211_MNTR_FLAG_INVALID,
+  NL80211_MNTR_FLAG_FCSFAIL,
+  NL80211_MNTR_FLAG_PLCPFAIL,
+  NL80211_MNTR_FLAG_CONTROL,
+  NL80211_MNTR_FLAG_OTHER_BSS,
+  NL80211_MNTR_FLAG_COOK_FRAMES,
+  NL80211_MNTR_FLAG_ACTIVE,
+  __NL80211_MNTR_FLAG_AFTER_LAST,
+  NL80211_MNTR_FLAG_MAX = __NL80211_MNTR_FLAG_AFTER_LAST - 1
+};
+enum nl80211_mesh_power_mode {
+  NL80211_MESH_POWER_UNKNOWN,
+  NL80211_MESH_POWER_ACTIVE,
+  NL80211_MESH_POWER_LIGHT_SLEEP,
+  NL80211_MESH_POWER_DEEP_SLEEP,
+  __NL80211_MESH_POWER_AFTER_LAST,
+  NL80211_MESH_POWER_MAX = __NL80211_MESH_POWER_AFTER_LAST - 1
+};
+enum nl80211_meshconf_params {
+  __NL80211_MESHCONF_INVALID,
+  NL80211_MESHCONF_RETRY_TIMEOUT,
+  NL80211_MESHCONF_CONFIRM_TIMEOUT,
+  NL80211_MESHCONF_HOLDING_TIMEOUT,
+  NL80211_MESHCONF_MAX_PEER_LINKS,
+  NL80211_MESHCONF_MAX_RETRIES,
+  NL80211_MESHCONF_TTL,
+  NL80211_MESHCONF_AUTO_OPEN_PLINKS,
+  NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES,
+  NL80211_MESHCONF_PATH_REFRESH_TIME,
+  NL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT,
+  NL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT,
+  NL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL,
+  NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME,
+  NL80211_MESHCONF_HWMP_ROOTMODE,
+  NL80211_MESHCONF_ELEMENT_TTL,
+  NL80211_MESHCONF_HWMP_RANN_INTERVAL,
+  NL80211_MESHCONF_GATE_ANNOUNCEMENTS,
+  NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL,
+  NL80211_MESHCONF_FORWARDING,
+  NL80211_MESHCONF_RSSI_THRESHOLD,
+  NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR,
+  NL80211_MESHCONF_HT_OPMODE,
+  NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT,
+  NL80211_MESHCONF_HWMP_ROOT_INTERVAL,
+  NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL,
+  NL80211_MESHCONF_POWER_MODE,
+  NL80211_MESHCONF_AWAKE_WINDOW,
+  NL80211_MESHCONF_PLINK_TIMEOUT,
+  NL80211_MESHCONF_CONNECTED_TO_GATE,
+  NL80211_MESHCONF_NOLEARN,
+  NL80211_MESHCONF_CONNECTED_TO_AS,
+  __NL80211_MESHCONF_ATTR_AFTER_LAST,
+  NL80211_MESHCONF_ATTR_MAX = __NL80211_MESHCONF_ATTR_AFTER_LAST - 1
+};
+enum nl80211_mesh_setup_params {
+  __NL80211_MESH_SETUP_INVALID,
+  NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL,
+  NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC,
+  NL80211_MESH_SETUP_IE,
+  NL80211_MESH_SETUP_USERSPACE_AUTH,
+  NL80211_MESH_SETUP_USERSPACE_AMPE,
+  NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC,
+  NL80211_MESH_SETUP_USERSPACE_MPM,
+  NL80211_MESH_SETUP_AUTH_PROTOCOL,
+  __NL80211_MESH_SETUP_ATTR_AFTER_LAST,
+  NL80211_MESH_SETUP_ATTR_MAX = __NL80211_MESH_SETUP_ATTR_AFTER_LAST - 1
+};
+enum nl80211_txq_attr {
+  __NL80211_TXQ_ATTR_INVALID,
+  NL80211_TXQ_ATTR_AC,
+  NL80211_TXQ_ATTR_TXOP,
+  NL80211_TXQ_ATTR_CWMIN,
+  NL80211_TXQ_ATTR_CWMAX,
+  NL80211_TXQ_ATTR_AIFS,
+  __NL80211_TXQ_ATTR_AFTER_LAST,
+  NL80211_TXQ_ATTR_MAX = __NL80211_TXQ_ATTR_AFTER_LAST - 1
+};
+enum nl80211_ac {
+  NL80211_AC_VO,
+  NL80211_AC_VI,
+  NL80211_AC_BE,
+  NL80211_AC_BK,
+  NL80211_NUM_ACS
+};
+#define NL80211_TXQ_ATTR_QUEUE NL80211_TXQ_ATTR_AC
+#define NL80211_TXQ_Q_VO NL80211_AC_VO
+#define NL80211_TXQ_Q_VI NL80211_AC_VI
+#define NL80211_TXQ_Q_BE NL80211_AC_BE
+#define NL80211_TXQ_Q_BK NL80211_AC_BK
+enum nl80211_channel_type {
+  NL80211_CHAN_NO_HT,
+  NL80211_CHAN_HT20,
+  NL80211_CHAN_HT40MINUS,
+  NL80211_CHAN_HT40PLUS
+};
+enum nl80211_key_mode {
+  NL80211_KEY_RX_TX,
+  NL80211_KEY_NO_TX,
+  NL80211_KEY_SET_TX
+};
+enum nl80211_chan_width {
+  NL80211_CHAN_WIDTH_20_NOHT,
+  NL80211_CHAN_WIDTH_20,
+  NL80211_CHAN_WIDTH_40,
+  NL80211_CHAN_WIDTH_80,
+  NL80211_CHAN_WIDTH_80P80,
+  NL80211_CHAN_WIDTH_160,
+  NL80211_CHAN_WIDTH_5,
+  NL80211_CHAN_WIDTH_10,
+  NL80211_CHAN_WIDTH_1,
+  NL80211_CHAN_WIDTH_2,
+  NL80211_CHAN_WIDTH_4,
+  NL80211_CHAN_WIDTH_8,
+  NL80211_CHAN_WIDTH_16,
+};
+enum nl80211_bss_scan_width {
+  NL80211_BSS_CHAN_WIDTH_20,
+  NL80211_BSS_CHAN_WIDTH_10,
+  NL80211_BSS_CHAN_WIDTH_5,
+  NL80211_BSS_CHAN_WIDTH_1,
+  NL80211_BSS_CHAN_WIDTH_2,
+};
+enum nl80211_bss {
+  __NL80211_BSS_INVALID,
+  NL80211_BSS_BSSID,
+  NL80211_BSS_FREQUENCY,
+  NL80211_BSS_TSF,
+  NL80211_BSS_BEACON_INTERVAL,
+  NL80211_BSS_CAPABILITY,
+  NL80211_BSS_INFORMATION_ELEMENTS,
+  NL80211_BSS_SIGNAL_MBM,
+  NL80211_BSS_SIGNAL_UNSPEC,
+  NL80211_BSS_STATUS,
+  NL80211_BSS_SEEN_MS_AGO,
+  NL80211_BSS_BEACON_IES,
+  NL80211_BSS_CHAN_WIDTH,
+  NL80211_BSS_BEACON_TSF,
+  NL80211_BSS_PRESP_DATA,
+  NL80211_BSS_LAST_SEEN_BOOTTIME,
+  NL80211_BSS_PAD,
+  NL80211_BSS_PARENT_TSF,
+  NL80211_BSS_PARENT_BSSID,
+  NL80211_BSS_CHAIN_SIGNAL,
+  NL80211_BSS_FREQUENCY_OFFSET,
+  __NL80211_BSS_AFTER_LAST,
+  NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1
+};
+enum nl80211_bss_status {
+  NL80211_BSS_STATUS_AUTHENTICATED,
+  NL80211_BSS_STATUS_ASSOCIATED,
+  NL80211_BSS_STATUS_IBSS_JOINED,
+};
+enum nl80211_auth_type {
+  NL80211_AUTHTYPE_OPEN_SYSTEM,
+  NL80211_AUTHTYPE_SHARED_KEY,
+  NL80211_AUTHTYPE_FT,
+  NL80211_AUTHTYPE_NETWORK_EAP,
+  NL80211_AUTHTYPE_SAE,
+  NL80211_AUTHTYPE_FILS_SK,
+  NL80211_AUTHTYPE_FILS_SK_PFS,
+  NL80211_AUTHTYPE_FILS_PK,
+  __NL80211_AUTHTYPE_NUM,
+  NL80211_AUTHTYPE_MAX = __NL80211_AUTHTYPE_NUM - 1,
+  NL80211_AUTHTYPE_AUTOMATIC
+};
+enum nl80211_key_type {
+  NL80211_KEYTYPE_GROUP,
+  NL80211_KEYTYPE_PAIRWISE,
+  NL80211_KEYTYPE_PEERKEY,
+  NUM_NL80211_KEYTYPES
+};
+enum nl80211_mfp {
+  NL80211_MFP_NO,
+  NL80211_MFP_REQUIRED,
+  NL80211_MFP_OPTIONAL,
+};
+enum nl80211_wpa_versions {
+  NL80211_WPA_VERSION_1 = 1 << 0,
+  NL80211_WPA_VERSION_2 = 1 << 1,
+  NL80211_WPA_VERSION_3 = 1 << 2,
+};
+enum nl80211_key_default_types {
+  __NL80211_KEY_DEFAULT_TYPE_INVALID,
+  NL80211_KEY_DEFAULT_TYPE_UNICAST,
+  NL80211_KEY_DEFAULT_TYPE_MULTICAST,
+  NUM_NL80211_KEY_DEFAULT_TYPES
+};
+enum nl80211_key_attributes {
+  __NL80211_KEY_INVALID,
+  NL80211_KEY_DATA,
+  NL80211_KEY_IDX,
+  NL80211_KEY_CIPHER,
+  NL80211_KEY_SEQ,
+  NL80211_KEY_DEFAULT,
+  NL80211_KEY_DEFAULT_MGMT,
+  NL80211_KEY_TYPE,
+  NL80211_KEY_DEFAULT_TYPES,
+  NL80211_KEY_MODE,
+  NL80211_KEY_DEFAULT_BEACON,
+  __NL80211_KEY_AFTER_LAST,
+  NL80211_KEY_MAX = __NL80211_KEY_AFTER_LAST - 1
+};
+enum nl80211_tx_rate_attributes {
+  __NL80211_TXRATE_INVALID,
+  NL80211_TXRATE_LEGACY,
+  NL80211_TXRATE_HT,
+  NL80211_TXRATE_VHT,
+  NL80211_TXRATE_GI,
+  NL80211_TXRATE_HE,
+  NL80211_TXRATE_HE_GI,
+  NL80211_TXRATE_HE_LTF,
+  __NL80211_TXRATE_AFTER_LAST,
+  NL80211_TXRATE_MAX = __NL80211_TXRATE_AFTER_LAST - 1
+};
+#define NL80211_TXRATE_MCS NL80211_TXRATE_HT
+#define NL80211_VHT_NSS_MAX 8
+struct nl80211_txrate_vht {
+  __u16 mcs[NL80211_VHT_NSS_MAX];
+};
+#define NL80211_HE_NSS_MAX 8
+struct nl80211_txrate_he {
+  __u16 mcs[NL80211_HE_NSS_MAX];
+};
+enum nl80211_txrate_gi {
+  NL80211_TXRATE_DEFAULT_GI,
+  NL80211_TXRATE_FORCE_SGI,
+  NL80211_TXRATE_FORCE_LGI,
+};
+enum nl80211_band {
+  NL80211_BAND_2GHZ,
+  NL80211_BAND_5GHZ,
+  NL80211_BAND_60GHZ,
+  NL80211_BAND_6GHZ,
+  NL80211_BAND_S1GHZ,
+  NL80211_BAND_LC,
+  NUM_NL80211_BANDS,
+};
+enum nl80211_ps_state {
+  NL80211_PS_DISABLED,
+  NL80211_PS_ENABLED,
+};
+enum nl80211_attr_cqm {
+  __NL80211_ATTR_CQM_INVALID,
+  NL80211_ATTR_CQM_RSSI_THOLD,
+  NL80211_ATTR_CQM_RSSI_HYST,
+  NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT,
+  NL80211_ATTR_CQM_PKT_LOSS_EVENT,
+  NL80211_ATTR_CQM_TXE_RATE,
+  NL80211_ATTR_CQM_TXE_PKTS,
+  NL80211_ATTR_CQM_TXE_INTVL,
+  NL80211_ATTR_CQM_BEACON_LOSS_EVENT,
+  NL80211_ATTR_CQM_RSSI_LEVEL,
+  __NL80211_ATTR_CQM_AFTER_LAST,
+  NL80211_ATTR_CQM_MAX = __NL80211_ATTR_CQM_AFTER_LAST - 1
+};
+enum nl80211_cqm_rssi_threshold_event {
+  NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW,
+  NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH,
+  NL80211_CQM_RSSI_BEACON_LOSS_EVENT,
+};
+enum nl80211_tx_power_setting {
+  NL80211_TX_POWER_AUTOMATIC,
+  NL80211_TX_POWER_LIMITED,
+  NL80211_TX_POWER_FIXED,
+};
+enum nl80211_tid_config {
+  NL80211_TID_CONFIG_ENABLE,
+  NL80211_TID_CONFIG_DISABLE,
+};
+enum nl80211_tx_rate_setting {
+  NL80211_TX_RATE_AUTOMATIC,
+  NL80211_TX_RATE_LIMITED,
+  NL80211_TX_RATE_FIXED,
+};
+enum nl80211_tid_config_attr {
+  __NL80211_TID_CONFIG_ATTR_INVALID,
+  NL80211_TID_CONFIG_ATTR_PAD,
+  NL80211_TID_CONFIG_ATTR_VIF_SUPP,
+  NL80211_TID_CONFIG_ATTR_PEER_SUPP,
+  NL80211_TID_CONFIG_ATTR_OVERRIDE,
+  NL80211_TID_CONFIG_ATTR_TIDS,
+  NL80211_TID_CONFIG_ATTR_NOACK,
+  NL80211_TID_CONFIG_ATTR_RETRY_SHORT,
+  NL80211_TID_CONFIG_ATTR_RETRY_LONG,
+  NL80211_TID_CONFIG_ATTR_AMPDU_CTRL,
+  NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL,
+  NL80211_TID_CONFIG_ATTR_AMSDU_CTRL,
+  NL80211_TID_CONFIG_ATTR_TX_RATE_TYPE,
+  NL80211_TID_CONFIG_ATTR_TX_RATE,
+  __NL80211_TID_CONFIG_ATTR_AFTER_LAST,
+  NL80211_TID_CONFIG_ATTR_MAX = __NL80211_TID_CONFIG_ATTR_AFTER_LAST - 1
+};
+enum nl80211_packet_pattern_attr {
+  __NL80211_PKTPAT_INVALID,
+  NL80211_PKTPAT_MASK,
+  NL80211_PKTPAT_PATTERN,
+  NL80211_PKTPAT_OFFSET,
+  NUM_NL80211_PKTPAT,
+  MAX_NL80211_PKTPAT = NUM_NL80211_PKTPAT - 1,
+};
+struct nl80211_pattern_support {
+  __u32 max_patterns;
+  __u32 min_pattern_len;
+  __u32 max_pattern_len;
+  __u32 max_pkt_offset;
+} __attribute__((packed));
+#define __NL80211_WOWLAN_PKTPAT_INVALID __NL80211_PKTPAT_INVALID
+#define NL80211_WOWLAN_PKTPAT_MASK NL80211_PKTPAT_MASK
+#define NL80211_WOWLAN_PKTPAT_PATTERN NL80211_PKTPAT_PATTERN
+#define NL80211_WOWLAN_PKTPAT_OFFSET NL80211_PKTPAT_OFFSET
+#define NUM_NL80211_WOWLAN_PKTPAT NUM_NL80211_PKTPAT
+#define MAX_NL80211_WOWLAN_PKTPAT MAX_NL80211_PKTPAT
+#define nl80211_wowlan_pattern_support nl80211_pattern_support
+enum nl80211_wowlan_triggers {
+  __NL80211_WOWLAN_TRIG_INVALID,
+  NL80211_WOWLAN_TRIG_ANY,
+  NL80211_WOWLAN_TRIG_DISCONNECT,
+  NL80211_WOWLAN_TRIG_MAGIC_PKT,
+  NL80211_WOWLAN_TRIG_PKT_PATTERN,
+  NL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED,
+  NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE,
+  NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST,
+  NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE,
+  NL80211_WOWLAN_TRIG_RFKILL_RELEASE,
+  NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211,
+  NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN,
+  NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023,
+  NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN,
+  NL80211_WOWLAN_TRIG_TCP_CONNECTION,
+  NL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH,
+  NL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST,
+  NL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS,
+  NL80211_WOWLAN_TRIG_NET_DETECT,
+  NL80211_WOWLAN_TRIG_NET_DETECT_RESULTS,
+  NUM_NL80211_WOWLAN_TRIG,
+  MAX_NL80211_WOWLAN_TRIG = NUM_NL80211_WOWLAN_TRIG - 1
+};
+struct nl80211_wowlan_tcp_data_seq {
+  __u32 start, offset, len;
+};
+struct nl80211_wowlan_tcp_data_token {
+  __u32 offset, len;
+  __u8 token_stream[];
+};
+struct nl80211_wowlan_tcp_data_token_feature {
+  __u32 min_len, max_len, bufsize;
+};
+enum nl80211_wowlan_tcp_attrs {
+  __NL80211_WOWLAN_TCP_INVALID,
+  NL80211_WOWLAN_TCP_SRC_IPV4,
+  NL80211_WOWLAN_TCP_DST_IPV4,
+  NL80211_WOWLAN_TCP_DST_MAC,
+  NL80211_WOWLAN_TCP_SRC_PORT,
+  NL80211_WOWLAN_TCP_DST_PORT,
+  NL80211_WOWLAN_TCP_DATA_PAYLOAD,
+  NL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ,
+  NL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN,
+  NL80211_WOWLAN_TCP_DATA_INTERVAL,
+  NL80211_WOWLAN_TCP_WAKE_PAYLOAD,
+  NL80211_WOWLAN_TCP_WAKE_MASK,
+  NUM_NL80211_WOWLAN_TCP,
+  MAX_NL80211_WOWLAN_TCP = NUM_NL80211_WOWLAN_TCP - 1
+};
+struct nl80211_coalesce_rule_support {
+  __u32 max_rules;
+  struct nl80211_pattern_support pat;
+  __u32 max_delay;
+} __attribute__((packed));
+enum nl80211_attr_coalesce_rule {
+  __NL80211_COALESCE_RULE_INVALID,
+  NL80211_ATTR_COALESCE_RULE_DELAY,
+  NL80211_ATTR_COALESCE_RULE_CONDITION,
+  NL80211_ATTR_COALESCE_RULE_PKT_PATTERN,
+  NUM_NL80211_ATTR_COALESCE_RULE,
+  NL80211_ATTR_COALESCE_RULE_MAX = NUM_NL80211_ATTR_COALESCE_RULE - 1
+};
+enum nl80211_coalesce_condition {
+  NL80211_COALESCE_CONDITION_MATCH,
+  NL80211_COALESCE_CONDITION_NO_MATCH
+};
+enum nl80211_iface_limit_attrs {
+  NL80211_IFACE_LIMIT_UNSPEC,
+  NL80211_IFACE_LIMIT_MAX,
+  NL80211_IFACE_LIMIT_TYPES,
+  NUM_NL80211_IFACE_LIMIT,
+  MAX_NL80211_IFACE_LIMIT = NUM_NL80211_IFACE_LIMIT - 1
+};
+enum nl80211_if_combination_attrs {
+  NL80211_IFACE_COMB_UNSPEC,
+  NL80211_IFACE_COMB_LIMITS,
+  NL80211_IFACE_COMB_MAXNUM,
+  NL80211_IFACE_COMB_STA_AP_BI_MATCH,
+  NL80211_IFACE_COMB_NUM_CHANNELS,
+  NL80211_IFACE_COMB_RADAR_DETECT_WIDTHS,
+  NL80211_IFACE_COMB_RADAR_DETECT_REGIONS,
+  NL80211_IFACE_COMB_BI_MIN_GCD,
+  NUM_NL80211_IFACE_COMB,
+  MAX_NL80211_IFACE_COMB = NUM_NL80211_IFACE_COMB - 1
+};
+enum nl80211_plink_state {
+  NL80211_PLINK_LISTEN,
+  NL80211_PLINK_OPN_SNT,
+  NL80211_PLINK_OPN_RCVD,
+  NL80211_PLINK_CNF_RCVD,
+  NL80211_PLINK_ESTAB,
+  NL80211_PLINK_HOLDING,
+  NL80211_PLINK_BLOCKED,
+  NUM_NL80211_PLINK_STATES,
+  MAX_NL80211_PLINK_STATES = NUM_NL80211_PLINK_STATES - 1
+};
+enum plink_actions {
+  NL80211_PLINK_ACTION_NO_ACTION,
+  NL80211_PLINK_ACTION_OPEN,
+  NL80211_PLINK_ACTION_BLOCK,
+  NUM_NL80211_PLINK_ACTIONS,
+};
+#define NL80211_KCK_LEN 16
+#define NL80211_KEK_LEN 16
+#define NL80211_KCK_EXT_LEN 24
+#define NL80211_KEK_EXT_LEN 32
+#define NL80211_REPLAY_CTR_LEN 8
+enum nl80211_rekey_data {
+  __NL80211_REKEY_DATA_INVALID,
+  NL80211_REKEY_DATA_KEK,
+  NL80211_REKEY_DATA_KCK,
+  NL80211_REKEY_DATA_REPLAY_CTR,
+  NL80211_REKEY_DATA_AKM,
+  NUM_NL80211_REKEY_DATA,
+  MAX_NL80211_REKEY_DATA = NUM_NL80211_REKEY_DATA - 1
+};
+enum nl80211_hidden_ssid {
+  NL80211_HIDDEN_SSID_NOT_IN_USE,
+  NL80211_HIDDEN_SSID_ZERO_LEN,
+  NL80211_HIDDEN_SSID_ZERO_CONTENTS
+};
+enum nl80211_sta_wme_attr {
+  __NL80211_STA_WME_INVALID,
+  NL80211_STA_WME_UAPSD_QUEUES,
+  NL80211_STA_WME_MAX_SP,
+  __NL80211_STA_WME_AFTER_LAST,
+  NL80211_STA_WME_MAX = __NL80211_STA_WME_AFTER_LAST - 1
+};
+enum nl80211_pmksa_candidate_attr {
+  __NL80211_PMKSA_CANDIDATE_INVALID,
+  NL80211_PMKSA_CANDIDATE_INDEX,
+  NL80211_PMKSA_CANDIDATE_BSSID,
+  NL80211_PMKSA_CANDIDATE_PREAUTH,
+  NUM_NL80211_PMKSA_CANDIDATE,
+  MAX_NL80211_PMKSA_CANDIDATE = NUM_NL80211_PMKSA_CANDIDATE - 1
+};
+enum nl80211_tdls_operation {
+  NL80211_TDLS_DISCOVERY_REQ,
+  NL80211_TDLS_SETUP,
+  NL80211_TDLS_TEARDOWN,
+  NL80211_TDLS_ENABLE_LINK,
+  NL80211_TDLS_DISABLE_LINK,
+};
+enum nl80211_feature_flags {
+  NL80211_FEATURE_SK_TX_STATUS = 1 << 0,
+  NL80211_FEATURE_HT_IBSS = 1 << 1,
+  NL80211_FEATURE_INACTIVITY_TIMER = 1 << 2,
+  NL80211_FEATURE_CELL_BASE_REG_HINTS = 1 << 3,
+  NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL = 1 << 4,
+  NL80211_FEATURE_SAE = 1 << 5,
+  NL80211_FEATURE_LOW_PRIORITY_SCAN = 1 << 6,
+  NL80211_FEATURE_SCAN_FLUSH = 1 << 7,
+  NL80211_FEATURE_AP_SCAN = 1 << 8,
+  NL80211_FEATURE_VIF_TXPOWER = 1 << 9,
+  NL80211_FEATURE_NEED_OBSS_SCAN = 1 << 10,
+  NL80211_FEATURE_P2P_GO_CTWIN = 1 << 11,
+  NL80211_FEATURE_P2P_GO_OPPPS = 1 << 12,
+  NL80211_FEATURE_ADVERTISE_CHAN_LIMITS = 1 << 14,
+  NL80211_FEATURE_FULL_AP_CLIENT_STATE = 1 << 15,
+  NL80211_FEATURE_USERSPACE_MPM = 1 << 16,
+  NL80211_FEATURE_ACTIVE_MONITOR = 1 << 17,
+  NL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE = 1 << 18,
+  NL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES = 1 << 19,
+  NL80211_FEATURE_WFA_TPC_IE_IN_PROBES = 1 << 20,
+  NL80211_FEATURE_QUIET = 1 << 21,
+  NL80211_FEATURE_TX_POWER_INSERTION = 1 << 22,
+  NL80211_FEATURE_ACKTO_ESTIMATION = 1 << 23,
+  NL80211_FEATURE_STATIC_SMPS = 1 << 24,
+  NL80211_FEATURE_DYNAMIC_SMPS = 1 << 25,
+  NL80211_FEATURE_SUPPORTS_WMM_ADMISSION = 1 << 26,
+  NL80211_FEATURE_MAC_ON_CREATE = 1 << 27,
+  NL80211_FEATURE_TDLS_CHANNEL_SWITCH = 1 << 28,
+  NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR = 1 << 29,
+  NL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR = 1 << 30,
+  NL80211_FEATURE_ND_RANDOM_MAC_ADDR = 1U << 31,
+};
+enum nl80211_ext_feature_index {
+  NL80211_EXT_FEATURE_VHT_IBSS,
+  NL80211_EXT_FEATURE_RRM,
+  NL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER,
+  NL80211_EXT_FEATURE_SCAN_START_TIME,
+  NL80211_EXT_FEATURE_BSS_PARENT_TSF,
+  NL80211_EXT_FEATURE_SET_SCAN_DWELL,
+  NL80211_EXT_FEATURE_BEACON_RATE_LEGACY,
+  NL80211_EXT_FEATURE_BEACON_RATE_HT,
+  NL80211_EXT_FEATURE_BEACON_RATE_VHT,
+  NL80211_EXT_FEATURE_FILS_STA,
+  NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA,
+  NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED,
+  NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI,
+  NL80211_EXT_FEATURE_CQM_RSSI_LIST,
+  NL80211_EXT_FEATURE_FILS_SK_OFFLOAD,
+  NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK,
+  NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X,
+  NL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME,
+  NL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP,
+  NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE,
+  NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION,
+  NL80211_EXT_FEATURE_MFP_OPTIONAL,
+  NL80211_EXT_FEATURE_LOW_SPAN_SCAN,
+  NL80211_EXT_FEATURE_LOW_POWER_SCAN,
+  NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN,
+  NL80211_EXT_FEATURE_DFS_OFFLOAD,
+  NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211,
+  NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT,
+  NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT = NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT,
+  NL80211_EXT_FEATURE_TXQS,
+  NL80211_EXT_FEATURE_SCAN_RANDOM_SN,
+  NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT,
+  NL80211_EXT_FEATURE_CAN_REPLACE_PTK0,
+  NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER,
+  NL80211_EXT_FEATURE_AIRTIME_FAIRNESS,
+  NL80211_EXT_FEATURE_AP_PMKSA_CACHING,
+  NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD,
+  NL80211_EXT_FEATURE_EXT_KEY_ID,
+  NL80211_EXT_FEATURE_STA_TX_PWR,
+  NL80211_EXT_FEATURE_SAE_OFFLOAD,
+  NL80211_EXT_FEATURE_VLAN_OFFLOAD,
+  NL80211_EXT_FEATURE_AQL,
+  NL80211_EXT_FEATURE_BEACON_PROTECTION,
+  NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH,
+  NL80211_EXT_FEATURE_PROTECTED_TWT,
+  NL80211_EXT_FEATURE_DEL_IBSS_STA,
+  NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS,
+  NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT,
+  NL80211_EXT_FEATURE_SCAN_FREQ_KHZ,
+  NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS,
+  NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION,
+  NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK,
+  NL80211_EXT_FEATURE_SAE_OFFLOAD_AP,
+  NL80211_EXT_FEATURE_FILS_DISCOVERY,
+  NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP,
+  NL80211_EXT_FEATURE_BEACON_RATE_HE,
+  NL80211_EXT_FEATURE_SECURE_LTF,
+  NL80211_EXT_FEATURE_SECURE_RTT,
+  NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE,
+  NL80211_EXT_FEATURE_BSS_COLOR,
+  NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
+  NUM_NL80211_EXT_FEATURES,
+  MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
+};
+enum nl80211_probe_resp_offload_support_attr {
+  NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS = 1 << 0,
+  NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS2 = 1 << 1,
+  NL80211_PROBE_RESP_OFFLOAD_SUPPORT_P2P = 1 << 2,
+  NL80211_PROBE_RESP_OFFLOAD_SUPPORT_80211U = 1 << 3,
+};
+enum nl80211_connect_failed_reason {
+  NL80211_CONN_FAIL_MAX_CLIENTS,
+  NL80211_CONN_FAIL_BLOCKED_CLIENT,
+};
+enum nl80211_timeout_reason {
+  NL80211_TIMEOUT_UNSPECIFIED,
+  NL80211_TIMEOUT_SCAN,
+  NL80211_TIMEOUT_AUTH,
+  NL80211_TIMEOUT_ASSOC,
+};
+enum nl80211_scan_flags {
+  NL80211_SCAN_FLAG_LOW_PRIORITY = 1 << 0,
+  NL80211_SCAN_FLAG_FLUSH = 1 << 1,
+  NL80211_SCAN_FLAG_AP = 1 << 2,
+  NL80211_SCAN_FLAG_RANDOM_ADDR = 1 << 3,
+  NL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME = 1 << 4,
+  NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP = 1 << 5,
+  NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE = 1 << 6,
+  NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION = 1 << 7,
+  NL80211_SCAN_FLAG_LOW_SPAN = 1 << 8,
+  NL80211_SCAN_FLAG_LOW_POWER = 1 << 9,
+  NL80211_SCAN_FLAG_HIGH_ACCURACY = 1 << 10,
+  NL80211_SCAN_FLAG_RANDOM_SN = 1 << 11,
+  NL80211_SCAN_FLAG_MIN_PREQ_CONTENT = 1 << 12,
+  NL80211_SCAN_FLAG_FREQ_KHZ = 1 << 13,
+  NL80211_SCAN_FLAG_COLOCATED_6GHZ = 1 << 14,
+};
+enum nl80211_acl_policy {
+  NL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED,
+  NL80211_ACL_POLICY_DENY_UNLESS_LISTED,
+};
+enum nl80211_smps_mode {
+  NL80211_SMPS_OFF,
+  NL80211_SMPS_STATIC,
+  NL80211_SMPS_DYNAMIC,
+  __NL80211_SMPS_AFTER_LAST,
+  NL80211_SMPS_MAX = __NL80211_SMPS_AFTER_LAST - 1
+};
+enum nl80211_radar_event {
+  NL80211_RADAR_DETECTED,
+  NL80211_RADAR_CAC_FINISHED,
+  NL80211_RADAR_CAC_ABORTED,
+  NL80211_RADAR_NOP_FINISHED,
+  NL80211_RADAR_PRE_CAC_EXPIRED,
+  NL80211_RADAR_CAC_STARTED,
+};
+enum nl80211_dfs_state {
+  NL80211_DFS_USABLE,
+  NL80211_DFS_UNAVAILABLE,
+  NL80211_DFS_AVAILABLE,
+};
+enum nl80211_protocol_features {
+  NL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP = 1 << 0,
+};
+enum nl80211_crit_proto_id {
+  NL80211_CRIT_PROTO_UNSPEC,
+  NL80211_CRIT_PROTO_DHCP,
+  NL80211_CRIT_PROTO_EAPOL,
+  NL80211_CRIT_PROTO_APIPA,
+  NUM_NL80211_CRIT_PROTO
+};
+#define NL80211_CRIT_PROTO_MAX_DURATION 5000
+enum nl80211_rxmgmt_flags {
+  NL80211_RXMGMT_FLAG_ANSWERED = 1 << 0,
+  NL80211_RXMGMT_FLAG_EXTERNAL_AUTH = 1 << 1,
+};
+#define NL80211_VENDOR_ID_IS_LINUX 0x80000000
+struct nl80211_vendor_cmd_info {
+  __u32 vendor_id;
+  __u32 subcmd;
+};
+enum nl80211_tdls_peer_capability {
+  NL80211_TDLS_PEER_HT = 1 << 0,
+  NL80211_TDLS_PEER_VHT = 1 << 1,
+  NL80211_TDLS_PEER_WMM = 1 << 2,
+  NL80211_TDLS_PEER_HE = 1 << 3,
+};
+enum nl80211_sched_scan_plan {
+  __NL80211_SCHED_SCAN_PLAN_INVALID,
+  NL80211_SCHED_SCAN_PLAN_INTERVAL,
+  NL80211_SCHED_SCAN_PLAN_ITERATIONS,
+  __NL80211_SCHED_SCAN_PLAN_AFTER_LAST,
+  NL80211_SCHED_SCAN_PLAN_MAX = __NL80211_SCHED_SCAN_PLAN_AFTER_LAST - 1
+};
+struct nl80211_bss_select_rssi_adjust {
+  __u8 band;
+  __s8 delta;
+} __attribute__((packed));
+enum nl80211_bss_select_attr {
+  __NL80211_BSS_SELECT_ATTR_INVALID,
+  NL80211_BSS_SELECT_ATTR_RSSI,
+  NL80211_BSS_SELECT_ATTR_BAND_PREF,
+  NL80211_BSS_SELECT_ATTR_RSSI_ADJUST,
+  __NL80211_BSS_SELECT_ATTR_AFTER_LAST,
+  NL80211_BSS_SELECT_ATTR_MAX = __NL80211_BSS_SELECT_ATTR_AFTER_LAST - 1
+};
+enum nl80211_nan_function_type {
+  NL80211_NAN_FUNC_PUBLISH,
+  NL80211_NAN_FUNC_SUBSCRIBE,
+  NL80211_NAN_FUNC_FOLLOW_UP,
+  __NL80211_NAN_FUNC_TYPE_AFTER_LAST,
+  NL80211_NAN_FUNC_MAX_TYPE = __NL80211_NAN_FUNC_TYPE_AFTER_LAST - 1,
+};
+enum nl80211_nan_publish_type {
+  NL80211_NAN_SOLICITED_PUBLISH = 1 << 0,
+  NL80211_NAN_UNSOLICITED_PUBLISH = 1 << 1,
+};
+enum nl80211_nan_func_term_reason {
+  NL80211_NAN_FUNC_TERM_REASON_USER_REQUEST,
+  NL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED,
+  NL80211_NAN_FUNC_TERM_REASON_ERROR,
+};
+#define NL80211_NAN_FUNC_SERVICE_ID_LEN 6
+#define NL80211_NAN_FUNC_SERVICE_SPEC_INFO_MAX_LEN 0xff
+#define NL80211_NAN_FUNC_SRF_MAX_LEN 0xff
+enum nl80211_nan_func_attributes {
+  __NL80211_NAN_FUNC_INVALID,
+  NL80211_NAN_FUNC_TYPE,
+  NL80211_NAN_FUNC_SERVICE_ID,
+  NL80211_NAN_FUNC_PUBLISH_TYPE,
+  NL80211_NAN_FUNC_PUBLISH_BCAST,
+  NL80211_NAN_FUNC_SUBSCRIBE_ACTIVE,
+  NL80211_NAN_FUNC_FOLLOW_UP_ID,
+  NL80211_NAN_FUNC_FOLLOW_UP_REQ_ID,
+  NL80211_NAN_FUNC_FOLLOW_UP_DEST,
+  NL80211_NAN_FUNC_CLOSE_RANGE,
+  NL80211_NAN_FUNC_TTL,
+  NL80211_NAN_FUNC_SERVICE_INFO,
+  NL80211_NAN_FUNC_SRF,
+  NL80211_NAN_FUNC_RX_MATCH_FILTER,
+  NL80211_NAN_FUNC_TX_MATCH_FILTER,
+  NL80211_NAN_FUNC_INSTANCE_ID,
+  NL80211_NAN_FUNC_TERM_REASON,
+  NUM_NL80211_NAN_FUNC_ATTR,
+  NL80211_NAN_FUNC_ATTR_MAX = NUM_NL80211_NAN_FUNC_ATTR - 1
+};
+enum nl80211_nan_srf_attributes {
+  __NL80211_NAN_SRF_INVALID,
+  NL80211_NAN_SRF_INCLUDE,
+  NL80211_NAN_SRF_BF,
+  NL80211_NAN_SRF_BF_IDX,
+  NL80211_NAN_SRF_MAC_ADDRS,
+  NUM_NL80211_NAN_SRF_ATTR,
+  NL80211_NAN_SRF_ATTR_MAX = NUM_NL80211_NAN_SRF_ATTR - 1,
+};
+enum nl80211_nan_match_attributes {
+  __NL80211_NAN_MATCH_INVALID,
+  NL80211_NAN_MATCH_FUNC_LOCAL,
+  NL80211_NAN_MATCH_FUNC_PEER,
+  NUM_NL80211_NAN_MATCH_ATTR,
+  NL80211_NAN_MATCH_ATTR_MAX = NUM_NL80211_NAN_MATCH_ATTR - 1
+};
+enum nl80211_external_auth_action {
+  NL80211_EXTERNAL_AUTH_START,
+  NL80211_EXTERNAL_AUTH_ABORT,
+};
+enum nl80211_ftm_responder_attributes {
+  __NL80211_FTM_RESP_ATTR_INVALID,
+  NL80211_FTM_RESP_ATTR_ENABLED,
+  NL80211_FTM_RESP_ATTR_LCI,
+  NL80211_FTM_RESP_ATTR_CIVICLOC,
+  __NL80211_FTM_RESP_ATTR_LAST,
+  NL80211_FTM_RESP_ATTR_MAX = __NL80211_FTM_RESP_ATTR_LAST - 1,
+};
+enum nl80211_ftm_responder_stats {
+  __NL80211_FTM_STATS_INVALID,
+  NL80211_FTM_STATS_SUCCESS_NUM,
+  NL80211_FTM_STATS_PARTIAL_NUM,
+  NL80211_FTM_STATS_FAILED_NUM,
+  NL80211_FTM_STATS_ASAP_NUM,
+  NL80211_FTM_STATS_NON_ASAP_NUM,
+  NL80211_FTM_STATS_TOTAL_DURATION_MSEC,
+  NL80211_FTM_STATS_UNKNOWN_TRIGGERS_NUM,
+  NL80211_FTM_STATS_RESCHEDULE_REQUESTS_NUM,
+  NL80211_FTM_STATS_OUT_OF_WINDOW_TRIGGERS_NUM,
+  NL80211_FTM_STATS_PAD,
+  __NL80211_FTM_STATS_AFTER_LAST,
+  NL80211_FTM_STATS_MAX = __NL80211_FTM_STATS_AFTER_LAST - 1
+};
+enum nl80211_preamble {
+  NL80211_PREAMBLE_LEGACY,
+  NL80211_PREAMBLE_HT,
+  NL80211_PREAMBLE_VHT,
+  NL80211_PREAMBLE_DMG,
+  NL80211_PREAMBLE_HE,
+};
+enum nl80211_peer_measurement_type {
+  NL80211_PMSR_TYPE_INVALID,
+  NL80211_PMSR_TYPE_FTM,
+  NUM_NL80211_PMSR_TYPES,
+  NL80211_PMSR_TYPE_MAX = NUM_NL80211_PMSR_TYPES - 1
+};
+enum nl80211_peer_measurement_status {
+  NL80211_PMSR_STATUS_SUCCESS,
+  NL80211_PMSR_STATUS_REFUSED,
+  NL80211_PMSR_STATUS_TIMEOUT,
+  NL80211_PMSR_STATUS_FAILURE,
+};
+enum nl80211_peer_measurement_req {
+  __NL80211_PMSR_REQ_ATTR_INVALID,
+  NL80211_PMSR_REQ_ATTR_DATA,
+  NL80211_PMSR_REQ_ATTR_GET_AP_TSF,
+  NUM_NL80211_PMSR_REQ_ATTRS,
+  NL80211_PMSR_REQ_ATTR_MAX = NUM_NL80211_PMSR_REQ_ATTRS - 1
+};
+enum nl80211_peer_measurement_resp {
+  __NL80211_PMSR_RESP_ATTR_INVALID,
+  NL80211_PMSR_RESP_ATTR_DATA,
+  NL80211_PMSR_RESP_ATTR_STATUS,
+  NL80211_PMSR_RESP_ATTR_HOST_TIME,
+  NL80211_PMSR_RESP_ATTR_AP_TSF,
+  NL80211_PMSR_RESP_ATTR_FINAL,
+  NL80211_PMSR_RESP_ATTR_PAD,
+  NUM_NL80211_PMSR_RESP_ATTRS,
+  NL80211_PMSR_RESP_ATTR_MAX = NUM_NL80211_PMSR_RESP_ATTRS - 1
+};
+enum nl80211_peer_measurement_peer_attrs {
+  __NL80211_PMSR_PEER_ATTR_INVALID,
+  NL80211_PMSR_PEER_ATTR_ADDR,
+  NL80211_PMSR_PEER_ATTR_CHAN,
+  NL80211_PMSR_PEER_ATTR_REQ,
+  NL80211_PMSR_PEER_ATTR_RESP,
+  NUM_NL80211_PMSR_PEER_ATTRS,
+  NL80211_PMSR_PEER_ATTR_MAX = NUM_NL80211_PMSR_PEER_ATTRS - 1,
+};
+enum nl80211_peer_measurement_attrs {
+  __NL80211_PMSR_ATTR_INVALID,
+  NL80211_PMSR_ATTR_MAX_PEERS,
+  NL80211_PMSR_ATTR_REPORT_AP_TSF,
+  NL80211_PMSR_ATTR_RANDOMIZE_MAC_ADDR,
+  NL80211_PMSR_ATTR_TYPE_CAPA,
+  NL80211_PMSR_ATTR_PEERS,
+  NUM_NL80211_PMSR_ATTR,
+  NL80211_PMSR_ATTR_MAX = NUM_NL80211_PMSR_ATTR - 1
+};
+enum nl80211_peer_measurement_ftm_capa {
+  __NL80211_PMSR_FTM_CAPA_ATTR_INVALID,
+  NL80211_PMSR_FTM_CAPA_ATTR_ASAP,
+  NL80211_PMSR_FTM_CAPA_ATTR_NON_ASAP,
+  NL80211_PMSR_FTM_CAPA_ATTR_REQ_LCI,
+  NL80211_PMSR_FTM_CAPA_ATTR_REQ_CIVICLOC,
+  NL80211_PMSR_FTM_CAPA_ATTR_PREAMBLES,
+  NL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS,
+  NL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT,
+  NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST,
+  NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED,
+  NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED,
+  NUM_NL80211_PMSR_FTM_CAPA_ATTR,
+  NL80211_PMSR_FTM_CAPA_ATTR_MAX = NUM_NL80211_PMSR_FTM_CAPA_ATTR - 1
+};
+enum nl80211_peer_measurement_ftm_req {
+  __NL80211_PMSR_FTM_REQ_ATTR_INVALID,
+  NL80211_PMSR_FTM_REQ_ATTR_ASAP,
+  NL80211_PMSR_FTM_REQ_ATTR_PREAMBLE,
+  NL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP,
+  NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD,
+  NL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION,
+  NL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST,
+  NL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES,
+  NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI,
+  NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC,
+  NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED,
+  NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED,
+  NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK,
+  NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR,
+  NUM_NL80211_PMSR_FTM_REQ_ATTR,
+  NL80211_PMSR_FTM_REQ_ATTR_MAX = NUM_NL80211_PMSR_FTM_REQ_ATTR - 1
+};
+enum nl80211_peer_measurement_ftm_failure_reasons {
+  NL80211_PMSR_FTM_FAILURE_UNSPECIFIED,
+  NL80211_PMSR_FTM_FAILURE_NO_RESPONSE,
+  NL80211_PMSR_FTM_FAILURE_REJECTED,
+  NL80211_PMSR_FTM_FAILURE_WRONG_CHANNEL,
+  NL80211_PMSR_FTM_FAILURE_PEER_NOT_CAPABLE,
+  NL80211_PMSR_FTM_FAILURE_INVALID_TIMESTAMP,
+  NL80211_PMSR_FTM_FAILURE_PEER_BUSY,
+  NL80211_PMSR_FTM_FAILURE_BAD_CHANGED_PARAMS,
+};
+enum nl80211_peer_measurement_ftm_resp {
+  __NL80211_PMSR_FTM_RESP_ATTR_INVALID,
+  NL80211_PMSR_FTM_RESP_ATTR_FAIL_REASON,
+  NL80211_PMSR_FTM_RESP_ATTR_BURST_INDEX,
+  NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_ATTEMPTS,
+  NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_SUCCESSES,
+  NL80211_PMSR_FTM_RESP_ATTR_BUSY_RETRY_TIME,
+  NL80211_PMSR_FTM_RESP_ATTR_NUM_BURSTS_EXP,
+  NL80211_PMSR_FTM_RESP_ATTR_BURST_DURATION,
+  NL80211_PMSR_FTM_RESP_ATTR_FTMS_PER_BURST,
+  NL80211_PMSR_FTM_RESP_ATTR_RSSI_AVG,
+  NL80211_PMSR_FTM_RESP_ATTR_RSSI_SPREAD,
+  NL80211_PMSR_FTM_RESP_ATTR_TX_RATE,
+  NL80211_PMSR_FTM_RESP_ATTR_RX_RATE,
+  NL80211_PMSR_FTM_RESP_ATTR_RTT_AVG,
+  NL80211_PMSR_FTM_RESP_ATTR_RTT_VARIANCE,
+  NL80211_PMSR_FTM_RESP_ATTR_RTT_SPREAD,
+  NL80211_PMSR_FTM_RESP_ATTR_DIST_AVG,
+  NL80211_PMSR_FTM_RESP_ATTR_DIST_VARIANCE,
+  NL80211_PMSR_FTM_RESP_ATTR_DIST_SPREAD,
+  NL80211_PMSR_FTM_RESP_ATTR_LCI,
+  NL80211_PMSR_FTM_RESP_ATTR_CIVICLOC,
+  NL80211_PMSR_FTM_RESP_ATTR_PAD,
+  NUM_NL80211_PMSR_FTM_RESP_ATTR,
+  NL80211_PMSR_FTM_RESP_ATTR_MAX = NUM_NL80211_PMSR_FTM_RESP_ATTR - 1
+};
+enum nl80211_obss_pd_attributes {
+  __NL80211_HE_OBSS_PD_ATTR_INVALID,
+  NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET,
+  NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET,
+  NL80211_HE_OBSS_PD_ATTR_NON_SRG_MAX_OFFSET,
+  NL80211_HE_OBSS_PD_ATTR_BSS_COLOR_BITMAP,
+  NL80211_HE_OBSS_PD_ATTR_PARTIAL_BSSID_BITMAP,
+  NL80211_HE_OBSS_PD_ATTR_SR_CTRL,
+  __NL80211_HE_OBSS_PD_ATTR_LAST,
+  NL80211_HE_OBSS_PD_ATTR_MAX = __NL80211_HE_OBSS_PD_ATTR_LAST - 1,
+};
+enum nl80211_bss_color_attributes {
+  __NL80211_HE_BSS_COLOR_ATTR_INVALID,
+  NL80211_HE_BSS_COLOR_ATTR_COLOR,
+  NL80211_HE_BSS_COLOR_ATTR_DISABLED,
+  NL80211_HE_BSS_COLOR_ATTR_PARTIAL,
+  __NL80211_HE_BSS_COLOR_ATTR_LAST,
+  NL80211_HE_BSS_COLOR_ATTR_MAX = __NL80211_HE_BSS_COLOR_ATTR_LAST - 1,
+};
+enum nl80211_iftype_akm_attributes {
+  __NL80211_IFTYPE_AKM_ATTR_INVALID,
+  NL80211_IFTYPE_AKM_ATTR_IFTYPES,
+  NL80211_IFTYPE_AKM_ATTR_SUITES,
+  __NL80211_IFTYPE_AKM_ATTR_LAST,
+  NL80211_IFTYPE_AKM_ATTR_MAX = __NL80211_IFTYPE_AKM_ATTR_LAST - 1,
+};
+enum nl80211_fils_discovery_attributes {
+  __NL80211_FILS_DISCOVERY_ATTR_INVALID,
+  NL80211_FILS_DISCOVERY_ATTR_INT_MIN,
+  NL80211_FILS_DISCOVERY_ATTR_INT_MAX,
+  NL80211_FILS_DISCOVERY_ATTR_TMPL,
+  __NL80211_FILS_DISCOVERY_ATTR_LAST,
+  NL80211_FILS_DISCOVERY_ATTR_MAX = __NL80211_FILS_DISCOVERY_ATTR_LAST - 1
+};
+#define NL80211_FILS_DISCOVERY_TMPL_MIN_LEN 42
+enum nl80211_unsol_bcast_probe_resp_attributes {
+  __NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_INVALID,
+  NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_INT,
+  NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_TMPL,
+  __NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_LAST,
+  NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_MAX = __NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_LAST - 1
+};
+enum nl80211_sae_pwe_mechanism {
+  NL80211_SAE_PWE_UNSPECIFIED,
+  NL80211_SAE_PWE_HUNT_AND_PECK,
+  NL80211_SAE_PWE_HASH_TO_ELEMENT,
+  NL80211_SAE_PWE_BOTH,
+};
+enum nl80211_sar_type {
+  NL80211_SAR_TYPE_POWER,
+  NUM_NL80211_SAR_TYPE,
+};
+enum nl80211_sar_attrs {
+  __NL80211_SAR_ATTR_INVALID,
+  NL80211_SAR_ATTR_TYPE,
+  NL80211_SAR_ATTR_SPECS,
+  __NL80211_SAR_ATTR_LAST,
+  NL80211_SAR_ATTR_MAX = __NL80211_SAR_ATTR_LAST - 1,
+};
+enum nl80211_sar_specs_attrs {
+  __NL80211_SAR_ATTR_SPECS_INVALID,
+  NL80211_SAR_ATTR_SPECS_POWER,
+  NL80211_SAR_ATTR_SPECS_RANGE_INDEX,
+  NL80211_SAR_ATTR_SPECS_START_FREQ,
+  NL80211_SAR_ATTR_SPECS_END_FREQ,
+  __NL80211_SAR_ATTR_SPECS_LAST,
+  NL80211_SAR_ATTR_SPECS_MAX = __NL80211_SAR_ATTR_SPECS_LAST - 1,
+};
+enum nl80211_mbssid_config_attributes {
+  __NL80211_MBSSID_CONFIG_ATTR_INVALID,
+  NL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES,
+  NL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY,
+  NL80211_MBSSID_CONFIG_ATTR_INDEX,
+  NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX,
+  NL80211_MBSSID_CONFIG_ATTR_EMA,
+  __NL80211_MBSSID_CONFIG_ATTR_LAST,
+  NL80211_MBSSID_CONFIG_ATTR_MAX = __NL80211_MBSSID_CONFIG_ATTR_LAST - 1,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/nsfs.h b/i686-linux-musl/include/linux/nsfs.h
new file mode 100644
index 0000000..d32d31c
--- /dev/null
+++ b/i686-linux-musl/include/linux/nsfs.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_NSFS_H
+#define __LINUX_NSFS_H
+#include <linux/ioctl.h>
+#define NSIO 0xb7
+#define NS_GET_USERNS _IO(NSIO, 0x1)
+#define NS_GET_PARENT _IO(NSIO, 0x2)
+#define NS_GET_NSTYPE _IO(NSIO, 0x3)
+#define NS_GET_OWNER_UID _IO(NSIO, 0x4)
+#endif
diff --git a/i686-linux-musl/include/linux/nubus.h b/i686-linux-musl/include/linux/nubus.h
new file mode 100644
index 0000000..141c2f2
--- /dev/null
+++ b/i686-linux-musl/include/linux/nubus.h
@@ -0,0 +1,158 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPILINUX_NUBUS_H
+#define _UAPILINUX_NUBUS_H
+#include <linux/types.h>
+enum nubus_category {
+  NUBUS_CAT_BOARD = 0x0001,
+  NUBUS_CAT_DISPLAY = 0x0003,
+  NUBUS_CAT_NETWORK = 0x0004,
+  NUBUS_CAT_COMMUNICATIONS = 0x0006,
+  NUBUS_CAT_FONT = 0x0009,
+  NUBUS_CAT_CPU = 0x000A,
+  NUBUS_CAT_DUODOCK = 0x0020
+};
+enum nubus_type_network {
+  NUBUS_TYPE_ETHERNET = 0x0001,
+  NUBUS_TYPE_RS232 = 0x0002
+};
+enum nubus_type_display {
+  NUBUS_TYPE_VIDEO = 0x0001
+};
+enum nubus_type_cpu {
+  NUBUS_TYPE_68020 = 0x0003,
+  NUBUS_TYPE_68030 = 0x0004,
+  NUBUS_TYPE_68040 = 0x0005
+};
+enum nubus_drsw {
+  NUBUS_DRSW_APPLE = 0x0001,
+  NUBUS_DRSW_APPLE_HIRES = 0x0013,
+  NUBUS_DRSW_3COM = 0x0000,
+  NUBUS_DRSW_CABLETRON = 0x0001,
+  NUBUS_DRSW_SONIC_LC = 0x0001,
+  NUBUS_DRSW_KINETICS = 0x0103,
+  NUBUS_DRSW_ASANTE = 0x0104,
+  NUBUS_DRSW_TECHWORKS = 0x0109,
+  NUBUS_DRSW_DAYNA = 0x010b,
+  NUBUS_DRSW_FARALLON = 0x010c,
+  NUBUS_DRSW_APPLE_SN = 0x010f,
+  NUBUS_DRSW_DAYNA2 = 0x0115,
+  NUBUS_DRSW_FOCUS = 0x011a,
+  NUBUS_DRSW_ASANTE_CS = 0x011d,
+  NUBUS_DRSW_DAYNA_LC = 0x011e,
+  NUBUS_DRSW_NONE = 0x0000,
+};
+enum nubus_drhw {
+  NUBUS_DRHW_APPLE_TFB = 0x0001,
+  NUBUS_DRHW_APPLE_WVC = 0x0006,
+  NUBUS_DRHW_SIGMA_CLRMAX = 0x0007,
+  NUBUS_DRHW_APPLE_SE30 = 0x0009,
+  NUBUS_DRHW_APPLE_HRVC = 0x0013,
+  NUBUS_DRHW_APPLE_MVC = 0x0014,
+  NUBUS_DRHW_APPLE_PVC = 0x0017,
+  NUBUS_DRHW_APPLE_RBV1 = 0x0018,
+  NUBUS_DRHW_APPLE_MDC = 0x0019,
+  NUBUS_DRHW_APPLE_VSC = 0x0020,
+  NUBUS_DRHW_APPLE_SONORA = 0x0022,
+  NUBUS_DRHW_APPLE_JET = 0x0029,
+  NUBUS_DRHW_APPLE_24AC = 0x002b,
+  NUBUS_DRHW_APPLE_VALKYRIE = 0x002e,
+  NUBUS_DRHW_SMAC_GFX = 0x0105,
+  NUBUS_DRHW_RASTER_CB264 = 0x013B,
+  NUBUS_DRHW_MICRON_XCEED = 0x0146,
+  NUBUS_DRHW_RDIUS_GSC = 0x0153,
+  NUBUS_DRHW_SMAC_SPEC8 = 0x017B,
+  NUBUS_DRHW_SMAC_SPEC24 = 0x017C,
+  NUBUS_DRHW_RASTER_CB364 = 0x026F,
+  NUBUS_DRHW_RDIUS_DCGX = 0x027C,
+  NUBUS_DRHW_RDIUS_PC8 = 0x0291,
+  NUBUS_DRHW_LAPIS_PCS8 = 0x0292,
+  NUBUS_DRHW_RASTER_24XLI = 0x02A0,
+  NUBUS_DRHW_RASTER_PBPGT = 0x02A5,
+  NUBUS_DRHW_EMACH_FSX = 0x02AE,
+  NUBUS_DRHW_RASTER_24XLTV = 0x02B7,
+  NUBUS_DRHW_SMAC_THUND24 = 0x02CB,
+  NUBUS_DRHW_SMAC_THUNDLGHT = 0x03D9,
+  NUBUS_DRHW_RDIUS_PC24XP = 0x0406,
+  NUBUS_DRHW_RDIUS_PC24X = 0x040A,
+  NUBUS_DRHW_RDIUS_PC8XJ = 0x040B,
+  NUBUS_DRHW_INTERLAN = 0x0100,
+  NUBUS_DRHW_SMC9194 = 0x0101,
+  NUBUS_DRHW_KINETICS = 0x0106,
+  NUBUS_DRHW_CABLETRON = 0x0109,
+  NUBUS_DRHW_ASANTE_LC = 0x010f,
+  NUBUS_DRHW_SONIC = 0x0110,
+  NUBUS_DRHW_TECHWORKS = 0x0112,
+  NUBUS_DRHW_APPLE_SONIC_NB = 0x0118,
+  NUBUS_DRHW_APPLE_SONIC_LC = 0x0119,
+  NUBUS_DRHW_FOCUS = 0x011c,
+  NUBUS_DRHW_SONNET = 0x011d,
+};
+enum nubus_res_id {
+  NUBUS_RESID_TYPE = 0x0001,
+  NUBUS_RESID_NAME = 0x0002,
+  NUBUS_RESID_ICON = 0x0003,
+  NUBUS_RESID_DRVRDIR = 0x0004,
+  NUBUS_RESID_LOADREC = 0x0005,
+  NUBUS_RESID_BOOTREC = 0x0006,
+  NUBUS_RESID_FLAGS = 0x0007,
+  NUBUS_RESID_HWDEVID = 0x0008,
+  NUBUS_RESID_MINOR_BASEOS = 0x000a,
+  NUBUS_RESID_MINOR_LENGTH = 0x000b,
+  NUBUS_RESID_MAJOR_BASEOS = 0x000c,
+  NUBUS_RESID_MAJOR_LENGTH = 0x000d,
+  NUBUS_RESID_CICN = 0x000f,
+  NUBUS_RESID_ICL8 = 0x0010,
+  NUBUS_RESID_ICL4 = 0x0011,
+};
+enum nubus_board_res_id {
+  NUBUS_RESID_BOARDID = 0x0020,
+  NUBUS_RESID_PRAMINITDATA = 0x0021,
+  NUBUS_RESID_PRIMARYINIT = 0x0022,
+  NUBUS_RESID_TIMEOUTCONST = 0x0023,
+  NUBUS_RESID_VENDORINFO = 0x0024,
+  NUBUS_RESID_BOARDFLAGS = 0x0025,
+  NUBUS_RESID_SECONDINIT = 0x0026,
+  NUBUS_RESID_VIDNAMES = 0x0041,
+  NUBUS_RESID_VIDMODES = 0x007e
+};
+enum nubus_vendor_res_id {
+  NUBUS_RESID_VEND_ID = 0x0001,
+  NUBUS_RESID_VEND_SERIAL = 0x0002,
+  NUBUS_RESID_VEND_REV = 0x0003,
+  NUBUS_RESID_VEND_PART = 0x0004,
+  NUBUS_RESID_VEND_DATE = 0x0005
+};
+enum nubus_net_res_id {
+  NUBUS_RESID_MAC_ADDRESS = 0x0080
+};
+enum nubus_cpu_res_id {
+  NUBUS_RESID_MEMINFO = 0x0081,
+  NUBUS_RESID_ROMINFO = 0x0082
+};
+enum nubus_display_res_id {
+  NUBUS_RESID_GAMMADIR = 0x0040,
+  NUBUS_RESID_FIRSTMODE = 0x0080,
+  NUBUS_RESID_SECONDMODE = 0x0081,
+  NUBUS_RESID_THIRDMODE = 0x0082,
+  NUBUS_RESID_FOURTHMODE = 0x0083,
+  NUBUS_RESID_FIFTHMODE = 0x0084,
+  NUBUS_RESID_SIXTHMODE = 0x0085
+};
+#endif
diff --git a/i686-linux-musl/include/linux/nvme_ioctl.h b/i686-linux-musl/include/linux/nvme_ioctl.h
new file mode 100644
index 0000000..f2a328e
--- /dev/null
+++ b/i686-linux-musl/include/linux/nvme_ioctl.h
@@ -0,0 +1,87 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_NVME_IOCTL_H
+#define _UAPI_LINUX_NVME_IOCTL_H
+#include <linux/types.h>
+struct nvme_user_io {
+  __u8 opcode;
+  __u8 flags;
+  __u16 control;
+  __u16 nblocks;
+  __u16 rsvd;
+  __u64 metadata;
+  __u64 addr;
+  __u64 slba;
+  __u32 dsmgmt;
+  __u32 reftag;
+  __u16 apptag;
+  __u16 appmask;
+};
+struct nvme_passthru_cmd {
+  __u8 opcode;
+  __u8 flags;
+  __u16 rsvd1;
+  __u32 nsid;
+  __u32 cdw2;
+  __u32 cdw3;
+  __u64 metadata;
+  __u64 addr;
+  __u32 metadata_len;
+  __u32 data_len;
+  __u32 cdw10;
+  __u32 cdw11;
+  __u32 cdw12;
+  __u32 cdw13;
+  __u32 cdw14;
+  __u32 cdw15;
+  __u32 timeout_ms;
+  __u32 result;
+};
+struct nvme_passthru_cmd64 {
+  __u8 opcode;
+  __u8 flags;
+  __u16 rsvd1;
+  __u32 nsid;
+  __u32 cdw2;
+  __u32 cdw3;
+  __u64 metadata;
+  __u64 addr;
+  __u32 metadata_len;
+  __u32 data_len;
+  __u32 cdw10;
+  __u32 cdw11;
+  __u32 cdw12;
+  __u32 cdw13;
+  __u32 cdw14;
+  __u32 cdw15;
+  __u32 timeout_ms;
+  __u32 rsvd2;
+  __u64 result;
+};
+#define nvme_admin_cmd nvme_passthru_cmd
+#define NVME_IOCTL_ID _IO('N', 0x40)
+#define NVME_IOCTL_ADMIN_CMD _IOWR('N', 0x41, struct nvme_admin_cmd)
+#define NVME_IOCTL_SUBMIT_IO _IOW('N', 0x42, struct nvme_user_io)
+#define NVME_IOCTL_IO_CMD _IOWR('N', 0x43, struct nvme_passthru_cmd)
+#define NVME_IOCTL_RESET _IO('N', 0x44)
+#define NVME_IOCTL_SUBSYS_RESET _IO('N', 0x45)
+#define NVME_IOCTL_RESCAN _IO('N', 0x46)
+#define NVME_IOCTL_ADMIN64_CMD _IOWR('N', 0x47, struct nvme_passthru_cmd64)
+#define NVME_IOCTL_IO64_CMD _IOWR('N', 0x48, struct nvme_passthru_cmd64)
+#endif
diff --git a/i686-linux-musl/include/linux/nvram.h b/i686-linux-musl/include/linux/nvram.h
new file mode 100644
index 0000000..575b49a
--- /dev/null
+++ b/i686-linux-musl/include/linux/nvram.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_NVRAM_H
+#define _UAPI_LINUX_NVRAM_H
+#include <linux/ioctl.h>
+#define NVRAM_INIT _IO('p', 0x40)
+#define NVRAM_SETCKS _IO('p', 0x41)
+#define NVRAM_FIRST_BYTE 14
+#define NVRAM_OFFSET(x) ((x) - NVRAM_FIRST_BYTE)
+#endif
diff --git a/i686-linux-musl/include/linux/omap3isp.h b/i686-linux-musl/include/linux/omap3isp.h
new file mode 100644
index 0000000..d2eceb7
--- /dev/null
+++ b/i686-linux-musl/include/linux/omap3isp.h
@@ -0,0 +1,338 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef OMAP3_ISP_USER_H
+#define OMAP3_ISP_USER_H
+#include <linux/types.h>
+#include <linux/videodev2.h>
+#define VIDIOC_OMAP3ISP_CCDC_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct omap3isp_ccdc_update_config)
+#define VIDIOC_OMAP3ISP_PRV_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 2, struct omap3isp_prev_update_config)
+#define VIDIOC_OMAP3ISP_AEWB_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 3, struct omap3isp_h3a_aewb_config)
+#define VIDIOC_OMAP3ISP_HIST_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 4, struct omap3isp_hist_config)
+#define VIDIOC_OMAP3ISP_AF_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 5, struct omap3isp_h3a_af_config)
+#define VIDIOC_OMAP3ISP_STAT_REQ _IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct omap3isp_stat_data)
+#define VIDIOC_OMAP3ISP_STAT_REQ_TIME32 _IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct omap3isp_stat_data_time32)
+#define VIDIOC_OMAP3ISP_STAT_EN _IOWR('V', BASE_VIDIOC_PRIVATE + 7, unsigned long)
+#define V4L2_EVENT_OMAP3ISP_CLASS (V4L2_EVENT_PRIVATE_START | 0x100)
+#define V4L2_EVENT_OMAP3ISP_AEWB (V4L2_EVENT_OMAP3ISP_CLASS | 0x1)
+#define V4L2_EVENT_OMAP3ISP_AF (V4L2_EVENT_OMAP3ISP_CLASS | 0x2)
+#define V4L2_EVENT_OMAP3ISP_HIST (V4L2_EVENT_OMAP3ISP_CLASS | 0x3)
+struct omap3isp_stat_event_status {
+  __u32 frame_number;
+  __u16 config_counter;
+  __u8 buf_err;
+};
+#define OMAP3ISP_AEWB_MAX_SATURATION_LIM 1023
+#define OMAP3ISP_AEWB_MIN_WIN_H 2
+#define OMAP3ISP_AEWB_MAX_WIN_H 256
+#define OMAP3ISP_AEWB_MIN_WIN_W 6
+#define OMAP3ISP_AEWB_MAX_WIN_W 256
+#define OMAP3ISP_AEWB_MIN_WINVC 1
+#define OMAP3ISP_AEWB_MIN_WINHC 1
+#define OMAP3ISP_AEWB_MAX_WINVC 128
+#define OMAP3ISP_AEWB_MAX_WINHC 36
+#define OMAP3ISP_AEWB_MAX_WINSTART 4095
+#define OMAP3ISP_AEWB_MIN_SUB_INC 2
+#define OMAP3ISP_AEWB_MAX_SUB_INC 32
+#define OMAP3ISP_AEWB_MAX_BUF_SIZE 83600
+#define OMAP3ISP_AF_IIRSH_MIN 0
+#define OMAP3ISP_AF_IIRSH_MAX 4095
+#define OMAP3ISP_AF_PAXEL_HORIZONTAL_COUNT_MIN 1
+#define OMAP3ISP_AF_PAXEL_HORIZONTAL_COUNT_MAX 36
+#define OMAP3ISP_AF_PAXEL_VERTICAL_COUNT_MIN 1
+#define OMAP3ISP_AF_PAXEL_VERTICAL_COUNT_MAX 128
+#define OMAP3ISP_AF_PAXEL_INCREMENT_MIN 2
+#define OMAP3ISP_AF_PAXEL_INCREMENT_MAX 32
+#define OMAP3ISP_AF_PAXEL_HEIGHT_MIN 2
+#define OMAP3ISP_AF_PAXEL_HEIGHT_MAX 256
+#define OMAP3ISP_AF_PAXEL_WIDTH_MIN 16
+#define OMAP3ISP_AF_PAXEL_WIDTH_MAX 256
+#define OMAP3ISP_AF_PAXEL_HZSTART_MIN 1
+#define OMAP3ISP_AF_PAXEL_HZSTART_MAX 4095
+#define OMAP3ISP_AF_PAXEL_VTSTART_MIN 0
+#define OMAP3ISP_AF_PAXEL_VTSTART_MAX 4095
+#define OMAP3ISP_AF_THRESHOLD_MAX 255
+#define OMAP3ISP_AF_COEF_MAX 4095
+#define OMAP3ISP_AF_PAXEL_SIZE 48
+#define OMAP3ISP_AF_MAX_BUF_SIZE 221184
+struct omap3isp_h3a_aewb_config {
+  __u32 buf_size;
+  __u16 config_counter;
+  __u16 saturation_limit;
+  __u16 win_height;
+  __u16 win_width;
+  __u16 ver_win_count;
+  __u16 hor_win_count;
+  __u16 ver_win_start;
+  __u16 hor_win_start;
+  __u16 blk_ver_win_start;
+  __u16 blk_win_height;
+  __u16 subsample_ver_inc;
+  __u16 subsample_hor_inc;
+  __u8 alaw_enable;
+};
+struct omap3isp_stat_data {
+  struct timeval ts;
+  void __user * buf;
+  __u32 buf_size;
+  __u16 frame_number;
+  __u16 cur_frame;
+  __u16 config_counter;
+};
+#define OMAP3ISP_HIST_BINS_32 0
+#define OMAP3ISP_HIST_BINS_64 1
+#define OMAP3ISP_HIST_BINS_128 2
+#define OMAP3ISP_HIST_BINS_256 3
+#define OMAP3ISP_HIST_MEM_SIZE_BINS(n) ((1 << ((n) + 5)) * 4 * 4)
+#define OMAP3ISP_HIST_MEM_SIZE 1024
+#define OMAP3ISP_HIST_MIN_REGIONS 1
+#define OMAP3ISP_HIST_MAX_REGIONS 4
+#define OMAP3ISP_HIST_MAX_WB_GAIN 255
+#define OMAP3ISP_HIST_MIN_WB_GAIN 0
+#define OMAP3ISP_HIST_MAX_BIT_WIDTH 14
+#define OMAP3ISP_HIST_MIN_BIT_WIDTH 8
+#define OMAP3ISP_HIST_MAX_WG 4
+#define OMAP3ISP_HIST_MAX_BUF_SIZE 4096
+#define OMAP3ISP_HIST_SOURCE_CCDC 0
+#define OMAP3ISP_HIST_SOURCE_MEM 1
+#define OMAP3ISP_HIST_CFA_BAYER 0
+#define OMAP3ISP_HIST_CFA_FOVEONX3 1
+struct omap3isp_hist_region {
+  __u16 h_start;
+  __u16 h_end;
+  __u16 v_start;
+  __u16 v_end;
+};
+struct omap3isp_hist_config {
+  __u32 buf_size;
+  __u16 config_counter;
+  __u8 num_acc_frames;
+  __u16 hist_bins;
+  __u8 cfa;
+  __u8 wg[OMAP3ISP_HIST_MAX_WG];
+  __u8 num_regions;
+  struct omap3isp_hist_region region[OMAP3ISP_HIST_MAX_REGIONS];
+};
+#define OMAP3ISP_AF_NUM_COEF 11
+enum omap3isp_h3a_af_fvmode {
+  OMAP3ISP_AF_MODE_SUMMED = 0,
+  OMAP3ISP_AF_MODE_PEAK = 1
+};
+enum omap3isp_h3a_af_rgbpos {
+  OMAP3ISP_AF_GR_GB_BAYER = 0,
+  OMAP3ISP_AF_RG_GB_BAYER = 1,
+  OMAP3ISP_AF_GR_BG_BAYER = 2,
+  OMAP3ISP_AF_RG_BG_BAYER = 3,
+  OMAP3ISP_AF_GG_RB_CUSTOM = 4,
+  OMAP3ISP_AF_RB_GG_CUSTOM = 5
+};
+struct omap3isp_h3a_af_hmf {
+  __u8 enable;
+  __u8 threshold;
+};
+struct omap3isp_h3a_af_iir {
+  __u16 h_start;
+  __u16 coeff_set0[OMAP3ISP_AF_NUM_COEF];
+  __u16 coeff_set1[OMAP3ISP_AF_NUM_COEF];
+};
+struct omap3isp_h3a_af_paxel {
+  __u16 h_start;
+  __u16 v_start;
+  __u8 width;
+  __u8 height;
+  __u8 h_cnt;
+  __u8 v_cnt;
+  __u8 line_inc;
+};
+struct omap3isp_h3a_af_config {
+  __u32 buf_size;
+  __u16 config_counter;
+  struct omap3isp_h3a_af_hmf hmf;
+  struct omap3isp_h3a_af_iir iir;
+  struct omap3isp_h3a_af_paxel paxel;
+  enum omap3isp_h3a_af_rgbpos rgb_pos;
+  enum omap3isp_h3a_af_fvmode fvmode;
+  __u8 alaw_enable;
+};
+#define OMAP3ISP_CCDC_ALAW (1 << 0)
+#define OMAP3ISP_CCDC_LPF (1 << 1)
+#define OMAP3ISP_CCDC_BLCLAMP (1 << 2)
+#define OMAP3ISP_CCDC_BCOMP (1 << 3)
+#define OMAP3ISP_CCDC_FPC (1 << 4)
+#define OMAP3ISP_CCDC_CULL (1 << 5)
+#define OMAP3ISP_CCDC_CONFIG_LSC (1 << 7)
+#define OMAP3ISP_CCDC_TBL_LSC (1 << 8)
+#define OMAP3ISP_RGB_MAX 3
+enum omap3isp_alaw_ipwidth {
+  OMAP3ISP_ALAW_BIT12_3 = 0x3,
+  OMAP3ISP_ALAW_BIT11_2 = 0x4,
+  OMAP3ISP_ALAW_BIT10_1 = 0x5,
+  OMAP3ISP_ALAW_BIT9_0 = 0x6
+};
+struct omap3isp_ccdc_lsc_config {
+  __u16 offset;
+  __u8 gain_mode_n;
+  __u8 gain_mode_m;
+  __u8 gain_format;
+  __u16 fmtsph;
+  __u16 fmtlnh;
+  __u16 fmtslv;
+  __u16 fmtlnv;
+  __u8 initial_x;
+  __u8 initial_y;
+  __u32 size;
+};
+struct omap3isp_ccdc_bclamp {
+  __u8 obgain;
+  __u8 obstpixel;
+  __u8 oblines;
+  __u8 oblen;
+  __u16 dcsubval;
+};
+struct omap3isp_ccdc_fpc {
+  __u16 fpnum;
+  __u32 fpcaddr;
+};
+struct omap3isp_ccdc_blcomp {
+  __u8 b_mg;
+  __u8 gb_g;
+  __u8 gr_cy;
+  __u8 r_ye;
+};
+struct omap3isp_ccdc_culling {
+  __u8 v_pattern;
+  __u16 h_odd;
+  __u16 h_even;
+};
+struct omap3isp_ccdc_update_config {
+  __u16 update;
+  __u16 flag;
+  enum omap3isp_alaw_ipwidth alawip;
+  struct omap3isp_ccdc_bclamp __user * bclamp;
+  struct omap3isp_ccdc_blcomp __user * blcomp;
+  struct omap3isp_ccdc_fpc __user * fpc;
+  struct omap3isp_ccdc_lsc_config __user * lsc_cfg;
+  struct omap3isp_ccdc_culling __user * cull;
+  __u8 __user * lsc;
+};
+#define OMAP3ISP_PREV_LUMAENH (1 << 0)
+#define OMAP3ISP_PREV_INVALAW (1 << 1)
+#define OMAP3ISP_PREV_HRZ_MED (1 << 2)
+#define OMAP3ISP_PREV_CFA (1 << 3)
+#define OMAP3ISP_PREV_CHROMA_SUPP (1 << 4)
+#define OMAP3ISP_PREV_WB (1 << 5)
+#define OMAP3ISP_PREV_BLKADJ (1 << 6)
+#define OMAP3ISP_PREV_RGB2RGB (1 << 7)
+#define OMAP3ISP_PREV_COLOR_CONV (1 << 8)
+#define OMAP3ISP_PREV_YC_LIMIT (1 << 9)
+#define OMAP3ISP_PREV_DEFECT_COR (1 << 10)
+#define OMAP3ISP_PREV_DRK_FRM_CAPTURE (1 << 12)
+#define OMAP3ISP_PREV_DRK_FRM_SUBTRACT (1 << 13)
+#define OMAP3ISP_PREV_LENS_SHADING (1 << 14)
+#define OMAP3ISP_PREV_NF (1 << 15)
+#define OMAP3ISP_PREV_GAMMA (1 << 16)
+#define OMAP3ISP_PREV_NF_TBL_SIZE 64
+#define OMAP3ISP_PREV_CFA_TBL_SIZE 576
+#define OMAP3ISP_PREV_CFA_BLK_SIZE (OMAP3ISP_PREV_CFA_TBL_SIZE / 4)
+#define OMAP3ISP_PREV_GAMMA_TBL_SIZE 1024
+#define OMAP3ISP_PREV_YENH_TBL_SIZE 128
+#define OMAP3ISP_PREV_DETECT_CORRECT_CHANNELS 4
+struct omap3isp_prev_hmed {
+  __u8 odddist;
+  __u8 evendist;
+  __u8 thres;
+};
+enum omap3isp_cfa_fmt {
+  OMAP3ISP_CFAFMT_BAYER,
+  OMAP3ISP_CFAFMT_SONYVGA,
+  OMAP3ISP_CFAFMT_RGBFOVEON,
+  OMAP3ISP_CFAFMT_DNSPL,
+  OMAP3ISP_CFAFMT_HONEYCOMB,
+  OMAP3ISP_CFAFMT_RRGGBBFOVEON
+};
+struct omap3isp_prev_cfa {
+  enum omap3isp_cfa_fmt format;
+  __u8 gradthrs_vert;
+  __u8 gradthrs_horz;
+  __u32 table[4][OMAP3ISP_PREV_CFA_BLK_SIZE];
+};
+struct omap3isp_prev_csup {
+  __u8 gain;
+  __u8 thres;
+  __u8 hypf_en;
+};
+struct omap3isp_prev_wbal {
+  __u16 dgain;
+  __u8 coef3;
+  __u8 coef2;
+  __u8 coef1;
+  __u8 coef0;
+};
+struct omap3isp_prev_blkadj {
+  __u8 red;
+  __u8 green;
+  __u8 blue;
+};
+struct omap3isp_prev_rgbtorgb {
+  __u16 matrix[OMAP3ISP_RGB_MAX][OMAP3ISP_RGB_MAX];
+  __u16 offset[OMAP3ISP_RGB_MAX];
+};
+struct omap3isp_prev_csc {
+  __u16 matrix[OMAP3ISP_RGB_MAX][OMAP3ISP_RGB_MAX];
+  __s16 offset[OMAP3ISP_RGB_MAX];
+};
+struct omap3isp_prev_yclimit {
+  __u8 minC;
+  __u8 maxC;
+  __u8 minY;
+  __u8 maxY;
+};
+struct omap3isp_prev_dcor {
+  __u8 couplet_mode_en;
+  __u32 detect_correct[OMAP3ISP_PREV_DETECT_CORRECT_CHANNELS];
+};
+struct omap3isp_prev_nf {
+  __u8 spread;
+  __u32 table[OMAP3ISP_PREV_NF_TBL_SIZE];
+};
+struct omap3isp_prev_gtables {
+  __u32 red[OMAP3ISP_PREV_GAMMA_TBL_SIZE];
+  __u32 green[OMAP3ISP_PREV_GAMMA_TBL_SIZE];
+  __u32 blue[OMAP3ISP_PREV_GAMMA_TBL_SIZE];
+};
+struct omap3isp_prev_luma {
+  __u32 table[OMAP3ISP_PREV_YENH_TBL_SIZE];
+};
+struct omap3isp_prev_update_config {
+  __u32 update;
+  __u32 flag;
+  __u32 shading_shift;
+  struct omap3isp_prev_luma __user * luma;
+  struct omap3isp_prev_hmed __user * hmed;
+  struct omap3isp_prev_cfa __user * cfa;
+  struct omap3isp_prev_csup __user * csup;
+  struct omap3isp_prev_wbal __user * wbal;
+  struct omap3isp_prev_blkadj __user * blkadj;
+  struct omap3isp_prev_rgbtorgb __user * rgb2rgb;
+  struct omap3isp_prev_csc __user * csc;
+  struct omap3isp_prev_yclimit __user * yclimit;
+  struct omap3isp_prev_dcor __user * dcor;
+  struct omap3isp_prev_nf __user * nf;
+  struct omap3isp_prev_gtables __user * gamma;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/omapfb.h b/i686-linux-musl/include/linux/omapfb.h
new file mode 100644
index 0000000..6ebec08
--- /dev/null
+++ b/i686-linux-musl/include/linux/omapfb.h
@@ -0,0 +1,187 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_OMAPFB_H__
+#define _UAPI__LINUX_OMAPFB_H__
+#include <linux/fb.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define OMAP_IOW(num,dtype) _IOW('O', num, dtype)
+#define OMAP_IOR(num,dtype) _IOR('O', num, dtype)
+#define OMAP_IOWR(num,dtype) _IOWR('O', num, dtype)
+#define OMAP_IO(num) _IO('O', num)
+#define OMAPFB_MIRROR OMAP_IOW(31, int)
+#define OMAPFB_SYNC_GFX OMAP_IO(37)
+#define OMAPFB_VSYNC OMAP_IO(38)
+#define OMAPFB_SET_UPDATE_MODE OMAP_IOW(40, int)
+#define OMAPFB_GET_CAPS OMAP_IOR(42, struct omapfb_caps)
+#define OMAPFB_GET_UPDATE_MODE OMAP_IOW(43, int)
+#define OMAPFB_LCD_TEST OMAP_IOW(45, int)
+#define OMAPFB_CTRL_TEST OMAP_IOW(46, int)
+#define OMAPFB_UPDATE_WINDOW_OLD OMAP_IOW(47, struct omapfb_update_window_old)
+#define OMAPFB_SET_COLOR_KEY OMAP_IOW(50, struct omapfb_color_key)
+#define OMAPFB_GET_COLOR_KEY OMAP_IOW(51, struct omapfb_color_key)
+#define OMAPFB_SETUP_PLANE OMAP_IOW(52, struct omapfb_plane_info)
+#define OMAPFB_QUERY_PLANE OMAP_IOW(53, struct omapfb_plane_info)
+#define OMAPFB_UPDATE_WINDOW OMAP_IOW(54, struct omapfb_update_window)
+#define OMAPFB_SETUP_MEM OMAP_IOW(55, struct omapfb_mem_info)
+#define OMAPFB_QUERY_MEM OMAP_IOW(56, struct omapfb_mem_info)
+#define OMAPFB_WAITFORVSYNC OMAP_IO(57)
+#define OMAPFB_MEMORY_READ OMAP_IOR(58, struct omapfb_memory_read)
+#define OMAPFB_GET_OVERLAY_COLORMODE OMAP_IOR(59, struct omapfb_ovl_colormode)
+#define OMAPFB_WAITFORGO OMAP_IO(60)
+#define OMAPFB_GET_VRAM_INFO OMAP_IOR(61, struct omapfb_vram_info)
+#define OMAPFB_SET_TEARSYNC OMAP_IOW(62, struct omapfb_tearsync_info)
+#define OMAPFB_GET_DISPLAY_INFO OMAP_IOR(63, struct omapfb_display_info)
+#define OMAPFB_CAPS_GENERIC_MASK 0x00000fff
+#define OMAPFB_CAPS_LCDC_MASK 0x00fff000
+#define OMAPFB_CAPS_PANEL_MASK 0xff000000
+#define OMAPFB_CAPS_MANUAL_UPDATE 0x00001000
+#define OMAPFB_CAPS_TEARSYNC 0x00002000
+#define OMAPFB_CAPS_PLANE_RELOCATE_MEM 0x00004000
+#define OMAPFB_CAPS_PLANE_SCALE 0x00008000
+#define OMAPFB_CAPS_WINDOW_PIXEL_DOUBLE 0x00010000
+#define OMAPFB_CAPS_WINDOW_SCALE 0x00020000
+#define OMAPFB_CAPS_WINDOW_OVERLAY 0x00040000
+#define OMAPFB_CAPS_WINDOW_ROTATE 0x00080000
+#define OMAPFB_CAPS_SET_BACKLIGHT 0x01000000
+#define OMAPFB_FORMAT_MASK 0x00ff
+#define OMAPFB_FORMAT_FLAG_DOUBLE 0x0100
+#define OMAPFB_FORMAT_FLAG_TEARSYNC 0x0200
+#define OMAPFB_FORMAT_FLAG_FORCE_VSYNC 0x0400
+#define OMAPFB_FORMAT_FLAG_ENABLE_OVERLAY 0x0800
+#define OMAPFB_FORMAT_FLAG_DISABLE_OVERLAY 0x1000
+#define OMAPFB_MEMTYPE_SDRAM 0
+#define OMAPFB_MEMTYPE_SRAM 1
+#define OMAPFB_MEMTYPE_MAX 1
+#define OMAPFB_MEM_IDX_ENABLED 0x80
+#define OMAPFB_MEM_IDX_MASK 0x7f
+enum omapfb_color_format {
+  OMAPFB_COLOR_RGB565 = 0,
+  OMAPFB_COLOR_YUV422,
+  OMAPFB_COLOR_YUV420,
+  OMAPFB_COLOR_CLUT_8BPP,
+  OMAPFB_COLOR_CLUT_4BPP,
+  OMAPFB_COLOR_CLUT_2BPP,
+  OMAPFB_COLOR_CLUT_1BPP,
+  OMAPFB_COLOR_RGB444,
+  OMAPFB_COLOR_YUY422,
+  OMAPFB_COLOR_ARGB16,
+  OMAPFB_COLOR_RGB24U,
+  OMAPFB_COLOR_RGB24P,
+  OMAPFB_COLOR_ARGB32,
+  OMAPFB_COLOR_RGBA32,
+  OMAPFB_COLOR_RGBX32,
+};
+struct omapfb_update_window {
+  __u32 x, y;
+  __u32 width, height;
+  __u32 format;
+  __u32 out_x, out_y;
+  __u32 out_width, out_height;
+  __u32 reserved[8];
+};
+struct omapfb_update_window_old {
+  __u32 x, y;
+  __u32 width, height;
+  __u32 format;
+};
+enum omapfb_plane {
+  OMAPFB_PLANE_GFX = 0,
+  OMAPFB_PLANE_VID1,
+  OMAPFB_PLANE_VID2,
+};
+enum omapfb_channel_out {
+  OMAPFB_CHANNEL_OUT_LCD = 0,
+  OMAPFB_CHANNEL_OUT_DIGIT,
+};
+struct omapfb_plane_info {
+  __u32 pos_x;
+  __u32 pos_y;
+  __u8 enabled;
+  __u8 channel_out;
+  __u8 mirror;
+  __u8 mem_idx;
+  __u32 out_width;
+  __u32 out_height;
+  __u32 reserved2[12];
+};
+struct omapfb_mem_info {
+  __u32 size;
+  __u8 type;
+  __u8 reserved[3];
+};
+struct omapfb_caps {
+  __u32 ctrl;
+  __u32 plane_color;
+  __u32 wnd_color;
+};
+enum omapfb_color_key_type {
+  OMAPFB_COLOR_KEY_DISABLED = 0,
+  OMAPFB_COLOR_KEY_GFX_DST,
+  OMAPFB_COLOR_KEY_VID_SRC,
+};
+struct omapfb_color_key {
+  __u8 channel_out;
+  __u32 background;
+  __u32 trans_key;
+  __u8 key_type;
+};
+enum omapfb_update_mode {
+  OMAPFB_UPDATE_DISABLED = 0,
+  OMAPFB_AUTO_UPDATE,
+  OMAPFB_MANUAL_UPDATE
+};
+struct omapfb_memory_read {
+  __u16 x;
+  __u16 y;
+  __u16 w;
+  __u16 h;
+  size_t buffer_size;
+  void __user * buffer;
+};
+struct omapfb_ovl_colormode {
+  __u8 overlay_idx;
+  __u8 mode_idx;
+  __u32 bits_per_pixel;
+  __u32 nonstd;
+  struct fb_bitfield red;
+  struct fb_bitfield green;
+  struct fb_bitfield blue;
+  struct fb_bitfield transp;
+};
+struct omapfb_vram_info {
+  __u32 total;
+  __u32 free;
+  __u32 largest_free_block;
+  __u32 reserved[5];
+};
+struct omapfb_tearsync_info {
+  __u8 enabled;
+  __u8 reserved1[3];
+  __u16 line;
+  __u16 reserved2;
+};
+struct omapfb_display_info {
+  __u16 xres;
+  __u16 yres;
+  __u32 width;
+  __u32 height;
+  __u32 reserved[5];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/oom.h b/i686-linux-musl/include/linux/oom.h
new file mode 100644
index 0000000..2fcdd29
--- /dev/null
+++ b/i686-linux-musl/include/linux/oom.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__INCLUDE_LINUX_OOM_H
+#define _UAPI__INCLUDE_LINUX_OOM_H
+#define OOM_SCORE_ADJ_MIN (- 1000)
+#define OOM_SCORE_ADJ_MAX 1000
+#define OOM_DISABLE (- 17)
+#define OOM_ADJUST_MIN (- 16)
+#define OOM_ADJUST_MAX 15
+#endif
diff --git a/i686-linux-musl/include/linux/openat2.h b/i686-linux-musl/include/linux/openat2.h
new file mode 100644
index 0000000..d397a00
--- /dev/null
+++ b/i686-linux-musl/include/linux/openat2.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_OPENAT2_H
+#define _UAPI_LINUX_OPENAT2_H
+#include <linux/types.h>
+struct open_how {
+  __u64 flags;
+  __u64 mode;
+  __u64 resolve;
+};
+#define RESOLVE_NO_XDEV 0x01
+#define RESOLVE_NO_MAGICLINKS 0x02
+#define RESOLVE_NO_SYMLINKS 0x04
+#define RESOLVE_BENEATH 0x08
+#define RESOLVE_IN_ROOT 0x10
+#define RESOLVE_CACHED 0x20
+#endif
diff --git a/i686-linux-musl/include/linux/openvswitch.h b/i686-linux-musl/include/linux/openvswitch.h
new file mode 100644
index 0000000..1f8ae17
--- /dev/null
+++ b/i686-linux-musl/include/linux/openvswitch.h
@@ -0,0 +1,522 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_OPENVSWITCH_H
+#define _UAPI__LINUX_OPENVSWITCH_H 1
+#include <linux/types.h>
+#include <linux/if_ether.h>
+struct ovs_header {
+  int dp_ifindex;
+};
+#define OVS_DATAPATH_FAMILY "ovs_datapath"
+#define OVS_DATAPATH_MCGROUP "ovs_datapath"
+#define OVS_DATAPATH_VERSION 2
+#define OVS_DP_VER_FEATURES 2
+enum ovs_datapath_cmd {
+  OVS_DP_CMD_UNSPEC,
+  OVS_DP_CMD_NEW,
+  OVS_DP_CMD_DEL,
+  OVS_DP_CMD_GET,
+  OVS_DP_CMD_SET
+};
+enum ovs_datapath_attr {
+  OVS_DP_ATTR_UNSPEC,
+  OVS_DP_ATTR_NAME,
+  OVS_DP_ATTR_UPCALL_PID,
+  OVS_DP_ATTR_STATS,
+  OVS_DP_ATTR_MEGAFLOW_STATS,
+  OVS_DP_ATTR_USER_FEATURES,
+  OVS_DP_ATTR_PAD,
+  OVS_DP_ATTR_MASKS_CACHE_SIZE,
+  OVS_DP_ATTR_PER_CPU_PIDS,
+  __OVS_DP_ATTR_MAX
+};
+#define OVS_DP_ATTR_MAX (__OVS_DP_ATTR_MAX - 1)
+struct ovs_dp_stats {
+  __u64 n_hit;
+  __u64 n_missed;
+  __u64 n_lost;
+  __u64 n_flows;
+};
+struct ovs_dp_megaflow_stats {
+  __u64 n_mask_hit;
+  __u32 n_masks;
+  __u32 pad0;
+  __u64 n_cache_hit;
+  __u64 pad1;
+};
+struct ovs_vport_stats {
+  __u64 rx_packets;
+  __u64 tx_packets;
+  __u64 rx_bytes;
+  __u64 tx_bytes;
+  __u64 rx_errors;
+  __u64 tx_errors;
+  __u64 rx_dropped;
+  __u64 tx_dropped;
+};
+#define OVS_DP_F_UNALIGNED (1 << 0)
+#define OVS_DP_F_VPORT_PIDS (1 << 1)
+#define OVS_DP_F_TC_RECIRC_SHARING (1 << 2)
+#define OVS_DP_F_DISPATCH_UPCALL_PER_CPU (1 << 3)
+#define OVSP_LOCAL ((__u32) 0)
+#define OVS_PACKET_FAMILY "ovs_packet"
+#define OVS_PACKET_VERSION 0x1
+enum ovs_packet_cmd {
+  OVS_PACKET_CMD_UNSPEC,
+  OVS_PACKET_CMD_MISS,
+  OVS_PACKET_CMD_ACTION,
+  OVS_PACKET_CMD_EXECUTE
+};
+enum ovs_packet_attr {
+  OVS_PACKET_ATTR_UNSPEC,
+  OVS_PACKET_ATTR_PACKET,
+  OVS_PACKET_ATTR_KEY,
+  OVS_PACKET_ATTR_ACTIONS,
+  OVS_PACKET_ATTR_USERDATA,
+  OVS_PACKET_ATTR_EGRESS_TUN_KEY,
+  OVS_PACKET_ATTR_UNUSED1,
+  OVS_PACKET_ATTR_UNUSED2,
+  OVS_PACKET_ATTR_PROBE,
+  OVS_PACKET_ATTR_MRU,
+  OVS_PACKET_ATTR_LEN,
+  OVS_PACKET_ATTR_HASH,
+  __OVS_PACKET_ATTR_MAX
+};
+#define OVS_PACKET_ATTR_MAX (__OVS_PACKET_ATTR_MAX - 1)
+#define OVS_VPORT_FAMILY "ovs_vport"
+#define OVS_VPORT_MCGROUP "ovs_vport"
+#define OVS_VPORT_VERSION 0x1
+enum ovs_vport_cmd {
+  OVS_VPORT_CMD_UNSPEC,
+  OVS_VPORT_CMD_NEW,
+  OVS_VPORT_CMD_DEL,
+  OVS_VPORT_CMD_GET,
+  OVS_VPORT_CMD_SET
+};
+enum ovs_vport_type {
+  OVS_VPORT_TYPE_UNSPEC,
+  OVS_VPORT_TYPE_NETDEV,
+  OVS_VPORT_TYPE_INTERNAL,
+  OVS_VPORT_TYPE_GRE,
+  OVS_VPORT_TYPE_VXLAN,
+  OVS_VPORT_TYPE_GENEVE,
+  __OVS_VPORT_TYPE_MAX
+};
+#define OVS_VPORT_TYPE_MAX (__OVS_VPORT_TYPE_MAX - 1)
+enum ovs_vport_attr {
+  OVS_VPORT_ATTR_UNSPEC,
+  OVS_VPORT_ATTR_PORT_NO,
+  OVS_VPORT_ATTR_TYPE,
+  OVS_VPORT_ATTR_NAME,
+  OVS_VPORT_ATTR_OPTIONS,
+  OVS_VPORT_ATTR_UPCALL_PID,
+  OVS_VPORT_ATTR_STATS,
+  OVS_VPORT_ATTR_PAD,
+  OVS_VPORT_ATTR_IFINDEX,
+  OVS_VPORT_ATTR_NETNSID,
+  __OVS_VPORT_ATTR_MAX
+};
+#define OVS_VPORT_ATTR_MAX (__OVS_VPORT_ATTR_MAX - 1)
+enum {
+  OVS_VXLAN_EXT_UNSPEC,
+  OVS_VXLAN_EXT_GBP,
+  __OVS_VXLAN_EXT_MAX,
+};
+#define OVS_VXLAN_EXT_MAX (__OVS_VXLAN_EXT_MAX - 1)
+enum {
+  OVS_TUNNEL_ATTR_UNSPEC,
+  OVS_TUNNEL_ATTR_DST_PORT,
+  OVS_TUNNEL_ATTR_EXTENSION,
+  __OVS_TUNNEL_ATTR_MAX
+};
+#define OVS_TUNNEL_ATTR_MAX (__OVS_TUNNEL_ATTR_MAX - 1)
+#define OVS_FLOW_FAMILY "ovs_flow"
+#define OVS_FLOW_MCGROUP "ovs_flow"
+#define OVS_FLOW_VERSION 0x1
+enum ovs_flow_cmd {
+  OVS_FLOW_CMD_UNSPEC,
+  OVS_FLOW_CMD_NEW,
+  OVS_FLOW_CMD_DEL,
+  OVS_FLOW_CMD_GET,
+  OVS_FLOW_CMD_SET
+};
+struct ovs_flow_stats {
+  __u64 n_packets;
+  __u64 n_bytes;
+};
+enum ovs_key_attr {
+  OVS_KEY_ATTR_UNSPEC,
+  OVS_KEY_ATTR_ENCAP,
+  OVS_KEY_ATTR_PRIORITY,
+  OVS_KEY_ATTR_IN_PORT,
+  OVS_KEY_ATTR_ETHERNET,
+  OVS_KEY_ATTR_VLAN,
+  OVS_KEY_ATTR_ETHERTYPE,
+  OVS_KEY_ATTR_IPV4,
+  OVS_KEY_ATTR_IPV6,
+  OVS_KEY_ATTR_TCP,
+  OVS_KEY_ATTR_UDP,
+  OVS_KEY_ATTR_ICMP,
+  OVS_KEY_ATTR_ICMPV6,
+  OVS_KEY_ATTR_ARP,
+  OVS_KEY_ATTR_ND,
+  OVS_KEY_ATTR_SKB_MARK,
+  OVS_KEY_ATTR_TUNNEL,
+  OVS_KEY_ATTR_SCTP,
+  OVS_KEY_ATTR_TCP_FLAGS,
+  OVS_KEY_ATTR_DP_HASH,
+  OVS_KEY_ATTR_RECIRC_ID,
+  OVS_KEY_ATTR_MPLS,
+  OVS_KEY_ATTR_CT_STATE,
+  OVS_KEY_ATTR_CT_ZONE,
+  OVS_KEY_ATTR_CT_MARK,
+  OVS_KEY_ATTR_CT_LABELS,
+  OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV4,
+  OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV6,
+  OVS_KEY_ATTR_NSH,
+  __OVS_KEY_ATTR_MAX
+};
+#define OVS_KEY_ATTR_MAX (__OVS_KEY_ATTR_MAX - 1)
+enum ovs_tunnel_key_attr {
+  OVS_TUNNEL_KEY_ATTR_ID,
+  OVS_TUNNEL_KEY_ATTR_IPV4_SRC,
+  OVS_TUNNEL_KEY_ATTR_IPV4_DST,
+  OVS_TUNNEL_KEY_ATTR_TOS,
+  OVS_TUNNEL_KEY_ATTR_TTL,
+  OVS_TUNNEL_KEY_ATTR_DONT_FRAGMENT,
+  OVS_TUNNEL_KEY_ATTR_CSUM,
+  OVS_TUNNEL_KEY_ATTR_OAM,
+  OVS_TUNNEL_KEY_ATTR_GENEVE_OPTS,
+  OVS_TUNNEL_KEY_ATTR_TP_SRC,
+  OVS_TUNNEL_KEY_ATTR_TP_DST,
+  OVS_TUNNEL_KEY_ATTR_VXLAN_OPTS,
+  OVS_TUNNEL_KEY_ATTR_IPV6_SRC,
+  OVS_TUNNEL_KEY_ATTR_IPV6_DST,
+  OVS_TUNNEL_KEY_ATTR_PAD,
+  OVS_TUNNEL_KEY_ATTR_ERSPAN_OPTS,
+  OVS_TUNNEL_KEY_ATTR_IPV4_INFO_BRIDGE,
+  __OVS_TUNNEL_KEY_ATTR_MAX
+};
+#define OVS_TUNNEL_KEY_ATTR_MAX (__OVS_TUNNEL_KEY_ATTR_MAX - 1)
+enum ovs_frag_type {
+  OVS_FRAG_TYPE_NONE,
+  OVS_FRAG_TYPE_FIRST,
+  OVS_FRAG_TYPE_LATER,
+  __OVS_FRAG_TYPE_MAX
+};
+#define OVS_FRAG_TYPE_MAX (__OVS_FRAG_TYPE_MAX - 1)
+struct ovs_key_ethernet {
+  __u8 eth_src[ETH_ALEN];
+  __u8 eth_dst[ETH_ALEN];
+};
+struct ovs_key_mpls {
+  __be32 mpls_lse;
+};
+struct ovs_key_ipv4 {
+  __be32 ipv4_src;
+  __be32 ipv4_dst;
+  __u8 ipv4_proto;
+  __u8 ipv4_tos;
+  __u8 ipv4_ttl;
+  __u8 ipv4_frag;
+};
+struct ovs_key_ipv6 {
+  __be32 ipv6_src[4];
+  __be32 ipv6_dst[4];
+  __be32 ipv6_label;
+  __u8 ipv6_proto;
+  __u8 ipv6_tclass;
+  __u8 ipv6_hlimit;
+  __u8 ipv6_frag;
+};
+struct ovs_key_tcp {
+  __be16 tcp_src;
+  __be16 tcp_dst;
+};
+struct ovs_key_udp {
+  __be16 udp_src;
+  __be16 udp_dst;
+};
+struct ovs_key_sctp {
+  __be16 sctp_src;
+  __be16 sctp_dst;
+};
+struct ovs_key_icmp {
+  __u8 icmp_type;
+  __u8 icmp_code;
+};
+struct ovs_key_icmpv6 {
+  __u8 icmpv6_type;
+  __u8 icmpv6_code;
+};
+struct ovs_key_arp {
+  __be32 arp_sip;
+  __be32 arp_tip;
+  __be16 arp_op;
+  __u8 arp_sha[ETH_ALEN];
+  __u8 arp_tha[ETH_ALEN];
+};
+struct ovs_key_nd {
+  __be32 nd_target[4];
+  __u8 nd_sll[ETH_ALEN];
+  __u8 nd_tll[ETH_ALEN];
+};
+#define OVS_CT_LABELS_LEN_32 4
+#define OVS_CT_LABELS_LEN (OVS_CT_LABELS_LEN_32 * sizeof(__u32))
+struct ovs_key_ct_labels {
+  union {
+    __u8 ct_labels[OVS_CT_LABELS_LEN];
+    __u32 ct_labels_32[OVS_CT_LABELS_LEN_32];
+  };
+};
+#define OVS_CS_F_NEW 0x01
+#define OVS_CS_F_ESTABLISHED 0x02
+#define OVS_CS_F_RELATED 0x04
+#define OVS_CS_F_REPLY_DIR 0x08
+#define OVS_CS_F_INVALID 0x10
+#define OVS_CS_F_TRACKED 0x20
+#define OVS_CS_F_SRC_NAT 0x40
+#define OVS_CS_F_DST_NAT 0x80
+#define OVS_CS_F_NAT_MASK (OVS_CS_F_SRC_NAT | OVS_CS_F_DST_NAT)
+struct ovs_key_ct_tuple_ipv4 {
+  __be32 ipv4_src;
+  __be32 ipv4_dst;
+  __be16 src_port;
+  __be16 dst_port;
+  __u8 ipv4_proto;
+};
+struct ovs_key_ct_tuple_ipv6 {
+  __be32 ipv6_src[4];
+  __be32 ipv6_dst[4];
+  __be16 src_port;
+  __be16 dst_port;
+  __u8 ipv6_proto;
+};
+enum ovs_nsh_key_attr {
+  OVS_NSH_KEY_ATTR_UNSPEC,
+  OVS_NSH_KEY_ATTR_BASE,
+  OVS_NSH_KEY_ATTR_MD1,
+  OVS_NSH_KEY_ATTR_MD2,
+  __OVS_NSH_KEY_ATTR_MAX
+};
+#define OVS_NSH_KEY_ATTR_MAX (__OVS_NSH_KEY_ATTR_MAX - 1)
+struct ovs_nsh_key_base {
+  __u8 flags;
+  __u8 ttl;
+  __u8 mdtype;
+  __u8 np;
+  __be32 path_hdr;
+};
+#define NSH_MD1_CONTEXT_SIZE 4
+struct ovs_nsh_key_md1 {
+  __be32 context[NSH_MD1_CONTEXT_SIZE];
+};
+enum ovs_flow_attr {
+  OVS_FLOW_ATTR_UNSPEC,
+  OVS_FLOW_ATTR_KEY,
+  OVS_FLOW_ATTR_ACTIONS,
+  OVS_FLOW_ATTR_STATS,
+  OVS_FLOW_ATTR_TCP_FLAGS,
+  OVS_FLOW_ATTR_USED,
+  OVS_FLOW_ATTR_CLEAR,
+  OVS_FLOW_ATTR_MASK,
+  OVS_FLOW_ATTR_PROBE,
+  OVS_FLOW_ATTR_UFID,
+  OVS_FLOW_ATTR_UFID_FLAGS,
+  OVS_FLOW_ATTR_PAD,
+  __OVS_FLOW_ATTR_MAX
+};
+#define OVS_FLOW_ATTR_MAX (__OVS_FLOW_ATTR_MAX - 1)
+#define OVS_UFID_F_OMIT_KEY (1 << 0)
+#define OVS_UFID_F_OMIT_MASK (1 << 1)
+#define OVS_UFID_F_OMIT_ACTIONS (1 << 2)
+enum ovs_sample_attr {
+  OVS_SAMPLE_ATTR_UNSPEC,
+  OVS_SAMPLE_ATTR_PROBABILITY,
+  OVS_SAMPLE_ATTR_ACTIONS,
+  __OVS_SAMPLE_ATTR_MAX,
+};
+#define OVS_SAMPLE_ATTR_MAX (__OVS_SAMPLE_ATTR_MAX - 1)
+enum ovs_userspace_attr {
+  OVS_USERSPACE_ATTR_UNSPEC,
+  OVS_USERSPACE_ATTR_PID,
+  OVS_USERSPACE_ATTR_USERDATA,
+  OVS_USERSPACE_ATTR_EGRESS_TUN_PORT,
+  OVS_USERSPACE_ATTR_ACTIONS,
+  __OVS_USERSPACE_ATTR_MAX
+};
+#define OVS_USERSPACE_ATTR_MAX (__OVS_USERSPACE_ATTR_MAX - 1)
+struct ovs_action_trunc {
+  __u32 max_len;
+};
+struct ovs_action_push_mpls {
+  __be32 mpls_lse;
+  __be16 mpls_ethertype;
+};
+struct ovs_action_add_mpls {
+  __be32 mpls_lse;
+  __be16 mpls_ethertype;
+  __u16 tun_flags;
+};
+#define OVS_MPLS_L3_TUNNEL_FLAG_MASK (1 << 0)
+struct ovs_action_push_vlan {
+  __be16 vlan_tpid;
+  __be16 vlan_tci;
+};
+enum ovs_hash_alg {
+  OVS_HASH_ALG_L4,
+};
+struct ovs_action_hash {
+  __u32 hash_alg;
+  __u32 hash_basis;
+};
+enum ovs_ct_attr {
+  OVS_CT_ATTR_UNSPEC,
+  OVS_CT_ATTR_COMMIT,
+  OVS_CT_ATTR_ZONE,
+  OVS_CT_ATTR_MARK,
+  OVS_CT_ATTR_LABELS,
+  OVS_CT_ATTR_HELPER,
+  OVS_CT_ATTR_NAT,
+  OVS_CT_ATTR_FORCE_COMMIT,
+  OVS_CT_ATTR_EVENTMASK,
+  OVS_CT_ATTR_TIMEOUT,
+  __OVS_CT_ATTR_MAX
+};
+#define OVS_CT_ATTR_MAX (__OVS_CT_ATTR_MAX - 1)
+enum ovs_nat_attr {
+  OVS_NAT_ATTR_UNSPEC,
+  OVS_NAT_ATTR_SRC,
+  OVS_NAT_ATTR_DST,
+  OVS_NAT_ATTR_IP_MIN,
+  OVS_NAT_ATTR_IP_MAX,
+  OVS_NAT_ATTR_PROTO_MIN,
+  OVS_NAT_ATTR_PROTO_MAX,
+  OVS_NAT_ATTR_PERSISTENT,
+  OVS_NAT_ATTR_PROTO_HASH,
+  OVS_NAT_ATTR_PROTO_RANDOM,
+  __OVS_NAT_ATTR_MAX,
+};
+#define OVS_NAT_ATTR_MAX (__OVS_NAT_ATTR_MAX - 1)
+struct ovs_action_push_eth {
+  struct ovs_key_ethernet addresses;
+};
+enum ovs_check_pkt_len_attr {
+  OVS_CHECK_PKT_LEN_ATTR_UNSPEC,
+  OVS_CHECK_PKT_LEN_ATTR_PKT_LEN,
+  OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_GREATER,
+  OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_LESS_EQUAL,
+  __OVS_CHECK_PKT_LEN_ATTR_MAX,
+};
+#define OVS_CHECK_PKT_LEN_ATTR_MAX (__OVS_CHECK_PKT_LEN_ATTR_MAX - 1)
+enum ovs_action_attr {
+  OVS_ACTION_ATTR_UNSPEC,
+  OVS_ACTION_ATTR_OUTPUT,
+  OVS_ACTION_ATTR_USERSPACE,
+  OVS_ACTION_ATTR_SET,
+  OVS_ACTION_ATTR_PUSH_VLAN,
+  OVS_ACTION_ATTR_POP_VLAN,
+  OVS_ACTION_ATTR_SAMPLE,
+  OVS_ACTION_ATTR_RECIRC,
+  OVS_ACTION_ATTR_HASH,
+  OVS_ACTION_ATTR_PUSH_MPLS,
+  OVS_ACTION_ATTR_POP_MPLS,
+  OVS_ACTION_ATTR_SET_MASKED,
+  OVS_ACTION_ATTR_CT,
+  OVS_ACTION_ATTR_TRUNC,
+  OVS_ACTION_ATTR_PUSH_ETH,
+  OVS_ACTION_ATTR_POP_ETH,
+  OVS_ACTION_ATTR_CT_CLEAR,
+  OVS_ACTION_ATTR_PUSH_NSH,
+  OVS_ACTION_ATTR_POP_NSH,
+  OVS_ACTION_ATTR_METER,
+  OVS_ACTION_ATTR_CLONE,
+  OVS_ACTION_ATTR_CHECK_PKT_LEN,
+  OVS_ACTION_ATTR_ADD_MPLS,
+  OVS_ACTION_ATTR_DEC_TTL,
+  __OVS_ACTION_ATTR_MAX,
+};
+#define OVS_ACTION_ATTR_MAX (__OVS_ACTION_ATTR_MAX - 1)
+#define OVS_METER_FAMILY "ovs_meter"
+#define OVS_METER_MCGROUP "ovs_meter"
+#define OVS_METER_VERSION 0x1
+enum ovs_meter_cmd {
+  OVS_METER_CMD_UNSPEC,
+  OVS_METER_CMD_FEATURES,
+  OVS_METER_CMD_SET,
+  OVS_METER_CMD_DEL,
+  OVS_METER_CMD_GET
+};
+enum ovs_meter_attr {
+  OVS_METER_ATTR_UNSPEC,
+  OVS_METER_ATTR_ID,
+  OVS_METER_ATTR_KBPS,
+  OVS_METER_ATTR_STATS,
+  OVS_METER_ATTR_BANDS,
+  OVS_METER_ATTR_USED,
+  OVS_METER_ATTR_CLEAR,
+  OVS_METER_ATTR_MAX_METERS,
+  OVS_METER_ATTR_MAX_BANDS,
+  OVS_METER_ATTR_PAD,
+  __OVS_METER_ATTR_MAX
+};
+#define OVS_METER_ATTR_MAX (__OVS_METER_ATTR_MAX - 1)
+enum ovs_band_attr {
+  OVS_BAND_ATTR_UNSPEC,
+  OVS_BAND_ATTR_TYPE,
+  OVS_BAND_ATTR_RATE,
+  OVS_BAND_ATTR_BURST,
+  OVS_BAND_ATTR_STATS,
+  __OVS_BAND_ATTR_MAX
+};
+#define OVS_BAND_ATTR_MAX (__OVS_BAND_ATTR_MAX - 1)
+enum ovs_meter_band_type {
+  OVS_METER_BAND_TYPE_UNSPEC,
+  OVS_METER_BAND_TYPE_DROP,
+  __OVS_METER_BAND_TYPE_MAX
+};
+#define OVS_METER_BAND_TYPE_MAX (__OVS_METER_BAND_TYPE_MAX - 1)
+#define OVS_CT_LIMIT_FAMILY "ovs_ct_limit"
+#define OVS_CT_LIMIT_MCGROUP "ovs_ct_limit"
+#define OVS_CT_LIMIT_VERSION 0x1
+enum ovs_ct_limit_cmd {
+  OVS_CT_LIMIT_CMD_UNSPEC,
+  OVS_CT_LIMIT_CMD_SET,
+  OVS_CT_LIMIT_CMD_DEL,
+  OVS_CT_LIMIT_CMD_GET
+};
+enum ovs_ct_limit_attr {
+  OVS_CT_LIMIT_ATTR_UNSPEC,
+  OVS_CT_LIMIT_ATTR_ZONE_LIMIT,
+  __OVS_CT_LIMIT_ATTR_MAX
+};
+#define OVS_CT_LIMIT_ATTR_MAX (__OVS_CT_LIMIT_ATTR_MAX - 1)
+#define OVS_ZONE_LIMIT_DEFAULT_ZONE - 1
+struct ovs_zone_limit {
+  int zone_id;
+  __u32 limit;
+  __u32 count;
+};
+enum ovs_dec_ttl_attr {
+  OVS_DEC_TTL_ATTR_UNSPEC,
+  OVS_DEC_TTL_ATTR_ACTION,
+  __OVS_DEC_TTL_ATTR_MAX
+};
+#define OVS_DEC_TTL_ATTR_MAX (__OVS_DEC_TTL_ATTR_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/packet_diag.h b/i686-linux-musl/include/linux/packet_diag.h
new file mode 100644
index 0000000..35d5413
--- /dev/null
+++ b/i686-linux-musl/include/linux/packet_diag.h
@@ -0,0 +1,84 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __PACKET_DIAG_H__
+#define __PACKET_DIAG_H__
+#include <linux/types.h>
+struct packet_diag_req {
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
+  __u16 pad;
+  __u32 pdiag_ino;
+  __u32 pdiag_show;
+  __u32 pdiag_cookie[2];
+};
+#define PACKET_SHOW_INFO 0x00000001
+#define PACKET_SHOW_MCLIST 0x00000002
+#define PACKET_SHOW_RING_CFG 0x00000004
+#define PACKET_SHOW_FANOUT 0x00000008
+#define PACKET_SHOW_MEMINFO 0x00000010
+#define PACKET_SHOW_FILTER 0x00000020
+struct packet_diag_msg {
+  __u8 pdiag_family;
+  __u8 pdiag_type;
+  __u16 pdiag_num;
+  __u32 pdiag_ino;
+  __u32 pdiag_cookie[2];
+};
+enum {
+  PACKET_DIAG_INFO,
+  PACKET_DIAG_MCLIST,
+  PACKET_DIAG_RX_RING,
+  PACKET_DIAG_TX_RING,
+  PACKET_DIAG_FANOUT,
+  PACKET_DIAG_UID,
+  PACKET_DIAG_MEMINFO,
+  PACKET_DIAG_FILTER,
+  __PACKET_DIAG_MAX,
+};
+#define PACKET_DIAG_MAX (__PACKET_DIAG_MAX - 1)
+struct packet_diag_info {
+  __u32 pdi_index;
+  __u32 pdi_version;
+  __u32 pdi_reserve;
+  __u32 pdi_copy_thresh;
+  __u32 pdi_tstamp;
+  __u32 pdi_flags;
+#define PDI_RUNNING 0x1
+#define PDI_AUXDATA 0x2
+#define PDI_ORIGDEV 0x4
+#define PDI_VNETHDR 0x8
+#define PDI_LOSS 0x10
+};
+struct packet_diag_mclist {
+  __u32 pdmc_index;
+  __u32 pdmc_count;
+  __u16 pdmc_type;
+  __u16 pdmc_alen;
+  __u8 pdmc_addr[32];
+};
+struct packet_diag_ring {
+  __u32 pdr_block_size;
+  __u32 pdr_block_nr;
+  __u32 pdr_frame_size;
+  __u32 pdr_frame_nr;
+  __u32 pdr_retire_tmo;
+  __u32 pdr_sizeof_priv;
+  __u32 pdr_features;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/param.h b/i686-linux-musl/include/linux/param.h
new file mode 100644
index 0000000..be5bb63
--- /dev/null
+++ b/i686-linux-musl/include/linux/param.h
@@ -0,0 +1,22 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_PARAM_H
+#define _LINUX_PARAM_H
+#include <asm/param.h>
+#endif
diff --git a/i686-linux-musl/include/linux/parport.h b/i686-linux-musl/include/linux/parport.h
new file mode 100644
index 0000000..8152224
--- /dev/null
+++ b/i686-linux-musl/include/linux/parport.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_PARPORT_H_
+#define _UAPI_PARPORT_H_
+#define PARPORT_MAX 16
+#define PARPORT_IRQ_NONE - 1
+#define PARPORT_DMA_NONE - 1
+#define PARPORT_IRQ_AUTO - 2
+#define PARPORT_DMA_AUTO - 2
+#define PARPORT_DMA_NOFIFO - 3
+#define PARPORT_DISABLE - 2
+#define PARPORT_IRQ_PROBEONLY - 3
+#define PARPORT_IOHI_AUTO - 1
+#define PARPORT_CONTROL_STROBE 0x1
+#define PARPORT_CONTROL_AUTOFD 0x2
+#define PARPORT_CONTROL_INIT 0x4
+#define PARPORT_CONTROL_SELECT 0x8
+#define PARPORT_STATUS_ERROR 0x8
+#define PARPORT_STATUS_SELECT 0x10
+#define PARPORT_STATUS_PAPEROUT 0x20
+#define PARPORT_STATUS_ACK 0x40
+#define PARPORT_STATUS_BUSY 0x80
+typedef enum {
+  PARPORT_CLASS_LEGACY = 0,
+  PARPORT_CLASS_PRINTER,
+  PARPORT_CLASS_MODEM,
+  PARPORT_CLASS_NET,
+  PARPORT_CLASS_HDC,
+  PARPORT_CLASS_PCMCIA,
+  PARPORT_CLASS_MEDIA,
+  PARPORT_CLASS_FDC,
+  PARPORT_CLASS_PORTS,
+  PARPORT_CLASS_SCANNER,
+  PARPORT_CLASS_DIGCAM,
+  PARPORT_CLASS_OTHER,
+  PARPORT_CLASS_UNSPEC,
+  PARPORT_CLASS_SCSIADAPTER
+} parport_device_class;
+#define PARPORT_MODE_PCSPP (1 << 0)
+#define PARPORT_MODE_TRISTATE (1 << 1)
+#define PARPORT_MODE_EPP (1 << 2)
+#define PARPORT_MODE_ECP (1 << 3)
+#define PARPORT_MODE_COMPAT (1 << 4)
+#define PARPORT_MODE_DMA (1 << 5)
+#define PARPORT_MODE_SAFEININT (1 << 6)
+#define IEEE1284_MODE_NIBBLE 0
+#define IEEE1284_MODE_BYTE (1 << 0)
+#define IEEE1284_MODE_COMPAT (1 << 8)
+#define IEEE1284_MODE_BECP (1 << 9)
+#define IEEE1284_MODE_ECP (1 << 4)
+#define IEEE1284_MODE_ECPRLE (IEEE1284_MODE_ECP | (1 << 5))
+#define IEEE1284_MODE_ECPSWE (1 << 10)
+#define IEEE1284_MODE_EPP (1 << 6)
+#define IEEE1284_MODE_EPPSL (1 << 11)
+#define IEEE1284_MODE_EPPSWE (1 << 12)
+#define IEEE1284_DEVICEID (1 << 2)
+#define IEEE1284_EXT_LINK (1 << 14)
+#define IEEE1284_ADDR (1 << 13)
+#define IEEE1284_DATA 0
+#define PARPORT_EPP_FAST (1 << 0)
+#define PARPORT_W91284PIC (1 << 1)
+#endif
diff --git a/i686-linux-musl/include/linux/patchkey.h b/i686-linux-musl/include/linux/patchkey.h
new file mode 100644
index 0000000..12c2731
--- /dev/null
+++ b/i686-linux-musl/include/linux/patchkey.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_PATCHKEY_H_INDIRECT
+#error "patchkey.h included directly"
+#endif
+#ifndef _UAPI_LINUX_PATCHKEY_H
+#define _UAPI_LINUX_PATCHKEY_H
+#include <endian.h>
+#ifdef __BYTE_ORDER
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define _PATCHKEY(id) (0xfd00 | id)
+#elif __BYTE_ORDER==__LITTLE_ENDIAN
+#define _PATCHKEY(id) ((id << 8) | 0x00fd)
+#else
+#error "could not determine byte order"
+#endif
+#endif
+#endif
diff --git a/i686-linux-musl/include/linux/pci.h b/i686-linux-musl/include/linux/pci.h
new file mode 100644
index 0000000..14a68e4
--- /dev/null
+++ b/i686-linux-musl/include/linux/pci.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPILINUX_PCI_H
+#define _UAPILINUX_PCI_H
+#include <linux/pci_regs.h>
+#define PCI_DEVFN(slot,func) ((((slot) & 0x1f) << 3) | ((func) & 0x07))
+#define PCI_SLOT(devfn) (((devfn) >> 3) & 0x1f)
+#define PCI_FUNC(devfn) ((devfn) & 0x07)
+#define PCIIOC_BASE ('P' << 24 | 'C' << 16 | 'I' << 8)
+#define PCIIOC_CONTROLLER (PCIIOC_BASE | 0x00)
+#define PCIIOC_MMAP_IS_IO (PCIIOC_BASE | 0x01)
+#define PCIIOC_MMAP_IS_MEM (PCIIOC_BASE | 0x02)
+#define PCIIOC_WRITE_COMBINE (PCIIOC_BASE | 0x03)
+#endif
diff --git a/i686-linux-musl/include/linux/pci_regs.h b/i686-linux-musl/include/linux/pci_regs.h
new file mode 100644
index 0000000..5920633
--- /dev/null
+++ b/i686-linux-musl/include/linux/pci_regs.h
@@ -0,0 +1,936 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef LINUX_PCI_REGS_H
+#define LINUX_PCI_REGS_H
+#define PCI_CFG_SPACE_SIZE 256
+#define PCI_CFG_SPACE_EXP_SIZE 4096
+#define PCI_STD_HEADER_SIZEOF 64
+#define PCI_STD_NUM_BARS 6
+#define PCI_VENDOR_ID 0x00
+#define PCI_DEVICE_ID 0x02
+#define PCI_COMMAND 0x04
+#define PCI_COMMAND_IO 0x1
+#define PCI_COMMAND_MEMORY 0x2
+#define PCI_COMMAND_MASTER 0x4
+#define PCI_COMMAND_SPECIAL 0x8
+#define PCI_COMMAND_INVALIDATE 0x10
+#define PCI_COMMAND_VGA_PALETTE 0x20
+#define PCI_COMMAND_PARITY 0x40
+#define PCI_COMMAND_WAIT 0x80
+#define PCI_COMMAND_SERR 0x100
+#define PCI_COMMAND_FAST_BACK 0x200
+#define PCI_COMMAND_INTX_DISABLE 0x400
+#define PCI_STATUS 0x06
+#define PCI_STATUS_IMM_READY 0x01
+#define PCI_STATUS_INTERRUPT 0x08
+#define PCI_STATUS_CAP_LIST 0x10
+#define PCI_STATUS_66MHZ 0x20
+#define PCI_STATUS_UDF 0x40
+#define PCI_STATUS_FAST_BACK 0x80
+#define PCI_STATUS_PARITY 0x100
+#define PCI_STATUS_DEVSEL_MASK 0x600
+#define PCI_STATUS_DEVSEL_FAST 0x000
+#define PCI_STATUS_DEVSEL_MEDIUM 0x200
+#define PCI_STATUS_DEVSEL_SLOW 0x400
+#define PCI_STATUS_SIG_TARGET_ABORT 0x800
+#define PCI_STATUS_REC_TARGET_ABORT 0x1000
+#define PCI_STATUS_REC_MASTER_ABORT 0x2000
+#define PCI_STATUS_SIG_SYSTEM_ERROR 0x4000
+#define PCI_STATUS_DETECTED_PARITY 0x8000
+#define PCI_CLASS_REVISION 0x08
+#define PCI_REVISION_ID 0x08
+#define PCI_CLASS_PROG 0x09
+#define PCI_CLASS_DEVICE 0x0a
+#define PCI_CACHE_LINE_SIZE 0x0c
+#define PCI_LATENCY_TIMER 0x0d
+#define PCI_HEADER_TYPE 0x0e
+#define PCI_HEADER_TYPE_MASK 0x7f
+#define PCI_HEADER_TYPE_NORMAL 0
+#define PCI_HEADER_TYPE_BRIDGE 1
+#define PCI_HEADER_TYPE_CARDBUS 2
+#define PCI_BIST 0x0f
+#define PCI_BIST_CODE_MASK 0x0f
+#define PCI_BIST_START 0x40
+#define PCI_BIST_CAPABLE 0x80
+#define PCI_BASE_ADDRESS_0 0x10
+#define PCI_BASE_ADDRESS_1 0x14
+#define PCI_BASE_ADDRESS_2 0x18
+#define PCI_BASE_ADDRESS_3 0x1c
+#define PCI_BASE_ADDRESS_4 0x20
+#define PCI_BASE_ADDRESS_5 0x24
+#define PCI_BASE_ADDRESS_SPACE 0x01
+#define PCI_BASE_ADDRESS_SPACE_IO 0x01
+#define PCI_BASE_ADDRESS_SPACE_MEMORY 0x00
+#define PCI_BASE_ADDRESS_MEM_TYPE_MASK 0x06
+#define PCI_BASE_ADDRESS_MEM_TYPE_32 0x00
+#define PCI_BASE_ADDRESS_MEM_TYPE_1M 0x02
+#define PCI_BASE_ADDRESS_MEM_TYPE_64 0x04
+#define PCI_BASE_ADDRESS_MEM_PREFETCH 0x08
+#define PCI_BASE_ADDRESS_MEM_MASK (~0x0fUL)
+#define PCI_BASE_ADDRESS_IO_MASK (~0x03UL)
+#define PCI_CARDBUS_CIS 0x28
+#define PCI_SUBSYSTEM_VENDOR_ID 0x2c
+#define PCI_SUBSYSTEM_ID 0x2e
+#define PCI_ROM_ADDRESS 0x30
+#define PCI_ROM_ADDRESS_ENABLE 0x01
+#define PCI_ROM_ADDRESS_MASK (~0x7ffU)
+#define PCI_CAPABILITY_LIST 0x34
+#define PCI_INTERRUPT_LINE 0x3c
+#define PCI_INTERRUPT_PIN 0x3d
+#define PCI_MIN_GNT 0x3e
+#define PCI_MAX_LAT 0x3f
+#define PCI_PRIMARY_BUS 0x18
+#define PCI_SECONDARY_BUS 0x19
+#define PCI_SUBORDINATE_BUS 0x1a
+#define PCI_SEC_LATENCY_TIMER 0x1b
+#define PCI_IO_BASE 0x1c
+#define PCI_IO_LIMIT 0x1d
+#define PCI_IO_RANGE_TYPE_MASK 0x0fUL
+#define PCI_IO_RANGE_TYPE_16 0x00
+#define PCI_IO_RANGE_TYPE_32 0x01
+#define PCI_IO_RANGE_MASK (~0x0fUL)
+#define PCI_IO_1K_RANGE_MASK (~0x03UL)
+#define PCI_SEC_STATUS 0x1e
+#define PCI_MEMORY_BASE 0x20
+#define PCI_MEMORY_LIMIT 0x22
+#define PCI_MEMORY_RANGE_TYPE_MASK 0x0fUL
+#define PCI_MEMORY_RANGE_MASK (~0x0fUL)
+#define PCI_PREF_MEMORY_BASE 0x24
+#define PCI_PREF_MEMORY_LIMIT 0x26
+#define PCI_PREF_RANGE_TYPE_MASK 0x0fUL
+#define PCI_PREF_RANGE_TYPE_32 0x00
+#define PCI_PREF_RANGE_TYPE_64 0x01
+#define PCI_PREF_RANGE_MASK (~0x0fUL)
+#define PCI_PREF_BASE_UPPER32 0x28
+#define PCI_PREF_LIMIT_UPPER32 0x2c
+#define PCI_IO_BASE_UPPER16 0x30
+#define PCI_IO_LIMIT_UPPER16 0x32
+#define PCI_ROM_ADDRESS1 0x38
+#define PCI_BRIDGE_CONTROL 0x3e
+#define PCI_BRIDGE_CTL_PARITY 0x01
+#define PCI_BRIDGE_CTL_SERR 0x02
+#define PCI_BRIDGE_CTL_ISA 0x04
+#define PCI_BRIDGE_CTL_VGA 0x08
+#define PCI_BRIDGE_CTL_MASTER_ABORT 0x20
+#define PCI_BRIDGE_CTL_BUS_RESET 0x40
+#define PCI_BRIDGE_CTL_FAST_BACK 0x80
+#define PCI_CB_CAPABILITY_LIST 0x14
+#define PCI_CB_SEC_STATUS 0x16
+#define PCI_CB_PRIMARY_BUS 0x18
+#define PCI_CB_CARD_BUS 0x19
+#define PCI_CB_SUBORDINATE_BUS 0x1a
+#define PCI_CB_LATENCY_TIMER 0x1b
+#define PCI_CB_MEMORY_BASE_0 0x1c
+#define PCI_CB_MEMORY_LIMIT_0 0x20
+#define PCI_CB_MEMORY_BASE_1 0x24
+#define PCI_CB_MEMORY_LIMIT_1 0x28
+#define PCI_CB_IO_BASE_0 0x2c
+#define PCI_CB_IO_BASE_0_HI 0x2e
+#define PCI_CB_IO_LIMIT_0 0x30
+#define PCI_CB_IO_LIMIT_0_HI 0x32
+#define PCI_CB_IO_BASE_1 0x34
+#define PCI_CB_IO_BASE_1_HI 0x36
+#define PCI_CB_IO_LIMIT_1 0x38
+#define PCI_CB_IO_LIMIT_1_HI 0x3a
+#define PCI_CB_IO_RANGE_MASK (~0x03UL)
+#define PCI_CB_BRIDGE_CONTROL 0x3e
+#define PCI_CB_BRIDGE_CTL_PARITY 0x01
+#define PCI_CB_BRIDGE_CTL_SERR 0x02
+#define PCI_CB_BRIDGE_CTL_ISA 0x04
+#define PCI_CB_BRIDGE_CTL_VGA 0x08
+#define PCI_CB_BRIDGE_CTL_MASTER_ABORT 0x20
+#define PCI_CB_BRIDGE_CTL_CB_RESET 0x40
+#define PCI_CB_BRIDGE_CTL_16BIT_INT 0x80
+#define PCI_CB_BRIDGE_CTL_PREFETCH_MEM0 0x100
+#define PCI_CB_BRIDGE_CTL_PREFETCH_MEM1 0x200
+#define PCI_CB_BRIDGE_CTL_POST_WRITES 0x400
+#define PCI_CB_SUBSYSTEM_VENDOR_ID 0x40
+#define PCI_CB_SUBSYSTEM_ID 0x42
+#define PCI_CB_LEGACY_MODE_BASE 0x44
+#define PCI_CAP_LIST_ID 0
+#define PCI_CAP_ID_PM 0x01
+#define PCI_CAP_ID_AGP 0x02
+#define PCI_CAP_ID_VPD 0x03
+#define PCI_CAP_ID_SLOTID 0x04
+#define PCI_CAP_ID_MSI 0x05
+#define PCI_CAP_ID_CHSWP 0x06
+#define PCI_CAP_ID_PCIX 0x07
+#define PCI_CAP_ID_HT 0x08
+#define PCI_CAP_ID_VNDR 0x09
+#define PCI_CAP_ID_DBG 0x0A
+#define PCI_CAP_ID_CCRC 0x0B
+#define PCI_CAP_ID_SHPC 0x0C
+#define PCI_CAP_ID_SSVID 0x0D
+#define PCI_CAP_ID_AGP3 0x0E
+#define PCI_CAP_ID_SECDEV 0x0F
+#define PCI_CAP_ID_EXP 0x10
+#define PCI_CAP_ID_MSIX 0x11
+#define PCI_CAP_ID_SATA 0x12
+#define PCI_CAP_ID_AF 0x13
+#define PCI_CAP_ID_EA 0x14
+#define PCI_CAP_ID_MAX PCI_CAP_ID_EA
+#define PCI_CAP_LIST_NEXT 1
+#define PCI_CAP_FLAGS 2
+#define PCI_CAP_SIZEOF 4
+#define PCI_PM_PMC 2
+#define PCI_PM_CAP_VER_MASK 0x0007
+#define PCI_PM_CAP_PME_CLOCK 0x0008
+#define PCI_PM_CAP_RESERVED 0x0010
+#define PCI_PM_CAP_DSI 0x0020
+#define PCI_PM_CAP_AUX_POWER 0x01C0
+#define PCI_PM_CAP_D1 0x0200
+#define PCI_PM_CAP_D2 0x0400
+#define PCI_PM_CAP_PME 0x0800
+#define PCI_PM_CAP_PME_MASK 0xF800
+#define PCI_PM_CAP_PME_D0 0x0800
+#define PCI_PM_CAP_PME_D1 0x1000
+#define PCI_PM_CAP_PME_D2 0x2000
+#define PCI_PM_CAP_PME_D3hot 0x4000
+#define PCI_PM_CAP_PME_D3cold 0x8000
+#define PCI_PM_CAP_PME_SHIFT 11
+#define PCI_PM_CTRL 4
+#define PCI_PM_CTRL_STATE_MASK 0x0003
+#define PCI_PM_CTRL_NO_SOFT_RESET 0x0008
+#define PCI_PM_CTRL_PME_ENABLE 0x0100
+#define PCI_PM_CTRL_DATA_SEL_MASK 0x1e00
+#define PCI_PM_CTRL_DATA_SCALE_MASK 0x6000
+#define PCI_PM_CTRL_PME_STATUS 0x8000
+#define PCI_PM_PPB_EXTENSIONS 6
+#define PCI_PM_PPB_B2_B3 0x40
+#define PCI_PM_BPCC_ENABLE 0x80
+#define PCI_PM_DATA_REGISTER 7
+#define PCI_PM_SIZEOF 8
+#define PCI_AGP_VERSION 2
+#define PCI_AGP_RFU 3
+#define PCI_AGP_STATUS 4
+#define PCI_AGP_STATUS_RQ_MASK 0xff000000
+#define PCI_AGP_STATUS_SBA 0x0200
+#define PCI_AGP_STATUS_64BIT 0x0020
+#define PCI_AGP_STATUS_FW 0x0010
+#define PCI_AGP_STATUS_RATE4 0x0004
+#define PCI_AGP_STATUS_RATE2 0x0002
+#define PCI_AGP_STATUS_RATE1 0x0001
+#define PCI_AGP_COMMAND 8
+#define PCI_AGP_COMMAND_RQ_MASK 0xff000000
+#define PCI_AGP_COMMAND_SBA 0x0200
+#define PCI_AGP_COMMAND_AGP 0x0100
+#define PCI_AGP_COMMAND_64BIT 0x0020
+#define PCI_AGP_COMMAND_FW 0x0010
+#define PCI_AGP_COMMAND_RATE4 0x0004
+#define PCI_AGP_COMMAND_RATE2 0x0002
+#define PCI_AGP_COMMAND_RATE1 0x0001
+#define PCI_AGP_SIZEOF 12
+#define PCI_VPD_ADDR 2
+#define PCI_VPD_ADDR_MASK 0x7fff
+#define PCI_VPD_ADDR_F 0x8000
+#define PCI_VPD_DATA 4
+#define PCI_CAP_VPD_SIZEOF 8
+#define PCI_SID_ESR 2
+#define PCI_SID_ESR_NSLOTS 0x1f
+#define PCI_SID_ESR_FIC 0x20
+#define PCI_SID_CHASSIS_NR 3
+#define PCI_MSI_FLAGS 2
+#define PCI_MSI_FLAGS_ENABLE 0x0001
+#define PCI_MSI_FLAGS_QMASK 0x000e
+#define PCI_MSI_FLAGS_QSIZE 0x0070
+#define PCI_MSI_FLAGS_64BIT 0x0080
+#define PCI_MSI_FLAGS_MASKBIT 0x0100
+#define PCI_MSI_RFU 3
+#define PCI_MSI_ADDRESS_LO 4
+#define PCI_MSI_ADDRESS_HI 8
+#define PCI_MSI_DATA_32 8
+#define PCI_MSI_MASK_32 12
+#define PCI_MSI_PENDING_32 16
+#define PCI_MSI_DATA_64 12
+#define PCI_MSI_MASK_64 16
+#define PCI_MSI_PENDING_64 20
+#define PCI_MSIX_FLAGS 2
+#define PCI_MSIX_FLAGS_QSIZE 0x07FF
+#define PCI_MSIX_FLAGS_MASKALL 0x4000
+#define PCI_MSIX_FLAGS_ENABLE 0x8000
+#define PCI_MSIX_TABLE 4
+#define PCI_MSIX_TABLE_BIR 0x00000007
+#define PCI_MSIX_TABLE_OFFSET 0xfffffff8
+#define PCI_MSIX_PBA 8
+#define PCI_MSIX_PBA_BIR 0x00000007
+#define PCI_MSIX_PBA_OFFSET 0xfffffff8
+#define PCI_MSIX_FLAGS_BIRMASK PCI_MSIX_PBA_BIR
+#define PCI_CAP_MSIX_SIZEOF 12
+#define PCI_MSIX_ENTRY_SIZE 16
+#define PCI_MSIX_ENTRY_LOWER_ADDR 0
+#define PCI_MSIX_ENTRY_UPPER_ADDR 4
+#define PCI_MSIX_ENTRY_DATA 8
+#define PCI_MSIX_ENTRY_VECTOR_CTRL 12
+#define PCI_MSIX_ENTRY_CTRL_MASKBIT 0x00000001
+#define PCI_CHSWP_CSR 2
+#define PCI_CHSWP_DHA 0x01
+#define PCI_CHSWP_EIM 0x02
+#define PCI_CHSWP_PIE 0x04
+#define PCI_CHSWP_LOO 0x08
+#define PCI_CHSWP_PI 0x30
+#define PCI_CHSWP_EXT 0x40
+#define PCI_CHSWP_INS 0x80
+#define PCI_AF_LENGTH 2
+#define PCI_AF_CAP 3
+#define PCI_AF_CAP_TP 0x01
+#define PCI_AF_CAP_FLR 0x02
+#define PCI_AF_CTRL 4
+#define PCI_AF_CTRL_FLR 0x01
+#define PCI_AF_STATUS 5
+#define PCI_AF_STATUS_TP 0x01
+#define PCI_CAP_AF_SIZEOF 6
+#define PCI_EA_NUM_ENT 2
+#define PCI_EA_NUM_ENT_MASK 0x3f
+#define PCI_EA_FIRST_ENT 4
+#define PCI_EA_FIRST_ENT_BRIDGE 8
+#define PCI_EA_ES 0x00000007
+#define PCI_EA_BEI 0x000000f0
+#define PCI_EA_SEC_BUS_MASK 0xff
+#define PCI_EA_SUB_BUS_MASK 0xff00
+#define PCI_EA_SUB_BUS_SHIFT 8
+#define PCI_EA_BEI_BAR0 0
+#define PCI_EA_BEI_BAR5 5
+#define PCI_EA_BEI_BRIDGE 6
+#define PCI_EA_BEI_ENI 7
+#define PCI_EA_BEI_ROM 8
+#define PCI_EA_BEI_VF_BAR0 9
+#define PCI_EA_BEI_VF_BAR5 14
+#define PCI_EA_BEI_RESERVED 15
+#define PCI_EA_PP 0x0000ff00
+#define PCI_EA_SP 0x00ff0000
+#define PCI_EA_P_MEM 0x00
+#define PCI_EA_P_MEM_PREFETCH 0x01
+#define PCI_EA_P_IO 0x02
+#define PCI_EA_P_VF_MEM_PREFETCH 0x03
+#define PCI_EA_P_VF_MEM 0x04
+#define PCI_EA_P_BRIDGE_MEM 0x05
+#define PCI_EA_P_BRIDGE_MEM_PREFETCH 0x06
+#define PCI_EA_P_BRIDGE_IO 0x07
+#define PCI_EA_P_MEM_RESERVED 0xfd
+#define PCI_EA_P_IO_RESERVED 0xfe
+#define PCI_EA_P_UNAVAILABLE 0xff
+#define PCI_EA_WRITABLE 0x40000000
+#define PCI_EA_ENABLE 0x80000000
+#define PCI_EA_BASE 4
+#define PCI_EA_MAX_OFFSET 8
+#define PCI_EA_IS_64 0x00000002
+#define PCI_EA_FIELD_MASK 0xfffffffc
+#define PCI_X_CMD 2
+#define PCI_X_CMD_DPERR_E 0x0001
+#define PCI_X_CMD_ERO 0x0002
+#define PCI_X_CMD_READ_512 0x0000
+#define PCI_X_CMD_READ_1K 0x0004
+#define PCI_X_CMD_READ_2K 0x0008
+#define PCI_X_CMD_READ_4K 0x000c
+#define PCI_X_CMD_MAX_READ 0x000c
+#define PCI_X_CMD_SPLIT_1 0x0000
+#define PCI_X_CMD_SPLIT_2 0x0010
+#define PCI_X_CMD_SPLIT_3 0x0020
+#define PCI_X_CMD_SPLIT_4 0x0030
+#define PCI_X_CMD_SPLIT_8 0x0040
+#define PCI_X_CMD_SPLIT_12 0x0050
+#define PCI_X_CMD_SPLIT_16 0x0060
+#define PCI_X_CMD_SPLIT_32 0x0070
+#define PCI_X_CMD_MAX_SPLIT 0x0070
+#define PCI_X_CMD_VERSION(x) (((x) >> 12) & 3)
+#define PCI_X_STATUS 4
+#define PCI_X_STATUS_DEVFN 0x000000ff
+#define PCI_X_STATUS_BUS 0x0000ff00
+#define PCI_X_STATUS_64BIT 0x00010000
+#define PCI_X_STATUS_133MHZ 0x00020000
+#define PCI_X_STATUS_SPL_DISC 0x00040000
+#define PCI_X_STATUS_UNX_SPL 0x00080000
+#define PCI_X_STATUS_COMPLEX 0x00100000
+#define PCI_X_STATUS_MAX_READ 0x00600000
+#define PCI_X_STATUS_MAX_SPLIT 0x03800000
+#define PCI_X_STATUS_MAX_CUM 0x1c000000
+#define PCI_X_STATUS_SPL_ERR 0x20000000
+#define PCI_X_STATUS_266MHZ 0x40000000
+#define PCI_X_STATUS_533MHZ 0x80000000
+#define PCI_X_ECC_CSR 8
+#define PCI_CAP_PCIX_SIZEOF_V0 8
+#define PCI_CAP_PCIX_SIZEOF_V1 24
+#define PCI_CAP_PCIX_SIZEOF_V2 PCI_CAP_PCIX_SIZEOF_V1
+#define PCI_X_BRIDGE_SSTATUS 2
+#define PCI_X_SSTATUS_64BIT 0x0001
+#define PCI_X_SSTATUS_133MHZ 0x0002
+#define PCI_X_SSTATUS_FREQ 0x03c0
+#define PCI_X_SSTATUS_VERS 0x3000
+#define PCI_X_SSTATUS_V1 0x1000
+#define PCI_X_SSTATUS_V2 0x2000
+#define PCI_X_SSTATUS_266MHZ 0x4000
+#define PCI_X_SSTATUS_533MHZ 0x8000
+#define PCI_X_BRIDGE_STATUS 4
+#define PCI_SSVID_VENDOR_ID 4
+#define PCI_SSVID_DEVICE_ID 6
+#define PCI_EXP_FLAGS 2
+#define PCI_EXP_FLAGS_VERS 0x000f
+#define PCI_EXP_FLAGS_TYPE 0x00f0
+#define PCI_EXP_TYPE_ENDPOINT 0x0
+#define PCI_EXP_TYPE_LEG_END 0x1
+#define PCI_EXP_TYPE_ROOT_PORT 0x4
+#define PCI_EXP_TYPE_UPSTREAM 0x5
+#define PCI_EXP_TYPE_DOWNSTREAM 0x6
+#define PCI_EXP_TYPE_PCI_BRIDGE 0x7
+#define PCI_EXP_TYPE_PCIE_BRIDGE 0x8
+#define PCI_EXP_TYPE_RC_END 0x9
+#define PCI_EXP_TYPE_RC_EC 0xa
+#define PCI_EXP_FLAGS_SLOT 0x0100
+#define PCI_EXP_FLAGS_IRQ 0x3e00
+#define PCI_EXP_DEVCAP 4
+#define PCI_EXP_DEVCAP_PAYLOAD 0x00000007
+#define PCI_EXP_DEVCAP_PHANTOM 0x00000018
+#define PCI_EXP_DEVCAP_EXT_TAG 0x00000020
+#define PCI_EXP_DEVCAP_L0S 0x000001c0
+#define PCI_EXP_DEVCAP_L1 0x00000e00
+#define PCI_EXP_DEVCAP_ATN_BUT 0x00001000
+#define PCI_EXP_DEVCAP_ATN_IND 0x00002000
+#define PCI_EXP_DEVCAP_PWR_IND 0x00004000
+#define PCI_EXP_DEVCAP_RBER 0x00008000
+#define PCI_EXP_DEVCAP_PWR_VAL 0x03fc0000
+#define PCI_EXP_DEVCAP_PWR_SCL 0x0c000000
+#define PCI_EXP_DEVCAP_FLR 0x10000000
+#define PCI_EXP_DEVCTL 8
+#define PCI_EXP_DEVCTL_CERE 0x0001
+#define PCI_EXP_DEVCTL_NFERE 0x0002
+#define PCI_EXP_DEVCTL_FERE 0x0004
+#define PCI_EXP_DEVCTL_URRE 0x0008
+#define PCI_EXP_DEVCTL_RELAX_EN 0x0010
+#define PCI_EXP_DEVCTL_PAYLOAD 0x00e0
+#define PCI_EXP_DEVCTL_PAYLOAD_128B 0x0000
+#define PCI_EXP_DEVCTL_PAYLOAD_256B 0x0020
+#define PCI_EXP_DEVCTL_PAYLOAD_512B 0x0040
+#define PCI_EXP_DEVCTL_PAYLOAD_1024B 0x0060
+#define PCI_EXP_DEVCTL_PAYLOAD_2048B 0x0080
+#define PCI_EXP_DEVCTL_PAYLOAD_4096B 0x00a0
+#define PCI_EXP_DEVCTL_EXT_TAG 0x0100
+#define PCI_EXP_DEVCTL_PHANTOM 0x0200
+#define PCI_EXP_DEVCTL_AUX_PME 0x0400
+#define PCI_EXP_DEVCTL_NOSNOOP_EN 0x0800
+#define PCI_EXP_DEVCTL_READRQ 0x7000
+#define PCI_EXP_DEVCTL_READRQ_128B 0x0000
+#define PCI_EXP_DEVCTL_READRQ_256B 0x1000
+#define PCI_EXP_DEVCTL_READRQ_512B 0x2000
+#define PCI_EXP_DEVCTL_READRQ_1024B 0x3000
+#define PCI_EXP_DEVCTL_READRQ_2048B 0x4000
+#define PCI_EXP_DEVCTL_READRQ_4096B 0x5000
+#define PCI_EXP_DEVCTL_BCR_FLR 0x8000
+#define PCI_EXP_DEVSTA 10
+#define PCI_EXP_DEVSTA_CED 0x0001
+#define PCI_EXP_DEVSTA_NFED 0x0002
+#define PCI_EXP_DEVSTA_FED 0x0004
+#define PCI_EXP_DEVSTA_URD 0x0008
+#define PCI_EXP_DEVSTA_AUXPD 0x0010
+#define PCI_EXP_DEVSTA_TRPND 0x0020
+#define PCI_CAP_EXP_RC_ENDPOINT_SIZEOF_V1 12
+#define PCI_EXP_LNKCAP 12
+#define PCI_EXP_LNKCAP_SLS 0x0000000f
+#define PCI_EXP_LNKCAP_SLS_2_5GB 0x00000001
+#define PCI_EXP_LNKCAP_SLS_5_0GB 0x00000002
+#define PCI_EXP_LNKCAP_SLS_8_0GB 0x00000003
+#define PCI_EXP_LNKCAP_SLS_16_0GB 0x00000004
+#define PCI_EXP_LNKCAP_SLS_32_0GB 0x00000005
+#define PCI_EXP_LNKCAP_SLS_64_0GB 0x00000006
+#define PCI_EXP_LNKCAP_MLW 0x000003f0
+#define PCI_EXP_LNKCAP_ASPMS 0x00000c00
+#define PCI_EXP_LNKCAP_ASPM_L0S 0x00000400
+#define PCI_EXP_LNKCAP_ASPM_L1 0x00000800
+#define PCI_EXP_LNKCAP_L0SEL 0x00007000
+#define PCI_EXP_LNKCAP_L1EL 0x00038000
+#define PCI_EXP_LNKCAP_CLKPM 0x00040000
+#define PCI_EXP_LNKCAP_SDERC 0x00080000
+#define PCI_EXP_LNKCAP_DLLLARC 0x00100000
+#define PCI_EXP_LNKCAP_LBNC 0x00200000
+#define PCI_EXP_LNKCAP_PN 0xff000000
+#define PCI_EXP_LNKCTL 16
+#define PCI_EXP_LNKCTL_ASPMC 0x0003
+#define PCI_EXP_LNKCTL_ASPM_L0S 0x0001
+#define PCI_EXP_LNKCTL_ASPM_L1 0x0002
+#define PCI_EXP_LNKCTL_RCB 0x0008
+#define PCI_EXP_LNKCTL_LD 0x0010
+#define PCI_EXP_LNKCTL_RL 0x0020
+#define PCI_EXP_LNKCTL_CCC 0x0040
+#define PCI_EXP_LNKCTL_ES 0x0080
+#define PCI_EXP_LNKCTL_CLKREQ_EN 0x0100
+#define PCI_EXP_LNKCTL_HAWD 0x0200
+#define PCI_EXP_LNKCTL_LBMIE 0x0400
+#define PCI_EXP_LNKCTL_LABIE 0x0800
+#define PCI_EXP_LNKSTA 18
+#define PCI_EXP_LNKSTA_CLS 0x000f
+#define PCI_EXP_LNKSTA_CLS_2_5GB 0x0001
+#define PCI_EXP_LNKSTA_CLS_5_0GB 0x0002
+#define PCI_EXP_LNKSTA_CLS_8_0GB 0x0003
+#define PCI_EXP_LNKSTA_CLS_16_0GB 0x0004
+#define PCI_EXP_LNKSTA_CLS_32_0GB 0x0005
+#define PCI_EXP_LNKSTA_CLS_64_0GB 0x0006
+#define PCI_EXP_LNKSTA_NLW 0x03f0
+#define PCI_EXP_LNKSTA_NLW_X1 0x0010
+#define PCI_EXP_LNKSTA_NLW_X2 0x0020
+#define PCI_EXP_LNKSTA_NLW_X4 0x0040
+#define PCI_EXP_LNKSTA_NLW_X8 0x0080
+#define PCI_EXP_LNKSTA_NLW_SHIFT 4
+#define PCI_EXP_LNKSTA_LT 0x0800
+#define PCI_EXP_LNKSTA_SLC 0x1000
+#define PCI_EXP_LNKSTA_DLLLA 0x2000
+#define PCI_EXP_LNKSTA_LBMS 0x4000
+#define PCI_EXP_LNKSTA_LABS 0x8000
+#define PCI_CAP_EXP_ENDPOINT_SIZEOF_V1 20
+#define PCI_EXP_SLTCAP 20
+#define PCI_EXP_SLTCAP_ABP 0x00000001
+#define PCI_EXP_SLTCAP_PCP 0x00000002
+#define PCI_EXP_SLTCAP_MRLSP 0x00000004
+#define PCI_EXP_SLTCAP_AIP 0x00000008
+#define PCI_EXP_SLTCAP_PIP 0x00000010
+#define PCI_EXP_SLTCAP_HPS 0x00000020
+#define PCI_EXP_SLTCAP_HPC 0x00000040
+#define PCI_EXP_SLTCAP_SPLV 0x00007f80
+#define PCI_EXP_SLTCAP_SPLS 0x00018000
+#define PCI_EXP_SLTCAP_EIP 0x00020000
+#define PCI_EXP_SLTCAP_NCCS 0x00040000
+#define PCI_EXP_SLTCAP_PSN 0xfff80000
+#define PCI_EXP_SLTCTL 24
+#define PCI_EXP_SLTCTL_ABPE 0x0001
+#define PCI_EXP_SLTCTL_PFDE 0x0002
+#define PCI_EXP_SLTCTL_MRLSCE 0x0004
+#define PCI_EXP_SLTCTL_PDCE 0x0008
+#define PCI_EXP_SLTCTL_CCIE 0x0010
+#define PCI_EXP_SLTCTL_HPIE 0x0020
+#define PCI_EXP_SLTCTL_AIC 0x00c0
+#define PCI_EXP_SLTCTL_ATTN_IND_SHIFT 6
+#define PCI_EXP_SLTCTL_ATTN_IND_ON 0x0040
+#define PCI_EXP_SLTCTL_ATTN_IND_BLINK 0x0080
+#define PCI_EXP_SLTCTL_ATTN_IND_OFF 0x00c0
+#define PCI_EXP_SLTCTL_PIC 0x0300
+#define PCI_EXP_SLTCTL_PWR_IND_ON 0x0100
+#define PCI_EXP_SLTCTL_PWR_IND_BLINK 0x0200
+#define PCI_EXP_SLTCTL_PWR_IND_OFF 0x0300
+#define PCI_EXP_SLTCTL_PCC 0x0400
+#define PCI_EXP_SLTCTL_PWR_ON 0x0000
+#define PCI_EXP_SLTCTL_PWR_OFF 0x0400
+#define PCI_EXP_SLTCTL_EIC 0x0800
+#define PCI_EXP_SLTCTL_DLLSCE 0x1000
+#define PCI_EXP_SLTCTL_IBPD_DISABLE 0x4000
+#define PCI_EXP_SLTSTA 26
+#define PCI_EXP_SLTSTA_ABP 0x0001
+#define PCI_EXP_SLTSTA_PFD 0x0002
+#define PCI_EXP_SLTSTA_MRLSC 0x0004
+#define PCI_EXP_SLTSTA_PDC 0x0008
+#define PCI_EXP_SLTSTA_CC 0x0010
+#define PCI_EXP_SLTSTA_MRLSS 0x0020
+#define PCI_EXP_SLTSTA_PDS 0x0040
+#define PCI_EXP_SLTSTA_EIS 0x0080
+#define PCI_EXP_SLTSTA_DLLSC 0x0100
+#define PCI_EXP_RTCTL 28
+#define PCI_EXP_RTCTL_SECEE 0x0001
+#define PCI_EXP_RTCTL_SENFEE 0x0002
+#define PCI_EXP_RTCTL_SEFEE 0x0004
+#define PCI_EXP_RTCTL_PMEIE 0x0008
+#define PCI_EXP_RTCTL_CRSSVE 0x0010
+#define PCI_EXP_RTCAP 30
+#define PCI_EXP_RTCAP_CRSVIS 0x0001
+#define PCI_EXP_RTSTA 32
+#define PCI_EXP_RTSTA_PME 0x00010000
+#define PCI_EXP_RTSTA_PENDING 0x00020000
+#define PCI_EXP_DEVCAP2 36
+#define PCI_EXP_DEVCAP2_COMP_TMOUT_DIS 0x00000010
+#define PCI_EXP_DEVCAP2_ARI 0x00000020
+#define PCI_EXP_DEVCAP2_ATOMIC_ROUTE 0x00000040
+#define PCI_EXP_DEVCAP2_ATOMIC_COMP32 0x00000080
+#define PCI_EXP_DEVCAP2_ATOMIC_COMP64 0x00000100
+#define PCI_EXP_DEVCAP2_ATOMIC_COMP128 0x00000200
+#define PCI_EXP_DEVCAP2_LTR 0x00000800
+#define PCI_EXP_DEVCAP2_OBFF_MASK 0x000c0000
+#define PCI_EXP_DEVCAP2_OBFF_MSG 0x00040000
+#define PCI_EXP_DEVCAP2_OBFF_WAKE 0x00080000
+#define PCI_EXP_DEVCAP2_EE_PREFIX 0x00200000
+#define PCI_EXP_DEVCTL2 40
+#define PCI_EXP_DEVCTL2_COMP_TIMEOUT 0x000f
+#define PCI_EXP_DEVCTL2_COMP_TMOUT_DIS 0x0010
+#define PCI_EXP_DEVCTL2_ARI 0x0020
+#define PCI_EXP_DEVCTL2_ATOMIC_REQ 0x0040
+#define PCI_EXP_DEVCTL2_ATOMIC_EGRESS_BLOCK 0x0080
+#define PCI_EXP_DEVCTL2_IDO_REQ_EN 0x0100
+#define PCI_EXP_DEVCTL2_IDO_CMP_EN 0x0200
+#define PCI_EXP_DEVCTL2_LTR_EN 0x0400
+#define PCI_EXP_DEVCTL2_OBFF_MSGA_EN 0x2000
+#define PCI_EXP_DEVCTL2_OBFF_MSGB_EN 0x4000
+#define PCI_EXP_DEVCTL2_OBFF_WAKE_EN 0x6000
+#define PCI_EXP_DEVSTA2 42
+#define PCI_CAP_EXP_RC_ENDPOINT_SIZEOF_V2 44
+#define PCI_EXP_LNKCAP2 44
+#define PCI_EXP_LNKCAP2_SLS_2_5GB 0x00000002
+#define PCI_EXP_LNKCAP2_SLS_5_0GB 0x00000004
+#define PCI_EXP_LNKCAP2_SLS_8_0GB 0x00000008
+#define PCI_EXP_LNKCAP2_SLS_16_0GB 0x00000010
+#define PCI_EXP_LNKCAP2_SLS_32_0GB 0x00000020
+#define PCI_EXP_LNKCAP2_SLS_64_0GB 0x00000040
+#define PCI_EXP_LNKCAP2_CROSSLINK 0x00000100
+#define PCI_EXP_LNKCTL2 48
+#define PCI_EXP_LNKCTL2_TLS 0x000f
+#define PCI_EXP_LNKCTL2_TLS_2_5GT 0x0001
+#define PCI_EXP_LNKCTL2_TLS_5_0GT 0x0002
+#define PCI_EXP_LNKCTL2_TLS_8_0GT 0x0003
+#define PCI_EXP_LNKCTL2_TLS_16_0GT 0x0004
+#define PCI_EXP_LNKCTL2_TLS_32_0GT 0x0005
+#define PCI_EXP_LNKCTL2_TLS_64_0GT 0x0006
+#define PCI_EXP_LNKCTL2_ENTER_COMP 0x0010
+#define PCI_EXP_LNKCTL2_TX_MARGIN 0x0380
+#define PCI_EXP_LNKCTL2_HASD 0x0020
+#define PCI_EXP_LNKSTA2 50
+#define PCI_CAP_EXP_ENDPOINT_SIZEOF_V2 52
+#define PCI_EXP_SLTCAP2 52
+#define PCI_EXP_SLTCAP2_IBPD 0x00000001
+#define PCI_EXP_SLTCTL2 56
+#define PCI_EXP_SLTSTA2 58
+#define PCI_EXT_CAP_ID(header) (header & 0x0000ffff)
+#define PCI_EXT_CAP_VER(header) ((header >> 16) & 0xf)
+#define PCI_EXT_CAP_NEXT(header) ((header >> 20) & 0xffc)
+#define PCI_EXT_CAP_ID_ERR 0x01
+#define PCI_EXT_CAP_ID_VC 0x02
+#define PCI_EXT_CAP_ID_DSN 0x03
+#define PCI_EXT_CAP_ID_PWR 0x04
+#define PCI_EXT_CAP_ID_RCLD 0x05
+#define PCI_EXT_CAP_ID_RCILC 0x06
+#define PCI_EXT_CAP_ID_RCEC 0x07
+#define PCI_EXT_CAP_ID_MFVC 0x08
+#define PCI_EXT_CAP_ID_VC9 0x09
+#define PCI_EXT_CAP_ID_RCRB 0x0A
+#define PCI_EXT_CAP_ID_VNDR 0x0B
+#define PCI_EXT_CAP_ID_CAC 0x0C
+#define PCI_EXT_CAP_ID_ACS 0x0D
+#define PCI_EXT_CAP_ID_ARI 0x0E
+#define PCI_EXT_CAP_ID_ATS 0x0F
+#define PCI_EXT_CAP_ID_SRIOV 0x10
+#define PCI_EXT_CAP_ID_MRIOV 0x11
+#define PCI_EXT_CAP_ID_MCAST 0x12
+#define PCI_EXT_CAP_ID_PRI 0x13
+#define PCI_EXT_CAP_ID_AMD_XXX 0x14
+#define PCI_EXT_CAP_ID_REBAR 0x15
+#define PCI_EXT_CAP_ID_DPA 0x16
+#define PCI_EXT_CAP_ID_TPH 0x17
+#define PCI_EXT_CAP_ID_LTR 0x18
+#define PCI_EXT_CAP_ID_SECPCI 0x19
+#define PCI_EXT_CAP_ID_PMUX 0x1A
+#define PCI_EXT_CAP_ID_PASID 0x1B
+#define PCI_EXT_CAP_ID_DPC 0x1D
+#define PCI_EXT_CAP_ID_L1SS 0x1E
+#define PCI_EXT_CAP_ID_PTM 0x1F
+#define PCI_EXT_CAP_ID_DVSEC 0x23
+#define PCI_EXT_CAP_ID_DLF 0x25
+#define PCI_EXT_CAP_ID_PL_16GT 0x26
+#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PL_16GT
+#define PCI_EXT_CAP_DSN_SIZEOF 12
+#define PCI_EXT_CAP_MCAST_ENDPOINT_SIZEOF 40
+#define PCI_ERR_UNCOR_STATUS 4
+#define PCI_ERR_UNC_UND 0x00000001
+#define PCI_ERR_UNC_DLP 0x00000010
+#define PCI_ERR_UNC_SURPDN 0x00000020
+#define PCI_ERR_UNC_POISON_TLP 0x00001000
+#define PCI_ERR_UNC_FCP 0x00002000
+#define PCI_ERR_UNC_COMP_TIME 0x00004000
+#define PCI_ERR_UNC_COMP_ABORT 0x00008000
+#define PCI_ERR_UNC_UNX_COMP 0x00010000
+#define PCI_ERR_UNC_RX_OVER 0x00020000
+#define PCI_ERR_UNC_MALF_TLP 0x00040000
+#define PCI_ERR_UNC_ECRC 0x00080000
+#define PCI_ERR_UNC_UNSUP 0x00100000
+#define PCI_ERR_UNC_ACSV 0x00200000
+#define PCI_ERR_UNC_INTN 0x00400000
+#define PCI_ERR_UNC_MCBTLP 0x00800000
+#define PCI_ERR_UNC_ATOMEG 0x01000000
+#define PCI_ERR_UNC_TLPPRE 0x02000000
+#define PCI_ERR_UNCOR_MASK 8
+#define PCI_ERR_UNCOR_SEVER 12
+#define PCI_ERR_COR_STATUS 16
+#define PCI_ERR_COR_RCVR 0x00000001
+#define PCI_ERR_COR_BAD_TLP 0x00000040
+#define PCI_ERR_COR_BAD_DLLP 0x00000080
+#define PCI_ERR_COR_REP_ROLL 0x00000100
+#define PCI_ERR_COR_REP_TIMER 0x00001000
+#define PCI_ERR_COR_ADV_NFAT 0x00002000
+#define PCI_ERR_COR_INTERNAL 0x00004000
+#define PCI_ERR_COR_LOG_OVER 0x00008000
+#define PCI_ERR_COR_MASK 20
+#define PCI_ERR_CAP 24
+#define PCI_ERR_CAP_FEP(x) ((x) & 31)
+#define PCI_ERR_CAP_ECRC_GENC 0x00000020
+#define PCI_ERR_CAP_ECRC_GENE 0x00000040
+#define PCI_ERR_CAP_ECRC_CHKC 0x00000080
+#define PCI_ERR_CAP_ECRC_CHKE 0x00000100
+#define PCI_ERR_HEADER_LOG 28
+#define PCI_ERR_ROOT_COMMAND 44
+#define PCI_ERR_ROOT_CMD_COR_EN 0x00000001
+#define PCI_ERR_ROOT_CMD_NONFATAL_EN 0x00000002
+#define PCI_ERR_ROOT_CMD_FATAL_EN 0x00000004
+#define PCI_ERR_ROOT_STATUS 48
+#define PCI_ERR_ROOT_COR_RCV 0x00000001
+#define PCI_ERR_ROOT_MULTI_COR_RCV 0x00000002
+#define PCI_ERR_ROOT_UNCOR_RCV 0x00000004
+#define PCI_ERR_ROOT_MULTI_UNCOR_RCV 0x00000008
+#define PCI_ERR_ROOT_FIRST_FATAL 0x00000010
+#define PCI_ERR_ROOT_NONFATAL_RCV 0x00000020
+#define PCI_ERR_ROOT_FATAL_RCV 0x00000040
+#define PCI_ERR_ROOT_AER_IRQ 0xf8000000
+#define PCI_ERR_ROOT_ERR_SRC 52
+#define PCI_VC_PORT_CAP1 4
+#define PCI_VC_CAP1_EVCC 0x00000007
+#define PCI_VC_CAP1_LPEVCC 0x00000070
+#define PCI_VC_CAP1_ARB_SIZE 0x00000c00
+#define PCI_VC_PORT_CAP2 8
+#define PCI_VC_CAP2_32_PHASE 0x00000002
+#define PCI_VC_CAP2_64_PHASE 0x00000004
+#define PCI_VC_CAP2_128_PHASE 0x00000008
+#define PCI_VC_CAP2_ARB_OFF 0xff000000
+#define PCI_VC_PORT_CTRL 12
+#define PCI_VC_PORT_CTRL_LOAD_TABLE 0x00000001
+#define PCI_VC_PORT_STATUS 14
+#define PCI_VC_PORT_STATUS_TABLE 0x00000001
+#define PCI_VC_RES_CAP 16
+#define PCI_VC_RES_CAP_32_PHASE 0x00000002
+#define PCI_VC_RES_CAP_64_PHASE 0x00000004
+#define PCI_VC_RES_CAP_128_PHASE 0x00000008
+#define PCI_VC_RES_CAP_128_PHASE_TB 0x00000010
+#define PCI_VC_RES_CAP_256_PHASE 0x00000020
+#define PCI_VC_RES_CAP_ARB_OFF 0xff000000
+#define PCI_VC_RES_CTRL 20
+#define PCI_VC_RES_CTRL_LOAD_TABLE 0x00010000
+#define PCI_VC_RES_CTRL_ARB_SELECT 0x000e0000
+#define PCI_VC_RES_CTRL_ID 0x07000000
+#define PCI_VC_RES_CTRL_ENABLE 0x80000000
+#define PCI_VC_RES_STATUS 26
+#define PCI_VC_RES_STATUS_TABLE 0x00000001
+#define PCI_VC_RES_STATUS_NEGO 0x00000002
+#define PCI_CAP_VC_BASE_SIZEOF 0x10
+#define PCI_CAP_VC_PER_VC_SIZEOF 0x0C
+#define PCI_PWR_DSR 4
+#define PCI_PWR_DATA 8
+#define PCI_PWR_DATA_BASE(x) ((x) & 0xff)
+#define PCI_PWR_DATA_SCALE(x) (((x) >> 8) & 3)
+#define PCI_PWR_DATA_PM_SUB(x) (((x) >> 10) & 7)
+#define PCI_PWR_DATA_PM_STATE(x) (((x) >> 13) & 3)
+#define PCI_PWR_DATA_TYPE(x) (((x) >> 15) & 7)
+#define PCI_PWR_DATA_RAIL(x) (((x) >> 18) & 7)
+#define PCI_PWR_CAP 12
+#define PCI_PWR_CAP_BUDGET(x) ((x) & 1)
+#define PCI_EXT_CAP_PWR_SIZEOF 16
+#define PCI_RCEC_RCIEP_BITMAP 4
+#define PCI_RCEC_BUSN 8
+#define PCI_RCEC_BUSN_REG_VER 0x02
+#define PCI_RCEC_BUSN_NEXT(x) (((x) >> 8) & 0xff)
+#define PCI_RCEC_BUSN_LAST(x) (((x) >> 16) & 0xff)
+#define PCI_VNDR_HEADER 4
+#define PCI_VNDR_HEADER_ID(x) ((x) & 0xffff)
+#define PCI_VNDR_HEADER_REV(x) (((x) >> 16) & 0xf)
+#define PCI_VNDR_HEADER_LEN(x) (((x) >> 20) & 0xfff)
+#define HT_3BIT_CAP_MASK 0xE0
+#define HT_CAPTYPE_SLAVE 0x00
+#define HT_CAPTYPE_HOST 0x20
+#define HT_5BIT_CAP_MASK 0xF8
+#define HT_CAPTYPE_IRQ 0x80
+#define HT_CAPTYPE_REMAPPING_40 0xA0
+#define HT_CAPTYPE_REMAPPING_64 0xA2
+#define HT_CAPTYPE_UNITID_CLUMP 0x90
+#define HT_CAPTYPE_EXTCONF 0x98
+#define HT_CAPTYPE_MSI_MAPPING 0xA8
+#define HT_MSI_FLAGS 0x02
+#define HT_MSI_FLAGS_ENABLE 0x1
+#define HT_MSI_FLAGS_FIXED 0x2
+#define HT_MSI_FIXED_ADDR 0x00000000FEE00000ULL
+#define HT_MSI_ADDR_LO 0x04
+#define HT_MSI_ADDR_LO_MASK 0xFFF00000
+#define HT_MSI_ADDR_HI 0x08
+#define HT_CAPTYPE_DIRECT_ROUTE 0xB0
+#define HT_CAPTYPE_VCSET 0xB8
+#define HT_CAPTYPE_ERROR_RETRY 0xC0
+#define HT_CAPTYPE_GEN3 0xD0
+#define HT_CAPTYPE_PM 0xE0
+#define HT_CAP_SIZEOF_LONG 28
+#define HT_CAP_SIZEOF_SHORT 24
+#define PCI_ARI_CAP 0x04
+#define PCI_ARI_CAP_MFVC 0x0001
+#define PCI_ARI_CAP_ACS 0x0002
+#define PCI_ARI_CAP_NFN(x) (((x) >> 8) & 0xff)
+#define PCI_ARI_CTRL 0x06
+#define PCI_ARI_CTRL_MFVC 0x0001
+#define PCI_ARI_CTRL_ACS 0x0002
+#define PCI_ARI_CTRL_FG(x) (((x) >> 4) & 7)
+#define PCI_EXT_CAP_ARI_SIZEOF 8
+#define PCI_ATS_CAP 0x04
+#define PCI_ATS_CAP_QDEP(x) ((x) & 0x1f)
+#define PCI_ATS_MAX_QDEP 32
+#define PCI_ATS_CAP_PAGE_ALIGNED 0x0020
+#define PCI_ATS_CTRL 0x06
+#define PCI_ATS_CTRL_ENABLE 0x8000
+#define PCI_ATS_CTRL_STU(x) ((x) & 0x1f)
+#define PCI_ATS_MIN_STU 12
+#define PCI_EXT_CAP_ATS_SIZEOF 8
+#define PCI_PRI_CTRL 0x04
+#define PCI_PRI_CTRL_ENABLE 0x0001
+#define PCI_PRI_CTRL_RESET 0x0002
+#define PCI_PRI_STATUS 0x06
+#define PCI_PRI_STATUS_RF 0x0001
+#define PCI_PRI_STATUS_UPRGI 0x0002
+#define PCI_PRI_STATUS_STOPPED 0x0100
+#define PCI_PRI_STATUS_PASID 0x8000
+#define PCI_PRI_MAX_REQ 0x08
+#define PCI_PRI_ALLOC_REQ 0x0c
+#define PCI_EXT_CAP_PRI_SIZEOF 16
+#define PCI_PASID_CAP 0x04
+#define PCI_PASID_CAP_EXEC 0x02
+#define PCI_PASID_CAP_PRIV 0x04
+#define PCI_PASID_CTRL 0x06
+#define PCI_PASID_CTRL_ENABLE 0x01
+#define PCI_PASID_CTRL_EXEC 0x02
+#define PCI_PASID_CTRL_PRIV 0x04
+#define PCI_EXT_CAP_PASID_SIZEOF 8
+#define PCI_SRIOV_CAP 0x04
+#define PCI_SRIOV_CAP_VFM 0x00000001
+#define PCI_SRIOV_CAP_INTR(x) ((x) >> 21)
+#define PCI_SRIOV_CTRL 0x08
+#define PCI_SRIOV_CTRL_VFE 0x0001
+#define PCI_SRIOV_CTRL_VFM 0x0002
+#define PCI_SRIOV_CTRL_INTR 0x0004
+#define PCI_SRIOV_CTRL_MSE 0x0008
+#define PCI_SRIOV_CTRL_ARI 0x0010
+#define PCI_SRIOV_STATUS 0x0a
+#define PCI_SRIOV_STATUS_VFM 0x0001
+#define PCI_SRIOV_INITIAL_VF 0x0c
+#define PCI_SRIOV_TOTAL_VF 0x0e
+#define PCI_SRIOV_NUM_VF 0x10
+#define PCI_SRIOV_FUNC_LINK 0x12
+#define PCI_SRIOV_VF_OFFSET 0x14
+#define PCI_SRIOV_VF_STRIDE 0x16
+#define PCI_SRIOV_VF_DID 0x1a
+#define PCI_SRIOV_SUP_PGSIZE 0x1c
+#define PCI_SRIOV_SYS_PGSIZE 0x20
+#define PCI_SRIOV_BAR 0x24
+#define PCI_SRIOV_NUM_BARS 6
+#define PCI_SRIOV_VFM 0x3c
+#define PCI_SRIOV_VFM_BIR(x) ((x) & 7)
+#define PCI_SRIOV_VFM_OFFSET(x) ((x) & ~7)
+#define PCI_SRIOV_VFM_UA 0x0
+#define PCI_SRIOV_VFM_MI 0x1
+#define PCI_SRIOV_VFM_MO 0x2
+#define PCI_SRIOV_VFM_AV 0x3
+#define PCI_EXT_CAP_SRIOV_SIZEOF 64
+#define PCI_LTR_MAX_SNOOP_LAT 0x4
+#define PCI_LTR_MAX_NOSNOOP_LAT 0x6
+#define PCI_LTR_VALUE_MASK 0x000003ff
+#define PCI_LTR_SCALE_MASK 0x00001c00
+#define PCI_LTR_SCALE_SHIFT 10
+#define PCI_EXT_CAP_LTR_SIZEOF 8
+#define PCI_ACS_CAP 0x04
+#define PCI_ACS_SV 0x0001
+#define PCI_ACS_TB 0x0002
+#define PCI_ACS_RR 0x0004
+#define PCI_ACS_CR 0x0008
+#define PCI_ACS_UF 0x0010
+#define PCI_ACS_EC 0x0020
+#define PCI_ACS_DT 0x0040
+#define PCI_ACS_EGRESS_BITS 0x05
+#define PCI_ACS_CTRL 0x06
+#define PCI_ACS_EGRESS_CTL_V 0x08
+#define PCI_VSEC_HDR 4
+#define PCI_VSEC_HDR_LEN_SHIFT 20
+#define PCI_SATA_REGS 4
+#define PCI_SATA_REGS_MASK 0xF
+#define PCI_SATA_REGS_INLINE 0xF
+#define PCI_SATA_SIZEOF_SHORT 8
+#define PCI_SATA_SIZEOF_LONG 16
+#define PCI_REBAR_CAP 4
+#define PCI_REBAR_CAP_SIZES 0x00FFFFF0
+#define PCI_REBAR_CTRL 8
+#define PCI_REBAR_CTRL_BAR_IDX 0x00000007
+#define PCI_REBAR_CTRL_NBAR_MASK 0x000000E0
+#define PCI_REBAR_CTRL_NBAR_SHIFT 5
+#define PCI_REBAR_CTRL_BAR_SIZE 0x00001F00
+#define PCI_REBAR_CTRL_BAR_SHIFT 8
+#define PCI_DPA_CAP 4
+#define PCI_DPA_CAP_SUBSTATE_MASK 0x1F
+#define PCI_DPA_BASE_SIZEOF 16
+#define PCI_TPH_CAP 4
+#define PCI_TPH_CAP_LOC_MASK 0x600
+#define PCI_TPH_LOC_NONE 0x000
+#define PCI_TPH_LOC_CAP 0x200
+#define PCI_TPH_LOC_MSIX 0x400
+#define PCI_TPH_CAP_ST_MASK 0x07FF0000
+#define PCI_TPH_CAP_ST_SHIFT 16
+#define PCI_TPH_BASE_SIZEOF 12
+#define PCI_EXP_DPC_CAP 4
+#define PCI_EXP_DPC_IRQ 0x001F
+#define PCI_EXP_DPC_CAP_RP_EXT 0x0020
+#define PCI_EXP_DPC_CAP_POISONED_TLP 0x0040
+#define PCI_EXP_DPC_CAP_SW_TRIGGER 0x0080
+#define PCI_EXP_DPC_RP_PIO_LOG_SIZE 0x0F00
+#define PCI_EXP_DPC_CAP_DL_ACTIVE 0x1000
+#define PCI_EXP_DPC_CTL 6
+#define PCI_EXP_DPC_CTL_EN_FATAL 0x0001
+#define PCI_EXP_DPC_CTL_EN_NONFATAL 0x0002
+#define PCI_EXP_DPC_CTL_INT_EN 0x0008
+#define PCI_EXP_DPC_STATUS 8
+#define PCI_EXP_DPC_STATUS_TRIGGER 0x0001
+#define PCI_EXP_DPC_STATUS_TRIGGER_RSN 0x0006
+#define PCI_EXP_DPC_STATUS_INTERRUPT 0x0008
+#define PCI_EXP_DPC_RP_BUSY 0x0010
+#define PCI_EXP_DPC_STATUS_TRIGGER_RSN_EXT 0x0060
+#define PCI_EXP_DPC_SOURCE_ID 10
+#define PCI_EXP_DPC_RP_PIO_STATUS 0x0C
+#define PCI_EXP_DPC_RP_PIO_MASK 0x10
+#define PCI_EXP_DPC_RP_PIO_SEVERITY 0x14
+#define PCI_EXP_DPC_RP_PIO_SYSERROR 0x18
+#define PCI_EXP_DPC_RP_PIO_EXCEPTION 0x1C
+#define PCI_EXP_DPC_RP_PIO_HEADER_LOG 0x20
+#define PCI_EXP_DPC_RP_PIO_IMPSPEC_LOG 0x30
+#define PCI_EXP_DPC_RP_PIO_TLPPREFIX_LOG 0x34
+#define PCI_PTM_CAP 0x04
+#define PCI_PTM_CAP_REQ 0x00000001
+#define PCI_PTM_CAP_ROOT 0x00000004
+#define PCI_PTM_GRANULARITY_MASK 0x0000FF00
+#define PCI_PTM_CTRL 0x08
+#define PCI_PTM_CTRL_ENABLE 0x00000001
+#define PCI_PTM_CTRL_ROOT 0x00000002
+#define PCI_L1SS_CAP 0x04
+#define PCI_L1SS_CAP_PCIPM_L1_2 0x00000001
+#define PCI_L1SS_CAP_PCIPM_L1_1 0x00000002
+#define PCI_L1SS_CAP_ASPM_L1_2 0x00000004
+#define PCI_L1SS_CAP_ASPM_L1_1 0x00000008
+#define PCI_L1SS_CAP_L1_PM_SS 0x00000010
+#define PCI_L1SS_CAP_CM_RESTORE_TIME 0x0000ff00
+#define PCI_L1SS_CAP_P_PWR_ON_SCALE 0x00030000
+#define PCI_L1SS_CAP_P_PWR_ON_VALUE 0x00f80000
+#define PCI_L1SS_CTL1 0x08
+#define PCI_L1SS_CTL1_PCIPM_L1_2 0x00000001
+#define PCI_L1SS_CTL1_PCIPM_L1_1 0x00000002
+#define PCI_L1SS_CTL1_ASPM_L1_2 0x00000004
+#define PCI_L1SS_CTL1_ASPM_L1_1 0x00000008
+#define PCI_L1SS_CTL1_L1_2_MASK 0x00000005
+#define PCI_L1SS_CTL1_L1SS_MASK 0x0000000f
+#define PCI_L1SS_CTL1_CM_RESTORE_TIME 0x0000ff00
+#define PCI_L1SS_CTL1_LTR_L12_TH_VALUE 0x03ff0000
+#define PCI_L1SS_CTL1_LTR_L12_TH_SCALE 0xe0000000
+#define PCI_L1SS_CTL2 0x0c
+#define PCI_DVSEC_HEADER1 0x4
+#define PCI_DVSEC_HEADER2 0x8
+#define PCI_DLF_CAP 0x04
+#define PCI_DLF_EXCHANGE_ENABLE 0x80000000
+#define PCI_PL_16GT_LE_CTRL 0x20
+#define PCI_PL_16GT_LE_CTRL_DSP_TX_PRESET_MASK 0x0000000F
+#define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_MASK 0x000000F0
+#define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_SHIFT 4
+#endif
diff --git a/i686-linux-musl/include/linux/pcitest.h b/i686-linux-musl/include/linux/pcitest.h
new file mode 100644
index 0000000..98248bd
--- /dev/null
+++ b/i686-linux-musl/include/linux/pcitest.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_LINUX_PCITEST_H
+#define __UAPI_LINUX_PCITEST_H
+#define PCITEST_BAR _IO('P', 0x1)
+#define PCITEST_LEGACY_IRQ _IO('P', 0x2)
+#define PCITEST_MSI _IOW('P', 0x3, int)
+#define PCITEST_WRITE _IOW('P', 0x4, unsigned long)
+#define PCITEST_READ _IOW('P', 0x5, unsigned long)
+#define PCITEST_COPY _IOW('P', 0x6, unsigned long)
+#define PCITEST_MSIX _IOW('P', 0x7, int)
+#define PCITEST_SET_IRQTYPE _IOW('P', 0x8, int)
+#define PCITEST_GET_IRQTYPE _IO('P', 0x9)
+#define PCITEST_CLEAR_IRQ _IO('P', 0x10)
+#define PCITEST_FLAGS_USE_DMA 0x00000001
+struct pci_endpoint_test_xfer_param {
+  unsigned long size;
+  unsigned char flags;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/perf_event.h b/i686-linux-musl/include/linux/perf_event.h
new file mode 100644
index 0000000..dee8cd7
--- /dev/null
+++ b/i686-linux-musl/include/linux/perf_event.h
@@ -0,0 +1,490 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_PERF_EVENT_H
+#define _UAPI_LINUX_PERF_EVENT_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#include <asm/byteorder.h>
+enum perf_type_id {
+  PERF_TYPE_HARDWARE = 0,
+  PERF_TYPE_SOFTWARE = 1,
+  PERF_TYPE_TRACEPOINT = 2,
+  PERF_TYPE_HW_CACHE = 3,
+  PERF_TYPE_RAW = 4,
+  PERF_TYPE_BREAKPOINT = 5,
+  PERF_TYPE_MAX,
+};
+#define PERF_PMU_TYPE_SHIFT 32
+#define PERF_HW_EVENT_MASK 0xffffffff
+enum perf_hw_id {
+  PERF_COUNT_HW_CPU_CYCLES = 0,
+  PERF_COUNT_HW_INSTRUCTIONS = 1,
+  PERF_COUNT_HW_CACHE_REFERENCES = 2,
+  PERF_COUNT_HW_CACHE_MISSES = 3,
+  PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 4,
+  PERF_COUNT_HW_BRANCH_MISSES = 5,
+  PERF_COUNT_HW_BUS_CYCLES = 6,
+  PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 7,
+  PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 8,
+  PERF_COUNT_HW_REF_CPU_CYCLES = 9,
+  PERF_COUNT_HW_MAX,
+};
+enum perf_hw_cache_id {
+  PERF_COUNT_HW_CACHE_L1D = 0,
+  PERF_COUNT_HW_CACHE_L1I = 1,
+  PERF_COUNT_HW_CACHE_LL = 2,
+  PERF_COUNT_HW_CACHE_DTLB = 3,
+  PERF_COUNT_HW_CACHE_ITLB = 4,
+  PERF_COUNT_HW_CACHE_BPU = 5,
+  PERF_COUNT_HW_CACHE_NODE = 6,
+  PERF_COUNT_HW_CACHE_MAX,
+};
+enum perf_hw_cache_op_id {
+  PERF_COUNT_HW_CACHE_OP_READ = 0,
+  PERF_COUNT_HW_CACHE_OP_WRITE = 1,
+  PERF_COUNT_HW_CACHE_OP_PREFETCH = 2,
+  PERF_COUNT_HW_CACHE_OP_MAX,
+};
+enum perf_hw_cache_op_result_id {
+  PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0,
+  PERF_COUNT_HW_CACHE_RESULT_MISS = 1,
+  PERF_COUNT_HW_CACHE_RESULT_MAX,
+};
+enum perf_sw_ids {
+  PERF_COUNT_SW_CPU_CLOCK = 0,
+  PERF_COUNT_SW_TASK_CLOCK = 1,
+  PERF_COUNT_SW_PAGE_FAULTS = 2,
+  PERF_COUNT_SW_CONTEXT_SWITCHES = 3,
+  PERF_COUNT_SW_CPU_MIGRATIONS = 4,
+  PERF_COUNT_SW_PAGE_FAULTS_MIN = 5,
+  PERF_COUNT_SW_PAGE_FAULTS_MAJ = 6,
+  PERF_COUNT_SW_ALIGNMENT_FAULTS = 7,
+  PERF_COUNT_SW_EMULATION_FAULTS = 8,
+  PERF_COUNT_SW_DUMMY = 9,
+  PERF_COUNT_SW_BPF_OUTPUT = 10,
+  PERF_COUNT_SW_CGROUP_SWITCHES = 11,
+  PERF_COUNT_SW_MAX,
+};
+enum perf_event_sample_format {
+  PERF_SAMPLE_IP = 1U << 0,
+  PERF_SAMPLE_TID = 1U << 1,
+  PERF_SAMPLE_TIME = 1U << 2,
+  PERF_SAMPLE_ADDR = 1U << 3,
+  PERF_SAMPLE_READ = 1U << 4,
+  PERF_SAMPLE_CALLCHAIN = 1U << 5,
+  PERF_SAMPLE_ID = 1U << 6,
+  PERF_SAMPLE_CPU = 1U << 7,
+  PERF_SAMPLE_PERIOD = 1U << 8,
+  PERF_SAMPLE_STREAM_ID = 1U << 9,
+  PERF_SAMPLE_RAW = 1U << 10,
+  PERF_SAMPLE_BRANCH_STACK = 1U << 11,
+  PERF_SAMPLE_REGS_USER = 1U << 12,
+  PERF_SAMPLE_STACK_USER = 1U << 13,
+  PERF_SAMPLE_WEIGHT = 1U << 14,
+  PERF_SAMPLE_DATA_SRC = 1U << 15,
+  PERF_SAMPLE_IDENTIFIER = 1U << 16,
+  PERF_SAMPLE_TRANSACTION = 1U << 17,
+  PERF_SAMPLE_REGS_INTR = 1U << 18,
+  PERF_SAMPLE_PHYS_ADDR = 1U << 19,
+  PERF_SAMPLE_AUX = 1U << 20,
+  PERF_SAMPLE_CGROUP = 1U << 21,
+  PERF_SAMPLE_DATA_PAGE_SIZE = 1U << 22,
+  PERF_SAMPLE_CODE_PAGE_SIZE = 1U << 23,
+  PERF_SAMPLE_WEIGHT_STRUCT = 1U << 24,
+  PERF_SAMPLE_MAX = 1U << 25,
+  __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63,
+};
+#define PERF_SAMPLE_WEIGHT_TYPE (PERF_SAMPLE_WEIGHT | PERF_SAMPLE_WEIGHT_STRUCT)
+enum perf_branch_sample_type_shift {
+  PERF_SAMPLE_BRANCH_USER_SHIFT = 0,
+  PERF_SAMPLE_BRANCH_KERNEL_SHIFT = 1,
+  PERF_SAMPLE_BRANCH_HV_SHIFT = 2,
+  PERF_SAMPLE_BRANCH_ANY_SHIFT = 3,
+  PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT = 4,
+  PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT = 5,
+  PERF_SAMPLE_BRANCH_IND_CALL_SHIFT = 6,
+  PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT = 7,
+  PERF_SAMPLE_BRANCH_IN_TX_SHIFT = 8,
+  PERF_SAMPLE_BRANCH_NO_TX_SHIFT = 9,
+  PERF_SAMPLE_BRANCH_COND_SHIFT = 10,
+  PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT = 11,
+  PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT = 12,
+  PERF_SAMPLE_BRANCH_CALL_SHIFT = 13,
+  PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT = 14,
+  PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 15,
+  PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 16,
+  PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 17,
+  PERF_SAMPLE_BRANCH_MAX_SHIFT
+};
+enum perf_branch_sample_type {
+  PERF_SAMPLE_BRANCH_USER = 1U << PERF_SAMPLE_BRANCH_USER_SHIFT,
+  PERF_SAMPLE_BRANCH_KERNEL = 1U << PERF_SAMPLE_BRANCH_KERNEL_SHIFT,
+  PERF_SAMPLE_BRANCH_HV = 1U << PERF_SAMPLE_BRANCH_HV_SHIFT,
+  PERF_SAMPLE_BRANCH_ANY = 1U << PERF_SAMPLE_BRANCH_ANY_SHIFT,
+  PERF_SAMPLE_BRANCH_ANY_CALL = 1U << PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT,
+  PERF_SAMPLE_BRANCH_ANY_RETURN = 1U << PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT,
+  PERF_SAMPLE_BRANCH_IND_CALL = 1U << PERF_SAMPLE_BRANCH_IND_CALL_SHIFT,
+  PERF_SAMPLE_BRANCH_ABORT_TX = 1U << PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT,
+  PERF_SAMPLE_BRANCH_IN_TX = 1U << PERF_SAMPLE_BRANCH_IN_TX_SHIFT,
+  PERF_SAMPLE_BRANCH_NO_TX = 1U << PERF_SAMPLE_BRANCH_NO_TX_SHIFT,
+  PERF_SAMPLE_BRANCH_COND = 1U << PERF_SAMPLE_BRANCH_COND_SHIFT,
+  PERF_SAMPLE_BRANCH_CALL_STACK = 1U << PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT,
+  PERF_SAMPLE_BRANCH_IND_JUMP = 1U << PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT,
+  PERF_SAMPLE_BRANCH_CALL = 1U << PERF_SAMPLE_BRANCH_CALL_SHIFT,
+  PERF_SAMPLE_BRANCH_NO_FLAGS = 1U << PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT,
+  PERF_SAMPLE_BRANCH_NO_CYCLES = 1U << PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT,
+  PERF_SAMPLE_BRANCH_TYPE_SAVE = 1U << PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT,
+  PERF_SAMPLE_BRANCH_HW_INDEX = 1U << PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT,
+  PERF_SAMPLE_BRANCH_MAX = 1U << PERF_SAMPLE_BRANCH_MAX_SHIFT,
+};
+enum {
+  PERF_BR_UNKNOWN = 0,
+  PERF_BR_COND = 1,
+  PERF_BR_UNCOND = 2,
+  PERF_BR_IND = 3,
+  PERF_BR_CALL = 4,
+  PERF_BR_IND_CALL = 5,
+  PERF_BR_RET = 6,
+  PERF_BR_SYSCALL = 7,
+  PERF_BR_SYSRET = 8,
+  PERF_BR_COND_CALL = 9,
+  PERF_BR_COND_RET = 10,
+  PERF_BR_MAX,
+};
+#define PERF_SAMPLE_BRANCH_PLM_ALL (PERF_SAMPLE_BRANCH_USER | PERF_SAMPLE_BRANCH_KERNEL | PERF_SAMPLE_BRANCH_HV)
+enum perf_sample_regs_abi {
+  PERF_SAMPLE_REGS_ABI_NONE = 0,
+  PERF_SAMPLE_REGS_ABI_32 = 1,
+  PERF_SAMPLE_REGS_ABI_64 = 2,
+};
+enum {
+  PERF_TXN_ELISION = (1 << 0),
+  PERF_TXN_TRANSACTION = (1 << 1),
+  PERF_TXN_SYNC = (1 << 2),
+  PERF_TXN_ASYNC = (1 << 3),
+  PERF_TXN_RETRY = (1 << 4),
+  PERF_TXN_CONFLICT = (1 << 5),
+  PERF_TXN_CAPACITY_WRITE = (1 << 6),
+  PERF_TXN_CAPACITY_READ = (1 << 7),
+  PERF_TXN_MAX = (1 << 8),
+  PERF_TXN_ABORT_MASK = (0xffffffffULL << 32),
+  PERF_TXN_ABORT_SHIFT = 32,
+};
+enum perf_event_read_format {
+  PERF_FORMAT_TOTAL_TIME_ENABLED = 1U << 0,
+  PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1,
+  PERF_FORMAT_ID = 1U << 2,
+  PERF_FORMAT_GROUP = 1U << 3,
+  PERF_FORMAT_MAX = 1U << 4,
+};
+#define PERF_ATTR_SIZE_VER0 64
+#define PERF_ATTR_SIZE_VER1 72
+#define PERF_ATTR_SIZE_VER2 80
+#define PERF_ATTR_SIZE_VER3 96
+#define PERF_ATTR_SIZE_VER4 104
+#define PERF_ATTR_SIZE_VER5 112
+#define PERF_ATTR_SIZE_VER6 120
+#define PERF_ATTR_SIZE_VER7 128
+struct perf_event_attr {
+  __u32 type;
+  __u32 size;
+  __u64 config;
+  union {
+    __u64 sample_period;
+    __u64 sample_freq;
+  };
+  __u64 sample_type;
+  __u64 read_format;
+  __u64 disabled : 1, inherit : 1, pinned : 1, exclusive : 1, exclude_user : 1, exclude_kernel : 1, exclude_hv : 1, exclude_idle : 1, mmap : 1, comm : 1, freq : 1, inherit_stat : 1, enable_on_exec : 1, task : 1, watermark : 1, precise_ip : 2, mmap_data : 1, sample_id_all : 1, exclude_host : 1, exclude_guest : 1, exclude_callchain_kernel : 1, exclude_callchain_user : 1, mmap2 : 1, comm_exec : 1, use_clockid : 1, context_switch : 1, write_backward : 1, namespaces : 1, ksymbol : 1, bpf_event : 1, aux_output : 1, cgroup : 1, text_poke : 1, build_id : 1, inherit_thread : 1, remove_on_exec : 1, sigtrap : 1, __reserved_1 : 26;
+  union {
+    __u32 wakeup_events;
+    __u32 wakeup_watermark;
+  };
+  __u32 bp_type;
+  union {
+    __u64 bp_addr;
+    __u64 kprobe_func;
+    __u64 uprobe_path;
+    __u64 config1;
+  };
+  union {
+    __u64 bp_len;
+    __u64 kprobe_addr;
+    __u64 probe_offset;
+    __u64 config2;
+  };
+  __u64 branch_sample_type;
+  __u64 sample_regs_user;
+  __u32 sample_stack_user;
+  __s32 clockid;
+  __u64 sample_regs_intr;
+  __u32 aux_watermark;
+  __u16 sample_max_stack;
+  __u16 __reserved_2;
+  __u32 aux_sample_size;
+  __u32 __reserved_3;
+  __u64 sig_data;
+};
+struct perf_event_query_bpf {
+  __u32 ids_len;
+  __u32 prog_cnt;
+  __u32 ids[0];
+};
+#define PERF_EVENT_IOC_ENABLE _IO('$', 0)
+#define PERF_EVENT_IOC_DISABLE _IO('$', 1)
+#define PERF_EVENT_IOC_REFRESH _IO('$', 2)
+#define PERF_EVENT_IOC_RESET _IO('$', 3)
+#define PERF_EVENT_IOC_PERIOD _IOW('$', 4, __u64)
+#define PERF_EVENT_IOC_SET_OUTPUT _IO('$', 5)
+#define PERF_EVENT_IOC_SET_FILTER _IOW('$', 6, char *)
+#define PERF_EVENT_IOC_ID _IOR('$', 7, __u64 *)
+#define PERF_EVENT_IOC_SET_BPF _IOW('$', 8, __u32)
+#define PERF_EVENT_IOC_PAUSE_OUTPUT _IOW('$', 9, __u32)
+#define PERF_EVENT_IOC_QUERY_BPF _IOWR('$', 10, struct perf_event_query_bpf *)
+#define PERF_EVENT_IOC_MODIFY_ATTRIBUTES _IOW('$', 11, struct perf_event_attr *)
+enum perf_event_ioc_flags {
+  PERF_IOC_FLAG_GROUP = 1U << 0,
+};
+struct perf_event_mmap_page {
+  __u32 version;
+  __u32 compat_version;
+  __u32 lock;
+  __u32 index;
+  __s64 offset;
+  __u64 time_enabled;
+  __u64 time_running;
+  union {
+    __u64 capabilities;
+    struct {
+      __u64 cap_bit0 : 1, cap_bit0_is_deprecated : 1, cap_user_rdpmc : 1, cap_user_time : 1, cap_user_time_zero : 1, cap_user_time_short : 1, cap_____res : 58;
+    };
+  };
+  __u16 pmc_width;
+  __u16 time_shift;
+  __u32 time_mult;
+  __u64 time_offset;
+  __u64 time_zero;
+  __u32 size;
+  __u32 __reserved_1;
+  __u64 time_cycles;
+  __u64 time_mask;
+  __u8 __reserved[116 * 8];
+  __u64 data_head;
+  __u64 data_tail;
+  __u64 data_offset;
+  __u64 data_size;
+  __u64 aux_head;
+  __u64 aux_tail;
+  __u64 aux_offset;
+  __u64 aux_size;
+};
+#define PERF_RECORD_MISC_CPUMODE_MASK (7 << 0)
+#define PERF_RECORD_MISC_CPUMODE_UNKNOWN (0 << 0)
+#define PERF_RECORD_MISC_KERNEL (1 << 0)
+#define PERF_RECORD_MISC_USER (2 << 0)
+#define PERF_RECORD_MISC_HYPERVISOR (3 << 0)
+#define PERF_RECORD_MISC_GUEST_KERNEL (4 << 0)
+#define PERF_RECORD_MISC_GUEST_USER (5 << 0)
+#define PERF_RECORD_MISC_PROC_MAP_PARSE_TIMEOUT (1 << 12)
+#define PERF_RECORD_MISC_MMAP_DATA (1 << 13)
+#define PERF_RECORD_MISC_COMM_EXEC (1 << 13)
+#define PERF_RECORD_MISC_FORK_EXEC (1 << 13)
+#define PERF_RECORD_MISC_SWITCH_OUT (1 << 13)
+#define PERF_RECORD_MISC_EXACT_IP (1 << 14)
+#define PERF_RECORD_MISC_SWITCH_OUT_PREEMPT (1 << 14)
+#define PERF_RECORD_MISC_MMAP_BUILD_ID (1 << 14)
+#define PERF_RECORD_MISC_EXT_RESERVED (1 << 15)
+struct perf_event_header {
+  __u32 type;
+  __u16 misc;
+  __u16 size;
+};
+struct perf_ns_link_info {
+  __u64 dev;
+  __u64 ino;
+};
+enum {
+  NET_NS_INDEX = 0,
+  UTS_NS_INDEX = 1,
+  IPC_NS_INDEX = 2,
+  PID_NS_INDEX = 3,
+  USER_NS_INDEX = 4,
+  MNT_NS_INDEX = 5,
+  CGROUP_NS_INDEX = 6,
+  NR_NAMESPACES,
+};
+enum perf_event_type {
+  PERF_RECORD_MMAP = 1,
+  PERF_RECORD_LOST = 2,
+  PERF_RECORD_COMM = 3,
+  PERF_RECORD_EXIT = 4,
+  PERF_RECORD_THROTTLE = 5,
+  PERF_RECORD_UNTHROTTLE = 6,
+  PERF_RECORD_FORK = 7,
+  PERF_RECORD_READ = 8,
+  PERF_RECORD_SAMPLE = 9,
+  PERF_RECORD_MMAP2 = 10,
+  PERF_RECORD_AUX = 11,
+  PERF_RECORD_ITRACE_START = 12,
+  PERF_RECORD_LOST_SAMPLES = 13,
+  PERF_RECORD_SWITCH = 14,
+  PERF_RECORD_SWITCH_CPU_WIDE = 15,
+  PERF_RECORD_NAMESPACES = 16,
+  PERF_RECORD_KSYMBOL = 17,
+  PERF_RECORD_BPF_EVENT = 18,
+  PERF_RECORD_CGROUP = 19,
+  PERF_RECORD_TEXT_POKE = 20,
+  PERF_RECORD_AUX_OUTPUT_HW_ID = 21,
+  PERF_RECORD_MAX,
+};
+enum perf_record_ksymbol_type {
+  PERF_RECORD_KSYMBOL_TYPE_UNKNOWN = 0,
+  PERF_RECORD_KSYMBOL_TYPE_BPF = 1,
+  PERF_RECORD_KSYMBOL_TYPE_OOL = 2,
+  PERF_RECORD_KSYMBOL_TYPE_MAX
+};
+#define PERF_RECORD_KSYMBOL_FLAGS_UNREGISTER (1 << 0)
+enum perf_bpf_event_type {
+  PERF_BPF_EVENT_UNKNOWN = 0,
+  PERF_BPF_EVENT_PROG_LOAD = 1,
+  PERF_BPF_EVENT_PROG_UNLOAD = 2,
+  PERF_BPF_EVENT_MAX,
+};
+#define PERF_MAX_STACK_DEPTH 127
+#define PERF_MAX_CONTEXTS_PER_STACK 8
+enum perf_callchain_context {
+  PERF_CONTEXT_HV = (__u64) - 32,
+  PERF_CONTEXT_KERNEL = (__u64) - 128,
+  PERF_CONTEXT_USER = (__u64) - 512,
+  PERF_CONTEXT_GUEST = (__u64) - 2048,
+  PERF_CONTEXT_GUEST_KERNEL = (__u64) - 2176,
+  PERF_CONTEXT_GUEST_USER = (__u64) - 2560,
+  PERF_CONTEXT_MAX = (__u64) - 4095,
+};
+#define PERF_AUX_FLAG_TRUNCATED 0x01
+#define PERF_AUX_FLAG_OVERWRITE 0x02
+#define PERF_AUX_FLAG_PARTIAL 0x04
+#define PERF_AUX_FLAG_COLLISION 0x08
+#define PERF_AUX_FLAG_PMU_FORMAT_TYPE_MASK 0xff00
+#define PERF_AUX_FLAG_CORESIGHT_FORMAT_CORESIGHT 0x0000
+#define PERF_AUX_FLAG_CORESIGHT_FORMAT_RAW 0x0100
+#define PERF_FLAG_FD_NO_GROUP (1UL << 0)
+#define PERF_FLAG_FD_OUTPUT (1UL << 1)
+#define PERF_FLAG_PID_CGROUP (1UL << 2)
+#define PERF_FLAG_FD_CLOEXEC (1UL << 3)
+#ifdef __LITTLE_ENDIAN_BITFIELD
+union perf_mem_data_src {
+  __u64 val;
+  struct {
+    __u64 mem_op : 5, mem_lvl : 14, mem_snoop : 5, mem_lock : 2, mem_dtlb : 7, mem_lvl_num : 4, mem_remote : 1, mem_snoopx : 2, mem_blk : 3, mem_hops : 3, mem_rsvd : 18;
+  };
+};
+#elif defined(__BIG_ENDIAN_BITFIELD)
+union perf_mem_data_src {
+  __u64 val;
+  struct {
+    __u64 mem_rsvd : 18, mem_hops : 3, mem_blk : 3, mem_snoopx : 2, mem_remote : 1, mem_lvl_num : 4, mem_dtlb : 7, mem_lock : 2, mem_snoop : 5, mem_lvl : 14, mem_op : 5;
+  };
+};
+#else
+#error "Unknown endianness"
+#endif
+#define PERF_MEM_OP_NA 0x01
+#define PERF_MEM_OP_LOAD 0x02
+#define PERF_MEM_OP_STORE 0x04
+#define PERF_MEM_OP_PFETCH 0x08
+#define PERF_MEM_OP_EXEC 0x10
+#define PERF_MEM_OP_SHIFT 0
+#define PERF_MEM_LVL_NA 0x01
+#define PERF_MEM_LVL_HIT 0x02
+#define PERF_MEM_LVL_MISS 0x04
+#define PERF_MEM_LVL_L1 0x08
+#define PERF_MEM_LVL_LFB 0x10
+#define PERF_MEM_LVL_L2 0x20
+#define PERF_MEM_LVL_L3 0x40
+#define PERF_MEM_LVL_LOC_RAM 0x80
+#define PERF_MEM_LVL_REM_RAM1 0x100
+#define PERF_MEM_LVL_REM_RAM2 0x200
+#define PERF_MEM_LVL_REM_CCE1 0x400
+#define PERF_MEM_LVL_REM_CCE2 0x800
+#define PERF_MEM_LVL_IO 0x1000
+#define PERF_MEM_LVL_UNC 0x2000
+#define PERF_MEM_LVL_SHIFT 5
+#define PERF_MEM_REMOTE_REMOTE 0x01
+#define PERF_MEM_REMOTE_SHIFT 37
+#define PERF_MEM_LVLNUM_L1 0x01
+#define PERF_MEM_LVLNUM_L2 0x02
+#define PERF_MEM_LVLNUM_L3 0x03
+#define PERF_MEM_LVLNUM_L4 0x04
+#define PERF_MEM_LVLNUM_ANY_CACHE 0x0b
+#define PERF_MEM_LVLNUM_LFB 0x0c
+#define PERF_MEM_LVLNUM_RAM 0x0d
+#define PERF_MEM_LVLNUM_PMEM 0x0e
+#define PERF_MEM_LVLNUM_NA 0x0f
+#define PERF_MEM_LVLNUM_SHIFT 33
+#define PERF_MEM_SNOOP_NA 0x01
+#define PERF_MEM_SNOOP_NONE 0x02
+#define PERF_MEM_SNOOP_HIT 0x04
+#define PERF_MEM_SNOOP_MISS 0x08
+#define PERF_MEM_SNOOP_HITM 0x10
+#define PERF_MEM_SNOOP_SHIFT 19
+#define PERF_MEM_SNOOPX_FWD 0x01
+#define PERF_MEM_SNOOPX_SHIFT 38
+#define PERF_MEM_LOCK_NA 0x01
+#define PERF_MEM_LOCK_LOCKED 0x02
+#define PERF_MEM_LOCK_SHIFT 24
+#define PERF_MEM_TLB_NA 0x01
+#define PERF_MEM_TLB_HIT 0x02
+#define PERF_MEM_TLB_MISS 0x04
+#define PERF_MEM_TLB_L1 0x08
+#define PERF_MEM_TLB_L2 0x10
+#define PERF_MEM_TLB_WK 0x20
+#define PERF_MEM_TLB_OS 0x40
+#define PERF_MEM_TLB_SHIFT 26
+#define PERF_MEM_BLK_NA 0x01
+#define PERF_MEM_BLK_DATA 0x02
+#define PERF_MEM_BLK_ADDR 0x04
+#define PERF_MEM_BLK_SHIFT 40
+#define PERF_MEM_HOPS_0 0x01
+#define PERF_MEM_HOPS_SHIFT 43
+#define PERF_MEM_S(a,s) (((__u64) PERF_MEM_ ##a ##_ ##s) << PERF_MEM_ ##a ##_SHIFT)
+struct perf_branch_entry {
+  __u64 from;
+  __u64 to;
+  __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, reserved : 40;
+};
+union perf_sample_weight {
+  __u64 full;
+#ifdef __LITTLE_ENDIAN_BITFIELD
+  struct {
+    __u32 var1_dw;
+    __u16 var2_w;
+    __u16 var3_w;
+  };
+#elif defined(__BIG_ENDIAN_BITFIELD)
+  struct {
+    __u16 var3_w;
+    __u16 var2_w;
+    __u32 var1_dw;
+  };
+#else
+#error "Unknown endianness"
+#endif
+};
+#endif
diff --git a/i686-linux-musl/include/linux/personality.h b/i686-linux-musl/include/linux/personality.h
new file mode 100644
index 0000000..1db5026
--- /dev/null
+++ b/i686-linux-musl/include/linux/personality.h
@@ -0,0 +1,60 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_PERSONALITY_H
+#define _UAPI_LINUX_PERSONALITY_H
+enum {
+  UNAME26 = 0x0020000,
+  ADDR_NO_RANDOMIZE = 0x0040000,
+  FDPIC_FUNCPTRS = 0x0080000,
+  MMAP_PAGE_ZERO = 0x0100000,
+  ADDR_COMPAT_LAYOUT = 0x0200000,
+  READ_IMPLIES_EXEC = 0x0400000,
+  ADDR_LIMIT_32BIT = 0x0800000,
+  SHORT_INODE = 0x1000000,
+  WHOLE_SECONDS = 0x2000000,
+  STICKY_TIMEOUTS = 0x4000000,
+  ADDR_LIMIT_3GB = 0x8000000,
+};
+#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC | ADDR_NO_RANDOMIZE | ADDR_COMPAT_LAYOUT | MMAP_PAGE_ZERO)
+enum {
+  PER_LINUX = 0x0000,
+  PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT,
+  PER_LINUX_FDPIC = 0x0000 | FDPIC_FUNCPTRS,
+  PER_SVR4 = 0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
+  PER_SVR3 = 0x0002 | STICKY_TIMEOUTS | SHORT_INODE,
+  PER_SCOSVR3 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS | SHORT_INODE,
+  PER_OSR5 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS,
+  PER_WYSEV386 = 0x0004 | STICKY_TIMEOUTS | SHORT_INODE,
+  PER_ISCR4 = 0x0005 | STICKY_TIMEOUTS,
+  PER_BSD = 0x0006,
+  PER_SUNOS = 0x0006 | STICKY_TIMEOUTS,
+  PER_XENIX = 0x0007 | STICKY_TIMEOUTS | SHORT_INODE,
+  PER_LINUX32 = 0x0008,
+  PER_LINUX32_3GB = 0x0008 | ADDR_LIMIT_3GB,
+  PER_IRIX32 = 0x0009 | STICKY_TIMEOUTS,
+  PER_IRIXN32 = 0x000a | STICKY_TIMEOUTS,
+  PER_IRIX64 = 0x000b | STICKY_TIMEOUTS,
+  PER_RISCOS = 0x000c,
+  PER_SOLARIS = 0x000d | STICKY_TIMEOUTS,
+  PER_UW7 = 0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
+  PER_OSF4 = 0x000f,
+  PER_HPUX = 0x0010,
+  PER_MASK = 0x00ff,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/pfkeyv2.h b/i686-linux-musl/include/linux/pfkeyv2.h
new file mode 100644
index 0000000..8f65681
--- /dev/null
+++ b/i686-linux-musl/include/linux/pfkeyv2.h
@@ -0,0 +1,306 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_PFKEY2_H
+#define _LINUX_PFKEY2_H
+#include <linux/types.h>
+#define PF_KEY_V2 2
+#define PFKEYV2_REVISION 199806L
+struct sadb_msg {
+  __u8 sadb_msg_version;
+  __u8 sadb_msg_type;
+  __u8 sadb_msg_errno;
+  __u8 sadb_msg_satype;
+  __u16 sadb_msg_len;
+  __u16 sadb_msg_reserved;
+  __u32 sadb_msg_seq;
+  __u32 sadb_msg_pid;
+} __attribute__((packed));
+struct sadb_ext {
+  __u16 sadb_ext_len;
+  __u16 sadb_ext_type;
+} __attribute__((packed));
+struct sadb_sa {
+  __u16 sadb_sa_len;
+  __u16 sadb_sa_exttype;
+  __be32 sadb_sa_spi;
+  __u8 sadb_sa_replay;
+  __u8 sadb_sa_state;
+  __u8 sadb_sa_auth;
+  __u8 sadb_sa_encrypt;
+  __u32 sadb_sa_flags;
+} __attribute__((packed));
+struct sadb_lifetime {
+  __u16 sadb_lifetime_len;
+  __u16 sadb_lifetime_exttype;
+  __u32 sadb_lifetime_allocations;
+  __u64 sadb_lifetime_bytes;
+  __u64 sadb_lifetime_addtime;
+  __u64 sadb_lifetime_usetime;
+} __attribute__((packed));
+struct sadb_address {
+  __u16 sadb_address_len;
+  __u16 sadb_address_exttype;
+  __u8 sadb_address_proto;
+  __u8 sadb_address_prefixlen;
+  __u16 sadb_address_reserved;
+} __attribute__((packed));
+struct sadb_key {
+  __u16 sadb_key_len;
+  __u16 sadb_key_exttype;
+  __u16 sadb_key_bits;
+  __u16 sadb_key_reserved;
+} __attribute__((packed));
+struct sadb_ident {
+  __u16 sadb_ident_len;
+  __u16 sadb_ident_exttype;
+  __u16 sadb_ident_type;
+  __u16 sadb_ident_reserved;
+  __u64 sadb_ident_id;
+} __attribute__((packed));
+struct sadb_sens {
+  __u16 sadb_sens_len;
+  __u16 sadb_sens_exttype;
+  __u32 sadb_sens_dpd;
+  __u8 sadb_sens_sens_level;
+  __u8 sadb_sens_sens_len;
+  __u8 sadb_sens_integ_level;
+  __u8 sadb_sens_integ_len;
+  __u32 sadb_sens_reserved;
+} __attribute__((packed));
+struct sadb_prop {
+  __u16 sadb_prop_len;
+  __u16 sadb_prop_exttype;
+  __u8 sadb_prop_replay;
+  __u8 sadb_prop_reserved[3];
+} __attribute__((packed));
+struct sadb_comb {
+  __u8 sadb_comb_auth;
+  __u8 sadb_comb_encrypt;
+  __u16 sadb_comb_flags;
+  __u16 sadb_comb_auth_minbits;
+  __u16 sadb_comb_auth_maxbits;
+  __u16 sadb_comb_encrypt_minbits;
+  __u16 sadb_comb_encrypt_maxbits;
+  __u32 sadb_comb_reserved;
+  __u32 sadb_comb_soft_allocations;
+  __u32 sadb_comb_hard_allocations;
+  __u64 sadb_comb_soft_bytes;
+  __u64 sadb_comb_hard_bytes;
+  __u64 sadb_comb_soft_addtime;
+  __u64 sadb_comb_hard_addtime;
+  __u64 sadb_comb_soft_usetime;
+  __u64 sadb_comb_hard_usetime;
+} __attribute__((packed));
+struct sadb_supported {
+  __u16 sadb_supported_len;
+  __u16 sadb_supported_exttype;
+  __u32 sadb_supported_reserved;
+} __attribute__((packed));
+struct sadb_alg {
+  __u8 sadb_alg_id;
+  __u8 sadb_alg_ivlen;
+  __u16 sadb_alg_minbits;
+  __u16 sadb_alg_maxbits;
+  __u16 sadb_alg_reserved;
+} __attribute__((packed));
+struct sadb_spirange {
+  __u16 sadb_spirange_len;
+  __u16 sadb_spirange_exttype;
+  __u32 sadb_spirange_min;
+  __u32 sadb_spirange_max;
+  __u32 sadb_spirange_reserved;
+} __attribute__((packed));
+struct sadb_x_kmprivate {
+  __u16 sadb_x_kmprivate_len;
+  __u16 sadb_x_kmprivate_exttype;
+  __u32 sadb_x_kmprivate_reserved;
+} __attribute__((packed));
+struct sadb_x_sa2 {
+  __u16 sadb_x_sa2_len;
+  __u16 sadb_x_sa2_exttype;
+  __u8 sadb_x_sa2_mode;
+  __u8 sadb_x_sa2_reserved1;
+  __u16 sadb_x_sa2_reserved2;
+  __u32 sadb_x_sa2_sequence;
+  __u32 sadb_x_sa2_reqid;
+} __attribute__((packed));
+struct sadb_x_policy {
+  __u16 sadb_x_policy_len;
+  __u16 sadb_x_policy_exttype;
+  __u16 sadb_x_policy_type;
+  __u8 sadb_x_policy_dir;
+  __u8 sadb_x_policy_reserved;
+  __u32 sadb_x_policy_id;
+  __u32 sadb_x_policy_priority;
+} __attribute__((packed));
+struct sadb_x_ipsecrequest {
+  __u16 sadb_x_ipsecrequest_len;
+  __u16 sadb_x_ipsecrequest_proto;
+  __u8 sadb_x_ipsecrequest_mode;
+  __u8 sadb_x_ipsecrequest_level;
+  __u16 sadb_x_ipsecrequest_reserved1;
+  __u32 sadb_x_ipsecrequest_reqid;
+  __u32 sadb_x_ipsecrequest_reserved2;
+} __attribute__((packed));
+struct sadb_x_nat_t_type {
+  __u16 sadb_x_nat_t_type_len;
+  __u16 sadb_x_nat_t_type_exttype;
+  __u8 sadb_x_nat_t_type_type;
+  __u8 sadb_x_nat_t_type_reserved[3];
+} __attribute__((packed));
+struct sadb_x_nat_t_port {
+  __u16 sadb_x_nat_t_port_len;
+  __u16 sadb_x_nat_t_port_exttype;
+  __be16 sadb_x_nat_t_port_port;
+  __u16 sadb_x_nat_t_port_reserved;
+} __attribute__((packed));
+struct sadb_x_sec_ctx {
+  __u16 sadb_x_sec_len;
+  __u16 sadb_x_sec_exttype;
+  __u8 sadb_x_ctx_alg;
+  __u8 sadb_x_ctx_doi;
+  __u16 sadb_x_ctx_len;
+} __attribute__((packed));
+struct sadb_x_kmaddress {
+  __u16 sadb_x_kmaddress_len;
+  __u16 sadb_x_kmaddress_exttype;
+  __u32 sadb_x_kmaddress_reserved;
+} __attribute__((packed));
+struct sadb_x_filter {
+  __u16 sadb_x_filter_len;
+  __u16 sadb_x_filter_exttype;
+  __u32 sadb_x_filter_saddr[4];
+  __u32 sadb_x_filter_daddr[4];
+  __u16 sadb_x_filter_family;
+  __u8 sadb_x_filter_splen;
+  __u8 sadb_x_filter_dplen;
+} __attribute__((packed));
+#define SADB_RESERVED 0
+#define SADB_GETSPI 1
+#define SADB_UPDATE 2
+#define SADB_ADD 3
+#define SADB_DELETE 4
+#define SADB_GET 5
+#define SADB_ACQUIRE 6
+#define SADB_REGISTER 7
+#define SADB_EXPIRE 8
+#define SADB_FLUSH 9
+#define SADB_DUMP 10
+#define SADB_X_PROMISC 11
+#define SADB_X_PCHANGE 12
+#define SADB_X_SPDUPDATE 13
+#define SADB_X_SPDADD 14
+#define SADB_X_SPDDELETE 15
+#define SADB_X_SPDGET 16
+#define SADB_X_SPDACQUIRE 17
+#define SADB_X_SPDDUMP 18
+#define SADB_X_SPDFLUSH 19
+#define SADB_X_SPDSETIDX 20
+#define SADB_X_SPDEXPIRE 21
+#define SADB_X_SPDDELETE2 22
+#define SADB_X_NAT_T_NEW_MAPPING 23
+#define SADB_X_MIGRATE 24
+#define SADB_MAX 24
+#define SADB_SAFLAGS_PFS 1
+#define SADB_SAFLAGS_NOPMTUDISC 0x20000000
+#define SADB_SAFLAGS_DECAP_DSCP 0x40000000
+#define SADB_SAFLAGS_NOECN 0x80000000
+#define SADB_SASTATE_LARVAL 0
+#define SADB_SASTATE_MATURE 1
+#define SADB_SASTATE_DYING 2
+#define SADB_SASTATE_DEAD 3
+#define SADB_SASTATE_MAX 3
+#define SADB_SATYPE_UNSPEC 0
+#define SADB_SATYPE_AH 2
+#define SADB_SATYPE_ESP 3
+#define SADB_SATYPE_RSVP 5
+#define SADB_SATYPE_OSPFV2 6
+#define SADB_SATYPE_RIPV2 7
+#define SADB_SATYPE_MIP 8
+#define SADB_X_SATYPE_IPCOMP 9
+#define SADB_SATYPE_MAX 9
+#define SADB_AALG_NONE 0
+#define SADB_AALG_MD5HMAC 2
+#define SADB_AALG_SHA1HMAC 3
+#define SADB_X_AALG_SHA2_256HMAC 5
+#define SADB_X_AALG_SHA2_384HMAC 6
+#define SADB_X_AALG_SHA2_512HMAC 7
+#define SADB_X_AALG_RIPEMD160HMAC 8
+#define SADB_X_AALG_AES_XCBC_MAC 9
+#define SADB_X_AALG_NULL 251
+#define SADB_AALG_MAX 251
+#define SADB_EALG_NONE 0
+#define SADB_EALG_DESCBC 2
+#define SADB_EALG_3DESCBC 3
+#define SADB_X_EALG_CASTCBC 6
+#define SADB_X_EALG_BLOWFISHCBC 7
+#define SADB_EALG_NULL 11
+#define SADB_X_EALG_AESCBC 12
+#define SADB_X_EALG_AESCTR 13
+#define SADB_X_EALG_AES_CCM_ICV8 14
+#define SADB_X_EALG_AES_CCM_ICV12 15
+#define SADB_X_EALG_AES_CCM_ICV16 16
+#define SADB_X_EALG_AES_GCM_ICV8 18
+#define SADB_X_EALG_AES_GCM_ICV12 19
+#define SADB_X_EALG_AES_GCM_ICV16 20
+#define SADB_X_EALG_CAMELLIACBC 22
+#define SADB_X_EALG_NULL_AES_GMAC 23
+#define SADB_EALG_MAX 253
+#define SADB_X_EALG_SERPENTCBC 252
+#define SADB_X_EALG_TWOFISHCBC 253
+#define SADB_X_CALG_NONE 0
+#define SADB_X_CALG_OUI 1
+#define SADB_X_CALG_DEFLATE 2
+#define SADB_X_CALG_LZS 3
+#define SADB_X_CALG_LZJH 4
+#define SADB_X_CALG_MAX 4
+#define SADB_EXT_RESERVED 0
+#define SADB_EXT_SA 1
+#define SADB_EXT_LIFETIME_CURRENT 2
+#define SADB_EXT_LIFETIME_HARD 3
+#define SADB_EXT_LIFETIME_SOFT 4
+#define SADB_EXT_ADDRESS_SRC 5
+#define SADB_EXT_ADDRESS_DST 6
+#define SADB_EXT_ADDRESS_PROXY 7
+#define SADB_EXT_KEY_AUTH 8
+#define SADB_EXT_KEY_ENCRYPT 9
+#define SADB_EXT_IDENTITY_SRC 10
+#define SADB_EXT_IDENTITY_DST 11
+#define SADB_EXT_SENSITIVITY 12
+#define SADB_EXT_PROPOSAL 13
+#define SADB_EXT_SUPPORTED_AUTH 14
+#define SADB_EXT_SUPPORTED_ENCRYPT 15
+#define SADB_EXT_SPIRANGE 16
+#define SADB_X_EXT_KMPRIVATE 17
+#define SADB_X_EXT_POLICY 18
+#define SADB_X_EXT_SA2 19
+#define SADB_X_EXT_NAT_T_TYPE 20
+#define SADB_X_EXT_NAT_T_SPORT 21
+#define SADB_X_EXT_NAT_T_DPORT 22
+#define SADB_X_EXT_NAT_T_OA 23
+#define SADB_X_EXT_SEC_CTX 24
+#define SADB_X_EXT_KMADDRESS 25
+#define SADB_X_EXT_FILTER 26
+#define SADB_EXT_MAX 26
+#define SADB_IDENTTYPE_RESERVED 0
+#define SADB_IDENTTYPE_PREFIX 1
+#define SADB_IDENTTYPE_FQDN 2
+#define SADB_IDENTTYPE_USERFQDN 3
+#define SADB_IDENTTYPE_MAX 3
+#endif
diff --git a/i686-linux-musl/include/linux/pg.h b/i686-linux-musl/include/linux/pg.h
new file mode 100644
index 0000000..dd52282
--- /dev/null
+++ b/i686-linux-musl/include/linux/pg.h
@@ -0,0 +1,39 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_PG_H
+#define _UAPI_LINUX_PG_H
+#define PG_MAGIC 'P'
+#define PG_RESET 'Z'
+#define PG_COMMAND 'C'
+#define PG_MAX_DATA 32768
+struct pg_write_hdr {
+  char magic;
+  char func;
+  int dlen;
+  int timeout;
+  char packet[12];
+};
+struct pg_read_hdr {
+  char magic;
+  char scsi;
+  int dlen;
+  int duration;
+  char pad[12];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/phantom.h b/i686-linux-musl/include/linux/phantom.h
new file mode 100644
index 0000000..2016cc5
--- /dev/null
+++ b/i686-linux-musl/include/linux/phantom.h
@@ -0,0 +1,46 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __PHANTOM_H
+#define __PHANTOM_H
+#include <linux/types.h>
+struct phm_reg {
+  __u32 reg;
+  __u32 value;
+};
+struct phm_regs {
+  __u32 count;
+  __u32 mask;
+  __u32 values[8];
+};
+#define PH_IOC_MAGIC 'p'
+#define PHN_GET_REG _IOWR(PH_IOC_MAGIC, 0, struct phm_reg *)
+#define PHN_SET_REG _IOW(PH_IOC_MAGIC, 1, struct phm_reg *)
+#define PHN_GET_REGS _IOWR(PH_IOC_MAGIC, 2, struct phm_regs *)
+#define PHN_SET_REGS _IOW(PH_IOC_MAGIC, 3, struct phm_regs *)
+#define PHN_NOT_OH _IO(PH_IOC_MAGIC, 4)
+#define PHN_GETREG _IOWR(PH_IOC_MAGIC, 5, struct phm_reg)
+#define PHN_SETREG _IOW(PH_IOC_MAGIC, 6, struct phm_reg)
+#define PHN_GETREGS _IOWR(PH_IOC_MAGIC, 7, struct phm_regs)
+#define PHN_SETREGS _IOW(PH_IOC_MAGIC, 8, struct phm_regs)
+#define PHN_CONTROL 0x6
+#define PHN_CTL_AMP 0x1
+#define PHN_CTL_BUT 0x2
+#define PHN_CTL_IRQ 0x10
+#define PHN_ZERO_FORCE 2048
+#endif
diff --git a/i686-linux-musl/include/linux/phonet.h b/i686-linux-musl/include/linux/phonet.h
new file mode 100644
index 0000000..8134016
--- /dev/null
+++ b/i686-linux-musl/include/linux/phonet.h
@@ -0,0 +1,85 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPILINUX_PHONET_H
+#define _UAPILINUX_PHONET_H
+#include <linux/types.h>
+#include <linux/socket.h>
+#define PN_PROTO_TRANSPORT 0
+#define PN_PROTO_PHONET 1
+#define PN_PROTO_PIPE 2
+#define PHONET_NPROTO 3
+#define PNPIPE_ENCAP 1
+#define PNPIPE_IFINDEX 2
+#define PNPIPE_HANDLE 3
+#define PNPIPE_INITSTATE 4
+#define PNADDR_ANY 0
+#define PNADDR_BROADCAST 0xFC
+#define PNPORT_RESOURCE_ROUTING 0
+#define PNPIPE_ENCAP_NONE 0
+#define PNPIPE_ENCAP_IP 1
+#define SIOCPNGETOBJECT (SIOCPROTOPRIVATE + 0)
+#define SIOCPNENABLEPIPE (SIOCPROTOPRIVATE + 13)
+#define SIOCPNADDRESOURCE (SIOCPROTOPRIVATE + 14)
+#define SIOCPNDELRESOURCE (SIOCPROTOPRIVATE + 15)
+struct phonethdr {
+  __u8 pn_rdev;
+  __u8 pn_sdev;
+  __u8 pn_res;
+  __be16 pn_length;
+  __u8 pn_robj;
+  __u8 pn_sobj;
+} __attribute__((packed));
+struct phonetmsg {
+  __u8 pn_trans_id;
+  __u8 pn_msg_id;
+  union {
+    struct {
+      __u8 pn_submsg_id;
+      __u8 pn_data[5];
+    } base;
+    struct {
+      __u16 pn_e_res_id;
+      __u8 pn_e_submsg_id;
+      __u8 pn_e_data[3];
+    } ext;
+  } pn_msg_u;
+};
+#define PN_COMMON_MESSAGE 0xF0
+#define PN_COMMGR 0x10
+#define PN_PREFIX 0xE0
+#define pn_submsg_id pn_msg_u.base.pn_submsg_id
+#define pn_e_submsg_id pn_msg_u.ext.pn_e_submsg_id
+#define pn_e_res_id pn_msg_u.ext.pn_e_res_id
+#define pn_data pn_msg_u.base.pn_data
+#define pn_e_data pn_msg_u.ext.pn_e_data
+#define PN_COMM_SERVICE_NOT_IDENTIFIED_RESP 0x01
+#define PN_COMM_ISA_ENTITY_NOT_REACHABLE_RESP 0x14
+#define pn_orig_msg_id pn_data[0]
+#define pn_status pn_data[1]
+#define pn_e_orig_msg_id pn_e_data[0]
+#define pn_e_status pn_e_data[1]
+struct sockaddr_pn {
+  __kernel_sa_family_t spn_family;
+  __u8 spn_obj;
+  __u8 spn_dev;
+  __u8 spn_resource;
+  __u8 spn_zero[sizeof(struct sockaddr) - sizeof(__kernel_sa_family_t) - 3];
+} __attribute__((packed));
+#define PN_DEV_PC 0x10
+#endif
diff --git a/i686-linux-musl/include/linux/pidfd.h b/i686-linux-musl/include/linux/pidfd.h
new file mode 100644
index 0000000..cd60118
--- /dev/null
+++ b/i686-linux-musl/include/linux/pidfd.h
@@ -0,0 +1,24 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_PIDFD_H
+#define _UAPI_LINUX_PIDFD_H
+#include <linux/types.h>
+#include <linux/fcntl.h>
+#define PIDFD_NONBLOCK O_NONBLOCK
+#endif
diff --git a/i686-linux-musl/include/linux/pkt_cls.h b/i686-linux-musl/include/linux/pkt_cls.h
new file mode 100644
index 0000000..4907a78
--- /dev/null
+++ b/i686-linux-musl/include/linux/pkt_cls.h
@@ -0,0 +1,586 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_PKT_CLS_H
+#define __LINUX_PKT_CLS_H
+#include <linux/types.h>
+#include <linux/pkt_sched.h>
+#define TC_COOKIE_MAX_SIZE 16
+enum {
+  TCA_ACT_UNSPEC,
+  TCA_ACT_KIND,
+  TCA_ACT_OPTIONS,
+  TCA_ACT_INDEX,
+  TCA_ACT_STATS,
+  TCA_ACT_PAD,
+  TCA_ACT_COOKIE,
+  TCA_ACT_FLAGS,
+  TCA_ACT_HW_STATS,
+  TCA_ACT_USED_HW_STATS,
+  __TCA_ACT_MAX
+};
+#define TCA_ACT_FLAGS_NO_PERCPU_STATS 1
+#define TCA_ACT_HW_STATS_IMMEDIATE (1 << 0)
+#define TCA_ACT_HW_STATS_DELAYED (1 << 1)
+#define TCA_ACT_MAX __TCA_ACT_MAX
+#define TCA_OLD_COMPAT (TCA_ACT_MAX + 1)
+#define TCA_ACT_MAX_PRIO 32
+#define TCA_ACT_BIND 1
+#define TCA_ACT_NOBIND 0
+#define TCA_ACT_UNBIND 1
+#define TCA_ACT_NOUNBIND 0
+#define TCA_ACT_REPLACE 1
+#define TCA_ACT_NOREPLACE 0
+#define TC_ACT_UNSPEC (- 1)
+#define TC_ACT_OK 0
+#define TC_ACT_RECLASSIFY 1
+#define TC_ACT_SHOT 2
+#define TC_ACT_PIPE 3
+#define TC_ACT_STOLEN 4
+#define TC_ACT_QUEUED 5
+#define TC_ACT_REPEAT 6
+#define TC_ACT_REDIRECT 7
+#define TC_ACT_TRAP 8
+#define TC_ACT_VALUE_MAX TC_ACT_TRAP
+#define __TC_ACT_EXT_SHIFT 28
+#define __TC_ACT_EXT(local) ((local) << __TC_ACT_EXT_SHIFT)
+#define TC_ACT_EXT_VAL_MASK ((1 << __TC_ACT_EXT_SHIFT) - 1)
+#define TC_ACT_EXT_OPCODE(combined) ((combined) & (~TC_ACT_EXT_VAL_MASK))
+#define TC_ACT_EXT_CMP(combined,opcode) (TC_ACT_EXT_OPCODE(combined) == opcode)
+#define TC_ACT_JUMP __TC_ACT_EXT(1)
+#define TC_ACT_GOTO_CHAIN __TC_ACT_EXT(2)
+#define TC_ACT_EXT_OPCODE_MAX TC_ACT_GOTO_CHAIN
+#define TCA_ACT_GACT 5
+#define TCA_ACT_IPT 6
+#define TCA_ACT_PEDIT 7
+#define TCA_ACT_MIRRED 8
+#define TCA_ACT_NAT 9
+#define TCA_ACT_XT 10
+#define TCA_ACT_SKBEDIT 11
+#define TCA_ACT_VLAN 12
+#define TCA_ACT_BPF 13
+#define TCA_ACT_CONNMARK 14
+#define TCA_ACT_SKBMOD 15
+#define TCA_ACT_CSUM 16
+#define TCA_ACT_TUNNEL_KEY 17
+#define TCA_ACT_SIMP 22
+#define TCA_ACT_IFE 25
+#define TCA_ACT_SAMPLE 26
+enum tca_id {
+  TCA_ID_UNSPEC = 0,
+  TCA_ID_POLICE = 1,
+  TCA_ID_GACT = TCA_ACT_GACT,
+  TCA_ID_IPT = TCA_ACT_IPT,
+  TCA_ID_PEDIT = TCA_ACT_PEDIT,
+  TCA_ID_MIRRED = TCA_ACT_MIRRED,
+  TCA_ID_NAT = TCA_ACT_NAT,
+  TCA_ID_XT = TCA_ACT_XT,
+  TCA_ID_SKBEDIT = TCA_ACT_SKBEDIT,
+  TCA_ID_VLAN = TCA_ACT_VLAN,
+  TCA_ID_BPF = TCA_ACT_BPF,
+  TCA_ID_CONNMARK = TCA_ACT_CONNMARK,
+  TCA_ID_SKBMOD = TCA_ACT_SKBMOD,
+  TCA_ID_CSUM = TCA_ACT_CSUM,
+  TCA_ID_TUNNEL_KEY = TCA_ACT_TUNNEL_KEY,
+  TCA_ID_SIMP = TCA_ACT_SIMP,
+  TCA_ID_IFE = TCA_ACT_IFE,
+  TCA_ID_SAMPLE = TCA_ACT_SAMPLE,
+  TCA_ID_CTINFO,
+  TCA_ID_MPLS,
+  TCA_ID_CT,
+  TCA_ID_GATE,
+  __TCA_ID_MAX = 255
+};
+#define TCA_ID_MAX __TCA_ID_MAX
+struct tc_police {
+  __u32 index;
+  int action;
+#define TC_POLICE_UNSPEC TC_ACT_UNSPEC
+#define TC_POLICE_OK TC_ACT_OK
+#define TC_POLICE_RECLASSIFY TC_ACT_RECLASSIFY
+#define TC_POLICE_SHOT TC_ACT_SHOT
+#define TC_POLICE_PIPE TC_ACT_PIPE
+  __u32 limit;
+  __u32 burst;
+  __u32 mtu;
+  struct tc_ratespec rate;
+  struct tc_ratespec peakrate;
+  int refcnt;
+  int bindcnt;
+  __u32 capab;
+};
+struct tcf_t {
+  __u64 install;
+  __u64 lastuse;
+  __u64 expires;
+  __u64 firstuse;
+};
+struct tc_cnt {
+  int refcnt;
+  int bindcnt;
+};
+#define tc_gen __u32 index; __u32 capab; int action; int refcnt; int bindcnt
+enum {
+  TCA_POLICE_UNSPEC,
+  TCA_POLICE_TBF,
+  TCA_POLICE_RATE,
+  TCA_POLICE_PEAKRATE,
+  TCA_POLICE_AVRATE,
+  TCA_POLICE_RESULT,
+  TCA_POLICE_TM,
+  TCA_POLICE_PAD,
+  TCA_POLICE_RATE64,
+  TCA_POLICE_PEAKRATE64,
+  TCA_POLICE_PKTRATE64,
+  TCA_POLICE_PKTBURST64,
+  __TCA_POLICE_MAX
+#define TCA_POLICE_RESULT TCA_POLICE_RESULT
+};
+#define TCA_POLICE_MAX (__TCA_POLICE_MAX - 1)
+#define TCA_CLS_FLAGS_SKIP_HW (1 << 0)
+#define TCA_CLS_FLAGS_SKIP_SW (1 << 1)
+#define TCA_CLS_FLAGS_IN_HW (1 << 2)
+#define TCA_CLS_FLAGS_NOT_IN_HW (1 << 3)
+#define TCA_CLS_FLAGS_VERBOSE (1 << 4)
+#define TC_U32_HTID(h) ((h) & 0xFFF00000)
+#define TC_U32_USERHTID(h) (TC_U32_HTID(h) >> 20)
+#define TC_U32_HASH(h) (((h) >> 12) & 0xFF)
+#define TC_U32_NODE(h) ((h) & 0xFFF)
+#define TC_U32_KEY(h) ((h) & 0xFFFFF)
+#define TC_U32_UNSPEC 0
+#define TC_U32_ROOT (0xFFF00000)
+enum {
+  TCA_U32_UNSPEC,
+  TCA_U32_CLASSID,
+  TCA_U32_HASH,
+  TCA_U32_LINK,
+  TCA_U32_DIVISOR,
+  TCA_U32_SEL,
+  TCA_U32_POLICE,
+  TCA_U32_ACT,
+  TCA_U32_INDEV,
+  TCA_U32_PCNT,
+  TCA_U32_MARK,
+  TCA_U32_FLAGS,
+  TCA_U32_PAD,
+  __TCA_U32_MAX
+};
+#define TCA_U32_MAX (__TCA_U32_MAX - 1)
+struct tc_u32_key {
+  __be32 mask;
+  __be32 val;
+  int off;
+  int offmask;
+};
+struct tc_u32_sel {
+  unsigned char flags;
+  unsigned char offshift;
+  unsigned char nkeys;
+  __be16 offmask;
+  __u16 off;
+  short offoff;
+  short hoff;
+  __be32 hmask;
+  struct tc_u32_key keys[0];
+};
+struct tc_u32_mark {
+  __u32 val;
+  __u32 mask;
+  __u32 success;
+};
+struct tc_u32_pcnt {
+  __u64 rcnt;
+  __u64 rhit;
+  __u64 kcnts[0];
+};
+#define TC_U32_TERMINAL 1
+#define TC_U32_OFFSET 2
+#define TC_U32_VAROFFSET 4
+#define TC_U32_EAT 8
+#define TC_U32_MAXDEPTH 8
+enum {
+  TCA_RSVP_UNSPEC,
+  TCA_RSVP_CLASSID,
+  TCA_RSVP_DST,
+  TCA_RSVP_SRC,
+  TCA_RSVP_PINFO,
+  TCA_RSVP_POLICE,
+  TCA_RSVP_ACT,
+  __TCA_RSVP_MAX
+};
+#define TCA_RSVP_MAX (__TCA_RSVP_MAX - 1)
+struct tc_rsvp_gpi {
+  __u32 key;
+  __u32 mask;
+  int offset;
+};
+struct tc_rsvp_pinfo {
+  struct tc_rsvp_gpi dpi;
+  struct tc_rsvp_gpi spi;
+  __u8 protocol;
+  __u8 tunnelid;
+  __u8 tunnelhdr;
+  __u8 pad;
+};
+enum {
+  TCA_ROUTE4_UNSPEC,
+  TCA_ROUTE4_CLASSID,
+  TCA_ROUTE4_TO,
+  TCA_ROUTE4_FROM,
+  TCA_ROUTE4_IIF,
+  TCA_ROUTE4_POLICE,
+  TCA_ROUTE4_ACT,
+  __TCA_ROUTE4_MAX
+};
+#define TCA_ROUTE4_MAX (__TCA_ROUTE4_MAX - 1)
+enum {
+  TCA_FW_UNSPEC,
+  TCA_FW_CLASSID,
+  TCA_FW_POLICE,
+  TCA_FW_INDEV,
+  TCA_FW_ACT,
+  TCA_FW_MASK,
+  __TCA_FW_MAX
+};
+#define TCA_FW_MAX (__TCA_FW_MAX - 1)
+enum {
+  TCA_TCINDEX_UNSPEC,
+  TCA_TCINDEX_HASH,
+  TCA_TCINDEX_MASK,
+  TCA_TCINDEX_SHIFT,
+  TCA_TCINDEX_FALL_THROUGH,
+  TCA_TCINDEX_CLASSID,
+  TCA_TCINDEX_POLICE,
+  TCA_TCINDEX_ACT,
+  __TCA_TCINDEX_MAX
+};
+#define TCA_TCINDEX_MAX (__TCA_TCINDEX_MAX - 1)
+enum {
+  FLOW_KEY_SRC,
+  FLOW_KEY_DST,
+  FLOW_KEY_PROTO,
+  FLOW_KEY_PROTO_SRC,
+  FLOW_KEY_PROTO_DST,
+  FLOW_KEY_IIF,
+  FLOW_KEY_PRIORITY,
+  FLOW_KEY_MARK,
+  FLOW_KEY_NFCT,
+  FLOW_KEY_NFCT_SRC,
+  FLOW_KEY_NFCT_DST,
+  FLOW_KEY_NFCT_PROTO_SRC,
+  FLOW_KEY_NFCT_PROTO_DST,
+  FLOW_KEY_RTCLASSID,
+  FLOW_KEY_SKUID,
+  FLOW_KEY_SKGID,
+  FLOW_KEY_VLAN_TAG,
+  FLOW_KEY_RXHASH,
+  __FLOW_KEY_MAX,
+};
+#define FLOW_KEY_MAX (__FLOW_KEY_MAX - 1)
+enum {
+  FLOW_MODE_MAP,
+  FLOW_MODE_HASH,
+};
+enum {
+  TCA_FLOW_UNSPEC,
+  TCA_FLOW_KEYS,
+  TCA_FLOW_MODE,
+  TCA_FLOW_BASECLASS,
+  TCA_FLOW_RSHIFT,
+  TCA_FLOW_ADDEND,
+  TCA_FLOW_MASK,
+  TCA_FLOW_XOR,
+  TCA_FLOW_DIVISOR,
+  TCA_FLOW_ACT,
+  TCA_FLOW_POLICE,
+  TCA_FLOW_EMATCHES,
+  TCA_FLOW_PERTURB,
+  __TCA_FLOW_MAX
+};
+#define TCA_FLOW_MAX (__TCA_FLOW_MAX - 1)
+struct tc_basic_pcnt {
+  __u64 rcnt;
+  __u64 rhit;
+};
+enum {
+  TCA_BASIC_UNSPEC,
+  TCA_BASIC_CLASSID,
+  TCA_BASIC_EMATCHES,
+  TCA_BASIC_ACT,
+  TCA_BASIC_POLICE,
+  TCA_BASIC_PCNT,
+  TCA_BASIC_PAD,
+  __TCA_BASIC_MAX
+};
+#define TCA_BASIC_MAX (__TCA_BASIC_MAX - 1)
+enum {
+  TCA_CGROUP_UNSPEC,
+  TCA_CGROUP_ACT,
+  TCA_CGROUP_POLICE,
+  TCA_CGROUP_EMATCHES,
+  __TCA_CGROUP_MAX,
+};
+#define TCA_CGROUP_MAX (__TCA_CGROUP_MAX - 1)
+#define TCA_BPF_FLAG_ACT_DIRECT (1 << 0)
+enum {
+  TCA_BPF_UNSPEC,
+  TCA_BPF_ACT,
+  TCA_BPF_POLICE,
+  TCA_BPF_CLASSID,
+  TCA_BPF_OPS_LEN,
+  TCA_BPF_OPS,
+  TCA_BPF_FD,
+  TCA_BPF_NAME,
+  TCA_BPF_FLAGS,
+  TCA_BPF_FLAGS_GEN,
+  TCA_BPF_TAG,
+  TCA_BPF_ID,
+  __TCA_BPF_MAX,
+};
+#define TCA_BPF_MAX (__TCA_BPF_MAX - 1)
+enum {
+  TCA_FLOWER_UNSPEC,
+  TCA_FLOWER_CLASSID,
+  TCA_FLOWER_INDEV,
+  TCA_FLOWER_ACT,
+  TCA_FLOWER_KEY_ETH_DST,
+  TCA_FLOWER_KEY_ETH_DST_MASK,
+  TCA_FLOWER_KEY_ETH_SRC,
+  TCA_FLOWER_KEY_ETH_SRC_MASK,
+  TCA_FLOWER_KEY_ETH_TYPE,
+  TCA_FLOWER_KEY_IP_PROTO,
+  TCA_FLOWER_KEY_IPV4_SRC,
+  TCA_FLOWER_KEY_IPV4_SRC_MASK,
+  TCA_FLOWER_KEY_IPV4_DST,
+  TCA_FLOWER_KEY_IPV4_DST_MASK,
+  TCA_FLOWER_KEY_IPV6_SRC,
+  TCA_FLOWER_KEY_IPV6_SRC_MASK,
+  TCA_FLOWER_KEY_IPV6_DST,
+  TCA_FLOWER_KEY_IPV6_DST_MASK,
+  TCA_FLOWER_KEY_TCP_SRC,
+  TCA_FLOWER_KEY_TCP_DST,
+  TCA_FLOWER_KEY_UDP_SRC,
+  TCA_FLOWER_KEY_UDP_DST,
+  TCA_FLOWER_FLAGS,
+  TCA_FLOWER_KEY_VLAN_ID,
+  TCA_FLOWER_KEY_VLAN_PRIO,
+  TCA_FLOWER_KEY_VLAN_ETH_TYPE,
+  TCA_FLOWER_KEY_ENC_KEY_ID,
+  TCA_FLOWER_KEY_ENC_IPV4_SRC,
+  TCA_FLOWER_KEY_ENC_IPV4_SRC_MASK,
+  TCA_FLOWER_KEY_ENC_IPV4_DST,
+  TCA_FLOWER_KEY_ENC_IPV4_DST_MASK,
+  TCA_FLOWER_KEY_ENC_IPV6_SRC,
+  TCA_FLOWER_KEY_ENC_IPV6_SRC_MASK,
+  TCA_FLOWER_KEY_ENC_IPV6_DST,
+  TCA_FLOWER_KEY_ENC_IPV6_DST_MASK,
+  TCA_FLOWER_KEY_TCP_SRC_MASK,
+  TCA_FLOWER_KEY_TCP_DST_MASK,
+  TCA_FLOWER_KEY_UDP_SRC_MASK,
+  TCA_FLOWER_KEY_UDP_DST_MASK,
+  TCA_FLOWER_KEY_SCTP_SRC_MASK,
+  TCA_FLOWER_KEY_SCTP_DST_MASK,
+  TCA_FLOWER_KEY_SCTP_SRC,
+  TCA_FLOWER_KEY_SCTP_DST,
+  TCA_FLOWER_KEY_ENC_UDP_SRC_PORT,
+  TCA_FLOWER_KEY_ENC_UDP_SRC_PORT_MASK,
+  TCA_FLOWER_KEY_ENC_UDP_DST_PORT,
+  TCA_FLOWER_KEY_ENC_UDP_DST_PORT_MASK,
+  TCA_FLOWER_KEY_FLAGS,
+  TCA_FLOWER_KEY_FLAGS_MASK,
+  TCA_FLOWER_KEY_ICMPV4_CODE,
+  TCA_FLOWER_KEY_ICMPV4_CODE_MASK,
+  TCA_FLOWER_KEY_ICMPV4_TYPE,
+  TCA_FLOWER_KEY_ICMPV4_TYPE_MASK,
+  TCA_FLOWER_KEY_ICMPV6_CODE,
+  TCA_FLOWER_KEY_ICMPV6_CODE_MASK,
+  TCA_FLOWER_KEY_ICMPV6_TYPE,
+  TCA_FLOWER_KEY_ICMPV6_TYPE_MASK,
+  TCA_FLOWER_KEY_ARP_SIP,
+  TCA_FLOWER_KEY_ARP_SIP_MASK,
+  TCA_FLOWER_KEY_ARP_TIP,
+  TCA_FLOWER_KEY_ARP_TIP_MASK,
+  TCA_FLOWER_KEY_ARP_OP,
+  TCA_FLOWER_KEY_ARP_OP_MASK,
+  TCA_FLOWER_KEY_ARP_SHA,
+  TCA_FLOWER_KEY_ARP_SHA_MASK,
+  TCA_FLOWER_KEY_ARP_THA,
+  TCA_FLOWER_KEY_ARP_THA_MASK,
+  TCA_FLOWER_KEY_MPLS_TTL,
+  TCA_FLOWER_KEY_MPLS_BOS,
+  TCA_FLOWER_KEY_MPLS_TC,
+  TCA_FLOWER_KEY_MPLS_LABEL,
+  TCA_FLOWER_KEY_TCP_FLAGS,
+  TCA_FLOWER_KEY_TCP_FLAGS_MASK,
+  TCA_FLOWER_KEY_IP_TOS,
+  TCA_FLOWER_KEY_IP_TOS_MASK,
+  TCA_FLOWER_KEY_IP_TTL,
+  TCA_FLOWER_KEY_IP_TTL_MASK,
+  TCA_FLOWER_KEY_CVLAN_ID,
+  TCA_FLOWER_KEY_CVLAN_PRIO,
+  TCA_FLOWER_KEY_CVLAN_ETH_TYPE,
+  TCA_FLOWER_KEY_ENC_IP_TOS,
+  TCA_FLOWER_KEY_ENC_IP_TOS_MASK,
+  TCA_FLOWER_KEY_ENC_IP_TTL,
+  TCA_FLOWER_KEY_ENC_IP_TTL_MASK,
+  TCA_FLOWER_KEY_ENC_OPTS,
+  TCA_FLOWER_KEY_ENC_OPTS_MASK,
+  TCA_FLOWER_IN_HW_COUNT,
+  TCA_FLOWER_KEY_PORT_SRC_MIN,
+  TCA_FLOWER_KEY_PORT_SRC_MAX,
+  TCA_FLOWER_KEY_PORT_DST_MIN,
+  TCA_FLOWER_KEY_PORT_DST_MAX,
+  TCA_FLOWER_KEY_CT_STATE,
+  TCA_FLOWER_KEY_CT_STATE_MASK,
+  TCA_FLOWER_KEY_CT_ZONE,
+  TCA_FLOWER_KEY_CT_ZONE_MASK,
+  TCA_FLOWER_KEY_CT_MARK,
+  TCA_FLOWER_KEY_CT_MARK_MASK,
+  TCA_FLOWER_KEY_CT_LABELS,
+  TCA_FLOWER_KEY_CT_LABELS_MASK,
+  TCA_FLOWER_KEY_MPLS_OPTS,
+  TCA_FLOWER_KEY_HASH,
+  TCA_FLOWER_KEY_HASH_MASK,
+  __TCA_FLOWER_MAX,
+};
+#define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
+enum {
+  TCA_FLOWER_KEY_CT_FLAGS_NEW = 1 << 0,
+  TCA_FLOWER_KEY_CT_FLAGS_ESTABLISHED = 1 << 1,
+  TCA_FLOWER_KEY_CT_FLAGS_RELATED = 1 << 2,
+  TCA_FLOWER_KEY_CT_FLAGS_TRACKED = 1 << 3,
+  TCA_FLOWER_KEY_CT_FLAGS_INVALID = 1 << 4,
+  TCA_FLOWER_KEY_CT_FLAGS_REPLY = 1 << 5,
+  __TCA_FLOWER_KEY_CT_FLAGS_MAX,
+};
+enum {
+  TCA_FLOWER_KEY_ENC_OPTS_UNSPEC,
+  TCA_FLOWER_KEY_ENC_OPTS_GENEVE,
+  TCA_FLOWER_KEY_ENC_OPTS_VXLAN,
+  TCA_FLOWER_KEY_ENC_OPTS_ERSPAN,
+  __TCA_FLOWER_KEY_ENC_OPTS_MAX,
+};
+#define TCA_FLOWER_KEY_ENC_OPTS_MAX (__TCA_FLOWER_KEY_ENC_OPTS_MAX - 1)
+enum {
+  TCA_FLOWER_KEY_ENC_OPT_GENEVE_UNSPEC,
+  TCA_FLOWER_KEY_ENC_OPT_GENEVE_CLASS,
+  TCA_FLOWER_KEY_ENC_OPT_GENEVE_TYPE,
+  TCA_FLOWER_KEY_ENC_OPT_GENEVE_DATA,
+  __TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX,
+};
+#define TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX (__TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX - 1)
+enum {
+  TCA_FLOWER_KEY_ENC_OPT_VXLAN_UNSPEC,
+  TCA_FLOWER_KEY_ENC_OPT_VXLAN_GBP,
+  __TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX,
+};
+#define TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX (__TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX - 1)
+enum {
+  TCA_FLOWER_KEY_ENC_OPT_ERSPAN_UNSPEC,
+  TCA_FLOWER_KEY_ENC_OPT_ERSPAN_VER,
+  TCA_FLOWER_KEY_ENC_OPT_ERSPAN_INDEX,
+  TCA_FLOWER_KEY_ENC_OPT_ERSPAN_DIR,
+  TCA_FLOWER_KEY_ENC_OPT_ERSPAN_HWID,
+  __TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX,
+};
+#define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX (__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1)
+enum {
+  TCA_FLOWER_KEY_MPLS_OPTS_UNSPEC,
+  TCA_FLOWER_KEY_MPLS_OPTS_LSE,
+  __TCA_FLOWER_KEY_MPLS_OPTS_MAX,
+};
+#define TCA_FLOWER_KEY_MPLS_OPTS_MAX (__TCA_FLOWER_KEY_MPLS_OPTS_MAX - 1)
+enum {
+  TCA_FLOWER_KEY_MPLS_OPT_LSE_UNSPEC,
+  TCA_FLOWER_KEY_MPLS_OPT_LSE_DEPTH,
+  TCA_FLOWER_KEY_MPLS_OPT_LSE_TTL,
+  TCA_FLOWER_KEY_MPLS_OPT_LSE_BOS,
+  TCA_FLOWER_KEY_MPLS_OPT_LSE_TC,
+  TCA_FLOWER_KEY_MPLS_OPT_LSE_LABEL,
+  __TCA_FLOWER_KEY_MPLS_OPT_LSE_MAX,
+};
+#define TCA_FLOWER_KEY_MPLS_OPT_LSE_MAX (__TCA_FLOWER_KEY_MPLS_OPT_LSE_MAX - 1)
+enum {
+  TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
+  TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1),
+};
+#define TCA_FLOWER_MASK_FLAGS_RANGE (1 << 0)
+struct tc_matchall_pcnt {
+  __u64 rhit;
+};
+enum {
+  TCA_MATCHALL_UNSPEC,
+  TCA_MATCHALL_CLASSID,
+  TCA_MATCHALL_ACT,
+  TCA_MATCHALL_FLAGS,
+  TCA_MATCHALL_PCNT,
+  TCA_MATCHALL_PAD,
+  __TCA_MATCHALL_MAX,
+};
+#define TCA_MATCHALL_MAX (__TCA_MATCHALL_MAX - 1)
+struct tcf_ematch_tree_hdr {
+  __u16 nmatches;
+  __u16 progid;
+};
+enum {
+  TCA_EMATCH_TREE_UNSPEC,
+  TCA_EMATCH_TREE_HDR,
+  TCA_EMATCH_TREE_LIST,
+  __TCA_EMATCH_TREE_MAX
+};
+#define TCA_EMATCH_TREE_MAX (__TCA_EMATCH_TREE_MAX - 1)
+struct tcf_ematch_hdr {
+  __u16 matchid;
+  __u16 kind;
+  __u16 flags;
+  __u16 pad;
+};
+#define TCF_EM_REL_END 0
+#define TCF_EM_REL_AND (1 << 0)
+#define TCF_EM_REL_OR (1 << 1)
+#define TCF_EM_INVERT (1 << 2)
+#define TCF_EM_SIMPLE (1 << 3)
+#define TCF_EM_REL_MASK 3
+#define TCF_EM_REL_VALID(v) (((v) & TCF_EM_REL_MASK) != TCF_EM_REL_MASK)
+enum {
+  TCF_LAYER_LINK,
+  TCF_LAYER_NETWORK,
+  TCF_LAYER_TRANSPORT,
+  __TCF_LAYER_MAX
+};
+#define TCF_LAYER_MAX (__TCF_LAYER_MAX - 1)
+#define TCF_EM_CONTAINER 0
+#define TCF_EM_CMP 1
+#define TCF_EM_NBYTE 2
+#define TCF_EM_U32 3
+#define TCF_EM_META 4
+#define TCF_EM_TEXT 5
+#define TCF_EM_VLAN 6
+#define TCF_EM_CANID 7
+#define TCF_EM_IPSET 8
+#define TCF_EM_IPT 9
+#define TCF_EM_MAX 9
+enum {
+  TCF_EM_PROG_TC
+};
+enum {
+  TCF_EM_OPND_EQ,
+  TCF_EM_OPND_GT,
+  TCF_EM_OPND_LT
+};
+#endif
diff --git a/i686-linux-musl/include/linux/pkt_sched.h b/i686-linux-musl/include/linux/pkt_sched.h
new file mode 100644
index 0000000..e298b74
--- /dev/null
+++ b/i686-linux-musl/include/linux/pkt_sched.h
@@ -0,0 +1,954 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_PKT_SCHED_H
+#define __LINUX_PKT_SCHED_H
+#include <linux/const.h>
+#include <linux/types.h>
+#define TC_PRIO_BESTEFFORT 0
+#define TC_PRIO_FILLER 1
+#define TC_PRIO_BULK 2
+#define TC_PRIO_INTERACTIVE_BULK 4
+#define TC_PRIO_INTERACTIVE 6
+#define TC_PRIO_CONTROL 7
+#define TC_PRIO_MAX 15
+struct tc_stats {
+  __u64 bytes;
+  __u32 packets;
+  __u32 drops;
+  __u32 overlimits;
+  __u32 bps;
+  __u32 pps;
+  __u32 qlen;
+  __u32 backlog;
+};
+struct tc_estimator {
+  signed char interval;
+  unsigned char ewma_log;
+};
+#define TC_H_MAJ_MASK (0xFFFF0000U)
+#define TC_H_MIN_MASK (0x0000FFFFU)
+#define TC_H_MAJ(h) ((h) & TC_H_MAJ_MASK)
+#define TC_H_MIN(h) ((h) & TC_H_MIN_MASK)
+#define TC_H_MAKE(maj,min) (((maj) & TC_H_MAJ_MASK) | ((min) & TC_H_MIN_MASK))
+#define TC_H_UNSPEC (0U)
+#define TC_H_ROOT (0xFFFFFFFFU)
+#define TC_H_INGRESS (0xFFFFFFF1U)
+#define TC_H_CLSACT TC_H_INGRESS
+#define TC_H_MIN_PRIORITY 0xFFE0U
+#define TC_H_MIN_INGRESS 0xFFF2U
+#define TC_H_MIN_EGRESS 0xFFF3U
+enum tc_link_layer {
+  TC_LINKLAYER_UNAWARE,
+  TC_LINKLAYER_ETHERNET,
+  TC_LINKLAYER_ATM,
+};
+#define TC_LINKLAYER_MASK 0x0F
+struct tc_ratespec {
+  unsigned char cell_log;
+  __u8 linklayer;
+  unsigned short overhead;
+  short cell_align;
+  unsigned short mpu;
+  __u32 rate;
+};
+#define TC_RTAB_SIZE 1024
+struct tc_sizespec {
+  unsigned char cell_log;
+  unsigned char size_log;
+  short cell_align;
+  int overhead;
+  unsigned int linklayer;
+  unsigned int mpu;
+  unsigned int mtu;
+  unsigned int tsize;
+};
+enum {
+  TCA_STAB_UNSPEC,
+  TCA_STAB_BASE,
+  TCA_STAB_DATA,
+  __TCA_STAB_MAX
+};
+#define TCA_STAB_MAX (__TCA_STAB_MAX - 1)
+struct tc_fifo_qopt {
+  __u32 limit;
+};
+#define SKBPRIO_MAX_PRIORITY 64
+struct tc_skbprio_qopt {
+  __u32 limit;
+};
+#define TCQ_PRIO_BANDS 16
+#define TCQ_MIN_PRIO_BANDS 2
+struct tc_prio_qopt {
+  int bands;
+  __u8 priomap[TC_PRIO_MAX + 1];
+};
+struct tc_multiq_qopt {
+  __u16 bands;
+  __u16 max_bands;
+};
+#define TCQ_PLUG_BUFFER 0
+#define TCQ_PLUG_RELEASE_ONE 1
+#define TCQ_PLUG_RELEASE_INDEFINITE 2
+#define TCQ_PLUG_LIMIT 3
+struct tc_plug_qopt {
+  int action;
+  __u32 limit;
+};
+struct tc_tbf_qopt {
+  struct tc_ratespec rate;
+  struct tc_ratespec peakrate;
+  __u32 limit;
+  __u32 buffer;
+  __u32 mtu;
+};
+enum {
+  TCA_TBF_UNSPEC,
+  TCA_TBF_PARMS,
+  TCA_TBF_RTAB,
+  TCA_TBF_PTAB,
+  TCA_TBF_RATE64,
+  TCA_TBF_PRATE64,
+  TCA_TBF_BURST,
+  TCA_TBF_PBURST,
+  TCA_TBF_PAD,
+  __TCA_TBF_MAX,
+};
+#define TCA_TBF_MAX (__TCA_TBF_MAX - 1)
+struct tc_sfq_qopt {
+  unsigned quantum;
+  int perturb_period;
+  __u32 limit;
+  unsigned divisor;
+  unsigned flows;
+};
+struct tc_sfqred_stats {
+  __u32 prob_drop;
+  __u32 forced_drop;
+  __u32 prob_mark;
+  __u32 forced_mark;
+  __u32 prob_mark_head;
+  __u32 forced_mark_head;
+};
+struct tc_sfq_qopt_v1 {
+  struct tc_sfq_qopt v0;
+  unsigned int depth;
+  unsigned int headdrop;
+  __u32 limit;
+  __u32 qth_min;
+  __u32 qth_max;
+  unsigned char Wlog;
+  unsigned char Plog;
+  unsigned char Scell_log;
+  unsigned char flags;
+  __u32 max_P;
+  struct tc_sfqred_stats stats;
+};
+struct tc_sfq_xstats {
+  __s32 allot;
+};
+enum {
+  TCA_RED_UNSPEC,
+  TCA_RED_PARMS,
+  TCA_RED_STAB,
+  TCA_RED_MAX_P,
+  TCA_RED_FLAGS,
+  TCA_RED_EARLY_DROP_BLOCK,
+  TCA_RED_MARK_BLOCK,
+  __TCA_RED_MAX,
+};
+#define TCA_RED_MAX (__TCA_RED_MAX - 1)
+struct tc_red_qopt {
+  __u32 limit;
+  __u32 qth_min;
+  __u32 qth_max;
+  unsigned char Wlog;
+  unsigned char Plog;
+  unsigned char Scell_log;
+  unsigned char flags;
+#define TC_RED_ECN 1
+#define TC_RED_HARDDROP 2
+#define TC_RED_ADAPTATIVE 4
+#define TC_RED_NODROP 8
+};
+#define TC_RED_HISTORIC_FLAGS (TC_RED_ECN | TC_RED_HARDDROP | TC_RED_ADAPTATIVE)
+struct tc_red_xstats {
+  __u32 early;
+  __u32 pdrop;
+  __u32 other;
+  __u32 marked;
+};
+#define MAX_DPs 16
+enum {
+  TCA_GRED_UNSPEC,
+  TCA_GRED_PARMS,
+  TCA_GRED_STAB,
+  TCA_GRED_DPS,
+  TCA_GRED_MAX_P,
+  TCA_GRED_LIMIT,
+  TCA_GRED_VQ_LIST,
+  __TCA_GRED_MAX,
+};
+#define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
+enum {
+  TCA_GRED_VQ_ENTRY_UNSPEC,
+  TCA_GRED_VQ_ENTRY,
+  __TCA_GRED_VQ_ENTRY_MAX,
+};
+#define TCA_GRED_VQ_ENTRY_MAX (__TCA_GRED_VQ_ENTRY_MAX - 1)
+enum {
+  TCA_GRED_VQ_UNSPEC,
+  TCA_GRED_VQ_PAD,
+  TCA_GRED_VQ_DP,
+  TCA_GRED_VQ_STAT_BYTES,
+  TCA_GRED_VQ_STAT_PACKETS,
+  TCA_GRED_VQ_STAT_BACKLOG,
+  TCA_GRED_VQ_STAT_PROB_DROP,
+  TCA_GRED_VQ_STAT_PROB_MARK,
+  TCA_GRED_VQ_STAT_FORCED_DROP,
+  TCA_GRED_VQ_STAT_FORCED_MARK,
+  TCA_GRED_VQ_STAT_PDROP,
+  TCA_GRED_VQ_STAT_OTHER,
+  TCA_GRED_VQ_FLAGS,
+  __TCA_GRED_VQ_MAX
+};
+#define TCA_GRED_VQ_MAX (__TCA_GRED_VQ_MAX - 1)
+struct tc_gred_qopt {
+  __u32 limit;
+  __u32 qth_min;
+  __u32 qth_max;
+  __u32 DP;
+  __u32 backlog;
+  __u32 qave;
+  __u32 forced;
+  __u32 early;
+  __u32 other;
+  __u32 pdrop;
+  __u8 Wlog;
+  __u8 Plog;
+  __u8 Scell_log;
+  __u8 prio;
+  __u32 packets;
+  __u32 bytesin;
+};
+struct tc_gred_sopt {
+  __u32 DPs;
+  __u32 def_DP;
+  __u8 grio;
+  __u8 flags;
+  __u16 pad1;
+};
+enum {
+  TCA_CHOKE_UNSPEC,
+  TCA_CHOKE_PARMS,
+  TCA_CHOKE_STAB,
+  TCA_CHOKE_MAX_P,
+  __TCA_CHOKE_MAX,
+};
+#define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1)
+struct tc_choke_qopt {
+  __u32 limit;
+  __u32 qth_min;
+  __u32 qth_max;
+  unsigned char Wlog;
+  unsigned char Plog;
+  unsigned char Scell_log;
+  unsigned char flags;
+};
+struct tc_choke_xstats {
+  __u32 early;
+  __u32 pdrop;
+  __u32 other;
+  __u32 marked;
+  __u32 matched;
+};
+#define TC_HTB_NUMPRIO 8
+#define TC_HTB_MAXDEPTH 8
+#define TC_HTB_PROTOVER 3
+struct tc_htb_opt {
+  struct tc_ratespec rate;
+  struct tc_ratespec ceil;
+  __u32 buffer;
+  __u32 cbuffer;
+  __u32 quantum;
+  __u32 level;
+  __u32 prio;
+};
+struct tc_htb_glob {
+  __u32 version;
+  __u32 rate2quantum;
+  __u32 defcls;
+  __u32 debug;
+  __u32 direct_pkts;
+};
+enum {
+  TCA_HTB_UNSPEC,
+  TCA_HTB_PARMS,
+  TCA_HTB_INIT,
+  TCA_HTB_CTAB,
+  TCA_HTB_RTAB,
+  TCA_HTB_DIRECT_QLEN,
+  TCA_HTB_RATE64,
+  TCA_HTB_CEIL64,
+  TCA_HTB_PAD,
+  TCA_HTB_OFFLOAD,
+  __TCA_HTB_MAX,
+};
+#define TCA_HTB_MAX (__TCA_HTB_MAX - 1)
+struct tc_htb_xstats {
+  __u32 lends;
+  __u32 borrows;
+  __u32 giants;
+  __s32 tokens;
+  __s32 ctokens;
+};
+struct tc_hfsc_qopt {
+  __u16 defcls;
+};
+struct tc_service_curve {
+  __u32 m1;
+  __u32 d;
+  __u32 m2;
+};
+struct tc_hfsc_stats {
+  __u64 work;
+  __u64 rtwork;
+  __u32 period;
+  __u32 level;
+};
+enum {
+  TCA_HFSC_UNSPEC,
+  TCA_HFSC_RSC,
+  TCA_HFSC_FSC,
+  TCA_HFSC_USC,
+  __TCA_HFSC_MAX,
+};
+#define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1)
+#define TC_CBQ_MAXPRIO 8
+#define TC_CBQ_MAXLEVEL 8
+#define TC_CBQ_DEF_EWMA 5
+struct tc_cbq_lssopt {
+  unsigned char change;
+  unsigned char flags;
+#define TCF_CBQ_LSS_BOUNDED 1
+#define TCF_CBQ_LSS_ISOLATED 2
+  unsigned char ewma_log;
+  unsigned char level;
+#define TCF_CBQ_LSS_FLAGS 1
+#define TCF_CBQ_LSS_EWMA 2
+#define TCF_CBQ_LSS_MAXIDLE 4
+#define TCF_CBQ_LSS_MINIDLE 8
+#define TCF_CBQ_LSS_OFFTIME 0x10
+#define TCF_CBQ_LSS_AVPKT 0x20
+  __u32 maxidle;
+  __u32 minidle;
+  __u32 offtime;
+  __u32 avpkt;
+};
+struct tc_cbq_wrropt {
+  unsigned char flags;
+  unsigned char priority;
+  unsigned char cpriority;
+  unsigned char __reserved;
+  __u32 allot;
+  __u32 weight;
+};
+struct tc_cbq_ovl {
+  unsigned char strategy;
+#define TC_CBQ_OVL_CLASSIC 0
+#define TC_CBQ_OVL_DELAY 1
+#define TC_CBQ_OVL_LOWPRIO 2
+#define TC_CBQ_OVL_DROP 3
+#define TC_CBQ_OVL_RCLASSIC 4
+  unsigned char priority2;
+  __u16 pad;
+  __u32 penalty;
+};
+struct tc_cbq_police {
+  unsigned char police;
+  unsigned char __res1;
+  unsigned short __res2;
+};
+struct tc_cbq_fopt {
+  __u32 split;
+  __u32 defmap;
+  __u32 defchange;
+};
+struct tc_cbq_xstats {
+  __u32 borrows;
+  __u32 overactions;
+  __s32 avgidle;
+  __s32 undertime;
+};
+enum {
+  TCA_CBQ_UNSPEC,
+  TCA_CBQ_LSSOPT,
+  TCA_CBQ_WRROPT,
+  TCA_CBQ_FOPT,
+  TCA_CBQ_OVL_STRATEGY,
+  TCA_CBQ_RATE,
+  TCA_CBQ_RTAB,
+  TCA_CBQ_POLICE,
+  __TCA_CBQ_MAX,
+};
+#define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1)
+enum {
+  TCA_DSMARK_UNSPEC,
+  TCA_DSMARK_INDICES,
+  TCA_DSMARK_DEFAULT_INDEX,
+  TCA_DSMARK_SET_TC_INDEX,
+  TCA_DSMARK_MASK,
+  TCA_DSMARK_VALUE,
+  __TCA_DSMARK_MAX,
+};
+#define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1)
+enum {
+  TCA_ATM_UNSPEC,
+  TCA_ATM_FD,
+  TCA_ATM_PTR,
+  TCA_ATM_HDR,
+  TCA_ATM_EXCESS,
+  TCA_ATM_ADDR,
+  TCA_ATM_STATE,
+  __TCA_ATM_MAX,
+};
+#define TCA_ATM_MAX (__TCA_ATM_MAX - 1)
+enum {
+  TCA_NETEM_UNSPEC,
+  TCA_NETEM_CORR,
+  TCA_NETEM_DELAY_DIST,
+  TCA_NETEM_REORDER,
+  TCA_NETEM_CORRUPT,
+  TCA_NETEM_LOSS,
+  TCA_NETEM_RATE,
+  TCA_NETEM_ECN,
+  TCA_NETEM_RATE64,
+  TCA_NETEM_PAD,
+  TCA_NETEM_LATENCY64,
+  TCA_NETEM_JITTER64,
+  TCA_NETEM_SLOT,
+  TCA_NETEM_SLOT_DIST,
+  __TCA_NETEM_MAX,
+};
+#define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
+struct tc_netem_qopt {
+  __u32 latency;
+  __u32 limit;
+  __u32 loss;
+  __u32 gap;
+  __u32 duplicate;
+  __u32 jitter;
+};
+struct tc_netem_corr {
+  __u32 delay_corr;
+  __u32 loss_corr;
+  __u32 dup_corr;
+};
+struct tc_netem_reorder {
+  __u32 probability;
+  __u32 correlation;
+};
+struct tc_netem_corrupt {
+  __u32 probability;
+  __u32 correlation;
+};
+struct tc_netem_rate {
+  __u32 rate;
+  __s32 packet_overhead;
+  __u32 cell_size;
+  __s32 cell_overhead;
+};
+struct tc_netem_slot {
+  __s64 min_delay;
+  __s64 max_delay;
+  __s32 max_packets;
+  __s32 max_bytes;
+  __s64 dist_delay;
+  __s64 dist_jitter;
+};
+enum {
+  NETEM_LOSS_UNSPEC,
+  NETEM_LOSS_GI,
+  NETEM_LOSS_GE,
+  __NETEM_LOSS_MAX
+};
+#define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1)
+struct tc_netem_gimodel {
+  __u32 p13;
+  __u32 p31;
+  __u32 p32;
+  __u32 p14;
+  __u32 p23;
+};
+struct tc_netem_gemodel {
+  __u32 p;
+  __u32 r;
+  __u32 h;
+  __u32 k1;
+};
+#define NETEM_DIST_SCALE 8192
+#define NETEM_DIST_MAX 16384
+enum {
+  TCA_DRR_UNSPEC,
+  TCA_DRR_QUANTUM,
+  __TCA_DRR_MAX
+};
+#define TCA_DRR_MAX (__TCA_DRR_MAX - 1)
+struct tc_drr_stats {
+  __u32 deficit;
+};
+#define TC_QOPT_BITMASK 15
+#define TC_QOPT_MAX_QUEUE 16
+enum {
+  TC_MQPRIO_HW_OFFLOAD_NONE,
+  TC_MQPRIO_HW_OFFLOAD_TCS,
+  __TC_MQPRIO_HW_OFFLOAD_MAX
+};
+#define TC_MQPRIO_HW_OFFLOAD_MAX (__TC_MQPRIO_HW_OFFLOAD_MAX - 1)
+enum {
+  TC_MQPRIO_MODE_DCB,
+  TC_MQPRIO_MODE_CHANNEL,
+  __TC_MQPRIO_MODE_MAX
+};
+#define __TC_MQPRIO_MODE_MAX (__TC_MQPRIO_MODE_MAX - 1)
+enum {
+  TC_MQPRIO_SHAPER_DCB,
+  TC_MQPRIO_SHAPER_BW_RATE,
+  __TC_MQPRIO_SHAPER_MAX
+};
+#define __TC_MQPRIO_SHAPER_MAX (__TC_MQPRIO_SHAPER_MAX - 1)
+struct tc_mqprio_qopt {
+  __u8 num_tc;
+  __u8 prio_tc_map[TC_QOPT_BITMASK + 1];
+  __u8 hw;
+  __u16 count[TC_QOPT_MAX_QUEUE];
+  __u16 offset[TC_QOPT_MAX_QUEUE];
+};
+#define TC_MQPRIO_F_MODE 0x1
+#define TC_MQPRIO_F_SHAPER 0x2
+#define TC_MQPRIO_F_MIN_RATE 0x4
+#define TC_MQPRIO_F_MAX_RATE 0x8
+enum {
+  TCA_MQPRIO_UNSPEC,
+  TCA_MQPRIO_MODE,
+  TCA_MQPRIO_SHAPER,
+  TCA_MQPRIO_MIN_RATE64,
+  TCA_MQPRIO_MAX_RATE64,
+  __TCA_MQPRIO_MAX,
+};
+#define TCA_MQPRIO_MAX (__TCA_MQPRIO_MAX - 1)
+enum {
+  TCA_SFB_UNSPEC,
+  TCA_SFB_PARMS,
+  __TCA_SFB_MAX,
+};
+#define TCA_SFB_MAX (__TCA_SFB_MAX - 1)
+struct tc_sfb_qopt {
+  __u32 rehash_interval;
+  __u32 warmup_time;
+  __u32 max;
+  __u32 bin_size;
+  __u32 increment;
+  __u32 decrement;
+  __u32 limit;
+  __u32 penalty_rate;
+  __u32 penalty_burst;
+};
+struct tc_sfb_xstats {
+  __u32 earlydrop;
+  __u32 penaltydrop;
+  __u32 bucketdrop;
+  __u32 queuedrop;
+  __u32 childdrop;
+  __u32 marked;
+  __u32 maxqlen;
+  __u32 maxprob;
+  __u32 avgprob;
+};
+#define SFB_MAX_PROB 0xFFFF
+enum {
+  TCA_QFQ_UNSPEC,
+  TCA_QFQ_WEIGHT,
+  TCA_QFQ_LMAX,
+  __TCA_QFQ_MAX
+};
+#define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1)
+struct tc_qfq_stats {
+  __u32 weight;
+  __u32 lmax;
+};
+enum {
+  TCA_CODEL_UNSPEC,
+  TCA_CODEL_TARGET,
+  TCA_CODEL_LIMIT,
+  TCA_CODEL_INTERVAL,
+  TCA_CODEL_ECN,
+  TCA_CODEL_CE_THRESHOLD,
+  __TCA_CODEL_MAX
+};
+#define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1)
+struct tc_codel_xstats {
+  __u32 maxpacket;
+  __u32 count;
+  __u32 lastcount;
+  __u32 ldelay;
+  __s32 drop_next;
+  __u32 drop_overlimit;
+  __u32 ecn_mark;
+  __u32 dropping;
+  __u32 ce_mark;
+};
+#define FQ_CODEL_QUANTUM_MAX (1 << 20)
+enum {
+  TCA_FQ_CODEL_UNSPEC,
+  TCA_FQ_CODEL_TARGET,
+  TCA_FQ_CODEL_LIMIT,
+  TCA_FQ_CODEL_INTERVAL,
+  TCA_FQ_CODEL_ECN,
+  TCA_FQ_CODEL_FLOWS,
+  TCA_FQ_CODEL_QUANTUM,
+  TCA_FQ_CODEL_CE_THRESHOLD,
+  TCA_FQ_CODEL_DROP_BATCH_SIZE,
+  TCA_FQ_CODEL_MEMORY_LIMIT,
+  TCA_FQ_CODEL_CE_THRESHOLD_SELECTOR,
+  TCA_FQ_CODEL_CE_THRESHOLD_MASK,
+  __TCA_FQ_CODEL_MAX
+};
+#define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1)
+enum {
+  TCA_FQ_CODEL_XSTATS_QDISC,
+  TCA_FQ_CODEL_XSTATS_CLASS,
+};
+struct tc_fq_codel_qd_stats {
+  __u32 maxpacket;
+  __u32 drop_overlimit;
+  __u32 ecn_mark;
+  __u32 new_flow_count;
+  __u32 new_flows_len;
+  __u32 old_flows_len;
+  __u32 ce_mark;
+  __u32 memory_usage;
+  __u32 drop_overmemory;
+};
+struct tc_fq_codel_cl_stats {
+  __s32 deficit;
+  __u32 ldelay;
+  __u32 count;
+  __u32 lastcount;
+  __u32 dropping;
+  __s32 drop_next;
+};
+struct tc_fq_codel_xstats {
+  __u32 type;
+  union {
+    struct tc_fq_codel_qd_stats qdisc_stats;
+    struct tc_fq_codel_cl_stats class_stats;
+  };
+};
+enum {
+  TCA_FQ_UNSPEC,
+  TCA_FQ_PLIMIT,
+  TCA_FQ_FLOW_PLIMIT,
+  TCA_FQ_QUANTUM,
+  TCA_FQ_INITIAL_QUANTUM,
+  TCA_FQ_RATE_ENABLE,
+  TCA_FQ_FLOW_DEFAULT_RATE,
+  TCA_FQ_FLOW_MAX_RATE,
+  TCA_FQ_BUCKETS_LOG,
+  TCA_FQ_FLOW_REFILL_DELAY,
+  TCA_FQ_ORPHAN_MASK,
+  TCA_FQ_LOW_RATE_THRESHOLD,
+  TCA_FQ_CE_THRESHOLD,
+  TCA_FQ_TIMER_SLACK,
+  TCA_FQ_HORIZON,
+  TCA_FQ_HORIZON_DROP,
+  __TCA_FQ_MAX
+};
+#define TCA_FQ_MAX (__TCA_FQ_MAX - 1)
+struct tc_fq_qd_stats {
+  __u64 gc_flows;
+  __u64 highprio_packets;
+  __u64 tcp_retrans;
+  __u64 throttled;
+  __u64 flows_plimit;
+  __u64 pkts_too_long;
+  __u64 allocation_errors;
+  __s64 time_next_delayed_flow;
+  __u32 flows;
+  __u32 inactive_flows;
+  __u32 throttled_flows;
+  __u32 unthrottle_latency_ns;
+  __u64 ce_mark;
+  __u64 horizon_drops;
+  __u64 horizon_caps;
+};
+enum {
+  TCA_HHF_UNSPEC,
+  TCA_HHF_BACKLOG_LIMIT,
+  TCA_HHF_QUANTUM,
+  TCA_HHF_HH_FLOWS_LIMIT,
+  TCA_HHF_RESET_TIMEOUT,
+  TCA_HHF_ADMIT_BYTES,
+  TCA_HHF_EVICT_TIMEOUT,
+  TCA_HHF_NON_HH_WEIGHT,
+  __TCA_HHF_MAX
+};
+#define TCA_HHF_MAX (__TCA_HHF_MAX - 1)
+struct tc_hhf_xstats {
+  __u32 drop_overlimit;
+  __u32 hh_overlimit;
+  __u32 hh_tot_count;
+  __u32 hh_cur_count;
+};
+enum {
+  TCA_PIE_UNSPEC,
+  TCA_PIE_TARGET,
+  TCA_PIE_LIMIT,
+  TCA_PIE_TUPDATE,
+  TCA_PIE_ALPHA,
+  TCA_PIE_BETA,
+  TCA_PIE_ECN,
+  TCA_PIE_BYTEMODE,
+  TCA_PIE_DQ_RATE_ESTIMATOR,
+  __TCA_PIE_MAX
+};
+#define TCA_PIE_MAX (__TCA_PIE_MAX - 1)
+struct tc_pie_xstats {
+  __u64 prob;
+  __u32 delay;
+  __u32 avg_dq_rate;
+  __u32 dq_rate_estimating;
+  __u32 packets_in;
+  __u32 dropped;
+  __u32 overlimit;
+  __u32 maxq;
+  __u32 ecn_mark;
+};
+enum {
+  TCA_FQ_PIE_UNSPEC,
+  TCA_FQ_PIE_LIMIT,
+  TCA_FQ_PIE_FLOWS,
+  TCA_FQ_PIE_TARGET,
+  TCA_FQ_PIE_TUPDATE,
+  TCA_FQ_PIE_ALPHA,
+  TCA_FQ_PIE_BETA,
+  TCA_FQ_PIE_QUANTUM,
+  TCA_FQ_PIE_MEMORY_LIMIT,
+  TCA_FQ_PIE_ECN_PROB,
+  TCA_FQ_PIE_ECN,
+  TCA_FQ_PIE_BYTEMODE,
+  TCA_FQ_PIE_DQ_RATE_ESTIMATOR,
+  __TCA_FQ_PIE_MAX
+};
+#define TCA_FQ_PIE_MAX (__TCA_FQ_PIE_MAX - 1)
+struct tc_fq_pie_xstats {
+  __u32 packets_in;
+  __u32 dropped;
+  __u32 overlimit;
+  __u32 overmemory;
+  __u32 ecn_mark;
+  __u32 new_flow_count;
+  __u32 new_flows_len;
+  __u32 old_flows_len;
+  __u32 memory_usage;
+};
+struct tc_cbs_qopt {
+  __u8 offload;
+  __u8 _pad[3];
+  __s32 hicredit;
+  __s32 locredit;
+  __s32 idleslope;
+  __s32 sendslope;
+};
+enum {
+  TCA_CBS_UNSPEC,
+  TCA_CBS_PARMS,
+  __TCA_CBS_MAX,
+};
+#define TCA_CBS_MAX (__TCA_CBS_MAX - 1)
+struct tc_etf_qopt {
+  __s32 delta;
+  __s32 clockid;
+  __u32 flags;
+#define TC_ETF_DEADLINE_MODE_ON _BITUL(0)
+#define TC_ETF_OFFLOAD_ON _BITUL(1)
+#define TC_ETF_SKIP_SOCK_CHECK _BITUL(2)
+};
+enum {
+  TCA_ETF_UNSPEC,
+  TCA_ETF_PARMS,
+  __TCA_ETF_MAX,
+};
+#define TCA_ETF_MAX (__TCA_ETF_MAX - 1)
+enum {
+  TCA_CAKE_UNSPEC,
+  TCA_CAKE_PAD,
+  TCA_CAKE_BASE_RATE64,
+  TCA_CAKE_DIFFSERV_MODE,
+  TCA_CAKE_ATM,
+  TCA_CAKE_FLOW_MODE,
+  TCA_CAKE_OVERHEAD,
+  TCA_CAKE_RTT,
+  TCA_CAKE_TARGET,
+  TCA_CAKE_AUTORATE,
+  TCA_CAKE_MEMORY,
+  TCA_CAKE_NAT,
+  TCA_CAKE_RAW,
+  TCA_CAKE_WASH,
+  TCA_CAKE_MPU,
+  TCA_CAKE_INGRESS,
+  TCA_CAKE_ACK_FILTER,
+  TCA_CAKE_SPLIT_GSO,
+  TCA_CAKE_FWMARK,
+  __TCA_CAKE_MAX
+};
+#define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1)
+enum {
+  __TCA_CAKE_STATS_INVALID,
+  TCA_CAKE_STATS_PAD,
+  TCA_CAKE_STATS_CAPACITY_ESTIMATE64,
+  TCA_CAKE_STATS_MEMORY_LIMIT,
+  TCA_CAKE_STATS_MEMORY_USED,
+  TCA_CAKE_STATS_AVG_NETOFF,
+  TCA_CAKE_STATS_MIN_NETLEN,
+  TCA_CAKE_STATS_MAX_NETLEN,
+  TCA_CAKE_STATS_MIN_ADJLEN,
+  TCA_CAKE_STATS_MAX_ADJLEN,
+  TCA_CAKE_STATS_TIN_STATS,
+  TCA_CAKE_STATS_DEFICIT,
+  TCA_CAKE_STATS_COBALT_COUNT,
+  TCA_CAKE_STATS_DROPPING,
+  TCA_CAKE_STATS_DROP_NEXT_US,
+  TCA_CAKE_STATS_P_DROP,
+  TCA_CAKE_STATS_BLUE_TIMER_US,
+  __TCA_CAKE_STATS_MAX
+};
+#define TCA_CAKE_STATS_MAX (__TCA_CAKE_STATS_MAX - 1)
+enum {
+  __TCA_CAKE_TIN_STATS_INVALID,
+  TCA_CAKE_TIN_STATS_PAD,
+  TCA_CAKE_TIN_STATS_SENT_PACKETS,
+  TCA_CAKE_TIN_STATS_SENT_BYTES64,
+  TCA_CAKE_TIN_STATS_DROPPED_PACKETS,
+  TCA_CAKE_TIN_STATS_DROPPED_BYTES64,
+  TCA_CAKE_TIN_STATS_ACKS_DROPPED_PACKETS,
+  TCA_CAKE_TIN_STATS_ACKS_DROPPED_BYTES64,
+  TCA_CAKE_TIN_STATS_ECN_MARKED_PACKETS,
+  TCA_CAKE_TIN_STATS_ECN_MARKED_BYTES64,
+  TCA_CAKE_TIN_STATS_BACKLOG_PACKETS,
+  TCA_CAKE_TIN_STATS_BACKLOG_BYTES,
+  TCA_CAKE_TIN_STATS_THRESHOLD_RATE64,
+  TCA_CAKE_TIN_STATS_TARGET_US,
+  TCA_CAKE_TIN_STATS_INTERVAL_US,
+  TCA_CAKE_TIN_STATS_WAY_INDIRECT_HITS,
+  TCA_CAKE_TIN_STATS_WAY_MISSES,
+  TCA_CAKE_TIN_STATS_WAY_COLLISIONS,
+  TCA_CAKE_TIN_STATS_PEAK_DELAY_US,
+  TCA_CAKE_TIN_STATS_AVG_DELAY_US,
+  TCA_CAKE_TIN_STATS_BASE_DELAY_US,
+  TCA_CAKE_TIN_STATS_SPARSE_FLOWS,
+  TCA_CAKE_TIN_STATS_BULK_FLOWS,
+  TCA_CAKE_TIN_STATS_UNRESPONSIVE_FLOWS,
+  TCA_CAKE_TIN_STATS_MAX_SKBLEN,
+  TCA_CAKE_TIN_STATS_FLOW_QUANTUM,
+  __TCA_CAKE_TIN_STATS_MAX
+};
+#define TCA_CAKE_TIN_STATS_MAX (__TCA_CAKE_TIN_STATS_MAX - 1)
+#define TC_CAKE_MAX_TINS (8)
+enum {
+  CAKE_FLOW_NONE = 0,
+  CAKE_FLOW_SRC_IP,
+  CAKE_FLOW_DST_IP,
+  CAKE_FLOW_HOSTS,
+  CAKE_FLOW_FLOWS,
+  CAKE_FLOW_DUAL_SRC,
+  CAKE_FLOW_DUAL_DST,
+  CAKE_FLOW_TRIPLE,
+  CAKE_FLOW_MAX,
+};
+enum {
+  CAKE_DIFFSERV_DIFFSERV3 = 0,
+  CAKE_DIFFSERV_DIFFSERV4,
+  CAKE_DIFFSERV_DIFFSERV8,
+  CAKE_DIFFSERV_BESTEFFORT,
+  CAKE_DIFFSERV_PRECEDENCE,
+  CAKE_DIFFSERV_MAX
+};
+enum {
+  CAKE_ACK_NONE = 0,
+  CAKE_ACK_FILTER,
+  CAKE_ACK_AGGRESSIVE,
+  CAKE_ACK_MAX
+};
+enum {
+  CAKE_ATM_NONE = 0,
+  CAKE_ATM_ATM,
+  CAKE_ATM_PTM,
+  CAKE_ATM_MAX
+};
+enum {
+  TC_TAPRIO_CMD_SET_GATES = 0x00,
+  TC_TAPRIO_CMD_SET_AND_HOLD = 0x01,
+  TC_TAPRIO_CMD_SET_AND_RELEASE = 0x02,
+};
+enum {
+  TCA_TAPRIO_SCHED_ENTRY_UNSPEC,
+  TCA_TAPRIO_SCHED_ENTRY_INDEX,
+  TCA_TAPRIO_SCHED_ENTRY_CMD,
+  TCA_TAPRIO_SCHED_ENTRY_GATE_MASK,
+  TCA_TAPRIO_SCHED_ENTRY_INTERVAL,
+  __TCA_TAPRIO_SCHED_ENTRY_MAX,
+};
+#define TCA_TAPRIO_SCHED_ENTRY_MAX (__TCA_TAPRIO_SCHED_ENTRY_MAX - 1)
+enum {
+  TCA_TAPRIO_SCHED_UNSPEC,
+  TCA_TAPRIO_SCHED_ENTRY,
+  __TCA_TAPRIO_SCHED_MAX,
+};
+#define TCA_TAPRIO_SCHED_MAX (__TCA_TAPRIO_SCHED_MAX - 1)
+#define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST _BITUL(0)
+#define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD _BITUL(1)
+enum {
+  TCA_TAPRIO_ATTR_UNSPEC,
+  TCA_TAPRIO_ATTR_PRIOMAP,
+  TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,
+  TCA_TAPRIO_ATTR_SCHED_BASE_TIME,
+  TCA_TAPRIO_ATTR_SCHED_SINGLE_ENTRY,
+  TCA_TAPRIO_ATTR_SCHED_CLOCKID,
+  TCA_TAPRIO_PAD,
+  TCA_TAPRIO_ATTR_ADMIN_SCHED,
+  TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME,
+  TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION,
+  TCA_TAPRIO_ATTR_FLAGS,
+  TCA_TAPRIO_ATTR_TXTIME_DELAY,
+  __TCA_TAPRIO_ATTR_MAX,
+};
+#define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
+#define TCQ_ETS_MAX_BANDS 16
+enum {
+  TCA_ETS_UNSPEC,
+  TCA_ETS_NBANDS,
+  TCA_ETS_NSTRICT,
+  TCA_ETS_QUANTA,
+  TCA_ETS_QUANTA_BAND,
+  TCA_ETS_PRIOMAP,
+  TCA_ETS_PRIOMAP_BAND,
+  __TCA_ETS_MAX,
+};
+#define TCA_ETS_MAX (__TCA_ETS_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/pktcdvd.h b/i686-linux-musl/include/linux/pktcdvd.h
new file mode 100644
index 0000000..eed22f8
--- /dev/null
+++ b/i686-linux-musl/include/linux/pktcdvd.h
@@ -0,0 +1,62 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__PKTCDVD_H
+#define _UAPI__PKTCDVD_H
+#include <linux/types.h>
+#define PACKET_DEBUG 1
+#define MAX_WRITERS 8
+#define PKT_RB_POOL_SIZE 512
+#define PACKET_WAIT_TIME (HZ * 5 / 1000)
+#define USE_WCACHING 0
+#define PACKET_CDR 1
+#define PACKET_CDRW 2
+#define PACKET_DVDR 3
+#define PACKET_DVDRW 4
+#define PACKET_WRITABLE 1
+#define PACKET_NWA_VALID 2
+#define PACKET_LRA_VALID 3
+#define PACKET_MERGE_SEGS 4
+#define PACKET_DISC_EMPTY 0
+#define PACKET_DISC_INCOMPLETE 1
+#define PACKET_DISC_COMPLETE 2
+#define PACKET_DISC_OTHER 3
+#define PACKET_MODE1 1
+#define PACKET_MODE2 2
+#define PACKET_BLOCK_MODE1 8
+#define PACKET_BLOCK_MODE2 10
+#define PACKET_SESSION_EMPTY 0
+#define PACKET_SESSION_INCOMPLETE 1
+#define PACKET_SESSION_RESERVED 2
+#define PACKET_SESSION_COMPLETE 3
+#define PACKET_MCN "4a656e734178626f65323030300000"
+#undef PACKET_USE_LS
+#define PKT_CTRL_CMD_SETUP 0
+#define PKT_CTRL_CMD_TEARDOWN 1
+#define PKT_CTRL_CMD_STATUS 2
+struct pkt_ctrl_command {
+  __u32 command;
+  __u32 dev_index;
+  __u32 dev;
+  __u32 pkt_dev;
+  __u32 num_devices;
+  __u32 padding;
+};
+#define PACKET_IOCTL_MAGIC ('X')
+#define PACKET_CTRL_CMD _IOWR(PACKET_IOCTL_MAGIC, 1, struct pkt_ctrl_command)
+#endif
diff --git a/i686-linux-musl/include/linux/pmu.h b/i686-linux-musl/include/linux/pmu.h
new file mode 100644
index 0000000..d3d08b0
--- /dev/null
+++ b/i686-linux-musl/include/linux/pmu.h
@@ -0,0 +1,110 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_PMU_H
+#define _UAPI_LINUX_PMU_H
+#define PMU_DRIVER_VERSION 2
+#define PMU_POWER_CTRL0 0x10
+#define PMU_POWER_CTRL 0x11
+#define PMU_ADB_CMD 0x20
+#define PMU_ADB_POLL_OFF 0x21
+#define PMU_WRITE_XPRAM 0x32
+#define PMU_WRITE_NVRAM 0x33
+#define PMU_READ_XPRAM 0x3a
+#define PMU_READ_NVRAM 0x3b
+#define PMU_SET_RTC 0x30
+#define PMU_READ_RTC 0x38
+#define PMU_SET_VOLBUTTON 0x40
+#define PMU_BACKLIGHT_BRIGHT 0x41
+#define PMU_GET_VOLBUTTON 0x48
+#define PMU_PCEJECT 0x4c
+#define PMU_BATTERY_STATE 0x6b
+#define PMU_SMART_BATTERY_STATE 0x6f
+#define PMU_SET_INTR_MASK 0x70
+#define PMU_INT_ACK 0x78
+#define PMU_SHUTDOWN 0x7e
+#define PMU_CPU_SPEED 0x7d
+#define PMU_SLEEP 0x7f
+#define PMU_POWER_EVENTS 0x8f
+#define PMU_I2C_CMD 0x9a
+#define PMU_RESET 0xd0
+#define PMU_GET_BRIGHTBUTTON 0xd9
+#define PMU_GET_COVER 0xdc
+#define PMU_SYSTEM_READY 0xdf
+#define PMU_GET_VERSION 0xea
+#define PMU_POW0_ON 0x80
+#define PMU_POW0_OFF 0x00
+#define PMU_POW0_HARD_DRIVE 0x04
+#define PMU_POW_ON 0x80
+#define PMU_POW_OFF 0x00
+#define PMU_POW_BACKLIGHT 0x01
+#define PMU_POW_CHARGER 0x02
+#define PMU_POW_IRLED 0x04
+#define PMU_POW_MEDIABAY 0x08
+#define PMU_INT_PCEJECT 0x04
+#define PMU_INT_SNDBRT 0x08
+#define PMU_INT_ADB 0x10
+#define PMU_INT_BATTERY 0x20
+#define PMU_INT_ENVIRONMENT 0x40
+#define PMU_INT_TICK 0x80
+#define PMU_INT_ADB_AUTO 0x04
+#define PMU_INT_WAITING_CHARGER 0x01
+#define PMU_INT_AUTO_SRQ_POLL 0x02
+#define PMU_ENV_LID_CLOSED 0x01
+#define PMU_I2C_MODE_SIMPLE 0
+#define PMU_I2C_MODE_STDSUB 1
+#define PMU_I2C_MODE_COMBINED 2
+#define PMU_I2C_BUS_STATUS 0
+#define PMU_I2C_BUS_SYSCLK 1
+#define PMU_I2C_BUS_POWER 2
+#define PMU_I2C_STATUS_OK 0
+#define PMU_I2C_STATUS_DATAREAD 1
+#define PMU_I2C_STATUS_BUSY 0xfe
+enum {
+  PMU_UNKNOWN,
+  PMU_OHARE_BASED,
+  PMU_HEATHROW_BASED,
+  PMU_PADDINGTON_BASED,
+  PMU_KEYLARGO_BASED,
+  PMU_68K_V1,
+  PMU_68K_V2,
+};
+enum {
+  PMU_PWR_GET_POWERUP_EVENTS = 0x00,
+  PMU_PWR_SET_POWERUP_EVENTS = 0x01,
+  PMU_PWR_CLR_POWERUP_EVENTS = 0x02,
+  PMU_PWR_GET_WAKEUP_EVENTS = 0x03,
+  PMU_PWR_SET_WAKEUP_EVENTS = 0x04,
+  PMU_PWR_CLR_WAKEUP_EVENTS = 0x05,
+};
+enum {
+  PMU_PWR_WAKEUP_KEY = 0x01,
+  PMU_PWR_WAKEUP_AC_INSERT = 0x02,
+  PMU_PWR_WAKEUP_AC_CHANGE = 0x04,
+  PMU_PWR_WAKEUP_LID_OPEN = 0x08,
+  PMU_PWR_WAKEUP_RING = 0x10,
+};
+#include <linux/ioctl.h>
+#define PMU_IOC_SLEEP _IO('B', 0)
+#define PMU_IOC_GET_BACKLIGHT _IOR('B', 1, size_t)
+#define PMU_IOC_SET_BACKLIGHT _IOW('B', 2, size_t)
+#define PMU_IOC_GET_MODEL _IOR('B', 3, size_t)
+#define PMU_IOC_HAS_ADB _IOR('B', 4, size_t)
+#define PMU_IOC_CAN_SLEEP _IOR('B', 5, size_t)
+#define PMU_IOC_GRAB_BACKLIGHT _IOR('B', 6, size_t)
+#endif
diff --git a/i686-linux-musl/include/linux/poll.h b/i686-linux-musl/include/linux/poll.h
new file mode 100644
index 0000000..cd542e6
--- /dev/null
+++ b/i686-linux-musl/include/linux/poll.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm/poll.h>
diff --git a/i686-linux-musl/include/linux/posix_acl.h b/i686-linux-musl/include/linux/posix_acl.h
new file mode 100644
index 0000000..96c302a
--- /dev/null
+++ b/i686-linux-musl/include/linux/posix_acl.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_POSIX_ACL_H
+#define __UAPI_POSIX_ACL_H
+#define ACL_UNDEFINED_ID (- 1)
+#define ACL_TYPE_ACCESS (0x8000)
+#define ACL_TYPE_DEFAULT (0x4000)
+#define ACL_USER_OBJ (0x01)
+#define ACL_USER (0x02)
+#define ACL_GROUP_OBJ (0x04)
+#define ACL_GROUP (0x08)
+#define ACL_MASK (0x10)
+#define ACL_OTHER (0x20)
+#define ACL_READ (0x04)
+#define ACL_WRITE (0x02)
+#define ACL_EXECUTE (0x01)
+#endif
diff --git a/i686-linux-musl/include/linux/posix_acl_xattr.h b/i686-linux-musl/include/linux/posix_acl_xattr.h
new file mode 100644
index 0000000..c66bfa7
--- /dev/null
+++ b/i686-linux-musl/include/linux/posix_acl_xattr.h
@@ -0,0 +1,32 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_POSIX_ACL_XATTR_H
+#define __UAPI_POSIX_ACL_XATTR_H
+#include <linux/types.h>
+#define POSIX_ACL_XATTR_VERSION 0x0002
+#define ACL_UNDEFINED_ID (- 1)
+struct posix_acl_xattr_entry {
+  __le16 e_tag;
+  __le16 e_perm;
+  __le32 e_id;
+};
+struct posix_acl_xattr_header {
+  __le32 a_version;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/posix_types.h b/i686-linux-musl/include/linux/posix_types.h
new file mode 100644
index 0000000..19fdf48
--- /dev/null
+++ b/i686-linux-musl/include/linux/posix_types.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_POSIX_TYPES_H
+#define _LINUX_POSIX_TYPES_H
+#include <linux/stddef.h>
+#undef __FD_SETSIZE
+#define __FD_SETSIZE 1024
+typedef struct {
+  unsigned long fds_bits[__FD_SETSIZE / (8 * sizeof(long))];
+} __kernel_fd_set;
+typedef void(* __kernel_sighandler_t) (int);
+typedef int __kernel_key_t;
+typedef int __kernel_mqd_t;
+#include <asm/posix_types.h>
+#endif
diff --git a/i686-linux-musl/include/linux/ppdev.h b/i686-linux-musl/include/linux/ppdev.h
new file mode 100644
index 0000000..450d6fd
--- /dev/null
+++ b/i686-linux-musl/include/linux/ppdev.h
@@ -0,0 +1,58 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_PPDEV_H
+#define _UAPI_LINUX_PPDEV_H
+#define PP_IOCTL 'p'
+#define PPSETMODE _IOW(PP_IOCTL, 0x80, int)
+#define PPRSTATUS _IOR(PP_IOCTL, 0x81, unsigned char)
+#define PPWSTATUS OBSOLETE__IOW(PP_IOCTL, 0x82, unsigned char)
+#define PPRCONTROL _IOR(PP_IOCTL, 0x83, unsigned char)
+#define PPWCONTROL _IOW(PP_IOCTL, 0x84, unsigned char)
+struct ppdev_frob_struct {
+  unsigned char mask;
+  unsigned char val;
+};
+#define PPFCONTROL _IOW(PP_IOCTL, 0x8e, struct ppdev_frob_struct)
+#define PPRDATA _IOR(PP_IOCTL, 0x85, unsigned char)
+#define PPWDATA _IOW(PP_IOCTL, 0x86, unsigned char)
+#define PPRECONTROL OBSOLETE__IOR(PP_IOCTL, 0x87, unsigned char)
+#define PPWECONTROL OBSOLETE__IOW(PP_IOCTL, 0x88, unsigned char)
+#define PPRFIFO OBSOLETE__IOR(PP_IOCTL, 0x89, unsigned char)
+#define PPWFIFO OBSOLETE__IOW(PP_IOCTL, 0x8a, unsigned char)
+#define PPCLAIM _IO(PP_IOCTL, 0x8b)
+#define PPRELEASE _IO(PP_IOCTL, 0x8c)
+#define PPYIELD _IO(PP_IOCTL, 0x8d)
+#define PPEXCL _IO(PP_IOCTL, 0x8f)
+#define PPDATADIR _IOW(PP_IOCTL, 0x90, int)
+#define PPNEGOT _IOW(PP_IOCTL, 0x91, int)
+#define PPWCTLONIRQ _IOW(PP_IOCTL, 0x92, unsigned char)
+#define PPCLRIRQ _IOR(PP_IOCTL, 0x93, int)
+#define PPSETPHASE _IOW(PP_IOCTL, 0x94, int)
+#define PPGETTIME _IOR(PP_IOCTL, 0x95, struct timeval)
+#define PPSETTIME _IOW(PP_IOCTL, 0x96, struct timeval)
+#define PPGETMODES _IOR(PP_IOCTL, 0x97, unsigned int)
+#define PPGETMODE _IOR(PP_IOCTL, 0x98, int)
+#define PPGETPHASE _IOR(PP_IOCTL, 0x99, int)
+#define PPGETFLAGS _IOR(PP_IOCTL, 0x9a, int)
+#define PPSETFLAGS _IOW(PP_IOCTL, 0x9b, int)
+#define PP_FASTWRITE (1 << 2)
+#define PP_FASTREAD (1 << 3)
+#define PP_W91284PIC (1 << 4)
+#define PP_FLAGMASK (PP_FASTWRITE | PP_FASTREAD | PP_W91284PIC)
+#endif
diff --git a/i686-linux-musl/include/linux/ppp-comp.h b/i686-linux-musl/include/linux/ppp-comp.h
new file mode 100644
index 0000000..08aeab3
--- /dev/null
+++ b/i686-linux-musl/include/linux/ppp-comp.h
@@ -0,0 +1,59 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_NET_PPP_COMP_H
+#define _UAPI_NET_PPP_COMP_H
+#define CCP_CONFREQ 1
+#define CCP_CONFACK 2
+#define CCP_TERMREQ 5
+#define CCP_TERMACK 6
+#define CCP_RESETREQ 14
+#define CCP_RESETACK 15
+#define CCP_MAX_OPTION_LENGTH 32
+#define CCP_CODE(dp) ((dp)[0])
+#define CCP_ID(dp) ((dp)[1])
+#define CCP_LENGTH(dp) (((dp)[2] << 8) + (dp)[3])
+#define CCP_HDRLEN 4
+#define CCP_OPT_CODE(dp) ((dp)[0])
+#define CCP_OPT_LENGTH(dp) ((dp)[1])
+#define CCP_OPT_MINLEN 2
+#define CI_BSD_COMPRESS 21
+#define CILEN_BSD_COMPRESS 3
+#define BSD_NBITS(x) ((x) & 0x1F)
+#define BSD_VERSION(x) ((x) >> 5)
+#define BSD_CURRENT_VERSION 1
+#define BSD_MAKE_OPT(v,n) (((v) << 5) | (n))
+#define BSD_MIN_BITS 9
+#define BSD_MAX_BITS 15
+#define CI_DEFLATE 26
+#define CI_DEFLATE_DRAFT 24
+#define CILEN_DEFLATE 4
+#define DEFLATE_MIN_SIZE 9
+#define DEFLATE_MAX_SIZE 15
+#define DEFLATE_METHOD_VAL 8
+#define DEFLATE_SIZE(x) (((x) >> 4) + 8)
+#define DEFLATE_METHOD(x) ((x) & 0x0F)
+#define DEFLATE_MAKE_OPT(w) ((((w) - 8) << 4) + DEFLATE_METHOD_VAL)
+#define DEFLATE_CHK_SEQUENCE 0
+#define CI_MPPE 18
+#define CILEN_MPPE 6
+#define CI_PREDICTOR_1 1
+#define CILEN_PREDICTOR_1 2
+#define CI_PREDICTOR_2 2
+#define CILEN_PREDICTOR_2 2
+#endif
diff --git a/i686-linux-musl/include/linux/ppp-ioctl.h b/i686-linux-musl/include/linux/ppp-ioctl.h
new file mode 100644
index 0000000..69c6e6d
--- /dev/null
+++ b/i686-linux-musl/include/linux/ppp-ioctl.h
@@ -0,0 +1,113 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _PPP_IOCTL_H
+#define _PPP_IOCTL_H
+#include <linux/types.h>
+#include <linux/compiler.h>
+#include <linux/ppp_defs.h>
+#define SC_COMP_PROT 0x00000001
+#define SC_COMP_AC 0x00000002
+#define SC_COMP_TCP 0x00000004
+#define SC_NO_TCP_CCID 0x00000008
+#define SC_REJ_COMP_AC 0x00000010
+#define SC_REJ_COMP_TCP 0x00000020
+#define SC_CCP_OPEN 0x00000040
+#define SC_CCP_UP 0x00000080
+#define SC_ENABLE_IP 0x00000100
+#define SC_LOOP_TRAFFIC 0x00000200
+#define SC_MULTILINK 0x00000400
+#define SC_MP_SHORTSEQ 0x00000800
+#define SC_COMP_RUN 0x00001000
+#define SC_DECOMP_RUN 0x00002000
+#define SC_MP_XSHORTSEQ 0x00004000
+#define SC_DEBUG 0x00010000
+#define SC_LOG_INPKT 0x00020000
+#define SC_LOG_OUTPKT 0x00040000
+#define SC_LOG_RAWIN 0x00080000
+#define SC_LOG_FLUSH 0x00100000
+#define SC_SYNC 0x00200000
+#define SC_MUST_COMP 0x00400000
+#define SC_MASK 0x0f600fff
+#define SC_XMIT_BUSY 0x10000000
+#define SC_RCV_ODDP 0x08000000
+#define SC_RCV_EVNP 0x04000000
+#define SC_RCV_B7_1 0x02000000
+#define SC_RCV_B7_0 0x01000000
+#define SC_DC_FERROR 0x00800000
+#define SC_DC_ERROR 0x00400000
+struct npioctl {
+  int protocol;
+  enum NPmode mode;
+};
+struct ppp_option_data {
+  __u8 __user * ptr;
+  __u32 length;
+  int transmit;
+};
+struct pppol2tp_ioc_stats {
+  __u16 tunnel_id;
+  __u16 session_id;
+  __u32 using_ipsec : 1;
+  __aligned_u64 tx_packets;
+  __aligned_u64 tx_bytes;
+  __aligned_u64 tx_errors;
+  __aligned_u64 rx_packets;
+  __aligned_u64 rx_bytes;
+  __aligned_u64 rx_seq_discards;
+  __aligned_u64 rx_oos_packets;
+  __aligned_u64 rx_errors;
+};
+#define PPPIOCGFLAGS _IOR('t', 90, int)
+#define PPPIOCSFLAGS _IOW('t', 89, int)
+#define PPPIOCGASYNCMAP _IOR('t', 88, int)
+#define PPPIOCSASYNCMAP _IOW('t', 87, int)
+#define PPPIOCGUNIT _IOR('t', 86, int)
+#define PPPIOCGRASYNCMAP _IOR('t', 85, int)
+#define PPPIOCSRASYNCMAP _IOW('t', 84, int)
+#define PPPIOCGMRU _IOR('t', 83, int)
+#define PPPIOCSMRU _IOW('t', 82, int)
+#define PPPIOCSMAXCID _IOW('t', 81, int)
+#define PPPIOCGXASYNCMAP _IOR('t', 80, ext_accm)
+#define PPPIOCSXASYNCMAP _IOW('t', 79, ext_accm)
+#define PPPIOCXFERUNIT _IO('t', 78)
+#define PPPIOCSCOMPRESS _IOW('t', 77, struct ppp_option_data)
+#define PPPIOCGNPMODE _IOWR('t', 76, struct npioctl)
+#define PPPIOCSNPMODE _IOW('t', 75, struct npioctl)
+#define PPPIOCSPASS _IOW('t', 71, struct sock_fprog)
+#define PPPIOCSACTIVE _IOW('t', 70, struct sock_fprog)
+#define PPPIOCGDEBUG _IOR('t', 65, int)
+#define PPPIOCSDEBUG _IOW('t', 64, int)
+#define PPPIOCGIDLE _IOR('t', 63, struct ppp_idle)
+#define PPPIOCGIDLE32 _IOR('t', 63, struct ppp_idle32)
+#define PPPIOCGIDLE64 _IOR('t', 63, struct ppp_idle64)
+#define PPPIOCNEWUNIT _IOWR('t', 62, int)
+#define PPPIOCATTACH _IOW('t', 61, int)
+#define PPPIOCDETACH _IOW('t', 60, int)
+#define PPPIOCSMRRU _IOW('t', 59, int)
+#define PPPIOCCONNECT _IOW('t', 58, int)
+#define PPPIOCDISCONN _IO('t', 57)
+#define PPPIOCATTCHAN _IOW('t', 56, int)
+#define PPPIOCGCHAN _IOR('t', 55, int)
+#define PPPIOCGL2TPSTATS _IOR('t', 54, struct pppol2tp_ioc_stats)
+#define PPPIOCBRIDGECHAN _IOW('t', 53, int)
+#define PPPIOCUNBRIDGECHAN _IO('t', 52)
+#define SIOCGPPPSTATS (SIOCDEVPRIVATE + 0)
+#define SIOCGPPPVER (SIOCDEVPRIVATE + 1)
+#define SIOCGPPPCSTATS (SIOCDEVPRIVATE + 2)
+#endif
diff --git a/i686-linux-musl/include/linux/ppp_defs.h b/i686-linux-musl/include/linux/ppp_defs.h
new file mode 100644
index 0000000..84c23d9
--- /dev/null
+++ b/i686-linux-musl/include/linux/ppp_defs.h
@@ -0,0 +1,119 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <linux/types.h>
+#ifndef _UAPI_PPP_DEFS_H_
+#define _UAPI_PPP_DEFS_H_
+#define PPP_HDRLEN 4
+#define PPP_FCSLEN 2
+#define PPP_MRU 1500
+#define PPP_ADDRESS(p) (((__u8 *) (p))[0])
+#define PPP_CONTROL(p) (((__u8 *) (p))[1])
+#define PPP_PROTOCOL(p) ((((__u8 *) (p))[2] << 8) + ((__u8 *) (p))[3])
+#define PPP_ALLSTATIONS 0xff
+#define PPP_UI 0x03
+#define PPP_FLAG 0x7e
+#define PPP_ESCAPE 0x7d
+#define PPP_TRANS 0x20
+#define PPP_IP 0x21
+#define PPP_AT 0x29
+#define PPP_IPX 0x2b
+#define PPP_VJC_COMP 0x2d
+#define PPP_VJC_UNCOMP 0x2f
+#define PPP_MP 0x3d
+#define PPP_IPV6 0x57
+#define PPP_COMPFRAG 0xfb
+#define PPP_COMP 0xfd
+#define PPP_MPLS_UC 0x0281
+#define PPP_MPLS_MC 0x0283
+#define PPP_IPCP 0x8021
+#define PPP_ATCP 0x8029
+#define PPP_IPXCP 0x802b
+#define PPP_IPV6CP 0x8057
+#define PPP_CCPFRAG 0x80fb
+#define PPP_CCP 0x80fd
+#define PPP_MPLSCP 0x80fd
+#define PPP_LCP 0xc021
+#define PPP_PAP 0xc023
+#define PPP_LQR 0xc025
+#define PPP_CHAP 0xc223
+#define PPP_CBCP 0xc029
+#define PPP_INITFCS 0xffff
+#define PPP_GOODFCS 0xf0b8
+typedef __u32 ext_accm[8];
+enum NPmode {
+  NPMODE_PASS,
+  NPMODE_DROP,
+  NPMODE_ERROR,
+  NPMODE_QUEUE
+};
+struct pppstat {
+  __u32 ppp_discards;
+  __u32 ppp_ibytes;
+  __u32 ppp_ioctects;
+  __u32 ppp_ipackets;
+  __u32 ppp_ierrors;
+  __u32 ppp_ilqrs;
+  __u32 ppp_obytes;
+  __u32 ppp_ooctects;
+  __u32 ppp_opackets;
+  __u32 ppp_oerrors;
+  __u32 ppp_olqrs;
+};
+struct vjstat {
+  __u32 vjs_packets;
+  __u32 vjs_compressed;
+  __u32 vjs_searches;
+  __u32 vjs_misses;
+  __u32 vjs_uncompressedin;
+  __u32 vjs_compressedin;
+  __u32 vjs_errorin;
+  __u32 vjs_tossed;
+};
+struct compstat {
+  __u32 unc_bytes;
+  __u32 unc_packets;
+  __u32 comp_bytes;
+  __u32 comp_packets;
+  __u32 inc_bytes;
+  __u32 inc_packets;
+  __u32 in_count;
+  __u32 bytes_out;
+  double ratio;
+};
+struct ppp_stats {
+  struct pppstat p;
+  struct vjstat vj;
+};
+struct ppp_comp_stats {
+  struct compstat c;
+  struct compstat d;
+};
+struct ppp_idle {
+  __kernel_old_time_t xmit_idle;
+  __kernel_old_time_t recv_idle;
+};
+struct ppp_idle32 {
+  __s32 xmit_idle;
+  __s32 recv_idle;
+};
+struct ppp_idle64 {
+  __s64 xmit_idle;
+  __s64 recv_idle;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/pps.h b/i686-linux-musl/include/linux/pps.h
new file mode 100644
index 0000000..4bfe30d
--- /dev/null
+++ b/i686-linux-musl/include/linux/pps.h
@@ -0,0 +1,91 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _PPS_H_
+#define _PPS_H_
+#include <linux/types.h>
+#define PPS_VERSION "5.3.6"
+#define PPS_MAX_SOURCES 16
+#define PPS_API_VERS_1 1
+#define PPS_API_VERS PPS_API_VERS_1
+#define PPS_MAX_NAME_LEN 32
+struct pps_ktime {
+  __s64 sec;
+  __s32 nsec;
+  __u32 flags;
+};
+struct pps_ktime_compat {
+  __s64 sec;
+  __s32 nsec;
+  __u32 flags;
+} __attribute__((packed, aligned(4)));
+#define PPS_TIME_INVALID (1 << 0)
+struct pps_kinfo {
+  __u32 assert_sequence;
+  __u32 clear_sequence;
+  struct pps_ktime assert_tu;
+  struct pps_ktime clear_tu;
+  int current_mode;
+};
+struct pps_kinfo_compat {
+  __u32 assert_sequence;
+  __u32 clear_sequence;
+  struct pps_ktime_compat assert_tu;
+  struct pps_ktime_compat clear_tu;
+  int current_mode;
+};
+struct pps_kparams {
+  int api_version;
+  int mode;
+  struct pps_ktime assert_off_tu;
+  struct pps_ktime clear_off_tu;
+};
+#define PPS_CAPTUREASSERT 0x01
+#define PPS_CAPTURECLEAR 0x02
+#define PPS_CAPTUREBOTH 0x03
+#define PPS_OFFSETASSERT 0x10
+#define PPS_OFFSETCLEAR 0x20
+#define PPS_CANWAIT 0x100
+#define PPS_CANPOLL 0x200
+#define PPS_ECHOASSERT 0x40
+#define PPS_ECHOCLEAR 0x80
+#define PPS_TSFMT_TSPEC 0x1000
+#define PPS_TSFMT_NTPFP 0x2000
+#define PPS_KC_HARDPPS 0
+#define PPS_KC_HARDPPS_PLL 1
+#define PPS_KC_HARDPPS_FLL 2
+struct pps_fdata {
+  struct pps_kinfo info;
+  struct pps_ktime timeout;
+};
+struct pps_fdata_compat {
+  struct pps_kinfo_compat info;
+  struct pps_ktime_compat timeout;
+};
+struct pps_bind_args {
+  int tsformat;
+  int edge;
+  int consumer;
+};
+#include <linux/ioctl.h>
+#define PPS_GETPARAMS _IOR('p', 0xa1, struct pps_kparams *)
+#define PPS_SETPARAMS _IOW('p', 0xa2, struct pps_kparams *)
+#define PPS_GETCAP _IOR('p', 0xa3, int *)
+#define PPS_FETCH _IOWR('p', 0xa4, struct pps_fdata *)
+#define PPS_KC_BIND _IOW('p', 0xa5, struct pps_bind_args *)
+#endif
diff --git a/i686-linux-musl/include/linux/pr.h b/i686-linux-musl/include/linux/pr.h
new file mode 100644
index 0000000..7a7b8b1
--- /dev/null
+++ b/i686-linux-musl/include/linux/pr.h
@@ -0,0 +1,59 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_PR_H
+#define _UAPI_PR_H
+#include <linux/types.h>
+enum pr_type {
+  PR_WRITE_EXCLUSIVE = 1,
+  PR_EXCLUSIVE_ACCESS = 2,
+  PR_WRITE_EXCLUSIVE_REG_ONLY = 3,
+  PR_EXCLUSIVE_ACCESS_REG_ONLY = 4,
+  PR_WRITE_EXCLUSIVE_ALL_REGS = 5,
+  PR_EXCLUSIVE_ACCESS_ALL_REGS = 6,
+};
+struct pr_reservation {
+  __u64 key;
+  __u32 type;
+  __u32 flags;
+};
+struct pr_registration {
+  __u64 old_key;
+  __u64 new_key;
+  __u32 flags;
+  __u32 __pad;
+};
+struct pr_preempt {
+  __u64 old_key;
+  __u64 new_key;
+  __u32 type;
+  __u32 flags;
+};
+struct pr_clear {
+  __u64 key;
+  __u32 flags;
+  __u32 __pad;
+};
+#define PR_FL_IGNORE_KEY (1 << 0)
+#define IOC_PR_REGISTER _IOW('p', 200, struct pr_registration)
+#define IOC_PR_RESERVE _IOW('p', 201, struct pr_reservation)
+#define IOC_PR_RELEASE _IOW('p', 202, struct pr_reservation)
+#define IOC_PR_PREEMPT _IOW('p', 203, struct pr_preempt)
+#define IOC_PR_PREEMPT_ABORT _IOW('p', 204, struct pr_preempt)
+#define IOC_PR_CLEAR _IOW('p', 205, struct pr_clear)
+#endif
diff --git a/i686-linux-musl/include/linux/prctl.h b/i686-linux-musl/include/linux/prctl.h
new file mode 100644
index 0000000..9b4c695
--- /dev/null
+++ b/i686-linux-musl/include/linux/prctl.h
@@ -0,0 +1,184 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_PRCTL_H
+#define _LINUX_PRCTL_H
+#include <linux/types.h>
+#define PR_SET_PDEATHSIG 1
+#define PR_GET_PDEATHSIG 2
+#define PR_GET_DUMPABLE 3
+#define PR_SET_DUMPABLE 4
+#define PR_GET_UNALIGN 5
+#define PR_SET_UNALIGN 6
+#define PR_UNALIGN_NOPRINT 1
+#define PR_UNALIGN_SIGBUS 2
+#define PR_GET_KEEPCAPS 7
+#define PR_SET_KEEPCAPS 8
+#define PR_GET_FPEMU 9
+#define PR_SET_FPEMU 10
+#define PR_FPEMU_NOPRINT 1
+#define PR_FPEMU_SIGFPE 2
+#define PR_GET_FPEXC 11
+#define PR_SET_FPEXC 12
+#define PR_FP_EXC_SW_ENABLE 0x80
+#define PR_FP_EXC_DIV 0x010000
+#define PR_FP_EXC_OVF 0x020000
+#define PR_FP_EXC_UND 0x040000
+#define PR_FP_EXC_RES 0x080000
+#define PR_FP_EXC_INV 0x100000
+#define PR_FP_EXC_DISABLED 0
+#define PR_FP_EXC_NONRECOV 1
+#define PR_FP_EXC_ASYNC 2
+#define PR_FP_EXC_PRECISE 3
+#define PR_GET_TIMING 13
+#define PR_SET_TIMING 14
+#define PR_TIMING_STATISTICAL 0
+#define PR_TIMING_TIMESTAMP 1
+#define PR_SET_NAME 15
+#define PR_GET_NAME 16
+#define PR_GET_ENDIAN 19
+#define PR_SET_ENDIAN 20
+#define PR_ENDIAN_BIG 0
+#define PR_ENDIAN_LITTLE 1
+#define PR_ENDIAN_PPC_LITTLE 2
+#define PR_GET_SECCOMP 21
+#define PR_SET_SECCOMP 22
+#define PR_CAPBSET_READ 23
+#define PR_CAPBSET_DROP 24
+#define PR_GET_TSC 25
+#define PR_SET_TSC 26
+#define PR_TSC_ENABLE 1
+#define PR_TSC_SIGSEGV 2
+#define PR_GET_SECUREBITS 27
+#define PR_SET_SECUREBITS 28
+#define PR_SET_TIMERSLACK 29
+#define PR_GET_TIMERSLACK 30
+#define PR_TASK_PERF_EVENTS_DISABLE 31
+#define PR_TASK_PERF_EVENTS_ENABLE 32
+#define PR_MCE_KILL 33
+#define PR_MCE_KILL_CLEAR 0
+#define PR_MCE_KILL_SET 1
+#define PR_MCE_KILL_LATE 0
+#define PR_MCE_KILL_EARLY 1
+#define PR_MCE_KILL_DEFAULT 2
+#define PR_MCE_KILL_GET 34
+#define PR_SET_MM 35
+#define PR_SET_MM_START_CODE 1
+#define PR_SET_MM_END_CODE 2
+#define PR_SET_MM_START_DATA 3
+#define PR_SET_MM_END_DATA 4
+#define PR_SET_MM_START_STACK 5
+#define PR_SET_MM_START_BRK 6
+#define PR_SET_MM_BRK 7
+#define PR_SET_MM_ARG_START 8
+#define PR_SET_MM_ARG_END 9
+#define PR_SET_MM_ENV_START 10
+#define PR_SET_MM_ENV_END 11
+#define PR_SET_MM_AUXV 12
+#define PR_SET_MM_EXE_FILE 13
+#define PR_SET_MM_MAP 14
+#define PR_SET_MM_MAP_SIZE 15
+struct prctl_mm_map {
+  __u64 start_code;
+  __u64 end_code;
+  __u64 start_data;
+  __u64 end_data;
+  __u64 start_brk;
+  __u64 brk;
+  __u64 start_stack;
+  __u64 arg_start;
+  __u64 arg_end;
+  __u64 env_start;
+  __u64 env_end;
+  __u64 * auxv;
+  __u32 auxv_size;
+  __u32 exe_fd;
+};
+#define PR_SET_PTRACER 0x59616d61
+#define PR_SET_PTRACER_ANY ((unsigned long) - 1)
+#define PR_SET_CHILD_SUBREAPER 36
+#define PR_GET_CHILD_SUBREAPER 37
+#define PR_SET_NO_NEW_PRIVS 38
+#define PR_GET_NO_NEW_PRIVS 39
+#define PR_GET_TID_ADDRESS 40
+#define PR_SET_THP_DISABLE 41
+#define PR_GET_THP_DISABLE 42
+#define PR_MPX_ENABLE_MANAGEMENT 43
+#define PR_MPX_DISABLE_MANAGEMENT 44
+#define PR_SET_FP_MODE 45
+#define PR_GET_FP_MODE 46
+#define PR_FP_MODE_FR (1 << 0)
+#define PR_FP_MODE_FRE (1 << 1)
+#define PR_CAP_AMBIENT 47
+#define PR_CAP_AMBIENT_IS_SET 1
+#define PR_CAP_AMBIENT_RAISE 2
+#define PR_CAP_AMBIENT_LOWER 3
+#define PR_CAP_AMBIENT_CLEAR_ALL 4
+#define PR_SVE_SET_VL 50
+#define PR_SVE_SET_VL_ONEXEC (1 << 18)
+#define PR_SVE_GET_VL 51
+#define PR_SVE_VL_LEN_MASK 0xffff
+#define PR_SVE_VL_INHERIT (1 << 17)
+#define PR_GET_SPECULATION_CTRL 52
+#define PR_SET_SPECULATION_CTRL 53
+#define PR_SPEC_STORE_BYPASS 0
+#define PR_SPEC_INDIRECT_BRANCH 1
+#define PR_SPEC_L1D_FLUSH 2
+#define PR_SPEC_NOT_AFFECTED 0
+#define PR_SPEC_PRCTL (1UL << 0)
+#define PR_SPEC_ENABLE (1UL << 1)
+#define PR_SPEC_DISABLE (1UL << 2)
+#define PR_SPEC_FORCE_DISABLE (1UL << 3)
+#define PR_SPEC_DISABLE_NOEXEC (1UL << 4)
+#define PR_PAC_RESET_KEYS 54
+#define PR_PAC_APIAKEY (1UL << 0)
+#define PR_PAC_APIBKEY (1UL << 1)
+#define PR_PAC_APDAKEY (1UL << 2)
+#define PR_PAC_APDBKEY (1UL << 3)
+#define PR_PAC_APGAKEY (1UL << 4)
+#define PR_SET_TAGGED_ADDR_CTRL 55
+#define PR_GET_TAGGED_ADDR_CTRL 56
+#define PR_TAGGED_ADDR_ENABLE (1UL << 0)
+#define PR_MTE_TCF_NONE 0UL
+#define PR_MTE_TCF_SYNC (1UL << 1)
+#define PR_MTE_TCF_ASYNC (1UL << 2)
+#define PR_MTE_TCF_MASK (PR_MTE_TCF_SYNC | PR_MTE_TCF_ASYNC)
+#define PR_MTE_TAG_SHIFT 3
+#define PR_MTE_TAG_MASK (0xffffUL << PR_MTE_TAG_SHIFT)
+#define PR_MTE_TCF_SHIFT 1
+#define PR_SET_IO_FLUSHER 57
+#define PR_GET_IO_FLUSHER 58
+#define PR_SET_SYSCALL_USER_DISPATCH 59
+#define PR_SYS_DISPATCH_OFF 0
+#define PR_SYS_DISPATCH_ON 1
+#define SYSCALL_DISPATCH_FILTER_ALLOW 0
+#define SYSCALL_DISPATCH_FILTER_BLOCK 1
+#define PR_PAC_SET_ENABLED_KEYS 60
+#define PR_PAC_GET_ENABLED_KEYS 61
+#define PR_SCHED_CORE 62
+#define PR_SCHED_CORE_GET 0
+#define PR_SCHED_CORE_CREATE 1
+#define PR_SCHED_CORE_SHARE_TO 2
+#define PR_SCHED_CORE_SHARE_FROM 3
+#define PR_SCHED_CORE_MAX 4
+#define PR_SCHED_CORE_SCOPE_THREAD 0
+#define PR_SCHED_CORE_SCOPE_THREAD_GROUP 1
+#define PR_SCHED_CORE_SCOPE_PROCESS_GROUP 2
+#define PR_SET_VMA 0x53564d41
+#define PR_SET_VMA_ANON_NAME 0
+#endif
diff --git a/i686-linux-musl/include/linux/psample.h b/i686-linux-musl/include/linux/psample.h
new file mode 100644
index 0000000..efb1c24
--- /dev/null
+++ b/i686-linux-musl/include/linux/psample.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_PSAMPLE_H
+#define __UAPI_PSAMPLE_H
+enum {
+  PSAMPLE_ATTR_IIFINDEX,
+  PSAMPLE_ATTR_OIFINDEX,
+  PSAMPLE_ATTR_ORIGSIZE,
+  PSAMPLE_ATTR_SAMPLE_GROUP,
+  PSAMPLE_ATTR_GROUP_SEQ,
+  PSAMPLE_ATTR_SAMPLE_RATE,
+  PSAMPLE_ATTR_DATA,
+  PSAMPLE_ATTR_GROUP_REFCOUNT,
+  PSAMPLE_ATTR_TUNNEL,
+  PSAMPLE_ATTR_PAD,
+  PSAMPLE_ATTR_OUT_TC,
+  PSAMPLE_ATTR_OUT_TC_OCC,
+  PSAMPLE_ATTR_LATENCY,
+  PSAMPLE_ATTR_TIMESTAMP,
+  PSAMPLE_ATTR_PROTO,
+  __PSAMPLE_ATTR_MAX
+};
+enum psample_command {
+  PSAMPLE_CMD_SAMPLE,
+  PSAMPLE_CMD_GET_GROUP,
+  PSAMPLE_CMD_NEW_GROUP,
+  PSAMPLE_CMD_DEL_GROUP,
+};
+enum psample_tunnel_key_attr {
+  PSAMPLE_TUNNEL_KEY_ATTR_ID,
+  PSAMPLE_TUNNEL_KEY_ATTR_IPV4_SRC,
+  PSAMPLE_TUNNEL_KEY_ATTR_IPV4_DST,
+  PSAMPLE_TUNNEL_KEY_ATTR_TOS,
+  PSAMPLE_TUNNEL_KEY_ATTR_TTL,
+  PSAMPLE_TUNNEL_KEY_ATTR_DONT_FRAGMENT,
+  PSAMPLE_TUNNEL_KEY_ATTR_CSUM,
+  PSAMPLE_TUNNEL_KEY_ATTR_OAM,
+  PSAMPLE_TUNNEL_KEY_ATTR_GENEVE_OPTS,
+  PSAMPLE_TUNNEL_KEY_ATTR_TP_SRC,
+  PSAMPLE_TUNNEL_KEY_ATTR_TP_DST,
+  PSAMPLE_TUNNEL_KEY_ATTR_VXLAN_OPTS,
+  PSAMPLE_TUNNEL_KEY_ATTR_IPV6_SRC,
+  PSAMPLE_TUNNEL_KEY_ATTR_IPV6_DST,
+  PSAMPLE_TUNNEL_KEY_ATTR_PAD,
+  PSAMPLE_TUNNEL_KEY_ATTR_ERSPAN_OPTS,
+  PSAMPLE_TUNNEL_KEY_ATTR_IPV4_INFO_BRIDGE,
+  __PSAMPLE_TUNNEL_KEY_ATTR_MAX
+};
+#define PSAMPLE_ATTR_MAX (__PSAMPLE_ATTR_MAX - 1)
+#define PSAMPLE_NL_MCGRP_CONFIG_NAME "config"
+#define PSAMPLE_NL_MCGRP_SAMPLE_NAME "packets"
+#define PSAMPLE_GENL_NAME "psample"
+#define PSAMPLE_GENL_VERSION 1
+#endif
diff --git a/i686-linux-musl/include/linux/psci.h b/i686-linux-musl/include/linux/psci.h
new file mode 100644
index 0000000..bc522e7
--- /dev/null
+++ b/i686-linux-musl/include/linux/psci.h
@@ -0,0 +1,84 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_PSCI_H
+#define _UAPI_LINUX_PSCI_H
+#define PSCI_0_2_FN_BASE 0x84000000
+#define PSCI_0_2_FN(n) (PSCI_0_2_FN_BASE + (n))
+#define PSCI_0_2_64BIT 0x40000000
+#define PSCI_0_2_FN64_BASE (PSCI_0_2_FN_BASE + PSCI_0_2_64BIT)
+#define PSCI_0_2_FN64(n) (PSCI_0_2_FN64_BASE + (n))
+#define PSCI_0_2_FN_PSCI_VERSION PSCI_0_2_FN(0)
+#define PSCI_0_2_FN_CPU_SUSPEND PSCI_0_2_FN(1)
+#define PSCI_0_2_FN_CPU_OFF PSCI_0_2_FN(2)
+#define PSCI_0_2_FN_CPU_ON PSCI_0_2_FN(3)
+#define PSCI_0_2_FN_AFFINITY_INFO PSCI_0_2_FN(4)
+#define PSCI_0_2_FN_MIGRATE PSCI_0_2_FN(5)
+#define PSCI_0_2_FN_MIGRATE_INFO_TYPE PSCI_0_2_FN(6)
+#define PSCI_0_2_FN_MIGRATE_INFO_UP_CPU PSCI_0_2_FN(7)
+#define PSCI_0_2_FN_SYSTEM_OFF PSCI_0_2_FN(8)
+#define PSCI_0_2_FN_SYSTEM_RESET PSCI_0_2_FN(9)
+#define PSCI_0_2_FN64_CPU_SUSPEND PSCI_0_2_FN64(1)
+#define PSCI_0_2_FN64_CPU_ON PSCI_0_2_FN64(3)
+#define PSCI_0_2_FN64_AFFINITY_INFO PSCI_0_2_FN64(4)
+#define PSCI_0_2_FN64_MIGRATE PSCI_0_2_FN64(5)
+#define PSCI_0_2_FN64_MIGRATE_INFO_UP_CPU PSCI_0_2_FN64(7)
+#define PSCI_1_0_FN_PSCI_FEATURES PSCI_0_2_FN(10)
+#define PSCI_1_0_FN_SYSTEM_SUSPEND PSCI_0_2_FN(14)
+#define PSCI_1_0_FN_SET_SUSPEND_MODE PSCI_0_2_FN(15)
+#define PSCI_1_1_FN_SYSTEM_RESET2 PSCI_0_2_FN(18)
+#define PSCI_1_0_FN64_SYSTEM_SUSPEND PSCI_0_2_FN64(14)
+#define PSCI_1_1_FN64_SYSTEM_RESET2 PSCI_0_2_FN64(18)
+#define PSCI_0_2_POWER_STATE_ID_MASK 0xffff
+#define PSCI_0_2_POWER_STATE_ID_SHIFT 0
+#define PSCI_0_2_POWER_STATE_TYPE_SHIFT 16
+#define PSCI_0_2_POWER_STATE_TYPE_MASK (0x1 << PSCI_0_2_POWER_STATE_TYPE_SHIFT)
+#define PSCI_0_2_POWER_STATE_AFFL_SHIFT 24
+#define PSCI_0_2_POWER_STATE_AFFL_MASK (0x3 << PSCI_0_2_POWER_STATE_AFFL_SHIFT)
+#define PSCI_1_0_EXT_POWER_STATE_ID_MASK 0xfffffff
+#define PSCI_1_0_EXT_POWER_STATE_ID_SHIFT 0
+#define PSCI_1_0_EXT_POWER_STATE_TYPE_SHIFT 30
+#define PSCI_1_0_EXT_POWER_STATE_TYPE_MASK (0x1 << PSCI_1_0_EXT_POWER_STATE_TYPE_SHIFT)
+#define PSCI_0_2_AFFINITY_LEVEL_ON 0
+#define PSCI_0_2_AFFINITY_LEVEL_OFF 1
+#define PSCI_0_2_AFFINITY_LEVEL_ON_PENDING 2
+#define PSCI_0_2_TOS_UP_MIGRATE 0
+#define PSCI_0_2_TOS_UP_NO_MIGRATE 1
+#define PSCI_0_2_TOS_MP 2
+#define PSCI_VERSION_MAJOR_SHIFT 16
+#define PSCI_VERSION_MINOR_MASK ((1U << PSCI_VERSION_MAJOR_SHIFT) - 1)
+#define PSCI_VERSION_MAJOR_MASK ~PSCI_VERSION_MINOR_MASK
+#define PSCI_VERSION_MAJOR(ver) (((ver) & PSCI_VERSION_MAJOR_MASK) >> PSCI_VERSION_MAJOR_SHIFT)
+#define PSCI_VERSION_MINOR(ver) ((ver) & PSCI_VERSION_MINOR_MASK)
+#define PSCI_VERSION(maj,min) ((((maj) << PSCI_VERSION_MAJOR_SHIFT) & PSCI_VERSION_MAJOR_MASK) | ((min) & PSCI_VERSION_MINOR_MASK))
+#define PSCI_1_0_FEATURES_CPU_SUSPEND_PF_SHIFT 1
+#define PSCI_1_0_FEATURES_CPU_SUSPEND_PF_MASK (0x1 << PSCI_1_0_FEATURES_CPU_SUSPEND_PF_SHIFT)
+#define PSCI_1_0_OS_INITIATED BIT(0)
+#define PSCI_1_0_SUSPEND_MODE_PC 0
+#define PSCI_1_0_SUSPEND_MODE_OSI 1
+#define PSCI_RET_SUCCESS 0
+#define PSCI_RET_NOT_SUPPORTED - 1
+#define PSCI_RET_INVALID_PARAMS - 2
+#define PSCI_RET_DENIED - 3
+#define PSCI_RET_ALREADY_ON - 4
+#define PSCI_RET_ON_PENDING - 5
+#define PSCI_RET_INTERNAL_FAILURE - 6
+#define PSCI_RET_NOT_PRESENT - 7
+#define PSCI_RET_DISABLED - 8
+#define PSCI_RET_INVALID_ADDRESS - 9
+#endif
diff --git a/i686-linux-musl/include/linux/psp-sev.h b/i686-linux-musl/include/linux/psp-sev.h
new file mode 100644
index 0000000..6c4f73d
--- /dev/null
+++ b/i686-linux-musl/include/linux/psp-sev.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __PSP_SEV_USER_H__
+#define __PSP_SEV_USER_H__
+#include <linux/types.h>
+enum {
+  SEV_FACTORY_RESET = 0,
+  SEV_PLATFORM_STATUS,
+  SEV_PEK_GEN,
+  SEV_PEK_CSR,
+  SEV_PDH_GEN,
+  SEV_PDH_CERT_EXPORT,
+  SEV_PEK_CERT_IMPORT,
+  SEV_GET_ID,
+  SEV_GET_ID2,
+  SEV_MAX,
+};
+typedef enum {
+  SEV_RET_SUCCESS = 0,
+  SEV_RET_INVALID_PLATFORM_STATE,
+  SEV_RET_INVALID_GUEST_STATE,
+  SEV_RET_INAVLID_CONFIG,
+  SEV_RET_INVALID_LEN,
+  SEV_RET_ALREADY_OWNED,
+  SEV_RET_INVALID_CERTIFICATE,
+  SEV_RET_POLICY_FAILURE,
+  SEV_RET_INACTIVE,
+  SEV_RET_INVALID_ADDRESS,
+  SEV_RET_BAD_SIGNATURE,
+  SEV_RET_BAD_MEASUREMENT,
+  SEV_RET_ASID_OWNED,
+  SEV_RET_INVALID_ASID,
+  SEV_RET_WBINVD_REQUIRED,
+  SEV_RET_DFFLUSH_REQUIRED,
+  SEV_RET_INVALID_GUEST,
+  SEV_RET_INVALID_COMMAND,
+  SEV_RET_ACTIVE,
+  SEV_RET_HWSEV_RET_PLATFORM,
+  SEV_RET_HWSEV_RET_UNSAFE,
+  SEV_RET_UNSUPPORTED,
+  SEV_RET_INVALID_PARAM,
+  SEV_RET_RESOURCE_LIMIT,
+  SEV_RET_SECURE_DATA_INVALID,
+  SEV_RET_MAX,
+} sev_ret_code;
+struct sev_user_data_status {
+  __u8 api_major;
+  __u8 api_minor;
+  __u8 state;
+  __u32 flags;
+  __u8 build;
+  __u32 guest_count;
+} __packed;
+#define SEV_STATUS_FLAGS_CONFIG_ES 0x0100
+struct sev_user_data_pek_csr {
+  __u64 address;
+  __u32 length;
+} __packed;
+struct sev_user_data_pek_cert_import {
+  __u64 pek_cert_address;
+  __u32 pek_cert_len;
+  __u64 oca_cert_address;
+  __u32 oca_cert_len;
+} __packed;
+struct sev_user_data_pdh_cert_export {
+  __u64 pdh_cert_address;
+  __u32 pdh_cert_len;
+  __u64 cert_chain_address;
+  __u32 cert_chain_len;
+} __packed;
+struct sev_user_data_get_id {
+  __u8 socket1[64];
+  __u8 socket2[64];
+} __packed;
+struct sev_user_data_get_id2 {
+  __u64 address;
+  __u32 length;
+} __packed;
+struct sev_issue_cmd {
+  __u32 cmd;
+  __u64 data;
+  __u32 error;
+} __packed;
+#define SEV_IOC_TYPE 'S'
+#define SEV_ISSUE_CMD _IOWR(SEV_IOC_TYPE, 0x0, struct sev_issue_cmd)
+#endif
diff --git a/i686-linux-musl/include/linux/ptp_clock.h b/i686-linux-musl/include/linux/ptp_clock.h
new file mode 100644
index 0000000..ca6f3c3
--- /dev/null
+++ b/i686-linux-musl/include/linux/ptp_clock.h
@@ -0,0 +1,124 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _PTP_CLOCK_H_
+#define _PTP_CLOCK_H_
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define PTP_ENABLE_FEATURE (1 << 0)
+#define PTP_RISING_EDGE (1 << 1)
+#define PTP_FALLING_EDGE (1 << 2)
+#define PTP_STRICT_FLAGS (1 << 3)
+#define PTP_EXTTS_EDGES (PTP_RISING_EDGE | PTP_FALLING_EDGE)
+#define PTP_EXTTS_VALID_FLAGS (PTP_ENABLE_FEATURE | PTP_RISING_EDGE | PTP_FALLING_EDGE | PTP_STRICT_FLAGS)
+#define PTP_EXTTS_V1_VALID_FLAGS (PTP_ENABLE_FEATURE | PTP_RISING_EDGE | PTP_FALLING_EDGE)
+#define PTP_PEROUT_ONE_SHOT (1 << 0)
+#define PTP_PEROUT_DUTY_CYCLE (1 << 1)
+#define PTP_PEROUT_PHASE (1 << 2)
+#define PTP_PEROUT_VALID_FLAGS (PTP_PEROUT_ONE_SHOT | PTP_PEROUT_DUTY_CYCLE | PTP_PEROUT_PHASE)
+#define PTP_PEROUT_V1_VALID_FLAGS (0)
+struct ptp_clock_time {
+  __s64 sec;
+  __u32 nsec;
+  __u32 reserved;
+};
+struct ptp_clock_caps {
+  int max_adj;
+  int n_alarm;
+  int n_ext_ts;
+  int n_per_out;
+  int pps;
+  int n_pins;
+  int cross_timestamping;
+  int adjust_phase;
+  int rsv[12];
+};
+struct ptp_extts_request {
+  unsigned int index;
+  unsigned int flags;
+  unsigned int rsv[2];
+};
+struct ptp_perout_request {
+  union {
+    struct ptp_clock_time start;
+    struct ptp_clock_time phase;
+  };
+  struct ptp_clock_time period;
+  unsigned int index;
+  unsigned int flags;
+  union {
+    struct ptp_clock_time on;
+    unsigned int rsv[4];
+  };
+};
+#define PTP_MAX_SAMPLES 25
+struct ptp_sys_offset {
+  unsigned int n_samples;
+  unsigned int rsv[3];
+  struct ptp_clock_time ts[2 * PTP_MAX_SAMPLES + 1];
+};
+struct ptp_sys_offset_extended {
+  unsigned int n_samples;
+  unsigned int rsv[3];
+  struct ptp_clock_time ts[PTP_MAX_SAMPLES][3];
+};
+struct ptp_sys_offset_precise {
+  struct ptp_clock_time device;
+  struct ptp_clock_time sys_realtime;
+  struct ptp_clock_time sys_monoraw;
+  unsigned int rsv[4];
+};
+enum ptp_pin_function {
+  PTP_PF_NONE,
+  PTP_PF_EXTTS,
+  PTP_PF_PEROUT,
+  PTP_PF_PHYSYNC,
+};
+struct ptp_pin_desc {
+  char name[64];
+  unsigned int index;
+  unsigned int func;
+  unsigned int chan;
+  unsigned int rsv[5];
+};
+#define PTP_CLK_MAGIC '='
+#define PTP_CLOCK_GETCAPS _IOR(PTP_CLK_MAGIC, 1, struct ptp_clock_caps)
+#define PTP_EXTTS_REQUEST _IOW(PTP_CLK_MAGIC, 2, struct ptp_extts_request)
+#define PTP_PEROUT_REQUEST _IOW(PTP_CLK_MAGIC, 3, struct ptp_perout_request)
+#define PTP_ENABLE_PPS _IOW(PTP_CLK_MAGIC, 4, int)
+#define PTP_SYS_OFFSET _IOW(PTP_CLK_MAGIC, 5, struct ptp_sys_offset)
+#define PTP_PIN_GETFUNC _IOWR(PTP_CLK_MAGIC, 6, struct ptp_pin_desc)
+#define PTP_PIN_SETFUNC _IOW(PTP_CLK_MAGIC, 7, struct ptp_pin_desc)
+#define PTP_SYS_OFFSET_PRECISE _IOWR(PTP_CLK_MAGIC, 8, struct ptp_sys_offset_precise)
+#define PTP_SYS_OFFSET_EXTENDED _IOWR(PTP_CLK_MAGIC, 9, struct ptp_sys_offset_extended)
+#define PTP_CLOCK_GETCAPS2 _IOR(PTP_CLK_MAGIC, 10, struct ptp_clock_caps)
+#define PTP_EXTTS_REQUEST2 _IOW(PTP_CLK_MAGIC, 11, struct ptp_extts_request)
+#define PTP_PEROUT_REQUEST2 _IOW(PTP_CLK_MAGIC, 12, struct ptp_perout_request)
+#define PTP_ENABLE_PPS2 _IOW(PTP_CLK_MAGIC, 13, int)
+#define PTP_SYS_OFFSET2 _IOW(PTP_CLK_MAGIC, 14, struct ptp_sys_offset)
+#define PTP_PIN_GETFUNC2 _IOWR(PTP_CLK_MAGIC, 15, struct ptp_pin_desc)
+#define PTP_PIN_SETFUNC2 _IOW(PTP_CLK_MAGIC, 16, struct ptp_pin_desc)
+#define PTP_SYS_OFFSET_PRECISE2 _IOWR(PTP_CLK_MAGIC, 17, struct ptp_sys_offset_precise)
+#define PTP_SYS_OFFSET_EXTENDED2 _IOWR(PTP_CLK_MAGIC, 18, struct ptp_sys_offset_extended)
+struct ptp_extts_event {
+  struct ptp_clock_time t;
+  unsigned int index;
+  unsigned int flags;
+  unsigned int rsv[2];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/ptrace.h b/i686-linux-musl/include/linux/ptrace.h
new file mode 100644
index 0000000..4bfa59a
--- /dev/null
+++ b/i686-linux-musl/include/linux/ptrace.h
@@ -0,0 +1,116 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_PTRACE_H
+#define _UAPI_LINUX_PTRACE_H
+#include <linux/types.h>
+#define PTRACE_TRACEME 0
+#define PTRACE_PEEKTEXT 1
+#define PTRACE_PEEKDATA 2
+#define PTRACE_PEEKUSR 3
+#define PTRACE_POKETEXT 4
+#define PTRACE_POKEDATA 5
+#define PTRACE_POKEUSR 6
+#define PTRACE_CONT 7
+#define PTRACE_KILL 8
+#define PTRACE_SINGLESTEP 9
+#define PTRACE_ATTACH 16
+#define PTRACE_DETACH 17
+#define PTRACE_SYSCALL 24
+#define PTRACE_SETOPTIONS 0x4200
+#define PTRACE_GETEVENTMSG 0x4201
+#define PTRACE_GETSIGINFO 0x4202
+#define PTRACE_SETSIGINFO 0x4203
+#define PTRACE_GETREGSET 0x4204
+#define PTRACE_SETREGSET 0x4205
+#define PTRACE_SEIZE 0x4206
+#define PTRACE_INTERRUPT 0x4207
+#define PTRACE_LISTEN 0x4208
+#define PTRACE_PEEKSIGINFO 0x4209
+struct ptrace_peeksiginfo_args {
+  __u64 off;
+  __u32 flags;
+  __s32 nr;
+};
+#define PTRACE_GETSIGMASK 0x420a
+#define PTRACE_SETSIGMASK 0x420b
+#define PTRACE_SECCOMP_GET_FILTER 0x420c
+#define PTRACE_SECCOMP_GET_METADATA 0x420d
+struct seccomp_metadata {
+  __u64 filter_off;
+  __u64 flags;
+};
+#define PTRACE_GET_SYSCALL_INFO 0x420e
+#define PTRACE_SYSCALL_INFO_NONE 0
+#define PTRACE_SYSCALL_INFO_ENTRY 1
+#define PTRACE_SYSCALL_INFO_EXIT 2
+#define PTRACE_SYSCALL_INFO_SECCOMP 3
+struct ptrace_syscall_info {
+  __u8 op;
+  __u8 pad[3];
+  __u32 arch;
+  __u64 instruction_pointer;
+  __u64 stack_pointer;
+  union {
+    struct {
+      __u64 nr;
+      __u64 args[6];
+    } entry;
+    struct {
+      __s64 rval;
+      __u8 is_error;
+    } exit;
+    struct {
+      __u64 nr;
+      __u64 args[6];
+      __u32 ret_data;
+    } seccomp;
+  };
+};
+#define PTRACE_GET_RSEQ_CONFIGURATION 0x420f
+struct ptrace_rseq_configuration {
+  __u64 rseq_abi_pointer;
+  __u32 rseq_abi_size;
+  __u32 signature;
+  __u32 flags;
+  __u32 pad;
+};
+#define PTRACE_EVENTMSG_SYSCALL_ENTRY 1
+#define PTRACE_EVENTMSG_SYSCALL_EXIT 2
+#define PTRACE_PEEKSIGINFO_SHARED (1 << 0)
+#define PTRACE_EVENT_FORK 1
+#define PTRACE_EVENT_VFORK 2
+#define PTRACE_EVENT_CLONE 3
+#define PTRACE_EVENT_EXEC 4
+#define PTRACE_EVENT_VFORK_DONE 5
+#define PTRACE_EVENT_EXIT 6
+#define PTRACE_EVENT_SECCOMP 7
+#define PTRACE_EVENT_STOP 128
+#define PTRACE_O_TRACESYSGOOD 1
+#define PTRACE_O_TRACEFORK (1 << PTRACE_EVENT_FORK)
+#define PTRACE_O_TRACEVFORK (1 << PTRACE_EVENT_VFORK)
+#define PTRACE_O_TRACECLONE (1 << PTRACE_EVENT_CLONE)
+#define PTRACE_O_TRACEEXEC (1 << PTRACE_EVENT_EXEC)
+#define PTRACE_O_TRACEVFORKDONE (1 << PTRACE_EVENT_VFORK_DONE)
+#define PTRACE_O_TRACEEXIT (1 << PTRACE_EVENT_EXIT)
+#define PTRACE_O_TRACESECCOMP (1 << PTRACE_EVENT_SECCOMP)
+#define PTRACE_O_EXITKILL (1 << 20)
+#define PTRACE_O_SUSPEND_SECCOMP (1 << 21)
+#define PTRACE_O_MASK (0x000000ff | PTRACE_O_EXITKILL | PTRACE_O_SUSPEND_SECCOMP)
+#include <asm/ptrace.h>
+#endif
diff --git a/i686-linux-musl/include/linux/qemu_fw_cfg.h b/i686-linux-musl/include/linux/qemu_fw_cfg.h
new file mode 100644
index 0000000..173af1f
--- /dev/null
+++ b/i686-linux-musl/include/linux/qemu_fw_cfg.h
@@ -0,0 +1,86 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_FW_CFG_H
+#define _LINUX_FW_CFG_H
+#include <linux/types.h>
+#define FW_CFG_ACPI_DEVICE_ID "QEMU0002"
+#define FW_CFG_SIGNATURE 0x00
+#define FW_CFG_ID 0x01
+#define FW_CFG_UUID 0x02
+#define FW_CFG_RAM_SIZE 0x03
+#define FW_CFG_NOGRAPHIC 0x04
+#define FW_CFG_NB_CPUS 0x05
+#define FW_CFG_MACHINE_ID 0x06
+#define FW_CFG_KERNEL_ADDR 0x07
+#define FW_CFG_KERNEL_SIZE 0x08
+#define FW_CFG_KERNEL_CMDLINE 0x09
+#define FW_CFG_INITRD_ADDR 0x0a
+#define FW_CFG_INITRD_SIZE 0x0b
+#define FW_CFG_BOOT_DEVICE 0x0c
+#define FW_CFG_NUMA 0x0d
+#define FW_CFG_BOOT_MENU 0x0e
+#define FW_CFG_MAX_CPUS 0x0f
+#define FW_CFG_KERNEL_ENTRY 0x10
+#define FW_CFG_KERNEL_DATA 0x11
+#define FW_CFG_INITRD_DATA 0x12
+#define FW_CFG_CMDLINE_ADDR 0x13
+#define FW_CFG_CMDLINE_SIZE 0x14
+#define FW_CFG_CMDLINE_DATA 0x15
+#define FW_CFG_SETUP_ADDR 0x16
+#define FW_CFG_SETUP_SIZE 0x17
+#define FW_CFG_SETUP_DATA 0x18
+#define FW_CFG_FILE_DIR 0x19
+#define FW_CFG_FILE_FIRST 0x20
+#define FW_CFG_FILE_SLOTS_MIN 0x10
+#define FW_CFG_WRITE_CHANNEL 0x4000
+#define FW_CFG_ARCH_LOCAL 0x8000
+#define FW_CFG_ENTRY_MASK (~(FW_CFG_WRITE_CHANNEL | FW_CFG_ARCH_LOCAL))
+#define FW_CFG_INVALID 0xffff
+#define FW_CFG_CTL_SIZE 0x02
+#define FW_CFG_MAX_FILE_PATH 56
+#define FW_CFG_SIG_SIZE 4
+#define FW_CFG_VERSION 0x01
+#define FW_CFG_VERSION_DMA 0x02
+struct fw_cfg_file {
+  __be32 size;
+  __be16 select;
+  __u16 reserved;
+  char name[FW_CFG_MAX_FILE_PATH];
+};
+#define FW_CFG_DMA_CTL_ERROR 0x01
+#define FW_CFG_DMA_CTL_READ 0x02
+#define FW_CFG_DMA_CTL_SKIP 0x04
+#define FW_CFG_DMA_CTL_SELECT 0x08
+#define FW_CFG_DMA_CTL_WRITE 0x10
+#define FW_CFG_DMA_SIGNATURE 0x51454d5520434647ULL
+struct fw_cfg_dma_access {
+  __be32 control;
+  __be32 length;
+  __be64 address;
+};
+#define FW_CFG_VMCOREINFO_FILENAME "etc/vmcoreinfo"
+#define FW_CFG_VMCOREINFO_FORMAT_NONE 0x0
+#define FW_CFG_VMCOREINFO_FORMAT_ELF 0x1
+struct fw_cfg_vmcoreinfo {
+  __le16 host_format;
+  __le16 guest_format;
+  __le32 size;
+  __le64 paddr;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/qnx4_fs.h b/i686-linux-musl/include/linux/qnx4_fs.h
new file mode 100644
index 0000000..c6f1a8e
--- /dev/null
+++ b/i686-linux-musl/include/linux/qnx4_fs.h
@@ -0,0 +1,85 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_QNX4_FS_H
+#define _LINUX_QNX4_FS_H
+#include <linux/types.h>
+#include <linux/qnxtypes.h>
+#include <linux/magic.h>
+#define QNX4_ROOT_INO 1
+#define QNX4_MAX_XTNTS_PER_XBLK 60
+#define QNX4_FILE_USED 0x01
+#define QNX4_FILE_MODIFIED 0x02
+#define QNX4_FILE_BUSY 0x04
+#define QNX4_FILE_LINK 0x08
+#define QNX4_FILE_INODE 0x10
+#define QNX4_FILE_FSYSCLEAN 0x20
+#define QNX4_I_MAP_SLOTS 8
+#define QNX4_Z_MAP_SLOTS 64
+#define QNX4_VALID_FS 0x0001
+#define QNX4_ERROR_FS 0x0002
+#define QNX4_BLOCK_SIZE 0x200
+#define QNX4_BLOCK_SIZE_BITS 9
+#define QNX4_DIR_ENTRY_SIZE 0x040
+#define QNX4_DIR_ENTRY_SIZE_BITS 6
+#define QNX4_XBLK_ENTRY_SIZE 0x200
+#define QNX4_INODES_PER_BLOCK 0x08
+#define QNX4_SHORT_NAME_MAX 16
+#define QNX4_NAME_MAX 48
+struct qnx4_inode_entry {
+  char di_fname[QNX4_SHORT_NAME_MAX];
+  qnx4_off_t di_size;
+  qnx4_xtnt_t di_first_xtnt;
+  __le32 di_xblk;
+  __le32 di_ftime;
+  __le32 di_mtime;
+  __le32 di_atime;
+  __le32 di_ctime;
+  qnx4_nxtnt_t di_num_xtnts;
+  qnx4_mode_t di_mode;
+  qnx4_muid_t di_uid;
+  qnx4_mgid_t di_gid;
+  qnx4_nlink_t di_nlink;
+  __u8 di_zero[4];
+  qnx4_ftype_t di_type;
+  __u8 di_status;
+};
+struct qnx4_link_info {
+  char dl_fname[QNX4_NAME_MAX];
+  __le32 dl_inode_blk;
+  __u8 dl_inode_ndx;
+  __u8 dl_spare[10];
+  __u8 dl_status;
+};
+struct qnx4_xblk {
+  __le32 xblk_next_xblk;
+  __le32 xblk_prev_xblk;
+  __u8 xblk_num_xtnts;
+  __u8 xblk_spare[3];
+  __le32 xblk_num_blocks;
+  qnx4_xtnt_t xblk_xtnts[QNX4_MAX_XTNTS_PER_XBLK];
+  char xblk_signature[8];
+  qnx4_xtnt_t xblk_first_xtnt;
+};
+struct qnx4_super_block {
+  struct qnx4_inode_entry RootDir;
+  struct qnx4_inode_entry Inode;
+  struct qnx4_inode_entry Boot;
+  struct qnx4_inode_entry AltBoot;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/qnxtypes.h b/i686-linux-musl/include/linux/qnxtypes.h
new file mode 100644
index 0000000..d313361
--- /dev/null
+++ b/i686-linux-musl/include/linux/qnxtypes.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _QNX4TYPES_H
+#define _QNX4TYPES_H
+#include <linux/types.h>
+typedef __le16 qnx4_nxtnt_t;
+typedef __u8 qnx4_ftype_t;
+typedef struct {
+  __le32 xtnt_blk;
+  __le32 xtnt_size;
+} qnx4_xtnt_t;
+typedef __le16 qnx4_mode_t;
+typedef __le16 qnx4_muid_t;
+typedef __le16 qnx4_mgid_t;
+typedef __le32 qnx4_off_t;
+typedef __le16 qnx4_nlink_t;
+#endif
diff --git a/i686-linux-musl/include/linux/qrtr.h b/i686-linux-musl/include/linux/qrtr.h
new file mode 100644
index 0000000..c0a4c72
--- /dev/null
+++ b/i686-linux-musl/include/linux/qrtr.h
@@ -0,0 +1,58 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_QRTR_H
+#define _LINUX_QRTR_H
+#include <linux/socket.h>
+#include <linux/types.h>
+#define QRTR_NODE_BCAST 0xffffffffu
+#define QRTR_PORT_CTRL 0xfffffffeu
+struct sockaddr_qrtr {
+  __kernel_sa_family_t sq_family;
+  __u32 sq_node;
+  __u32 sq_port;
+};
+enum qrtr_pkt_type {
+  QRTR_TYPE_DATA = 1,
+  QRTR_TYPE_HELLO = 2,
+  QRTR_TYPE_BYE = 3,
+  QRTR_TYPE_NEW_SERVER = 4,
+  QRTR_TYPE_DEL_SERVER = 5,
+  QRTR_TYPE_DEL_CLIENT = 6,
+  QRTR_TYPE_RESUME_TX = 7,
+  QRTR_TYPE_EXIT = 8,
+  QRTR_TYPE_PING = 9,
+  QRTR_TYPE_NEW_LOOKUP = 10,
+  QRTR_TYPE_DEL_LOOKUP = 11,
+};
+struct qrtr_ctrl_pkt {
+  __le32 cmd;
+  union {
+    struct {
+      __le32 service;
+      __le32 instance;
+      __le32 node;
+      __le32 port;
+    } server;
+    struct {
+      __le32 node;
+      __le32 port;
+    } client;
+  };
+} __packed;
+#endif
diff --git a/i686-linux-musl/include/linux/quota.h b/i686-linux-musl/include/linux/quota.h
new file mode 100644
index 0000000..280b396
--- /dev/null
+++ b/i686-linux-musl/include/linux/quota.h
@@ -0,0 +1,134 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_QUOTA_
+#define _UAPI_LINUX_QUOTA_
+#include <linux/types.h>
+#define __DQUOT_VERSION__ "dquot_6.6.0"
+#define MAXQUOTAS 3
+#define USRQUOTA 0
+#define GRPQUOTA 1
+#define PRJQUOTA 2
+#define INITQFNAMES { "user", "group", "project", "undefined", \
+};
+#define SUBCMDMASK 0x00ff
+#define SUBCMDSHIFT 8
+#define QCMD(cmd,type) (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK))
+#define Q_SYNC 0x800001
+#define Q_QUOTAON 0x800002
+#define Q_QUOTAOFF 0x800003
+#define Q_GETFMT 0x800004
+#define Q_GETINFO 0x800005
+#define Q_SETINFO 0x800006
+#define Q_GETQUOTA 0x800007
+#define Q_SETQUOTA 0x800008
+#define Q_GETNEXTQUOTA 0x800009
+#define QFMT_VFS_OLD 1
+#define QFMT_VFS_V0 2
+#define QFMT_OCFS2 3
+#define QFMT_VFS_V1 4
+#define QIF_DQBLKSIZE_BITS 10
+#define QIF_DQBLKSIZE (1 << QIF_DQBLKSIZE_BITS)
+enum {
+  QIF_BLIMITS_B = 0,
+  QIF_SPACE_B,
+  QIF_ILIMITS_B,
+  QIF_INODES_B,
+  QIF_BTIME_B,
+  QIF_ITIME_B,
+};
+#define QIF_BLIMITS (1 << QIF_BLIMITS_B)
+#define QIF_SPACE (1 << QIF_SPACE_B)
+#define QIF_ILIMITS (1 << QIF_ILIMITS_B)
+#define QIF_INODES (1 << QIF_INODES_B)
+#define QIF_BTIME (1 << QIF_BTIME_B)
+#define QIF_ITIME (1 << QIF_ITIME_B)
+#define QIF_LIMITS (QIF_BLIMITS | QIF_ILIMITS)
+#define QIF_USAGE (QIF_SPACE | QIF_INODES)
+#define QIF_TIMES (QIF_BTIME | QIF_ITIME)
+#define QIF_ALL (QIF_LIMITS | QIF_USAGE | QIF_TIMES)
+struct if_dqblk {
+  __u64 dqb_bhardlimit;
+  __u64 dqb_bsoftlimit;
+  __u64 dqb_curspace;
+  __u64 dqb_ihardlimit;
+  __u64 dqb_isoftlimit;
+  __u64 dqb_curinodes;
+  __u64 dqb_btime;
+  __u64 dqb_itime;
+  __u32 dqb_valid;
+};
+struct if_nextdqblk {
+  __u64 dqb_bhardlimit;
+  __u64 dqb_bsoftlimit;
+  __u64 dqb_curspace;
+  __u64 dqb_ihardlimit;
+  __u64 dqb_isoftlimit;
+  __u64 dqb_curinodes;
+  __u64 dqb_btime;
+  __u64 dqb_itime;
+  __u32 dqb_valid;
+  __u32 dqb_id;
+};
+#define IIF_BGRACE 1
+#define IIF_IGRACE 2
+#define IIF_FLAGS 4
+#define IIF_ALL (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)
+enum {
+  DQF_ROOT_SQUASH_B = 0,
+  DQF_SYS_FILE_B = 16,
+  DQF_PRIVATE
+};
+#define DQF_ROOT_SQUASH (1 << DQF_ROOT_SQUASH_B)
+#define DQF_SYS_FILE (1 << DQF_SYS_FILE_B)
+struct if_dqinfo {
+  __u64 dqi_bgrace;
+  __u64 dqi_igrace;
+  __u32 dqi_flags;
+  __u32 dqi_valid;
+};
+#define QUOTA_NL_NOWARN 0
+#define QUOTA_NL_IHARDWARN 1
+#define QUOTA_NL_ISOFTLONGWARN 2
+#define QUOTA_NL_ISOFTWARN 3
+#define QUOTA_NL_BHARDWARN 4
+#define QUOTA_NL_BSOFTLONGWARN 5
+#define QUOTA_NL_BSOFTWARN 6
+#define QUOTA_NL_IHARDBELOW 7
+#define QUOTA_NL_ISOFTBELOW 8
+#define QUOTA_NL_BHARDBELOW 9
+#define QUOTA_NL_BSOFTBELOW 10
+enum {
+  QUOTA_NL_C_UNSPEC,
+  QUOTA_NL_C_WARNING,
+  __QUOTA_NL_C_MAX,
+};
+#define QUOTA_NL_C_MAX (__QUOTA_NL_C_MAX - 1)
+enum {
+  QUOTA_NL_A_UNSPEC,
+  QUOTA_NL_A_QTYPE,
+  QUOTA_NL_A_EXCESS_ID,
+  QUOTA_NL_A_WARNING,
+  QUOTA_NL_A_DEV_MAJOR,
+  QUOTA_NL_A_DEV_MINOR,
+  QUOTA_NL_A_CAUSED_ID,
+  QUOTA_NL_A_PAD,
+  __QUOTA_NL_A_MAX,
+};
+#define QUOTA_NL_A_MAX (__QUOTA_NL_A_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/radeonfb.h b/i686-linux-musl/include/linux/radeonfb.h
new file mode 100644
index 0000000..b7a6b9d
--- /dev/null
+++ b/i686-linux-musl/include/linux/radeonfb.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_RADEONFB_H__
+#define __LINUX_RADEONFB_H__
+#include <asm/ioctl.h>
+#include <linux/types.h>
+#define ATY_RADEON_LCD_ON 0x00000001
+#define ATY_RADEON_CRT_ON 0x00000002
+#define FBIO_RADEON_GET_MIRROR _IOR('@', 3, size_t)
+#define FBIO_RADEON_SET_MIRROR _IOW('@', 4, size_t)
+#endif
diff --git a/i686-linux-musl/include/linux/raid/md_p.h b/i686-linux-musl/include/linux/raid/md_p.h
new file mode 100644
index 0000000..4ad444a
--- /dev/null
+++ b/i686-linux-musl/include/linux/raid/md_p.h
@@ -0,0 +1,248 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _MD_P_H
+#define _MD_P_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+#define MD_RESERVED_BYTES (64 * 1024)
+#define MD_RESERVED_SECTORS (MD_RESERVED_BYTES / 512)
+#define MD_NEW_SIZE_SECTORS(x) ((x & ~(MD_RESERVED_SECTORS - 1)) - MD_RESERVED_SECTORS)
+#define MD_SB_BYTES 4096
+#define MD_SB_WORDS (MD_SB_BYTES / 4)
+#define MD_SB_SECTORS (MD_SB_BYTES / 512)
+#define MD_SB_GENERIC_OFFSET 0
+#define MD_SB_PERSONALITY_OFFSET 64
+#define MD_SB_DISKS_OFFSET 128
+#define MD_SB_DESCRIPTOR_OFFSET 992
+#define MD_SB_GENERIC_CONSTANT_WORDS 32
+#define MD_SB_GENERIC_STATE_WORDS 32
+#define MD_SB_GENERIC_WORDS (MD_SB_GENERIC_CONSTANT_WORDS + MD_SB_GENERIC_STATE_WORDS)
+#define MD_SB_PERSONALITY_WORDS 64
+#define MD_SB_DESCRIPTOR_WORDS 32
+#define MD_SB_DISKS 27
+#define MD_SB_DISKS_WORDS (MD_SB_DISKS * MD_SB_DESCRIPTOR_WORDS)
+#define MD_SB_RESERVED_WORDS (1024 - MD_SB_GENERIC_WORDS - MD_SB_PERSONALITY_WORDS - MD_SB_DISKS_WORDS - MD_SB_DESCRIPTOR_WORDS)
+#define MD_SB_EQUAL_WORDS (MD_SB_GENERIC_WORDS + MD_SB_PERSONALITY_WORDS + MD_SB_DISKS_WORDS)
+#define MD_DISK_FAULTY 0
+#define MD_DISK_ACTIVE 1
+#define MD_DISK_SYNC 2
+#define MD_DISK_REMOVED 3
+#define MD_DISK_CLUSTER_ADD 4
+#define MD_DISK_CANDIDATE 5
+#define MD_DISK_FAILFAST 10
+#define MD_DISK_WRITEMOSTLY 9
+#define MD_DISK_JOURNAL 18
+#define MD_DISK_ROLE_SPARE 0xffff
+#define MD_DISK_ROLE_FAULTY 0xfffe
+#define MD_DISK_ROLE_JOURNAL 0xfffd
+#define MD_DISK_ROLE_MAX 0xff00
+typedef struct mdp_device_descriptor_s {
+  __u32 number;
+  __u32 major;
+  __u32 minor;
+  __u32 raid_disk;
+  __u32 state;
+  __u32 reserved[MD_SB_DESCRIPTOR_WORDS - 5];
+} mdp_disk_t;
+#define MD_SB_MAGIC 0xa92b4efc
+#define MD_SB_CLEAN 0
+#define MD_SB_ERRORS 1
+#define MD_SB_CLUSTERED 5
+#define MD_SB_BITMAP_PRESENT 8
+typedef struct mdp_superblock_s {
+  __u32 md_magic;
+  __u32 major_version;
+  __u32 minor_version;
+  __u32 patch_version;
+  __u32 gvalid_words;
+  __u32 set_uuid0;
+  __u32 ctime;
+  __u32 level;
+  __u32 size;
+  __u32 nr_disks;
+  __u32 raid_disks;
+  __u32 md_minor;
+  __u32 not_persistent;
+  __u32 set_uuid1;
+  __u32 set_uuid2;
+  __u32 set_uuid3;
+  __u32 gstate_creserved[MD_SB_GENERIC_CONSTANT_WORDS - 16];
+  __u32 utime;
+  __u32 state;
+  __u32 active_disks;
+  __u32 working_disks;
+  __u32 failed_disks;
+  __u32 spare_disks;
+  __u32 sb_csum;
+#if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
+  __u32 events_hi;
+  __u32 events_lo;
+  __u32 cp_events_hi;
+  __u32 cp_events_lo;
+#elif defined(__BYTE_ORDER)?__BYTE_ORDER==__LITTLE_ENDIAN:defined(__LITTLE_ENDIAN)
+  __u32 events_lo;
+  __u32 events_hi;
+  __u32 cp_events_lo;
+  __u32 cp_events_hi;
+#else
+#error unspecified endianness
+#endif
+  __u32 recovery_cp;
+  __u64 reshape_position;
+  __u32 new_level;
+  __u32 delta_disks;
+  __u32 new_layout;
+  __u32 new_chunk;
+  __u32 gstate_sreserved[MD_SB_GENERIC_STATE_WORDS - 18];
+  __u32 layout;
+  __u32 chunk_size;
+  __u32 root_pv;
+  __u32 root_block;
+  __u32 pstate_reserved[MD_SB_PERSONALITY_WORDS - 4];
+  mdp_disk_t disks[MD_SB_DISKS];
+  __u32 reserved[MD_SB_RESERVED_WORDS];
+  mdp_disk_t this_disk;
+} mdp_super_t;
+#define MD_SUPERBLOCK_1_TIME_SEC_MASK ((1ULL << 40) - 1)
+struct mdp_superblock_1 {
+  __le32 magic;
+  __le32 major_version;
+  __le32 feature_map;
+  __le32 pad0;
+  __u8 set_uuid[16];
+  char set_name[32];
+  __le64 ctime;
+  __le32 level;
+  __le32 layout;
+  __le64 size;
+  __le32 chunksize;
+  __le32 raid_disks;
+  union {
+    __le32 bitmap_offset;
+    struct {
+      __le16 offset;
+      __le16 size;
+    } ppl;
+  };
+  __le32 new_level;
+  __le64 reshape_position;
+  __le32 delta_disks;
+  __le32 new_layout;
+  __le32 new_chunk;
+  __le32 new_offset;
+  __le64 data_offset;
+  __le64 data_size;
+  __le64 super_offset;
+  union {
+    __le64 recovery_offset;
+    __le64 journal_tail;
+  };
+  __le32 dev_number;
+  __le32 cnt_corrected_read;
+  __u8 device_uuid[16];
+  __u8 devflags;
+#define WriteMostly1 1
+#define FailFast1 2
+  __u8 bblog_shift;
+  __le16 bblog_size;
+  __le32 bblog_offset;
+  __le64 utime;
+  __le64 events;
+  __le64 resync_offset;
+  __le32 sb_csum;
+  __le32 max_dev;
+  __u8 pad3[64 - 32];
+  __le16 dev_roles[0];
+};
+#define MD_FEATURE_BITMAP_OFFSET 1
+#define MD_FEATURE_RECOVERY_OFFSET 2
+#define MD_FEATURE_RESHAPE_ACTIVE 4
+#define MD_FEATURE_BAD_BLOCKS 8
+#define MD_FEATURE_REPLACEMENT 16
+#define MD_FEATURE_RESHAPE_BACKWARDS 32
+#define MD_FEATURE_NEW_OFFSET 64
+#define MD_FEATURE_RECOVERY_BITMAP 128
+#define MD_FEATURE_CLUSTERED 256
+#define MD_FEATURE_JOURNAL 512
+#define MD_FEATURE_PPL 1024
+#define MD_FEATURE_MULTIPLE_PPLS 2048
+#define MD_FEATURE_RAID0_LAYOUT 4096
+#define MD_FEATURE_ALL (MD_FEATURE_BITMAP_OFFSET | MD_FEATURE_RECOVERY_OFFSET | MD_FEATURE_RESHAPE_ACTIVE | MD_FEATURE_BAD_BLOCKS | MD_FEATURE_REPLACEMENT | MD_FEATURE_RESHAPE_BACKWARDS | MD_FEATURE_NEW_OFFSET | MD_FEATURE_RECOVERY_BITMAP | MD_FEATURE_CLUSTERED | MD_FEATURE_JOURNAL | MD_FEATURE_PPL | MD_FEATURE_MULTIPLE_PPLS | MD_FEATURE_RAID0_LAYOUT)
+struct r5l_payload_header {
+  __le16 type;
+  __le16 flags;
+} __attribute__((__packed__));
+enum r5l_payload_type {
+  R5LOG_PAYLOAD_DATA = 0,
+  R5LOG_PAYLOAD_PARITY = 1,
+  R5LOG_PAYLOAD_FLUSH = 2,
+};
+struct r5l_payload_data_parity {
+  struct r5l_payload_header header;
+  __le32 size;
+  __le64 location;
+  __le32 checksum[];
+} __attribute__((__packed__));
+enum r5l_payload_data_parity_flag {
+  R5LOG_PAYLOAD_FLAG_DISCARD = 1,
+  R5LOG_PAYLOAD_FLAG_RESHAPED = 2,
+  R5LOG_PAYLOAD_FLAG_RESHAPING = 3,
+};
+struct r5l_payload_flush {
+  struct r5l_payload_header header;
+  __le32 size;
+  __le64 flush_stripes[];
+} __attribute__((__packed__));
+enum r5l_payload_flush_flag {
+  R5LOG_PAYLOAD_FLAG_FLUSH_STRIPE = 1,
+};
+struct r5l_meta_block {
+  __le32 magic;
+  __le32 checksum;
+  __u8 version;
+  __u8 __zero_pading_1;
+  __le16 __zero_pading_2;
+  __le32 meta_size;
+  __le64 seq;
+  __le64 position;
+  struct r5l_payload_header payloads[];
+} __attribute__((__packed__));
+#define R5LOG_VERSION 0x1
+#define R5LOG_MAGIC 0x6433c509
+struct ppl_header_entry {
+  __le64 data_sector;
+  __le32 pp_size;
+  __le32 data_size;
+  __le32 parity_disk;
+  __le32 checksum;
+} __attribute__((__packed__));
+#define PPL_HEADER_SIZE 4096
+#define PPL_HDR_RESERVED 512
+#define PPL_HDR_ENTRY_SPACE (PPL_HEADER_SIZE - PPL_HDR_RESERVED - 4 * sizeof(__le32) - sizeof(__le64))
+#define PPL_HDR_MAX_ENTRIES (PPL_HDR_ENTRY_SPACE / sizeof(struct ppl_header_entry))
+struct ppl_header {
+  __u8 reserved[PPL_HDR_RESERVED];
+  __le32 signature;
+  __le32 padding;
+  __le64 generation;
+  __le32 entries_count;
+  __le32 checksum;
+  struct ppl_header_entry entries[PPL_HDR_MAX_ENTRIES];
+} __attribute__((__packed__));
+#endif
diff --git a/i686-linux-musl/include/linux/raid/md_u.h b/i686-linux-musl/include/linux/raid/md_u.h
new file mode 100644
index 0000000..8c7fadc
--- /dev/null
+++ b/i686-linux-musl/include/linux/raid/md_u.h
@@ -0,0 +1,97 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_MD_U_H
+#define _UAPI_MD_U_H
+#define MD_MAJOR_VERSION 0
+#define MD_MINOR_VERSION 90
+#define MD_PATCHLEVEL_VERSION 3
+#define RAID_VERSION _IOR(MD_MAJOR, 0x10, mdu_version_t)
+#define GET_ARRAY_INFO _IOR(MD_MAJOR, 0x11, mdu_array_info_t)
+#define GET_DISK_INFO _IOR(MD_MAJOR, 0x12, mdu_disk_info_t)
+#define RAID_AUTORUN _IO(MD_MAJOR, 0x14)
+#define GET_BITMAP_FILE _IOR(MD_MAJOR, 0x15, mdu_bitmap_file_t)
+#define CLEAR_ARRAY _IO(MD_MAJOR, 0x20)
+#define ADD_NEW_DISK _IOW(MD_MAJOR, 0x21, mdu_disk_info_t)
+#define HOT_REMOVE_DISK _IO(MD_MAJOR, 0x22)
+#define SET_ARRAY_INFO _IOW(MD_MAJOR, 0x23, mdu_array_info_t)
+#define SET_DISK_INFO _IO(MD_MAJOR, 0x24)
+#define WRITE_RAID_INFO _IO(MD_MAJOR, 0x25)
+#define UNPROTECT_ARRAY _IO(MD_MAJOR, 0x26)
+#define PROTECT_ARRAY _IO(MD_MAJOR, 0x27)
+#define HOT_ADD_DISK _IO(MD_MAJOR, 0x28)
+#define SET_DISK_FAULTY _IO(MD_MAJOR, 0x29)
+#define HOT_GENERATE_ERROR _IO(MD_MAJOR, 0x2a)
+#define SET_BITMAP_FILE _IOW(MD_MAJOR, 0x2b, int)
+#define RUN_ARRAY _IOW(MD_MAJOR, 0x30, mdu_param_t)
+#define STOP_ARRAY _IO(MD_MAJOR, 0x32)
+#define STOP_ARRAY_RO _IO(MD_MAJOR, 0x33)
+#define RESTART_ARRAY_RW _IO(MD_MAJOR, 0x34)
+#define CLUSTERED_DISK_NACK _IO(MD_MAJOR, 0x35)
+#define MdpMinorShift 6
+typedef struct mdu_version_s {
+  int major;
+  int minor;
+  int patchlevel;
+} mdu_version_t;
+typedef struct mdu_array_info_s {
+  int major_version;
+  int minor_version;
+  int patch_version;
+  unsigned int ctime;
+  int level;
+  int size;
+  int nr_disks;
+  int raid_disks;
+  int md_minor;
+  int not_persistent;
+  unsigned int utime;
+  int state;
+  int active_disks;
+  int working_disks;
+  int failed_disks;
+  int spare_disks;
+  int layout;
+  int chunk_size;
+} mdu_array_info_t;
+#define LEVEL_MULTIPATH (- 4)
+#define LEVEL_LINEAR (- 1)
+#define LEVEL_FAULTY (- 5)
+#define LEVEL_NONE (- 1000000)
+typedef struct mdu_disk_info_s {
+  int number;
+  int major;
+  int minor;
+  int raid_disk;
+  int state;
+} mdu_disk_info_t;
+typedef struct mdu_start_info_s {
+  int major;
+  int minor;
+  int raid_disk;
+  int state;
+} mdu_start_info_t;
+typedef struct mdu_bitmap_file_s {
+  char pathname[4096];
+} mdu_bitmap_file_t;
+typedef struct mdu_param_s {
+  int personality;
+  int chunk_size;
+  int max_fault;
+} mdu_param_t;
+#endif
diff --git a/i686-linux-musl/include/linux/random.h b/i686-linux-musl/include/linux/random.h
new file mode 100644
index 0000000..2d3cfef
--- /dev/null
+++ b/i686-linux-musl/include/linux/random.h
@@ -0,0 +1,39 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_RANDOM_H
+#define _UAPI_LINUX_RANDOM_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#include <linux/irqnr.h>
+#define RNDGETENTCNT _IOR('R', 0x00, int)
+#define RNDADDTOENTCNT _IOW('R', 0x01, int)
+#define RNDGETPOOL _IOR('R', 0x02, int[2])
+#define RNDADDENTROPY _IOW('R', 0x03, int[2])
+#define RNDZAPENTCNT _IO('R', 0x04)
+#define RNDCLEARPOOL _IO('R', 0x06)
+#define RNDRESEEDCRNG _IO('R', 0x07)
+struct rand_pool_info {
+  int entropy_count;
+  int buf_size;
+  __u32 buf[0];
+};
+#define GRND_NONBLOCK 0x0001
+#define GRND_RANDOM 0x0002
+#define GRND_INSECURE 0x0004
+#endif
diff --git a/i686-linux-musl/include/linux/rds.h b/i686-linux-musl/include/linux/rds.h
new file mode 100644
index 0000000..7006c87
--- /dev/null
+++ b/i686-linux-musl/include/linux/rds.h
@@ -0,0 +1,284 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_RDS_H
+#define _LINUX_RDS_H
+#include <linux/types.h>
+#include <linux/socket.h>
+#include <linux/in6.h>
+#define RDS_IB_ABI_VERSION 0x301
+#define SOL_RDS 276
+#define RDS_CANCEL_SENT_TO 1
+#define RDS_GET_MR 2
+#define RDS_FREE_MR 3
+#define RDS_RECVERR 5
+#define RDS_CONG_MONITOR 6
+#define RDS_GET_MR_FOR_DEST 7
+#define SO_RDS_TRANSPORT 8
+#define SO_RDS_MSG_RXPATH_LATENCY 10
+#define RDS_TRANS_IB 0
+#define RDS_TRANS_GAP 1
+#define RDS_TRANS_TCP 2
+#define RDS_TRANS_COUNT 3
+#define RDS_TRANS_NONE (~0)
+#define RDS_TRANS_IWARP RDS_TRANS_GAP
+#define SIOCRDSSETTOS (SIOCPROTOPRIVATE)
+#define SIOCRDSGETTOS (SIOCPROTOPRIVATE + 1)
+typedef __u8 rds_tos_t;
+#define RDS_CMSG_RDMA_ARGS 1
+#define RDS_CMSG_RDMA_DEST 2
+#define RDS_CMSG_RDMA_MAP 3
+#define RDS_CMSG_RDMA_STATUS 4
+#define RDS_CMSG_CONG_UPDATE 5
+#define RDS_CMSG_ATOMIC_FADD 6
+#define RDS_CMSG_ATOMIC_CSWP 7
+#define RDS_CMSG_MASKED_ATOMIC_FADD 8
+#define RDS_CMSG_MASKED_ATOMIC_CSWP 9
+#define RDS_CMSG_RXPATH_LATENCY 11
+#define RDS_CMSG_ZCOPY_COOKIE 12
+#define RDS_CMSG_ZCOPY_COMPLETION 13
+#define RDS_INFO_FIRST 10000
+#define RDS_INFO_COUNTERS 10000
+#define RDS_INFO_CONNECTIONS 10001
+#define RDS_INFO_SEND_MESSAGES 10003
+#define RDS_INFO_RETRANS_MESSAGES 10004
+#define RDS_INFO_RECV_MESSAGES 10005
+#define RDS_INFO_SOCKETS 10006
+#define RDS_INFO_TCP_SOCKETS 10007
+#define RDS_INFO_IB_CONNECTIONS 10008
+#define RDS_INFO_CONNECTION_STATS 10009
+#define RDS_INFO_IWARP_CONNECTIONS 10010
+#define RDS6_INFO_CONNECTIONS 10011
+#define RDS6_INFO_SEND_MESSAGES 10012
+#define RDS6_INFO_RETRANS_MESSAGES 10013
+#define RDS6_INFO_RECV_MESSAGES 10014
+#define RDS6_INFO_SOCKETS 10015
+#define RDS6_INFO_TCP_SOCKETS 10016
+#define RDS6_INFO_IB_CONNECTIONS 10017
+#define RDS_INFO_LAST 10017
+struct rds_info_counter {
+  __u8 name[32];
+  __u64 value;
+} __attribute__((packed));
+#define RDS_INFO_CONNECTION_FLAG_SENDING 0x01
+#define RDS_INFO_CONNECTION_FLAG_CONNECTING 0x02
+#define RDS_INFO_CONNECTION_FLAG_CONNECTED 0x04
+#define TRANSNAMSIZ 16
+struct rds_info_connection {
+  __u64 next_tx_seq;
+  __u64 next_rx_seq;
+  __be32 laddr;
+  __be32 faddr;
+  __u8 transport[TRANSNAMSIZ];
+  __u8 flags;
+  __u8 tos;
+} __attribute__((packed));
+struct rds6_info_connection {
+  __u64 next_tx_seq;
+  __u64 next_rx_seq;
+  struct in6_addr laddr;
+  struct in6_addr faddr;
+  __u8 transport[TRANSNAMSIZ];
+  __u8 flags;
+} __attribute__((packed));
+#define RDS_INFO_MESSAGE_FLAG_ACK 0x01
+#define RDS_INFO_MESSAGE_FLAG_FAST_ACK 0x02
+struct rds_info_message {
+  __u64 seq;
+  __u32 len;
+  __be32 laddr;
+  __be32 faddr;
+  __be16 lport;
+  __be16 fport;
+  __u8 flags;
+  __u8 tos;
+} __attribute__((packed));
+struct rds6_info_message {
+  __u64 seq;
+  __u32 len;
+  struct in6_addr laddr;
+  struct in6_addr faddr;
+  __be16 lport;
+  __be16 fport;
+  __u8 flags;
+  __u8 tos;
+} __attribute__((packed));
+struct rds_info_socket {
+  __u32 sndbuf;
+  __be32 bound_addr;
+  __be32 connected_addr;
+  __be16 bound_port;
+  __be16 connected_port;
+  __u32 rcvbuf;
+  __u64 inum;
+} __attribute__((packed));
+struct rds6_info_socket {
+  __u32 sndbuf;
+  struct in6_addr bound_addr;
+  struct in6_addr connected_addr;
+  __be16 bound_port;
+  __be16 connected_port;
+  __u32 rcvbuf;
+  __u64 inum;
+} __attribute__((packed));
+struct rds_info_tcp_socket {
+  __be32 local_addr;
+  __be16 local_port;
+  __be32 peer_addr;
+  __be16 peer_port;
+  __u64 hdr_rem;
+  __u64 data_rem;
+  __u32 last_sent_nxt;
+  __u32 last_expected_una;
+  __u32 last_seen_una;
+  __u8 tos;
+} __attribute__((packed));
+struct rds6_info_tcp_socket {
+  struct in6_addr local_addr;
+  __be16 local_port;
+  struct in6_addr peer_addr;
+  __be16 peer_port;
+  __u64 hdr_rem;
+  __u64 data_rem;
+  __u32 last_sent_nxt;
+  __u32 last_expected_una;
+  __u32 last_seen_una;
+} __attribute__((packed));
+#define RDS_IB_GID_LEN 16
+struct rds_info_rdma_connection {
+  __be32 src_addr;
+  __be32 dst_addr;
+  __u8 src_gid[RDS_IB_GID_LEN];
+  __u8 dst_gid[RDS_IB_GID_LEN];
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 rdma_mr_max;
+  __u32 rdma_mr_size;
+  __u8 tos;
+  __u8 sl;
+  __u32 cache_allocs;
+};
+struct rds6_info_rdma_connection {
+  struct in6_addr src_addr;
+  struct in6_addr dst_addr;
+  __u8 src_gid[RDS_IB_GID_LEN];
+  __u8 dst_gid[RDS_IB_GID_LEN];
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 rdma_mr_max;
+  __u32 rdma_mr_size;
+  __u8 tos;
+  __u8 sl;
+  __u32 cache_allocs;
+};
+enum rds_message_rxpath_latency {
+  RDS_MSG_RX_HDR_TO_DGRAM_START = 0,
+  RDS_MSG_RX_DGRAM_REASSEMBLE,
+  RDS_MSG_RX_DGRAM_DELIVERED,
+  RDS_MSG_RX_DGRAM_TRACE_MAX
+};
+struct rds_rx_trace_so {
+  __u8 rx_traces;
+  __u8 rx_trace_pos[RDS_MSG_RX_DGRAM_TRACE_MAX];
+};
+struct rds_cmsg_rx_trace {
+  __u8 rx_traces;
+  __u8 rx_trace_pos[RDS_MSG_RX_DGRAM_TRACE_MAX];
+  __u64 rx_trace[RDS_MSG_RX_DGRAM_TRACE_MAX];
+};
+#define RDS_CONG_MONITOR_SIZE 64
+#define RDS_CONG_MONITOR_BIT(port) (((unsigned int) port) % RDS_CONG_MONITOR_SIZE)
+#define RDS_CONG_MONITOR_MASK(port) (1ULL << RDS_CONG_MONITOR_BIT(port))
+typedef __u64 rds_rdma_cookie_t;
+struct rds_iovec {
+  __u64 addr;
+  __u64 bytes;
+};
+struct rds_get_mr_args {
+  struct rds_iovec vec;
+  __u64 cookie_addr;
+  __u64 flags;
+};
+struct rds_get_mr_for_dest_args {
+  struct __kernel_sockaddr_storage dest_addr;
+  struct rds_iovec vec;
+  __u64 cookie_addr;
+  __u64 flags;
+};
+struct rds_free_mr_args {
+  rds_rdma_cookie_t cookie;
+  __u64 flags;
+};
+struct rds_rdma_args {
+  rds_rdma_cookie_t cookie;
+  struct rds_iovec remote_vec;
+  __u64 local_vec_addr;
+  __u64 nr_local;
+  __u64 flags;
+  __u64 user_token;
+};
+struct rds_atomic_args {
+  rds_rdma_cookie_t cookie;
+  __u64 local_addr;
+  __u64 remote_addr;
+  union {
+    struct {
+      __u64 compare;
+      __u64 swap;
+    } cswp;
+    struct {
+      __u64 add;
+    } fadd;
+    struct {
+      __u64 compare;
+      __u64 swap;
+      __u64 compare_mask;
+      __u64 swap_mask;
+    } m_cswp;
+    struct {
+      __u64 add;
+      __u64 nocarry_mask;
+    } m_fadd;
+  };
+  __u64 flags;
+  __u64 user_token;
+};
+struct rds_rdma_notify {
+  __u64 user_token;
+  __s32 status;
+};
+#define RDS_RDMA_SUCCESS 0
+#define RDS_RDMA_REMOTE_ERROR 1
+#define RDS_RDMA_CANCELED 2
+#define RDS_RDMA_DROPPED 3
+#define RDS_RDMA_OTHER_ERROR 4
+#define RDS_MAX_ZCOOKIES 8
+struct rds_zcopy_cookies {
+  __u32 num;
+  __u32 cookies[RDS_MAX_ZCOOKIES];
+};
+#define RDS_RDMA_READWRITE 0x0001
+#define RDS_RDMA_FENCE 0x0002
+#define RDS_RDMA_INVALIDATE 0x0004
+#define RDS_RDMA_USE_ONCE 0x0008
+#define RDS_RDMA_DONTWAIT 0x0010
+#define RDS_RDMA_NOTIFY_ME 0x0020
+#define RDS_RDMA_SILENT 0x0040
+#endif
diff --git a/i686-linux-musl/include/linux/reboot.h b/i686-linux-musl/include/linux/reboot.h
new file mode 100644
index 0000000..6bf017a
--- /dev/null
+++ b/i686-linux-musl/include/linux/reboot.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_REBOOT_H
+#define _UAPI_LINUX_REBOOT_H
+#define LINUX_REBOOT_MAGIC1 0xfee1dead
+#define LINUX_REBOOT_MAGIC2 672274793
+#define LINUX_REBOOT_MAGIC2A 85072278
+#define LINUX_REBOOT_MAGIC2B 369367448
+#define LINUX_REBOOT_MAGIC2C 537993216
+#define LINUX_REBOOT_CMD_RESTART 0x01234567
+#define LINUX_REBOOT_CMD_HALT 0xCDEF0123
+#define LINUX_REBOOT_CMD_CAD_ON 0x89ABCDEF
+#define LINUX_REBOOT_CMD_CAD_OFF 0x00000000
+#define LINUX_REBOOT_CMD_POWER_OFF 0x4321FEDC
+#define LINUX_REBOOT_CMD_RESTART2 0xA1B2C3D4
+#define LINUX_REBOOT_CMD_SW_SUSPEND 0xD000FCE2
+#define LINUX_REBOOT_CMD_KEXEC 0x45584543
+#endif
diff --git a/i686-linux-musl/include/linux/reiserfs_fs.h b/i686-linux-musl/include/linux/reiserfs_fs.h
new file mode 100644
index 0000000..5485b1f
--- /dev/null
+++ b/i686-linux-musl/include/linux/reiserfs_fs.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_REISER_FS_H
+#define _LINUX_REISER_FS_H
+#include <linux/types.h>
+#include <linux/magic.h>
+#define REISERFS_IOC_UNPACK _IOW(0xCD, 1, long)
+#define REISERFS_IOC_GETFLAGS FS_IOC_GETFLAGS
+#define REISERFS_IOC_SETFLAGS FS_IOC_SETFLAGS
+#define REISERFS_IOC_GETVERSION FS_IOC_GETVERSION
+#define REISERFS_IOC_SETVERSION FS_IOC_SETVERSION
+#endif
diff --git a/i686-linux-musl/include/linux/reiserfs_xattr.h b/i686-linux-musl/include/linux/reiserfs_xattr.h
new file mode 100644
index 0000000..36d31f6
--- /dev/null
+++ b/i686-linux-musl/include/linux/reiserfs_xattr.h
@@ -0,0 +1,32 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_REISERFS_XATTR_H
+#define _LINUX_REISERFS_XATTR_H
+#include <linux/types.h>
+#define REISERFS_XATTR_MAGIC 0x52465841
+struct reiserfs_xattr_header {
+  __le32 h_magic;
+  __le32 h_hash;
+};
+struct reiserfs_security_handle {
+  const char * name;
+  void * value;
+  size_t length;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/remoteproc_cdev.h b/i686-linux-musl/include/linux/remoteproc_cdev.h
new file mode 100644
index 0000000..a10ff01
--- /dev/null
+++ b/i686-linux-musl/include/linux/remoteproc_cdev.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_REMOTEPROC_CDEV_H_
+#define _UAPI_REMOTEPROC_CDEV_H_
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define RPROC_MAGIC 0xB7
+#define RPROC_SET_SHUTDOWN_ON_RELEASE _IOW(RPROC_MAGIC, 1, __s32)
+#define RPROC_GET_SHUTDOWN_ON_RELEASE _IOR(RPROC_MAGIC, 2, __s32)
+#endif
diff --git a/i686-linux-musl/include/linux/resource.h b/i686-linux-musl/include/linux/resource.h
new file mode 100644
index 0000000..6f531a0
--- /dev/null
+++ b/i686-linux-musl/include/linux/resource.h
@@ -0,0 +1,62 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_RESOURCE_H
+#define _UAPI_LINUX_RESOURCE_H
+#include <linux/time.h>
+#include <linux/types.h>
+#define RUSAGE_SELF 0
+#define RUSAGE_CHILDREN (- 1)
+#define RUSAGE_BOTH (- 2)
+#define RUSAGE_THREAD 1
+struct rusage {
+  struct timeval ru_utime;
+  struct timeval ru_stime;
+  __kernel_long_t ru_maxrss;
+  __kernel_long_t ru_ixrss;
+  __kernel_long_t ru_idrss;
+  __kernel_long_t ru_isrss;
+  __kernel_long_t ru_minflt;
+  __kernel_long_t ru_majflt;
+  __kernel_long_t ru_nswap;
+  __kernel_long_t ru_inblock;
+  __kernel_long_t ru_oublock;
+  __kernel_long_t ru_msgsnd;
+  __kernel_long_t ru_msgrcv;
+  __kernel_long_t ru_nsignals;
+  __kernel_long_t ru_nvcsw;
+  __kernel_long_t ru_nivcsw;
+};
+struct rlimit {
+  __kernel_ulong_t rlim_cur;
+  __kernel_ulong_t rlim_max;
+};
+#define RLIM64_INFINITY (~0ULL)
+struct rlimit64 {
+  __u64 rlim_cur;
+  __u64 rlim_max;
+};
+#define PRIO_MIN (- 20)
+#define PRIO_MAX 20
+#define PRIO_PROCESS 0
+#define PRIO_PGRP 1
+#define PRIO_USER 2
+#define _STK_LIM (8 * 1024 * 1024)
+#define MLOCK_LIMIT (8 * 1024 * 1024)
+#include <asm/resource.h>
+#endif
diff --git a/i686-linux-musl/include/linux/rfkill.h b/i686-linux-musl/include/linux/rfkill.h
new file mode 100644
index 0000000..6020baf
--- /dev/null
+++ b/i686-linux-musl/include/linux/rfkill.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__RFKILL_H
+#define _UAPI__RFKILL_H
+#include <linux/types.h>
+#define RFKILL_STATE_SOFT_BLOCKED 0
+#define RFKILL_STATE_UNBLOCKED 1
+#define RFKILL_STATE_HARD_BLOCKED 2
+enum rfkill_type {
+  RFKILL_TYPE_ALL = 0,
+  RFKILL_TYPE_WLAN,
+  RFKILL_TYPE_BLUETOOTH,
+  RFKILL_TYPE_UWB,
+  RFKILL_TYPE_WIMAX,
+  RFKILL_TYPE_WWAN,
+  RFKILL_TYPE_GPS,
+  RFKILL_TYPE_FM,
+  RFKILL_TYPE_NFC,
+  NUM_RFKILL_TYPES,
+};
+enum rfkill_operation {
+  RFKILL_OP_ADD = 0,
+  RFKILL_OP_DEL,
+  RFKILL_OP_CHANGE,
+  RFKILL_OP_CHANGE_ALL,
+};
+enum rfkill_hard_block_reasons {
+  RFKILL_HARD_BLOCK_SIGNAL = 1 << 0,
+  RFKILL_HARD_BLOCK_NOT_OWNER = 1 << 1,
+};
+struct rfkill_event {
+  __u32 idx;
+  __u8 type;
+  __u8 op;
+  __u8 soft;
+  __u8 hard;
+} __attribute__((packed));
+struct rfkill_event_ext {
+  __u32 idx;
+  __u8 type;
+  __u8 op;
+  __u8 soft;
+  __u8 hard;
+  __u8 hard_block_reasons;
+} __attribute__((packed));
+#define RFKILL_EVENT_SIZE_V1 sizeof(struct rfkill_event)
+#define RFKILL_IOC_MAGIC 'R'
+#define RFKILL_IOC_NOINPUT 1
+#define RFKILL_IOCTL_NOINPUT _IO(RFKILL_IOC_MAGIC, RFKILL_IOC_NOINPUT)
+#endif
diff --git a/i686-linux-musl/include/linux/rio_cm_cdev.h b/i686-linux-musl/include/linux/rio_cm_cdev.h
new file mode 100644
index 0000000..39799bc
--- /dev/null
+++ b/i686-linux-musl/include/linux/rio_cm_cdev.h
@@ -0,0 +1,51 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _RIO_CM_CDEV_H_
+#define _RIO_CM_CDEV_H_
+#include <linux/types.h>
+struct rio_cm_channel {
+  __u16 id;
+  __u16 remote_channel;
+  __u16 remote_destid;
+  __u8 mport_id;
+};
+struct rio_cm_msg {
+  __u16 ch_num;
+  __u16 size;
+  __u32 rxto;
+  __u64 msg;
+};
+struct rio_cm_accept {
+  __u16 ch_num;
+  __u16 pad0;
+  __u32 wait_to;
+};
+#define RIO_CM_IOC_MAGIC 'c'
+#define RIO_CM_EP_GET_LIST_SIZE _IOWR(RIO_CM_IOC_MAGIC, 1, __u32)
+#define RIO_CM_EP_GET_LIST _IOWR(RIO_CM_IOC_MAGIC, 2, __u32)
+#define RIO_CM_CHAN_CREATE _IOWR(RIO_CM_IOC_MAGIC, 3, __u16)
+#define RIO_CM_CHAN_CLOSE _IOW(RIO_CM_IOC_MAGIC, 4, __u16)
+#define RIO_CM_CHAN_BIND _IOW(RIO_CM_IOC_MAGIC, 5, struct rio_cm_channel)
+#define RIO_CM_CHAN_LISTEN _IOW(RIO_CM_IOC_MAGIC, 6, __u16)
+#define RIO_CM_CHAN_ACCEPT _IOWR(RIO_CM_IOC_MAGIC, 7, struct rio_cm_accept)
+#define RIO_CM_CHAN_CONNECT _IOW(RIO_CM_IOC_MAGIC, 8, struct rio_cm_channel)
+#define RIO_CM_CHAN_SEND _IOW(RIO_CM_IOC_MAGIC, 9, struct rio_cm_msg)
+#define RIO_CM_CHAN_RECEIVE _IOWR(RIO_CM_IOC_MAGIC, 10, struct rio_cm_msg)
+#define RIO_CM_MPORT_GET_LIST _IOWR(RIO_CM_IOC_MAGIC, 11, __u32)
+#endif
diff --git a/i686-linux-musl/include/linux/rio_mport_cdev.h b/i686-linux-musl/include/linux/rio_mport_cdev.h
new file mode 100644
index 0000000..3e6d6de
--- /dev/null
+++ b/i686-linux-musl/include/linux/rio_mport_cdev.h
@@ -0,0 +1,173 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _RIO_MPORT_CDEV_H_
+#define _RIO_MPORT_CDEV_H_
+#include <linux/ioctl.h>
+#include <linux/types.h>
+struct rio_mport_maint_io {
+  __u16 rioid;
+  __u8 hopcount;
+  __u8 pad0[5];
+  __u32 offset;
+  __u32 length;
+  __u64 buffer;
+};
+#define RIO_TRANSFER_MODE_MAPPED (1 << 0)
+#define RIO_TRANSFER_MODE_TRANSFER (1 << 1)
+#define RIO_CAP_DBL_SEND (1 << 2)
+#define RIO_CAP_DBL_RECV (1 << 3)
+#define RIO_CAP_PW_SEND (1 << 4)
+#define RIO_CAP_PW_RECV (1 << 5)
+#define RIO_CAP_MAP_OUTB (1 << 6)
+#define RIO_CAP_MAP_INB (1 << 7)
+struct rio_mport_properties {
+  __u16 hdid;
+  __u8 id;
+  __u8 index;
+  __u32 flags;
+  __u32 sys_size;
+  __u8 port_ok;
+  __u8 link_speed;
+  __u8 link_width;
+  __u8 pad0;
+  __u32 dma_max_sge;
+  __u32 dma_max_size;
+  __u32 dma_align;
+  __u32 transfer_mode;
+  __u32 cap_sys_size;
+  __u32 cap_addr_size;
+  __u32 cap_transfer_mode;
+  __u32 cap_mport;
+};
+#define RIO_DOORBELL (1 << 0)
+#define RIO_PORTWRITE (1 << 1)
+struct rio_doorbell {
+  __u16 rioid;
+  __u16 payload;
+};
+struct rio_doorbell_filter {
+  __u16 rioid;
+  __u16 low;
+  __u16 high;
+  __u16 pad0;
+};
+struct rio_portwrite {
+  __u32 payload[16];
+};
+struct rio_pw_filter {
+  __u32 mask;
+  __u32 low;
+  __u32 high;
+  __u32 pad0;
+};
+#define RIO_MAP_ANY_ADDR (__u64) (~((__u64) 0))
+struct rio_mmap {
+  __u16 rioid;
+  __u16 pad0[3];
+  __u64 rio_addr;
+  __u64 length;
+  __u64 handle;
+  __u64 address;
+};
+struct rio_dma_mem {
+  __u64 length;
+  __u64 dma_handle;
+  __u64 address;
+};
+struct rio_event {
+  __u32 header;
+  union {
+    struct rio_doorbell doorbell;
+    struct rio_portwrite portwrite;
+  } u;
+  __u32 pad0;
+};
+enum rio_transfer_sync {
+  RIO_TRANSFER_SYNC,
+  RIO_TRANSFER_ASYNC,
+  RIO_TRANSFER_FAF,
+};
+enum rio_transfer_dir {
+  RIO_TRANSFER_DIR_READ,
+  RIO_TRANSFER_DIR_WRITE,
+};
+enum rio_exchange {
+  RIO_EXCHANGE_DEFAULT,
+  RIO_EXCHANGE_NWRITE,
+  RIO_EXCHANGE_SWRITE,
+  RIO_EXCHANGE_NWRITE_R,
+  RIO_EXCHANGE_SWRITE_R,
+  RIO_EXCHANGE_NWRITE_R_ALL,
+};
+struct rio_transfer_io {
+  __u64 rio_addr;
+  __u64 loc_addr;
+  __u64 handle;
+  __u64 offset;
+  __u64 length;
+  __u16 rioid;
+  __u16 method;
+  __u32 completion_code;
+};
+struct rio_transaction {
+  __u64 block;
+  __u32 count;
+  __u32 transfer_mode;
+  __u16 sync;
+  __u16 dir;
+  __u32 pad0;
+};
+struct rio_async_tx_wait {
+  __u32 token;
+  __u32 timeout;
+};
+#define RIO_MAX_DEVNAME_SZ 20
+struct rio_rdev_info {
+  __u16 destid;
+  __u8 hopcount;
+  __u8 pad0;
+  __u32 comptag;
+  char name[RIO_MAX_DEVNAME_SZ + 1];
+};
+#define RIO_MPORT_DRV_MAGIC 'm'
+#define RIO_MPORT_MAINT_HDID_SET _IOW(RIO_MPORT_DRV_MAGIC, 1, __u16)
+#define RIO_MPORT_MAINT_COMPTAG_SET _IOW(RIO_MPORT_DRV_MAGIC, 2, __u32)
+#define RIO_MPORT_MAINT_PORT_IDX_GET _IOR(RIO_MPORT_DRV_MAGIC, 3, __u32)
+#define RIO_MPORT_GET_PROPERTIES _IOR(RIO_MPORT_DRV_MAGIC, 4, struct rio_mport_properties)
+#define RIO_MPORT_MAINT_READ_LOCAL _IOR(RIO_MPORT_DRV_MAGIC, 5, struct rio_mport_maint_io)
+#define RIO_MPORT_MAINT_WRITE_LOCAL _IOW(RIO_MPORT_DRV_MAGIC, 6, struct rio_mport_maint_io)
+#define RIO_MPORT_MAINT_READ_REMOTE _IOR(RIO_MPORT_DRV_MAGIC, 7, struct rio_mport_maint_io)
+#define RIO_MPORT_MAINT_WRITE_REMOTE _IOW(RIO_MPORT_DRV_MAGIC, 8, struct rio_mport_maint_io)
+#define RIO_ENABLE_DOORBELL_RANGE _IOW(RIO_MPORT_DRV_MAGIC, 9, struct rio_doorbell_filter)
+#define RIO_DISABLE_DOORBELL_RANGE _IOW(RIO_MPORT_DRV_MAGIC, 10, struct rio_doorbell_filter)
+#define RIO_ENABLE_PORTWRITE_RANGE _IOW(RIO_MPORT_DRV_MAGIC, 11, struct rio_pw_filter)
+#define RIO_DISABLE_PORTWRITE_RANGE _IOW(RIO_MPORT_DRV_MAGIC, 12, struct rio_pw_filter)
+#define RIO_SET_EVENT_MASK _IOW(RIO_MPORT_DRV_MAGIC, 13, __u32)
+#define RIO_GET_EVENT_MASK _IOR(RIO_MPORT_DRV_MAGIC, 14, __u32)
+#define RIO_MAP_OUTBOUND _IOWR(RIO_MPORT_DRV_MAGIC, 15, struct rio_mmap)
+#define RIO_UNMAP_OUTBOUND _IOW(RIO_MPORT_DRV_MAGIC, 16, struct rio_mmap)
+#define RIO_MAP_INBOUND _IOWR(RIO_MPORT_DRV_MAGIC, 17, struct rio_mmap)
+#define RIO_UNMAP_INBOUND _IOW(RIO_MPORT_DRV_MAGIC, 18, __u64)
+#define RIO_ALLOC_DMA _IOWR(RIO_MPORT_DRV_MAGIC, 19, struct rio_dma_mem)
+#define RIO_FREE_DMA _IOW(RIO_MPORT_DRV_MAGIC, 20, __u64)
+#define RIO_TRANSFER _IOWR(RIO_MPORT_DRV_MAGIC, 21, struct rio_transaction)
+#define RIO_WAIT_FOR_ASYNC _IOW(RIO_MPORT_DRV_MAGIC, 22, struct rio_async_tx_wait)
+#define RIO_DEV_ADD _IOW(RIO_MPORT_DRV_MAGIC, 23, struct rio_rdev_info)
+#define RIO_DEV_DEL _IOW(RIO_MPORT_DRV_MAGIC, 24, struct rio_rdev_info)
+#endif
diff --git a/i686-linux-musl/include/linux/rkisp1-config.h b/i686-linux-musl/include/linux/rkisp1-config.h
new file mode 100644
index 0000000..cea14cd
--- /dev/null
+++ b/i686-linux-musl/include/linux/rkisp1-config.h
@@ -0,0 +1,371 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_RKISP1_CONFIG_H
+#define _UAPI_RKISP1_CONFIG_H
+#include <linux/types.h>
+#define RKISP1_CIF_ISP_MODULE_DPCC (1U << 0)
+#define RKISP1_CIF_ISP_MODULE_BLS (1U << 1)
+#define RKISP1_CIF_ISP_MODULE_SDG (1U << 2)
+#define RKISP1_CIF_ISP_MODULE_HST (1U << 3)
+#define RKISP1_CIF_ISP_MODULE_LSC (1U << 4)
+#define RKISP1_CIF_ISP_MODULE_AWB_GAIN (1U << 5)
+#define RKISP1_CIF_ISP_MODULE_FLT (1U << 6)
+#define RKISP1_CIF_ISP_MODULE_BDM (1U << 7)
+#define RKISP1_CIF_ISP_MODULE_CTK (1U << 8)
+#define RKISP1_CIF_ISP_MODULE_GOC (1U << 9)
+#define RKISP1_CIF_ISP_MODULE_CPROC (1U << 10)
+#define RKISP1_CIF_ISP_MODULE_AFC (1U << 11)
+#define RKISP1_CIF_ISP_MODULE_AWB (1U << 12)
+#define RKISP1_CIF_ISP_MODULE_IE (1U << 13)
+#define RKISP1_CIF_ISP_MODULE_AEC (1U << 14)
+#define RKISP1_CIF_ISP_MODULE_WDR (1U << 15)
+#define RKISP1_CIF_ISP_MODULE_DPF (1U << 16)
+#define RKISP1_CIF_ISP_MODULE_DPF_STRENGTH (1U << 17)
+#define RKISP1_CIF_ISP_CTK_COEFF_MAX 0x100
+#define RKISP1_CIF_ISP_CTK_OFFSET_MAX 0x800
+#define RKISP1_CIF_ISP_AE_MEAN_MAX_V10 25
+#define RKISP1_CIF_ISP_AE_MEAN_MAX_V12 81
+#define RKISP1_CIF_ISP_AE_MEAN_MAX RKISP1_CIF_ISP_AE_MEAN_MAX_V12
+#define RKISP1_CIF_ISP_HIST_BIN_N_MAX_V10 16
+#define RKISP1_CIF_ISP_HIST_BIN_N_MAX_V12 32
+#define RKISP1_CIF_ISP_HIST_BIN_N_MAX RKISP1_CIF_ISP_HIST_BIN_N_MAX_V12
+#define RKISP1_CIF_ISP_AFM_MAX_WINDOWS 3
+#define RKISP1_CIF_ISP_DEGAMMA_CURVE_SIZE 17
+#define RKISP1_CIF_ISP_BDM_MAX_TH 0xff
+#define RKISP1_CIF_ISP_BLS_START_H_MAX 0x00000fff
+#define RKISP1_CIF_ISP_BLS_STOP_H_MAX 0x00000fff
+#define RKISP1_CIF_ISP_BLS_START_V_MAX 0x00000fff
+#define RKISP1_CIF_ISP_BLS_STOP_V_MAX 0x00000fff
+#define RKISP1_CIF_ISP_BLS_SAMPLES_MAX 0x00000012
+#define RKISP1_CIF_ISP_BLS_FIX_SUB_MAX 0x00000fff
+#define RKISP1_CIF_ISP_BLS_FIX_SUB_MIN 0xfffff000
+#define RKISP1_CIF_ISP_BLS_FIX_MASK 0x00001fff
+#define RKISP1_CIF_ISP_AWB_MAX_GRID 1
+#define RKISP1_CIF_ISP_AWB_MAX_FRAMES 7
+#define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V10 17
+#define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V12 34
+#define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V12
+#define RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE 8
+#define RKISP1_CIF_ISP_LSC_SAMPLES_MAX 17
+#define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V10 25
+#define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12 81
+#define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12
+#define RKISP1_CIF_ISP_DPCC_METHODS_MAX 3
+#define RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS 17
+#define RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS 6
+#define RKISP1_CIF_ISP_STAT_AWB (1U << 0)
+#define RKISP1_CIF_ISP_STAT_AUTOEXP (1U << 1)
+#define RKISP1_CIF_ISP_STAT_AFM (1U << 2)
+#define RKISP1_CIF_ISP_STAT_HIST (1U << 3)
+enum rkisp1_cif_isp_version {
+  RKISP1_V10 = 10,
+  RKISP1_V11,
+  RKISP1_V12,
+  RKISP1_V13,
+};
+enum rkisp1_cif_isp_histogram_mode {
+  RKISP1_CIF_ISP_HISTOGRAM_MODE_DISABLE,
+  RKISP1_CIF_ISP_HISTOGRAM_MODE_RGB_COMBINED,
+  RKISP1_CIF_ISP_HISTOGRAM_MODE_R_HISTOGRAM,
+  RKISP1_CIF_ISP_HISTOGRAM_MODE_G_HISTOGRAM,
+  RKISP1_CIF_ISP_HISTOGRAM_MODE_B_HISTOGRAM,
+  RKISP1_CIF_ISP_HISTOGRAM_MODE_Y_HISTOGRAM
+};
+enum rkisp1_cif_isp_awb_mode_type {
+  RKISP1_CIF_ISP_AWB_MODE_MANUAL,
+  RKISP1_CIF_ISP_AWB_MODE_RGB,
+  RKISP1_CIF_ISP_AWB_MODE_YCBCR
+};
+enum rkisp1_cif_isp_flt_mode {
+  RKISP1_CIF_ISP_FLT_STATIC_MODE,
+  RKISP1_CIF_ISP_FLT_DYNAMIC_MODE
+};
+enum rkisp1_cif_isp_exp_ctrl_autostop {
+  RKISP1_CIF_ISP_EXP_CTRL_AUTOSTOP_0 = 0,
+  RKISP1_CIF_ISP_EXP_CTRL_AUTOSTOP_1 = 1,
+};
+enum rkisp1_cif_isp_exp_meas_mode {
+  RKISP1_CIF_ISP_EXP_MEASURING_MODE_0,
+  RKISP1_CIF_ISP_EXP_MEASURING_MODE_1,
+};
+struct rkisp1_cif_isp_window {
+  __u16 h_offs;
+  __u16 v_offs;
+  __u16 h_size;
+  __u16 v_size;
+};
+struct rkisp1_cif_isp_bls_fixed_val {
+  __s16 r;
+  __s16 gr;
+  __s16 gb;
+  __s16 b;
+};
+struct rkisp1_cif_isp_bls_config {
+  __u8 enable_auto;
+  __u8 en_windows;
+  struct rkisp1_cif_isp_window bls_window1;
+  struct rkisp1_cif_isp_window bls_window2;
+  __u8 bls_samples;
+  struct rkisp1_cif_isp_bls_fixed_val fixed_val;
+};
+struct rkisp1_cif_isp_dpcc_methods_config {
+  __u32 method;
+  __u32 line_thresh;
+  __u32 line_mad_fac;
+  __u32 pg_fac;
+  __u32 rnd_thresh;
+  __u32 rg_fac;
+};
+struct rkisp1_cif_isp_dpcc_config {
+  __u32 mode;
+  __u32 output_mode;
+  __u32 set_use;
+  struct rkisp1_cif_isp_dpcc_methods_config methods[RKISP1_CIF_ISP_DPCC_METHODS_MAX];
+  __u32 ro_limits;
+  __u32 rnd_offs;
+};
+struct rkisp1_cif_isp_gamma_corr_curve {
+  __u16 gamma_y[RKISP1_CIF_ISP_DEGAMMA_CURVE_SIZE];
+};
+struct rkisp1_cif_isp_gamma_curve_x_axis_pnts {
+  __u32 gamma_dx0;
+  __u32 gamma_dx1;
+};
+struct rkisp1_cif_isp_sdg_config {
+  struct rkisp1_cif_isp_gamma_corr_curve curve_r;
+  struct rkisp1_cif_isp_gamma_corr_curve curve_g;
+  struct rkisp1_cif_isp_gamma_corr_curve curve_b;
+  struct rkisp1_cif_isp_gamma_curve_x_axis_pnts xa_pnts;
+};
+struct rkisp1_cif_isp_lsc_config {
+  __u16 r_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
+  __u16 gr_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
+  __u16 gb_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
+  __u16 b_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
+  __u16 x_grad_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
+  __u16 y_grad_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
+  __u16 x_size_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
+  __u16 y_size_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
+  __u16 config_width;
+  __u16 config_height;
+};
+struct rkisp1_cif_isp_ie_config {
+  __u16 effect;
+  __u16 color_sel;
+  __u16 eff_mat_1;
+  __u16 eff_mat_2;
+  __u16 eff_mat_3;
+  __u16 eff_mat_4;
+  __u16 eff_mat_5;
+  __u16 eff_tint;
+};
+struct rkisp1_cif_isp_cproc_config {
+  __u8 c_out_range;
+  __u8 y_in_range;
+  __u8 y_out_range;
+  __u8 contrast;
+  __u8 brightness;
+  __u8 sat;
+  __u8 hue;
+};
+struct rkisp1_cif_isp_awb_meas_config {
+  struct rkisp1_cif_isp_window awb_wnd;
+  __u32 awb_mode;
+  __u8 max_y;
+  __u8 min_y;
+  __u8 max_csum;
+  __u8 min_c;
+  __u8 frames;
+  __u8 awb_ref_cr;
+  __u8 awb_ref_cb;
+  __u8 enable_ymax_cmp;
+};
+struct rkisp1_cif_isp_awb_gain_config {
+  __u16 gain_red;
+  __u16 gain_green_r;
+  __u16 gain_blue;
+  __u16 gain_green_b;
+};
+struct rkisp1_cif_isp_flt_config {
+  __u32 mode;
+  __u8 grn_stage1;
+  __u8 chr_h_mode;
+  __u8 chr_v_mode;
+  __u32 thresh_bl0;
+  __u32 thresh_bl1;
+  __u32 thresh_sh0;
+  __u32 thresh_sh1;
+  __u32 lum_weight;
+  __u32 fac_sh1;
+  __u32 fac_sh0;
+  __u32 fac_mid;
+  __u32 fac_bl0;
+  __u32 fac_bl1;
+};
+struct rkisp1_cif_isp_bdm_config {
+  __u8 demosaic_th;
+};
+struct rkisp1_cif_isp_ctk_config {
+  __u16 coeff[3][3];
+  __u16 ct_offset[3];
+};
+enum rkisp1_cif_isp_goc_mode {
+  RKISP1_CIF_ISP_GOC_MODE_LOGARITHMIC,
+  RKISP1_CIF_ISP_GOC_MODE_EQUIDISTANT
+};
+struct rkisp1_cif_isp_goc_config {
+  __u32 mode;
+  __u16 gamma_y[RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES];
+};
+struct rkisp1_cif_isp_hst_config {
+  __u32 mode;
+  __u8 histogram_predivider;
+  struct rkisp1_cif_isp_window meas_window;
+  __u8 hist_weight[RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE];
+};
+struct rkisp1_cif_isp_aec_config {
+  __u32 mode;
+  __u32 autostop;
+  struct rkisp1_cif_isp_window meas_window;
+};
+struct rkisp1_cif_isp_afc_config {
+  __u8 num_afm_win;
+  struct rkisp1_cif_isp_window afm_win[RKISP1_CIF_ISP_AFM_MAX_WINDOWS];
+  __u32 thres;
+  __u32 var_shift;
+};
+enum rkisp1_cif_isp_dpf_gain_usage {
+  RKISP1_CIF_ISP_DPF_GAIN_USAGE_DISABLED,
+  RKISP1_CIF_ISP_DPF_GAIN_USAGE_NF_GAINS,
+  RKISP1_CIF_ISP_DPF_GAIN_USAGE_LSC_GAINS,
+  RKISP1_CIF_ISP_DPF_GAIN_USAGE_NF_LSC_GAINS,
+  RKISP1_CIF_ISP_DPF_GAIN_USAGE_AWB_GAINS,
+  RKISP1_CIF_ISP_DPF_GAIN_USAGE_AWB_LSC_GAINS,
+  RKISP1_CIF_ISP_DPF_GAIN_USAGE_MAX
+};
+enum rkisp1_cif_isp_dpf_rb_filtersize {
+  RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_13x9,
+  RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_9x9,
+};
+enum rkisp1_cif_isp_dpf_nll_scale_mode {
+  RKISP1_CIF_ISP_NLL_SCALE_LINEAR,
+  RKISP1_CIF_ISP_NLL_SCALE_LOGARITHMIC,
+};
+struct rkisp1_cif_isp_dpf_nll {
+  __u16 coeff[RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS];
+  __u32 scale_mode;
+};
+struct rkisp1_cif_isp_dpf_rb_flt {
+  __u32 fltsize;
+  __u8 spatial_coeff[RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS];
+  __u8 r_enable;
+  __u8 b_enable;
+};
+struct rkisp1_cif_isp_dpf_g_flt {
+  __u8 spatial_coeff[RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS];
+  __u8 gr_enable;
+  __u8 gb_enable;
+};
+struct rkisp1_cif_isp_dpf_gain {
+  __u32 mode;
+  __u16 nf_r_gain;
+  __u16 nf_b_gain;
+  __u16 nf_gr_gain;
+  __u16 nf_gb_gain;
+};
+struct rkisp1_cif_isp_dpf_config {
+  struct rkisp1_cif_isp_dpf_gain gain;
+  struct rkisp1_cif_isp_dpf_g_flt g_flt;
+  struct rkisp1_cif_isp_dpf_rb_flt rb_flt;
+  struct rkisp1_cif_isp_dpf_nll nll;
+};
+struct rkisp1_cif_isp_dpf_strength_config {
+  __u8 r;
+  __u8 g;
+  __u8 b;
+};
+struct rkisp1_cif_isp_isp_other_cfg {
+  struct rkisp1_cif_isp_dpcc_config dpcc_config;
+  struct rkisp1_cif_isp_bls_config bls_config;
+  struct rkisp1_cif_isp_sdg_config sdg_config;
+  struct rkisp1_cif_isp_lsc_config lsc_config;
+  struct rkisp1_cif_isp_awb_gain_config awb_gain_config;
+  struct rkisp1_cif_isp_flt_config flt_config;
+  struct rkisp1_cif_isp_bdm_config bdm_config;
+  struct rkisp1_cif_isp_ctk_config ctk_config;
+  struct rkisp1_cif_isp_goc_config goc_config;
+  struct rkisp1_cif_isp_dpf_config dpf_config;
+  struct rkisp1_cif_isp_dpf_strength_config dpf_strength_config;
+  struct rkisp1_cif_isp_cproc_config cproc_config;
+  struct rkisp1_cif_isp_ie_config ie_config;
+};
+struct rkisp1_cif_isp_isp_meas_cfg {
+  struct rkisp1_cif_isp_awb_meas_config awb_meas_config;
+  struct rkisp1_cif_isp_hst_config hst_config;
+  struct rkisp1_cif_isp_aec_config aec_config;
+  struct rkisp1_cif_isp_afc_config afc_config;
+};
+struct rkisp1_params_cfg {
+  __u32 module_en_update;
+  __u32 module_ens;
+  __u32 module_cfg_update;
+  struct rkisp1_cif_isp_isp_meas_cfg meas;
+  struct rkisp1_cif_isp_isp_other_cfg others;
+};
+struct rkisp1_cif_isp_awb_meas {
+  __u32 cnt;
+  __u8 mean_y_or_g;
+  __u8 mean_cb_or_b;
+  __u8 mean_cr_or_r;
+};
+struct rkisp1_cif_isp_awb_stat {
+  struct rkisp1_cif_isp_awb_meas awb_mean[RKISP1_CIF_ISP_AWB_MAX_GRID];
+};
+struct rkisp1_cif_isp_bls_meas_val {
+  __u16 meas_r;
+  __u16 meas_gr;
+  __u16 meas_gb;
+  __u16 meas_b;
+};
+struct rkisp1_cif_isp_ae_stat {
+  __u8 exp_mean[RKISP1_CIF_ISP_AE_MEAN_MAX];
+  struct rkisp1_cif_isp_bls_meas_val bls_val;
+};
+struct rkisp1_cif_isp_af_meas_val {
+  __u32 sum;
+  __u32 lum;
+};
+struct rkisp1_cif_isp_af_stat {
+  struct rkisp1_cif_isp_af_meas_val window[RKISP1_CIF_ISP_AFM_MAX_WINDOWS];
+};
+struct rkisp1_cif_isp_hist_stat {
+  __u32 hist_bins[RKISP1_CIF_ISP_HIST_BIN_N_MAX];
+};
+struct rkisp1_cif_isp_stat {
+  struct rkisp1_cif_isp_awb_stat awb;
+  struct rkisp1_cif_isp_ae_stat ae;
+  struct rkisp1_cif_isp_af_stat af;
+  struct rkisp1_cif_isp_hist_stat hist;
+};
+struct rkisp1_stat_buffer {
+  __u32 meas_type;
+  __u32 frame_id;
+  struct rkisp1_cif_isp_stat params;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/romfs_fs.h b/i686-linux-musl/include/linux/romfs_fs.h
new file mode 100644
index 0000000..8e98714
--- /dev/null
+++ b/i686-linux-musl/include/linux/romfs_fs.h
@@ -0,0 +1,60 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_ROMFS_FS_H
+#define __LINUX_ROMFS_FS_H
+#include <linux/types.h>
+#include <linux/fs.h>
+#define ROMBSIZE BLOCK_SIZE
+#define ROMBSBITS BLOCK_SIZE_BITS
+#define ROMBMASK (ROMBSIZE - 1)
+#define ROMFS_MAGIC 0x7275
+#define ROMFS_MAXFN 128
+#define __mkw(h,l) (((h) & 0x00ff) << 8 | ((l) & 0x00ff))
+#define __mkl(h,l) (((h) & 0xffff) << 16 | ((l) & 0xffff))
+#define __mk4(a,b,c,d) cpu_to_be32(__mkl(__mkw(a, b), __mkw(c, d)))
+#define ROMSB_WORD0 __mk4('-', 'r', 'o', 'm')
+#define ROMSB_WORD1 __mk4('1', 'f', 's', '-')
+struct romfs_super_block {
+  __be32 word0;
+  __be32 word1;
+  __be32 size;
+  __be32 checksum;
+  char name[0];
+};
+struct romfs_inode {
+  __be32 next;
+  __be32 spec;
+  __be32 size;
+  __be32 checksum;
+  char name[0];
+};
+#define ROMFH_TYPE 7
+#define ROMFH_HRD 0
+#define ROMFH_DIR 1
+#define ROMFH_REG 2
+#define ROMFH_SYM 3
+#define ROMFH_BLK 4
+#define ROMFH_CHR 5
+#define ROMFH_SCK 6
+#define ROMFH_FIF 7
+#define ROMFH_EXEC 8
+#define ROMFH_SIZE 16
+#define ROMFH_PAD (ROMFH_SIZE - 1)
+#define ROMFH_MASK (~ROMFH_PAD)
+#endif
diff --git a/i686-linux-musl/include/linux/rose.h b/i686-linux-musl/include/linux/rose.h
new file mode 100644
index 0000000..fa813c7
--- /dev/null
+++ b/i686-linux-musl/include/linux/rose.h
@@ -0,0 +1,89 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef ROSE_KERNEL_H
+#define ROSE_KERNEL_H
+#include <linux/socket.h>
+#include <linux/ax25.h>
+#define ROSE_MTU 251
+#define ROSE_MAX_DIGIS 6
+#define ROSE_DEFER 1
+#define ROSE_T1 2
+#define ROSE_T2 3
+#define ROSE_T3 4
+#define ROSE_IDLE 5
+#define ROSE_QBITINCL 6
+#define ROSE_HOLDBACK 7
+#define SIOCRSGCAUSE (SIOCPROTOPRIVATE + 0)
+#define SIOCRSSCAUSE (SIOCPROTOPRIVATE + 1)
+#define SIOCRSL2CALL (SIOCPROTOPRIVATE + 2)
+#define SIOCRSSL2CALL (SIOCPROTOPRIVATE + 2)
+#define SIOCRSACCEPT (SIOCPROTOPRIVATE + 3)
+#define SIOCRSCLRRT (SIOCPROTOPRIVATE + 4)
+#define SIOCRSGL2CALL (SIOCPROTOPRIVATE + 5)
+#define SIOCRSGFACILITIES (SIOCPROTOPRIVATE + 6)
+#define ROSE_DTE_ORIGINATED 0x00
+#define ROSE_NUMBER_BUSY 0x01
+#define ROSE_INVALID_FACILITY 0x03
+#define ROSE_NETWORK_CONGESTION 0x05
+#define ROSE_OUT_OF_ORDER 0x09
+#define ROSE_ACCESS_BARRED 0x0B
+#define ROSE_NOT_OBTAINABLE 0x0D
+#define ROSE_REMOTE_PROCEDURE 0x11
+#define ROSE_LOCAL_PROCEDURE 0x13
+#define ROSE_SHIP_ABSENT 0x39
+typedef struct {
+  char rose_addr[5];
+} rose_address;
+struct sockaddr_rose {
+  __kernel_sa_family_t srose_family;
+  rose_address srose_addr;
+  ax25_address srose_call;
+  int srose_ndigis;
+  ax25_address srose_digi;
+};
+struct full_sockaddr_rose {
+  __kernel_sa_family_t srose_family;
+  rose_address srose_addr;
+  ax25_address srose_call;
+  unsigned int srose_ndigis;
+  ax25_address srose_digis[ROSE_MAX_DIGIS];
+};
+struct rose_route_struct {
+  rose_address address;
+  unsigned short mask;
+  ax25_address neighbour;
+  char device[16];
+  unsigned char ndigis;
+  ax25_address digipeaters[AX25_MAX_DIGIS];
+};
+struct rose_cause_struct {
+  unsigned char cause;
+  unsigned char diagnostic;
+};
+struct rose_facilities_struct {
+  rose_address source_addr, dest_addr;
+  ax25_address source_call, dest_call;
+  unsigned char source_ndigis, dest_ndigis;
+  ax25_address source_digis[ROSE_MAX_DIGIS];
+  ax25_address dest_digis[ROSE_MAX_DIGIS];
+  unsigned int rand;
+  rose_address fail_addr;
+  ax25_address fail_call;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/route.h b/i686-linux-musl/include/linux/route.h
new file mode 100644
index 0000000..4ba6023
--- /dev/null
+++ b/i686-linux-musl/include/linux/route.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_ROUTE_H
+#define _LINUX_ROUTE_H
+#include <linux/if.h>
+#include <linux/compiler.h>
+struct rtentry {
+  unsigned long rt_pad1;
+  struct sockaddr rt_dst;
+  struct sockaddr rt_gateway;
+  struct sockaddr rt_genmask;
+  unsigned short rt_flags;
+  short rt_pad2;
+  unsigned long rt_pad3;
+  void * rt_pad4;
+  short rt_metric;
+  char __user * rt_dev;
+  unsigned long rt_mtu;
+#define rt_mss rt_mtu
+  unsigned long rt_window;
+  unsigned short rt_irtt;
+};
+#define RTF_UP 0x0001
+#define RTF_GATEWAY 0x0002
+#define RTF_HOST 0x0004
+#define RTF_REINSTATE 0x0008
+#define RTF_DYNAMIC 0x0010
+#define RTF_MODIFIED 0x0020
+#define RTF_MTU 0x0040
+#define RTF_MSS RTF_MTU
+#define RTF_WINDOW 0x0080
+#define RTF_IRTT 0x0100
+#define RTF_REJECT 0x0200
+#endif
diff --git a/i686-linux-musl/include/linux/rpl.h b/i686-linux-musl/include/linux/rpl.h
new file mode 100644
index 0000000..3648bfc
--- /dev/null
+++ b/i686-linux-musl/include/linux/rpl.h
@@ -0,0 +1,43 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_RPL_H
+#define _UAPI_LINUX_RPL_H
+#include <asm/byteorder.h>
+#include <linux/types.h>
+#include <linux/in6.h>
+struct ipv6_rpl_sr_hdr {
+  __u8 nexthdr;
+  __u8 hdrlen;
+  __u8 type;
+  __u8 segments_left;
+#ifdef __LITTLE_ENDIAN_BITFIELD
+  __u32 cmpre : 4, cmpri : 4, reserved : 4, pad : 4, reserved1 : 16;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+  __u32 cmpri : 4, cmpre : 4, pad : 4, reserved : 20;
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif
+  union {
+    struct in6_addr addr[0];
+    __u8 data[0];
+  } segments;
+} __attribute__((packed));
+#define rpl_segaddr segments.addr
+#define rpl_segdata segments.data
+#endif
diff --git a/i686-linux-musl/include/linux/rpl_iptunnel.h b/i686-linux-musl/include/linux/rpl_iptunnel.h
new file mode 100644
index 0000000..c61725d
--- /dev/null
+++ b/i686-linux-musl/include/linux/rpl_iptunnel.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_RPL_IPTUNNEL_H
+#define _UAPI_LINUX_RPL_IPTUNNEL_H
+enum {
+  RPL_IPTUNNEL_UNSPEC,
+  RPL_IPTUNNEL_SRH,
+  __RPL_IPTUNNEL_MAX,
+};
+#define RPL_IPTUNNEL_MAX (__RPL_IPTUNNEL_MAX - 1)
+#define RPL_IPTUNNEL_SRH_SIZE(srh) (((srh)->hdrlen + 1) << 3)
+#endif
diff --git a/i686-linux-musl/include/linux/rpmsg.h b/i686-linux-musl/include/linux/rpmsg.h
new file mode 100644
index 0000000..c5b5a76
--- /dev/null
+++ b/i686-linux-musl/include/linux/rpmsg.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_RPMSG_H_
+#define _UAPI_RPMSG_H_
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define RPMSG_ADDR_ANY 0xFFFFFFFF
+struct rpmsg_endpoint_info {
+  char name[32];
+  __u32 src;
+  __u32 dst;
+};
+#define RPMSG_CREATE_EPT_IOCTL _IOW(0xb5, 0x1, struct rpmsg_endpoint_info)
+#define RPMSG_DESTROY_EPT_IOCTL _IO(0xb5, 0x2)
+#endif
diff --git a/i686-linux-musl/include/linux/rpmsg_types.h b/i686-linux-musl/include/linux/rpmsg_types.h
new file mode 100644
index 0000000..6599f4c
--- /dev/null
+++ b/i686-linux-musl/include/linux/rpmsg_types.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_RPMSG_TYPES_H
+#define _UAPI_LINUX_RPMSG_TYPES_H
+#include <linux/types.h>
+typedef __u16 __bitwise __rpmsg16;
+typedef __u32 __bitwise __rpmsg32;
+typedef __u64 __bitwise __rpmsg64;
+#endif
diff --git a/i686-linux-musl/include/linux/rseq.h b/i686-linux-musl/include/linux/rseq.h
new file mode 100644
index 0000000..ba0ceb1
--- /dev/null
+++ b/i686-linux-musl/include/linux/rseq.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_RSEQ_H
+#define _UAPI_LINUX_RSEQ_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+enum rseq_cpu_id_state {
+  RSEQ_CPU_ID_UNINITIALIZED = - 1,
+  RSEQ_CPU_ID_REGISTRATION_FAILED = - 2,
+};
+enum rseq_flags {
+  RSEQ_FLAG_UNREGISTER = (1 << 0),
+};
+enum rseq_cs_flags_bit {
+  RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT = 0,
+  RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT = 1,
+  RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT = 2,
+};
+enum rseq_cs_flags {
+  RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT = (1U << RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT),
+  RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL = (1U << RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT),
+  RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE = (1U << RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT),
+};
+struct rseq_cs {
+  __u32 version;
+  __u32 flags;
+  __u64 start_ip;
+  __u64 post_commit_offset;
+  __u64 abort_ip;
+} __attribute__((aligned(4 * sizeof(__u64))));
+struct rseq {
+  __u32 cpu_id_start;
+  __u32 cpu_id;
+  union {
+    __u64 ptr64;
+#ifdef __LP64__
+    __u64 ptr;
+#else
+    struct {
+#if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN || defined(__BIG_ENDIAN)
+      __u32 padding;
+      __u32 ptr32;
+#else
+      __u32 ptr32;
+      __u32 padding;
+#endif
+    } ptr;
+#endif
+  } rseq_cs;
+  __u32 flags;
+} __attribute__((aligned(4 * sizeof(__u64))));
+#endif
diff --git a/i686-linux-musl/include/linux/rtc.h b/i686-linux-musl/include/linux/rtc.h
new file mode 100644
index 0000000..cf5f22a
--- /dev/null
+++ b/i686-linux-musl/include/linux/rtc.h
@@ -0,0 +1,108 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_RTC_H_
+#define _UAPI_LINUX_RTC_H_
+#include <linux/const.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+struct rtc_time {
+  int tm_sec;
+  int tm_min;
+  int tm_hour;
+  int tm_mday;
+  int tm_mon;
+  int tm_year;
+  int tm_wday;
+  int tm_yday;
+  int tm_isdst;
+};
+struct rtc_wkalrm {
+  unsigned char enabled;
+  unsigned char pending;
+  struct rtc_time time;
+};
+struct rtc_pll_info {
+  int pll_ctrl;
+  int pll_value;
+  int pll_max;
+  int pll_min;
+  int pll_posmult;
+  int pll_negmult;
+  long pll_clock;
+};
+struct rtc_param {
+  __u64 param;
+  union {
+    __u64 uvalue;
+    __s64 svalue;
+    __u64 ptr;
+  };
+  __u32 index;
+  __u32 __pad;
+};
+#define RTC_AIE_ON _IO('p', 0x01)
+#define RTC_AIE_OFF _IO('p', 0x02)
+#define RTC_UIE_ON _IO('p', 0x03)
+#define RTC_UIE_OFF _IO('p', 0x04)
+#define RTC_PIE_ON _IO('p', 0x05)
+#define RTC_PIE_OFF _IO('p', 0x06)
+#define RTC_WIE_ON _IO('p', 0x0f)
+#define RTC_WIE_OFF _IO('p', 0x10)
+#define RTC_ALM_SET _IOW('p', 0x07, struct rtc_time)
+#define RTC_ALM_READ _IOR('p', 0x08, struct rtc_time)
+#define RTC_RD_TIME _IOR('p', 0x09, struct rtc_time)
+#define RTC_SET_TIME _IOW('p', 0x0a, struct rtc_time)
+#define RTC_IRQP_READ _IOR('p', 0x0b, unsigned long)
+#define RTC_IRQP_SET _IOW('p', 0x0c, unsigned long)
+#define RTC_EPOCH_READ _IOR('p', 0x0d, unsigned long)
+#define RTC_EPOCH_SET _IOW('p', 0x0e, unsigned long)
+#define RTC_WKALM_SET _IOW('p', 0x0f, struct rtc_wkalrm)
+#define RTC_WKALM_RD _IOR('p', 0x10, struct rtc_wkalrm)
+#define RTC_PLL_GET _IOR('p', 0x11, struct rtc_pll_info)
+#define RTC_PLL_SET _IOW('p', 0x12, struct rtc_pll_info)
+#define RTC_PARAM_GET _IOW('p', 0x13, struct rtc_param)
+#define RTC_PARAM_SET _IOW('p', 0x14, struct rtc_param)
+#define RTC_VL_DATA_INVALID _BITUL(0)
+#define RTC_VL_BACKUP_LOW _BITUL(1)
+#define RTC_VL_BACKUP_EMPTY _BITUL(2)
+#define RTC_VL_ACCURACY_LOW _BITUL(3)
+#define RTC_VL_BACKUP_SWITCH _BITUL(4)
+#define RTC_VL_READ _IOR('p', 0x13, unsigned int)
+#define RTC_VL_CLR _IO('p', 0x14)
+#define RTC_IRQF 0x80
+#define RTC_PF 0x40
+#define RTC_AF 0x20
+#define RTC_UF 0x10
+#define RTC_FEATURE_ALARM 0
+#define RTC_FEATURE_ALARM_RES_MINUTE 1
+#define RTC_FEATURE_NEED_WEEK_DAY 2
+#define RTC_FEATURE_ALARM_RES_2S 3
+#define RTC_FEATURE_UPDATE_INTERRUPT 4
+#define RTC_FEATURE_CORRECTION 5
+#define RTC_FEATURE_BACKUP_SWITCH_MODE 6
+#define RTC_FEATURE_CNT 7
+#define RTC_PARAM_FEATURES 0
+#define RTC_PARAM_CORRECTION 1
+#define RTC_PARAM_BACKUP_SWITCH_MODE 2
+#define RTC_BSM_DISABLED 0
+#define RTC_BSM_DIRECT 1
+#define RTC_BSM_LEVEL 2
+#define RTC_BSM_STANDBY 3
+#define RTC_MAX_FREQ 8192
+#endif
diff --git a/i686-linux-musl/include/linux/rtnetlink.h b/i686-linux-musl/include/linux/rtnetlink.h
new file mode 100644
index 0000000..b3d082a
--- /dev/null
+++ b/i686-linux-musl/include/linux/rtnetlink.h
@@ -0,0 +1,593 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_RTNETLINK_H
+#define _UAPI__LINUX_RTNETLINK_H
+#include <linux/types.h>
+#include <linux/netlink.h>
+#include <linux/if_link.h>
+#include <linux/if_addr.h>
+#include <linux/neighbour.h>
+#define RTNL_FAMILY_IPMR 128
+#define RTNL_FAMILY_IP6MR 129
+#define RTNL_FAMILY_MAX 129
+enum {
+  RTM_BASE = 16,
+#define RTM_BASE RTM_BASE
+  RTM_NEWLINK = 16,
+#define RTM_NEWLINK RTM_NEWLINK
+  RTM_DELLINK,
+#define RTM_DELLINK RTM_DELLINK
+  RTM_GETLINK,
+#define RTM_GETLINK RTM_GETLINK
+  RTM_SETLINK,
+#define RTM_SETLINK RTM_SETLINK
+  RTM_NEWADDR = 20,
+#define RTM_NEWADDR RTM_NEWADDR
+  RTM_DELADDR,
+#define RTM_DELADDR RTM_DELADDR
+  RTM_GETADDR,
+#define RTM_GETADDR RTM_GETADDR
+  RTM_NEWROUTE = 24,
+#define RTM_NEWROUTE RTM_NEWROUTE
+  RTM_DELROUTE,
+#define RTM_DELROUTE RTM_DELROUTE
+  RTM_GETROUTE,
+#define RTM_GETROUTE RTM_GETROUTE
+  RTM_NEWNEIGH = 28,
+#define RTM_NEWNEIGH RTM_NEWNEIGH
+  RTM_DELNEIGH,
+#define RTM_DELNEIGH RTM_DELNEIGH
+  RTM_GETNEIGH,
+#define RTM_GETNEIGH RTM_GETNEIGH
+  RTM_NEWRULE = 32,
+#define RTM_NEWRULE RTM_NEWRULE
+  RTM_DELRULE,
+#define RTM_DELRULE RTM_DELRULE
+  RTM_GETRULE,
+#define RTM_GETRULE RTM_GETRULE
+  RTM_NEWQDISC = 36,
+#define RTM_NEWQDISC RTM_NEWQDISC
+  RTM_DELQDISC,
+#define RTM_DELQDISC RTM_DELQDISC
+  RTM_GETQDISC,
+#define RTM_GETQDISC RTM_GETQDISC
+  RTM_NEWTCLASS = 40,
+#define RTM_NEWTCLASS RTM_NEWTCLASS
+  RTM_DELTCLASS,
+#define RTM_DELTCLASS RTM_DELTCLASS
+  RTM_GETTCLASS,
+#define RTM_GETTCLASS RTM_GETTCLASS
+  RTM_NEWTFILTER = 44,
+#define RTM_NEWTFILTER RTM_NEWTFILTER
+  RTM_DELTFILTER,
+#define RTM_DELTFILTER RTM_DELTFILTER
+  RTM_GETTFILTER,
+#define RTM_GETTFILTER RTM_GETTFILTER
+  RTM_NEWACTION = 48,
+#define RTM_NEWACTION RTM_NEWACTION
+  RTM_DELACTION,
+#define RTM_DELACTION RTM_DELACTION
+  RTM_GETACTION,
+#define RTM_GETACTION RTM_GETACTION
+  RTM_NEWPREFIX = 52,
+#define RTM_NEWPREFIX RTM_NEWPREFIX
+  RTM_GETMULTICAST = 58,
+#define RTM_GETMULTICAST RTM_GETMULTICAST
+  RTM_GETANYCAST = 62,
+#define RTM_GETANYCAST RTM_GETANYCAST
+  RTM_NEWNEIGHTBL = 64,
+#define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL
+  RTM_GETNEIGHTBL = 66,
+#define RTM_GETNEIGHTBL RTM_GETNEIGHTBL
+  RTM_SETNEIGHTBL,
+#define RTM_SETNEIGHTBL RTM_SETNEIGHTBL
+  RTM_NEWNDUSEROPT = 68,
+#define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
+  RTM_NEWADDRLABEL = 72,
+#define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
+  RTM_DELADDRLABEL,
+#define RTM_DELADDRLABEL RTM_DELADDRLABEL
+  RTM_GETADDRLABEL,
+#define RTM_GETADDRLABEL RTM_GETADDRLABEL
+  RTM_GETDCB = 78,
+#define RTM_GETDCB RTM_GETDCB
+  RTM_SETDCB,
+#define RTM_SETDCB RTM_SETDCB
+  RTM_NEWNETCONF = 80,
+#define RTM_NEWNETCONF RTM_NEWNETCONF
+  RTM_DELNETCONF,
+#define RTM_DELNETCONF RTM_DELNETCONF
+  RTM_GETNETCONF = 82,
+#define RTM_GETNETCONF RTM_GETNETCONF
+  RTM_NEWMDB = 84,
+#define RTM_NEWMDB RTM_NEWMDB
+  RTM_DELMDB = 85,
+#define RTM_DELMDB RTM_DELMDB
+  RTM_GETMDB = 86,
+#define RTM_GETMDB RTM_GETMDB
+  RTM_NEWNSID = 88,
+#define RTM_NEWNSID RTM_NEWNSID
+  RTM_DELNSID = 89,
+#define RTM_DELNSID RTM_DELNSID
+  RTM_GETNSID = 90,
+#define RTM_GETNSID RTM_GETNSID
+  RTM_NEWSTATS = 92,
+#define RTM_NEWSTATS RTM_NEWSTATS
+  RTM_GETSTATS = 94,
+#define RTM_GETSTATS RTM_GETSTATS
+  RTM_NEWCACHEREPORT = 96,
+#define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
+  RTM_NEWCHAIN = 100,
+#define RTM_NEWCHAIN RTM_NEWCHAIN
+  RTM_DELCHAIN,
+#define RTM_DELCHAIN RTM_DELCHAIN
+  RTM_GETCHAIN,
+#define RTM_GETCHAIN RTM_GETCHAIN
+  RTM_NEWNEXTHOP = 104,
+#define RTM_NEWNEXTHOP RTM_NEWNEXTHOP
+  RTM_DELNEXTHOP,
+#define RTM_DELNEXTHOP RTM_DELNEXTHOP
+  RTM_GETNEXTHOP,
+#define RTM_GETNEXTHOP RTM_GETNEXTHOP
+  RTM_NEWLINKPROP = 108,
+#define RTM_NEWLINKPROP RTM_NEWLINKPROP
+  RTM_DELLINKPROP,
+#define RTM_DELLINKPROP RTM_DELLINKPROP
+  RTM_GETLINKPROP,
+#define RTM_GETLINKPROP RTM_GETLINKPROP
+  RTM_NEWVLAN = 112,
+#define RTM_NEWNVLAN RTM_NEWVLAN
+  RTM_DELVLAN,
+#define RTM_DELVLAN RTM_DELVLAN
+  RTM_GETVLAN,
+#define RTM_GETVLAN RTM_GETVLAN
+  RTM_NEWNEXTHOPBUCKET = 116,
+#define RTM_NEWNEXTHOPBUCKET RTM_NEWNEXTHOPBUCKET
+  RTM_DELNEXTHOPBUCKET,
+#define RTM_DELNEXTHOPBUCKET RTM_DELNEXTHOPBUCKET
+  RTM_GETNEXTHOPBUCKET,
+#define RTM_GETNEXTHOPBUCKET RTM_GETNEXTHOPBUCKET
+  __RTM_MAX,
+#define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
+};
+#define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE)
+#define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2)
+#define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2)
+struct rtattr {
+  unsigned short rta_len;
+  unsigned short rta_type;
+};
+#define RTA_ALIGNTO 4U
+#define RTA_ALIGN(len) (((len) + RTA_ALIGNTO - 1) & ~(RTA_ALIGNTO - 1))
+#define RTA_OK(rta,len) ((len) >= (int) sizeof(struct rtattr) && (rta)->rta_len >= sizeof(struct rtattr) && (rta)->rta_len <= (len))
+#define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len), (struct rtattr *) (((char *) (rta)) + RTA_ALIGN((rta)->rta_len)))
+#define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
+#define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
+#define RTA_DATA(rta) ((void *) (((char *) (rta)) + RTA_LENGTH(0)))
+#define RTA_PAYLOAD(rta) ((int) ((rta)->rta_len) - RTA_LENGTH(0))
+struct rtmsg {
+  unsigned char rtm_family;
+  unsigned char rtm_dst_len;
+  unsigned char rtm_src_len;
+  unsigned char rtm_tos;
+  unsigned char rtm_table;
+  unsigned char rtm_protocol;
+  unsigned char rtm_scope;
+  unsigned char rtm_type;
+  unsigned rtm_flags;
+};
+enum {
+  RTN_UNSPEC,
+  RTN_UNICAST,
+  RTN_LOCAL,
+  RTN_BROADCAST,
+  RTN_ANYCAST,
+  RTN_MULTICAST,
+  RTN_BLACKHOLE,
+  RTN_UNREACHABLE,
+  RTN_PROHIBIT,
+  RTN_THROW,
+  RTN_NAT,
+  RTN_XRESOLVE,
+  __RTN_MAX
+};
+#define RTN_MAX (__RTN_MAX - 1)
+#define RTPROT_UNSPEC 0
+#define RTPROT_REDIRECT 1
+#define RTPROT_KERNEL 2
+#define RTPROT_BOOT 3
+#define RTPROT_STATIC 4
+#define RTPROT_GATED 8
+#define RTPROT_RA 9
+#define RTPROT_MRT 10
+#define RTPROT_ZEBRA 11
+#define RTPROT_BIRD 12
+#define RTPROT_DNROUTED 13
+#define RTPROT_XORP 14
+#define RTPROT_NTK 15
+#define RTPROT_DHCP 16
+#define RTPROT_MROUTED 17
+#define RTPROT_KEEPALIVED 18
+#define RTPROT_BABEL 42
+#define RTPROT_OPENR 99
+#define RTPROT_BGP 186
+#define RTPROT_ISIS 187
+#define RTPROT_OSPF 188
+#define RTPROT_RIP 189
+#define RTPROT_EIGRP 192
+enum rt_scope_t {
+  RT_SCOPE_UNIVERSE = 0,
+  RT_SCOPE_SITE = 200,
+  RT_SCOPE_LINK = 253,
+  RT_SCOPE_HOST = 254,
+  RT_SCOPE_NOWHERE = 255
+};
+#define RTM_F_NOTIFY 0x100
+#define RTM_F_CLONED 0x200
+#define RTM_F_EQUALIZE 0x400
+#define RTM_F_PREFIX 0x800
+#define RTM_F_LOOKUP_TABLE 0x1000
+#define RTM_F_FIB_MATCH 0x2000
+#define RTM_F_OFFLOAD 0x4000
+#define RTM_F_TRAP 0x8000
+#define RTM_F_OFFLOAD_FAILED 0x20000000
+enum rt_class_t {
+  RT_TABLE_UNSPEC = 0,
+  RT_TABLE_COMPAT = 252,
+  RT_TABLE_DEFAULT = 253,
+  RT_TABLE_MAIN = 254,
+  RT_TABLE_LOCAL = 255,
+  RT_TABLE_MAX = 0xFFFFFFFF
+};
+enum rtattr_type_t {
+  RTA_UNSPEC,
+  RTA_DST,
+  RTA_SRC,
+  RTA_IIF,
+  RTA_OIF,
+  RTA_GATEWAY,
+  RTA_PRIORITY,
+  RTA_PREFSRC,
+  RTA_METRICS,
+  RTA_MULTIPATH,
+  RTA_PROTOINFO,
+  RTA_FLOW,
+  RTA_CACHEINFO,
+  RTA_SESSION,
+  RTA_MP_ALGO,
+  RTA_TABLE,
+  RTA_MARK,
+  RTA_MFC_STATS,
+  RTA_VIA,
+  RTA_NEWDST,
+  RTA_PREF,
+  RTA_ENCAP_TYPE,
+  RTA_ENCAP,
+  RTA_EXPIRES,
+  RTA_PAD,
+  RTA_UID,
+  RTA_TTL_PROPAGATE,
+  RTA_IP_PROTO,
+  RTA_SPORT,
+  RTA_DPORT,
+  RTA_NH_ID,
+  __RTA_MAX
+};
+#define RTA_MAX (__RTA_MAX - 1)
+#define RTM_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
+#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct rtmsg))
+struct rtnexthop {
+  unsigned short rtnh_len;
+  unsigned char rtnh_flags;
+  unsigned char rtnh_hops;
+  int rtnh_ifindex;
+};
+#define RTNH_F_DEAD 1
+#define RTNH_F_PERVASIVE 2
+#define RTNH_F_ONLINK 4
+#define RTNH_F_OFFLOAD 8
+#define RTNH_F_LINKDOWN 16
+#define RTNH_F_UNRESOLVED 32
+#define RTNH_F_TRAP 64
+#define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD | RTNH_F_TRAP)
+#define RTNH_ALIGNTO 4
+#define RTNH_ALIGN(len) (((len) + RTNH_ALIGNTO - 1) & ~(RTNH_ALIGNTO - 1))
+#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && ((int) (rtnh)->rtnh_len) <= (len))
+#define RTNH_NEXT(rtnh) ((struct rtnexthop *) (((char *) (rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
+#define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
+#define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len))
+#define RTNH_DATA(rtnh) ((struct rtattr *) (((char *) (rtnh)) + RTNH_LENGTH(0)))
+struct rtvia {
+  __kernel_sa_family_t rtvia_family;
+  __u8 rtvia_addr[0];
+};
+struct rta_cacheinfo {
+  __u32 rta_clntref;
+  __u32 rta_lastuse;
+  __s32 rta_expires;
+  __u32 rta_error;
+  __u32 rta_used;
+#define RTNETLINK_HAVE_PEERINFO 1
+  __u32 rta_id;
+  __u32 rta_ts;
+  __u32 rta_tsage;
+};
+enum {
+  RTAX_UNSPEC,
+#define RTAX_UNSPEC RTAX_UNSPEC
+  RTAX_LOCK,
+#define RTAX_LOCK RTAX_LOCK
+  RTAX_MTU,
+#define RTAX_MTU RTAX_MTU
+  RTAX_WINDOW,
+#define RTAX_WINDOW RTAX_WINDOW
+  RTAX_RTT,
+#define RTAX_RTT RTAX_RTT
+  RTAX_RTTVAR,
+#define RTAX_RTTVAR RTAX_RTTVAR
+  RTAX_SSTHRESH,
+#define RTAX_SSTHRESH RTAX_SSTHRESH
+  RTAX_CWND,
+#define RTAX_CWND RTAX_CWND
+  RTAX_ADVMSS,
+#define RTAX_ADVMSS RTAX_ADVMSS
+  RTAX_REORDERING,
+#define RTAX_REORDERING RTAX_REORDERING
+  RTAX_HOPLIMIT,
+#define RTAX_HOPLIMIT RTAX_HOPLIMIT
+  RTAX_INITCWND,
+#define RTAX_INITCWND RTAX_INITCWND
+  RTAX_FEATURES,
+#define RTAX_FEATURES RTAX_FEATURES
+  RTAX_RTO_MIN,
+#define RTAX_RTO_MIN RTAX_RTO_MIN
+  RTAX_INITRWND,
+#define RTAX_INITRWND RTAX_INITRWND
+  RTAX_QUICKACK,
+#define RTAX_QUICKACK RTAX_QUICKACK
+  RTAX_CC_ALGO,
+#define RTAX_CC_ALGO RTAX_CC_ALGO
+  RTAX_FASTOPEN_NO_COOKIE,
+#define RTAX_FASTOPEN_NO_COOKIE RTAX_FASTOPEN_NO_COOKIE
+  __RTAX_MAX
+};
+#define RTAX_MAX (__RTAX_MAX - 1)
+#define RTAX_FEATURE_ECN (1 << 0)
+#define RTAX_FEATURE_SACK (1 << 1)
+#define RTAX_FEATURE_TIMESTAMP (1 << 2)
+#define RTAX_FEATURE_ALLFRAG (1 << 3)
+#define RTAX_FEATURE_MASK (RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG)
+struct rta_session {
+  __u8 proto;
+  __u8 pad1;
+  __u16 pad2;
+  union {
+    struct {
+      __u16 sport;
+      __u16 dport;
+    } ports;
+    struct {
+      __u8 type;
+      __u8 code;
+      __u16 ident;
+    } icmpt;
+    __u32 spi;
+  } u;
+};
+struct rta_mfc_stats {
+  __u64 mfcs_packets;
+  __u64 mfcs_bytes;
+  __u64 mfcs_wrong_if;
+};
+struct rtgenmsg {
+  unsigned char rtgen_family;
+};
+struct ifinfomsg {
+  unsigned char ifi_family;
+  unsigned char __ifi_pad;
+  unsigned short ifi_type;
+  int ifi_index;
+  unsigned ifi_flags;
+  unsigned ifi_change;
+};
+struct prefixmsg {
+  unsigned char prefix_family;
+  unsigned char prefix_pad1;
+  unsigned short prefix_pad2;
+  int prefix_ifindex;
+  unsigned char prefix_type;
+  unsigned char prefix_len;
+  unsigned char prefix_flags;
+  unsigned char prefix_pad3;
+};
+enum {
+  PREFIX_UNSPEC,
+  PREFIX_ADDRESS,
+  PREFIX_CACHEINFO,
+  __PREFIX_MAX
+};
+#define PREFIX_MAX (__PREFIX_MAX - 1)
+struct prefix_cacheinfo {
+  __u32 preferred_time;
+  __u32 valid_time;
+};
+struct tcmsg {
+  unsigned char tcm_family;
+  unsigned char tcm__pad1;
+  unsigned short tcm__pad2;
+  int tcm_ifindex;
+  __u32 tcm_handle;
+  __u32 tcm_parent;
+#define tcm_block_index tcm_parent
+  __u32 tcm_info;
+};
+#define TCM_IFINDEX_MAGIC_BLOCK (0xFFFFFFFFU)
+enum {
+  TCA_UNSPEC,
+  TCA_KIND,
+  TCA_OPTIONS,
+  TCA_STATS,
+  TCA_XSTATS,
+  TCA_RATE,
+  TCA_FCNT,
+  TCA_STATS2,
+  TCA_STAB,
+  TCA_PAD,
+  TCA_DUMP_INVISIBLE,
+  TCA_CHAIN,
+  TCA_HW_OFFLOAD,
+  TCA_INGRESS_BLOCK,
+  TCA_EGRESS_BLOCK,
+  TCA_DUMP_FLAGS,
+  __TCA_MAX
+};
+#define TCA_MAX (__TCA_MAX - 1)
+#define TCA_DUMP_FLAGS_TERSE (1 << 0)
+#define TCA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
+#define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct tcmsg))
+struct nduseroptmsg {
+  unsigned char nduseropt_family;
+  unsigned char nduseropt_pad1;
+  unsigned short nduseropt_opts_len;
+  int nduseropt_ifindex;
+  __u8 nduseropt_icmp_type;
+  __u8 nduseropt_icmp_code;
+  unsigned short nduseropt_pad2;
+  unsigned int nduseropt_pad3;
+};
+enum {
+  NDUSEROPT_UNSPEC,
+  NDUSEROPT_SRCADDR,
+  __NDUSEROPT_MAX
+};
+#define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1)
+#define RTMGRP_LINK 1
+#define RTMGRP_NOTIFY 2
+#define RTMGRP_NEIGH 4
+#define RTMGRP_TC 8
+#define RTMGRP_IPV4_IFADDR 0x10
+#define RTMGRP_IPV4_MROUTE 0x20
+#define RTMGRP_IPV4_ROUTE 0x40
+#define RTMGRP_IPV4_RULE 0x80
+#define RTMGRP_IPV6_IFADDR 0x100
+#define RTMGRP_IPV6_MROUTE 0x200
+#define RTMGRP_IPV6_ROUTE 0x400
+#define RTMGRP_IPV6_IFINFO 0x800
+#define RTMGRP_DECnet_IFADDR 0x1000
+#define RTMGRP_DECnet_ROUTE 0x4000
+#define RTMGRP_IPV6_PREFIX 0x20000
+enum rtnetlink_groups {
+  RTNLGRP_NONE,
+#define RTNLGRP_NONE RTNLGRP_NONE
+  RTNLGRP_LINK,
+#define RTNLGRP_LINK RTNLGRP_LINK
+  RTNLGRP_NOTIFY,
+#define RTNLGRP_NOTIFY RTNLGRP_NOTIFY
+  RTNLGRP_NEIGH,
+#define RTNLGRP_NEIGH RTNLGRP_NEIGH
+  RTNLGRP_TC,
+#define RTNLGRP_TC RTNLGRP_TC
+  RTNLGRP_IPV4_IFADDR,
+#define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR
+  RTNLGRP_IPV4_MROUTE,
+#define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE
+  RTNLGRP_IPV4_ROUTE,
+#define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE
+  RTNLGRP_IPV4_RULE,
+#define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE
+  RTNLGRP_IPV6_IFADDR,
+#define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR
+  RTNLGRP_IPV6_MROUTE,
+#define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE
+  RTNLGRP_IPV6_ROUTE,
+#define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE
+  RTNLGRP_IPV6_IFINFO,
+#define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO
+  RTNLGRP_DECnet_IFADDR,
+#define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR
+  RTNLGRP_NOP2,
+  RTNLGRP_DECnet_ROUTE,
+#define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE
+  RTNLGRP_DECnet_RULE,
+#define RTNLGRP_DECnet_RULE RTNLGRP_DECnet_RULE
+  RTNLGRP_NOP4,
+  RTNLGRP_IPV6_PREFIX,
+#define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX
+  RTNLGRP_IPV6_RULE,
+#define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE
+  RTNLGRP_ND_USEROPT,
+#define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT
+  RTNLGRP_PHONET_IFADDR,
+#define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR
+  RTNLGRP_PHONET_ROUTE,
+#define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE
+  RTNLGRP_DCB,
+#define RTNLGRP_DCB RTNLGRP_DCB
+  RTNLGRP_IPV4_NETCONF,
+#define RTNLGRP_IPV4_NETCONF RTNLGRP_IPV4_NETCONF
+  RTNLGRP_IPV6_NETCONF,
+#define RTNLGRP_IPV6_NETCONF RTNLGRP_IPV6_NETCONF
+  RTNLGRP_MDB,
+#define RTNLGRP_MDB RTNLGRP_MDB
+  RTNLGRP_MPLS_ROUTE,
+#define RTNLGRP_MPLS_ROUTE RTNLGRP_MPLS_ROUTE
+  RTNLGRP_NSID,
+#define RTNLGRP_NSID RTNLGRP_NSID
+  RTNLGRP_MPLS_NETCONF,
+#define RTNLGRP_MPLS_NETCONF RTNLGRP_MPLS_NETCONF
+  RTNLGRP_IPV4_MROUTE_R,
+#define RTNLGRP_IPV4_MROUTE_R RTNLGRP_IPV4_MROUTE_R
+  RTNLGRP_IPV6_MROUTE_R,
+#define RTNLGRP_IPV6_MROUTE_R RTNLGRP_IPV6_MROUTE_R
+  RTNLGRP_NEXTHOP,
+#define RTNLGRP_NEXTHOP RTNLGRP_NEXTHOP
+  RTNLGRP_BRVLAN,
+#define RTNLGRP_BRVLAN RTNLGRP_BRVLAN
+  __RTNLGRP_MAX
+};
+#define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
+struct tcamsg {
+  unsigned char tca_family;
+  unsigned char tca__pad1;
+  unsigned short tca__pad2;
+};
+enum {
+  TCA_ROOT_UNSPEC,
+  TCA_ROOT_TAB,
+#define TCA_ACT_TAB TCA_ROOT_TAB
+#define TCAA_MAX TCA_ROOT_TAB
+  TCA_ROOT_FLAGS,
+  TCA_ROOT_COUNT,
+  TCA_ROOT_TIME_DELTA,
+  __TCA_ROOT_MAX,
+#define TCA_ROOT_MAX (__TCA_ROOT_MAX - 1)
+};
+#define TA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
+#define TA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct tcamsg))
+#define TCA_FLAG_LARGE_DUMP_ON (1 << 0)
+#define TCA_ACT_FLAG_LARGE_DUMP_ON TCA_FLAG_LARGE_DUMP_ON
+#define TCA_ACT_FLAG_TERSE_DUMP (1 << 1)
+#define RTEXT_FILTER_VF (1 << 0)
+#define RTEXT_FILTER_BRVLAN (1 << 1)
+#define RTEXT_FILTER_BRVLAN_COMPRESSED (1 << 2)
+#define RTEXT_FILTER_SKIP_STATS (1 << 3)
+#define RTEXT_FILTER_MRP (1 << 4)
+#define RTEXT_FILTER_CFM_CONFIG (1 << 5)
+#define RTEXT_FILTER_CFM_STATUS (1 << 6)
+#endif
diff --git a/i686-linux-musl/include/linux/rxrpc.h b/i686-linux-musl/include/linux/rxrpc.h
new file mode 100644
index 0000000..16207dd
--- /dev/null
+++ b/i686-linux-musl/include/linux/rxrpc.h
@@ -0,0 +1,92 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_RXRPC_H
+#define _UAPI_LINUX_RXRPC_H
+#include <linux/types.h>
+#include <linux/in.h>
+#include <linux/in6.h>
+struct sockaddr_rxrpc {
+  __kernel_sa_family_t srx_family;
+  __u16 srx_service;
+  __u16 transport_type;
+  __u16 transport_len;
+  union {
+    __kernel_sa_family_t family;
+    struct sockaddr_in sin;
+    struct sockaddr_in6 sin6;
+  } transport;
+};
+#define RXRPC_SECURITY_KEY 1
+#define RXRPC_SECURITY_KEYRING 2
+#define RXRPC_EXCLUSIVE_CONNECTION 3
+#define RXRPC_MIN_SECURITY_LEVEL 4
+#define RXRPC_UPGRADEABLE_SERVICE 5
+#define RXRPC_SUPPORTED_CMSG 6
+enum rxrpc_cmsg_type {
+  RXRPC_USER_CALL_ID = 1,
+  RXRPC_ABORT = 2,
+  RXRPC_ACK = 3,
+  RXRPC_NET_ERROR = 5,
+  RXRPC_BUSY = 6,
+  RXRPC_LOCAL_ERROR = 7,
+  RXRPC_NEW_CALL = 8,
+  RXRPC_EXCLUSIVE_CALL = 10,
+  RXRPC_UPGRADE_SERVICE = 11,
+  RXRPC_TX_LENGTH = 12,
+  RXRPC_SET_CALL_TIMEOUT = 13,
+  RXRPC_CHARGE_ACCEPT = 14,
+  RXRPC__SUPPORTED
+};
+#define RXRPC_SECURITY_PLAIN 0
+#define RXRPC_SECURITY_AUTH 1
+#define RXRPC_SECURITY_ENCRYPT 2
+#define RXRPC_SECURITY_NONE 0
+#define RXRPC_SECURITY_RXKAD 2
+#define RXRPC_SECURITY_RXGK 4
+#define RXRPC_SECURITY_RXK5 5
+#define RX_CALL_DEAD - 1
+#define RX_INVALID_OPERATION - 2
+#define RX_CALL_TIMEOUT - 3
+#define RX_EOF - 4
+#define RX_PROTOCOL_ERROR - 5
+#define RX_USER_ABORT - 6
+#define RX_ADDRINUSE - 7
+#define RX_DEBUGI_BADTYPE - 8
+#define RXGEN_CC_MARSHAL - 450
+#define RXGEN_CC_UNMARSHAL - 451
+#define RXGEN_SS_MARSHAL - 452
+#define RXGEN_SS_UNMARSHAL - 453
+#define RXGEN_DECODE - 454
+#define RXGEN_OPCODE - 455
+#define RXGEN_SS_XDRFREE - 456
+#define RXGEN_CC_XDRFREE - 457
+#define RXKADINCONSISTENCY 19270400
+#define RXKADPACKETSHORT 19270401
+#define RXKADLEVELFAIL 19270402
+#define RXKADTICKETLEN 19270403
+#define RXKADOUTOFSEQUENCE 19270404
+#define RXKADNOAUTH 19270405
+#define RXKADBADKEY 19270406
+#define RXKADBADTICKET 19270407
+#define RXKADUNKNOWNKEY 19270408
+#define RXKADEXPIRED 19270409
+#define RXKADSEALEDINCON 19270410
+#define RXKADDATALEN 19270411
+#define RXKADILLEGALLEVEL 19270412
+#endif
diff --git a/i686-linux-musl/include/linux/scc.h b/i686-linux-musl/include/linux/scc.h
new file mode 100644
index 0000000..a2a5503
--- /dev/null
+++ b/i686-linux-musl/include/linux/scc.h
@@ -0,0 +1,140 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_SCC_H
+#define _UAPI_SCC_H
+#include <linux/sockios.h>
+#define PA0HZP 0x00
+#define EAGLE 0x01
+#define PC100 0x02
+#define PRIMUS 0x04
+#define DRSI 0x08
+#define BAYCOM 0x10
+enum SCC_ioctl_cmds {
+  SIOCSCCRESERVED = SIOCDEVPRIVATE,
+  SIOCSCCCFG,
+  SIOCSCCINI,
+  SIOCSCCCHANINI,
+  SIOCSCCSMEM,
+  SIOCSCCGKISS,
+  SIOCSCCSKISS,
+  SIOCSCCGSTAT,
+  SIOCSCCCAL
+};
+enum L1_params {
+  PARAM_DATA,
+  PARAM_TXDELAY,
+  PARAM_PERSIST,
+  PARAM_SLOTTIME,
+  PARAM_TXTAIL,
+  PARAM_FULLDUP,
+  PARAM_SOFTDCD,
+  PARAM_MUTE,
+  PARAM_DTR,
+  PARAM_RTS,
+  PARAM_SPEED,
+  PARAM_ENDDELAY,
+  PARAM_GROUP,
+  PARAM_IDLE,
+  PARAM_MIN,
+  PARAM_MAXKEY,
+  PARAM_WAIT,
+  PARAM_MAXDEFER,
+  PARAM_TX,
+  PARAM_HWEVENT = 31,
+  PARAM_RETURN = 255
+};
+enum FULLDUP_modes {
+  KISS_DUPLEX_HALF,
+  KISS_DUPLEX_FULL,
+  KISS_DUPLEX_LINK,
+  KISS_DUPLEX_OPTIMA
+};
+#define TIMER_OFF 65535U
+#define NO_SUCH_PARAM 65534U
+enum HWEVENT_opts {
+  HWEV_DCD_ON,
+  HWEV_DCD_OFF,
+  HWEV_ALL_SENT
+};
+#define RXGROUP 0100
+#define TXGROUP 0200
+enum CLOCK_sources {
+  CLK_DPLL,
+  CLK_EXTERNAL,
+  CLK_DIVIDER,
+  CLK_BRG
+};
+enum TX_state {
+  TXS_IDLE,
+  TXS_BUSY,
+  TXS_ACTIVE,
+  TXS_NEWFRAME,
+  TXS_IDLE2,
+  TXS_WAIT,
+  TXS_TIMEOUT
+};
+typedef unsigned long io_port;
+struct scc_stat {
+  long rxints;
+  long txints;
+  long exints;
+  long spints;
+  long txframes;
+  long rxframes;
+  long rxerrs;
+  long txerrs;
+  unsigned int nospace;
+  unsigned int rx_over;
+  unsigned int tx_under;
+  unsigned int tx_state;
+  int tx_queued;
+  unsigned int maxqueue;
+  unsigned int bufsize;
+};
+struct scc_modem {
+  long speed;
+  char clocksrc;
+  char nrz;
+};
+struct scc_kiss_cmd {
+  int command;
+  unsigned param;
+};
+struct scc_hw_config {
+  io_port data_a;
+  io_port ctrl_a;
+  io_port data_b;
+  io_port ctrl_b;
+  io_port vector_latch;
+  io_port special;
+  int irq;
+  long clock;
+  char option;
+  char brand;
+  char escc;
+};
+struct scc_mem_config {
+  unsigned int dummy;
+  unsigned int bufsize;
+};
+struct scc_calibrate {
+  unsigned int time;
+  unsigned char pattern;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/sched.h b/i686-linux-musl/include/linux/sched.h
new file mode 100644
index 0000000..f9c00df
--- /dev/null
+++ b/i686-linux-musl/include/linux/sched.h
@@ -0,0 +1,85 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SCHED_H
+#define _UAPI_LINUX_SCHED_H
+#include <linux/types.h>
+#define CSIGNAL 0x000000ff
+#define CLONE_VM 0x00000100
+#define CLONE_FS 0x00000200
+#define CLONE_FILES 0x00000400
+#define CLONE_SIGHAND 0x00000800
+#define CLONE_PIDFD 0x00001000
+#define CLONE_PTRACE 0x00002000
+#define CLONE_VFORK 0x00004000
+#define CLONE_PARENT 0x00008000
+#define CLONE_THREAD 0x00010000
+#define CLONE_NEWNS 0x00020000
+#define CLONE_SYSVSEM 0x00040000
+#define CLONE_SETTLS 0x00080000
+#define CLONE_PARENT_SETTID 0x00100000
+#define CLONE_CHILD_CLEARTID 0x00200000
+#define CLONE_DETACHED 0x00400000
+#define CLONE_UNTRACED 0x00800000
+#define CLONE_CHILD_SETTID 0x01000000
+#define CLONE_NEWCGROUP 0x02000000
+#define CLONE_NEWUTS 0x04000000
+#define CLONE_NEWIPC 0x08000000
+#define CLONE_NEWUSER 0x10000000
+#define CLONE_NEWPID 0x20000000
+#define CLONE_NEWNET 0x40000000
+#define CLONE_IO 0x80000000
+#define CLONE_CLEAR_SIGHAND 0x100000000ULL
+#define CLONE_INTO_CGROUP 0x200000000ULL
+#define CLONE_NEWTIME 0x00000080
+#ifndef __ASSEMBLY__
+struct clone_args {
+  __aligned_u64 flags;
+  __aligned_u64 pidfd;
+  __aligned_u64 child_tid;
+  __aligned_u64 parent_tid;
+  __aligned_u64 exit_signal;
+  __aligned_u64 stack;
+  __aligned_u64 stack_size;
+  __aligned_u64 tls;
+  __aligned_u64 set_tid;
+  __aligned_u64 set_tid_size;
+  __aligned_u64 cgroup;
+};
+#endif
+#define CLONE_ARGS_SIZE_VER0 64
+#define CLONE_ARGS_SIZE_VER1 80
+#define CLONE_ARGS_SIZE_VER2 88
+#define SCHED_NORMAL 0
+#define SCHED_FIFO 1
+#define SCHED_RR 2
+#define SCHED_BATCH 3
+#define SCHED_IDLE 5
+#define SCHED_DEADLINE 6
+#define SCHED_RESET_ON_FORK 0x40000000
+#define SCHED_FLAG_RESET_ON_FORK 0x01
+#define SCHED_FLAG_RECLAIM 0x02
+#define SCHED_FLAG_DL_OVERRUN 0x04
+#define SCHED_FLAG_KEEP_POLICY 0x08
+#define SCHED_FLAG_KEEP_PARAMS 0x10
+#define SCHED_FLAG_UTIL_CLAMP_MIN 0x20
+#define SCHED_FLAG_UTIL_CLAMP_MAX 0x40
+#define SCHED_FLAG_KEEP_ALL (SCHED_FLAG_KEEP_POLICY | SCHED_FLAG_KEEP_PARAMS)
+#define SCHED_FLAG_UTIL_CLAMP (SCHED_FLAG_UTIL_CLAMP_MIN | SCHED_FLAG_UTIL_CLAMP_MAX)
+#define SCHED_FLAG_ALL (SCHED_FLAG_RESET_ON_FORK | SCHED_FLAG_RECLAIM | SCHED_FLAG_DL_OVERRUN | SCHED_FLAG_KEEP_ALL | SCHED_FLAG_UTIL_CLAMP)
+#endif
diff --git a/i686-linux-musl/include/linux/sched/types.h b/i686-linux-musl/include/linux/sched/types.h
new file mode 100644
index 0000000..385b21a
--- /dev/null
+++ b/i686-linux-musl/include/linux/sched/types.h
@@ -0,0 +1,39 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SCHED_TYPES_H
+#define _UAPI_LINUX_SCHED_TYPES_H
+#include <linux/types.h>
+struct sched_param {
+  int sched_priority;
+};
+#define SCHED_ATTR_SIZE_VER0 48
+#define SCHED_ATTR_SIZE_VER1 56
+struct sched_attr {
+  __u32 size;
+  __u32 sched_policy;
+  __u64 sched_flags;
+  __s32 sched_nice;
+  __u32 sched_priority;
+  __u64 sched_runtime;
+  __u64 sched_deadline;
+  __u64 sched_period;
+  __u32 sched_util_min;
+  __u32 sched_util_max;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/scif_ioctl.h b/i686-linux-musl/include/linux/scif_ioctl.h
new file mode 100644
index 0000000..14e199c
--- /dev/null
+++ b/i686-linux-musl/include/linux/scif_ioctl.h
@@ -0,0 +1,93 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef SCIF_IOCTL_H
+#define SCIF_IOCTL_H
+#include <linux/types.h>
+struct scif_port_id {
+  __u16 node;
+  __u16 port;
+};
+struct scifioctl_connect {
+  struct scif_port_id self;
+  struct scif_port_id peer;
+};
+struct scifioctl_accept {
+  __s32 flags;
+  struct scif_port_id peer;
+  __u64 endpt;
+};
+struct scifioctl_msg {
+  __u64 msg;
+  __s32 len;
+  __s32 flags;
+  __s32 out_len;
+};
+struct scifioctl_reg {
+  __u64 addr;
+  __u64 len;
+  __s64 offset;
+  __s32 prot;
+  __s32 flags;
+  __s64 out_offset;
+};
+struct scifioctl_unreg {
+  __s64 offset;
+  __u64 len;
+};
+struct scifioctl_copy {
+  __s64 loffset;
+  __u64 len;
+  __s64 roffset;
+  __u64 addr;
+  __s32 flags;
+};
+struct scifioctl_fence_mark {
+  __s32 flags;
+  __u64 mark;
+};
+struct scifioctl_fence_signal {
+  __s64 loff;
+  __u64 lval;
+  __s64 roff;
+  __u64 rval;
+  __s32 flags;
+};
+struct scifioctl_node_ids {
+  __u64 nodes;
+  __u64 self;
+  __s32 len;
+};
+#define SCIF_BIND _IOWR('s', 1, __u64)
+#define SCIF_LISTEN _IOW('s', 2, __s32)
+#define SCIF_CONNECT _IOWR('s', 3, struct scifioctl_connect)
+#define SCIF_ACCEPTREQ _IOWR('s', 4, struct scifioctl_accept)
+#define SCIF_ACCEPTREG _IOWR('s', 5, __u64)
+#define SCIF_SEND _IOWR('s', 6, struct scifioctl_msg)
+#define SCIF_RECV _IOWR('s', 7, struct scifioctl_msg)
+#define SCIF_REG _IOWR('s', 8, struct scifioctl_reg)
+#define SCIF_UNREG _IOWR('s', 9, struct scifioctl_unreg)
+#define SCIF_READFROM _IOWR('s', 10, struct scifioctl_copy)
+#define SCIF_WRITETO _IOWR('s', 11, struct scifioctl_copy)
+#define SCIF_VREADFROM _IOWR('s', 12, struct scifioctl_copy)
+#define SCIF_VWRITETO _IOWR('s', 13, struct scifioctl_copy)
+#define SCIF_GET_NODEIDS _IOWR('s', 14, struct scifioctl_node_ids)
+#define SCIF_FENCE_MARK _IOWR('s', 15, struct scifioctl_fence_mark)
+#define SCIF_FENCE_WAIT _IOWR('s', 16, __s32)
+#define SCIF_FENCE_SIGNAL _IOWR('s', 17, struct scifioctl_fence_signal)
+#endif
diff --git a/i686-linux-musl/include/linux/screen_info.h b/i686-linux-musl/include/linux/screen_info.h
new file mode 100644
index 0000000..7dfadba
--- /dev/null
+++ b/i686-linux-musl/include/linux/screen_info.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_SCREEN_INFO_H
+#define _UAPI_SCREEN_INFO_H
+#include <linux/types.h>
+struct screen_info {
+  __u8 orig_x;
+  __u8 orig_y;
+  __u16 ext_mem_k;
+  __u16 orig_video_page;
+  __u8 orig_video_mode;
+  __u8 orig_video_cols;
+  __u8 flags;
+  __u8 unused2;
+  __u16 orig_video_ega_bx;
+  __u16 unused3;
+  __u8 orig_video_lines;
+  __u8 orig_video_isVGA;
+  __u16 orig_video_points;
+  __u16 lfb_width;
+  __u16 lfb_height;
+  __u16 lfb_depth;
+  __u32 lfb_base;
+  __u32 lfb_size;
+  __u16 cl_magic, cl_offset;
+  __u16 lfb_linelength;
+  __u8 red_size;
+  __u8 red_pos;
+  __u8 green_size;
+  __u8 green_pos;
+  __u8 blue_size;
+  __u8 blue_pos;
+  __u8 rsvd_size;
+  __u8 rsvd_pos;
+  __u16 vesapm_seg;
+  __u16 vesapm_off;
+  __u16 pages;
+  __u16 vesa_attributes;
+  __u32 capabilities;
+  __u32 ext_lfb_base;
+  __u8 _reserved[2];
+} __attribute__((packed));
+#define VIDEO_TYPE_MDA 0x10
+#define VIDEO_TYPE_CGA 0x11
+#define VIDEO_TYPE_EGAM 0x20
+#define VIDEO_TYPE_EGAC 0x21
+#define VIDEO_TYPE_VGAC 0x22
+#define VIDEO_TYPE_VLFB 0x23
+#define VIDEO_TYPE_PICA_S3 0x30
+#define VIDEO_TYPE_MIPS_G364 0x31
+#define VIDEO_TYPE_SGI 0x33
+#define VIDEO_TYPE_TGAC 0x40
+#define VIDEO_TYPE_SUN 0x50
+#define VIDEO_TYPE_SUNPCI 0x51
+#define VIDEO_TYPE_PMAC 0x60
+#define VIDEO_TYPE_EFI 0x70
+#define VIDEO_FLAGS_NOCURSOR (1 << 0)
+#define VIDEO_CAPABILITY_SKIP_QUIRKS (1 << 0)
+#define VIDEO_CAPABILITY_64BIT_BASE (1 << 1)
+#endif
diff --git a/i686-linux-musl/include/linux/sctp.h b/i686-linux-musl/include/linux/sctp.h
new file mode 100644
index 0000000..765d6c9
--- /dev/null
+++ b/i686-linux-musl/include/linux/sctp.h
@@ -0,0 +1,719 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_SCTP_H
+#define _UAPI_SCTP_H
+#include <linux/types.h>
+#include <linux/socket.h>
+typedef __s32 sctp_assoc_t;
+#define SCTP_FUTURE_ASSOC 0
+#define SCTP_CURRENT_ASSOC 1
+#define SCTP_ALL_ASSOC 2
+#define SCTP_RTOINFO 0
+#define SCTP_ASSOCINFO 1
+#define SCTP_INITMSG 2
+#define SCTP_NODELAY 3
+#define SCTP_AUTOCLOSE 4
+#define SCTP_SET_PEER_PRIMARY_ADDR 5
+#define SCTP_PRIMARY_ADDR 6
+#define SCTP_ADAPTATION_LAYER 7
+#define SCTP_DISABLE_FRAGMENTS 8
+#define SCTP_PEER_ADDR_PARAMS 9
+#define SCTP_DEFAULT_SEND_PARAM 10
+#define SCTP_EVENTS 11
+#define SCTP_I_WANT_MAPPED_V4_ADDR 12
+#define SCTP_MAXSEG 13
+#define SCTP_STATUS 14
+#define SCTP_GET_PEER_ADDR_INFO 15
+#define SCTP_DELAYED_ACK_TIME 16
+#define SCTP_DELAYED_ACK SCTP_DELAYED_ACK_TIME
+#define SCTP_DELAYED_SACK SCTP_DELAYED_ACK_TIME
+#define SCTP_CONTEXT 17
+#define SCTP_FRAGMENT_INTERLEAVE 18
+#define SCTP_PARTIAL_DELIVERY_POINT 19
+#define SCTP_MAX_BURST 20
+#define SCTP_AUTH_CHUNK 21
+#define SCTP_HMAC_IDENT 22
+#define SCTP_AUTH_KEY 23
+#define SCTP_AUTH_ACTIVE_KEY 24
+#define SCTP_AUTH_DELETE_KEY 25
+#define SCTP_PEER_AUTH_CHUNKS 26
+#define SCTP_LOCAL_AUTH_CHUNKS 27
+#define SCTP_GET_ASSOC_NUMBER 28
+#define SCTP_GET_ASSOC_ID_LIST 29
+#define SCTP_AUTO_ASCONF 30
+#define SCTP_PEER_ADDR_THLDS 31
+#define SCTP_RECVRCVINFO 32
+#define SCTP_RECVNXTINFO 33
+#define SCTP_DEFAULT_SNDINFO 34
+#define SCTP_AUTH_DEACTIVATE_KEY 35
+#define SCTP_REUSE_PORT 36
+#define SCTP_PEER_ADDR_THLDS_V2 37
+#define SCTP_SOCKOPT_BINDX_ADD 100
+#define SCTP_SOCKOPT_BINDX_REM 101
+#define SCTP_SOCKOPT_PEELOFF 102
+#define SCTP_SOCKOPT_CONNECTX_OLD 107
+#define SCTP_GET_PEER_ADDRS 108
+#define SCTP_GET_LOCAL_ADDRS 109
+#define SCTP_SOCKOPT_CONNECTX 110
+#define SCTP_SOCKOPT_CONNECTX3 111
+#define SCTP_GET_ASSOC_STATS 112
+#define SCTP_PR_SUPPORTED 113
+#define SCTP_DEFAULT_PRINFO 114
+#define SCTP_PR_ASSOC_STATUS 115
+#define SCTP_PR_STREAM_STATUS 116
+#define SCTP_RECONFIG_SUPPORTED 117
+#define SCTP_ENABLE_STREAM_RESET 118
+#define SCTP_RESET_STREAMS 119
+#define SCTP_RESET_ASSOC 120
+#define SCTP_ADD_STREAMS 121
+#define SCTP_SOCKOPT_PEELOFF_FLAGS 122
+#define SCTP_STREAM_SCHEDULER 123
+#define SCTP_STREAM_SCHEDULER_VALUE 124
+#define SCTP_INTERLEAVING_SUPPORTED 125
+#define SCTP_SENDMSG_CONNECT 126
+#define SCTP_EVENT 127
+#define SCTP_ASCONF_SUPPORTED 128
+#define SCTP_AUTH_SUPPORTED 129
+#define SCTP_ECN_SUPPORTED 130
+#define SCTP_EXPOSE_POTENTIALLY_FAILED_STATE 131
+#define SCTP_EXPOSE_PF_STATE SCTP_EXPOSE_POTENTIALLY_FAILED_STATE
+#define SCTP_REMOTE_UDP_ENCAPS_PORT 132
+#define SCTP_PLPMTUD_PROBE_INTERVAL 133
+#define SCTP_PR_SCTP_NONE 0x0000
+#define SCTP_PR_SCTP_TTL 0x0010
+#define SCTP_PR_SCTP_RTX 0x0020
+#define SCTP_PR_SCTP_PRIO 0x0030
+#define SCTP_PR_SCTP_MAX SCTP_PR_SCTP_PRIO
+#define SCTP_PR_SCTP_MASK 0x0030
+#define __SCTP_PR_INDEX(x) ((x >> 4) - 1)
+#define SCTP_PR_INDEX(x) __SCTP_PR_INDEX(SCTP_PR_SCTP_ ##x)
+#define SCTP_PR_POLICY(x) ((x) & SCTP_PR_SCTP_MASK)
+#define SCTP_PR_SET_POLICY(flags,x) do { flags &= ~SCTP_PR_SCTP_MASK; flags |= x; } while(0)
+#define SCTP_PR_TTL_ENABLED(x) (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_TTL)
+#define SCTP_PR_RTX_ENABLED(x) (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_RTX)
+#define SCTP_PR_PRIO_ENABLED(x) (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_PRIO)
+#define SCTP_ENABLE_RESET_STREAM_REQ 0x01
+#define SCTP_ENABLE_RESET_ASSOC_REQ 0x02
+#define SCTP_ENABLE_CHANGE_ASSOC_REQ 0x04
+#define SCTP_ENABLE_STRRESET_MASK 0x07
+#define SCTP_STREAM_RESET_INCOMING 0x01
+#define SCTP_STREAM_RESET_OUTGOING 0x02
+enum sctp_msg_flags {
+  MSG_NOTIFICATION = 0x8000,
+#define MSG_NOTIFICATION MSG_NOTIFICATION
+};
+struct sctp_initmsg {
+  __u16 sinit_num_ostreams;
+  __u16 sinit_max_instreams;
+  __u16 sinit_max_attempts;
+  __u16 sinit_max_init_timeo;
+};
+struct sctp_sndrcvinfo {
+  __u16 sinfo_stream;
+  __u16 sinfo_ssn;
+  __u16 sinfo_flags;
+  __u32 sinfo_ppid;
+  __u32 sinfo_context;
+  __u32 sinfo_timetolive;
+  __u32 sinfo_tsn;
+  __u32 sinfo_cumtsn;
+  sctp_assoc_t sinfo_assoc_id;
+};
+struct sctp_sndinfo {
+  __u16 snd_sid;
+  __u16 snd_flags;
+  __u32 snd_ppid;
+  __u32 snd_context;
+  sctp_assoc_t snd_assoc_id;
+};
+struct sctp_rcvinfo {
+  __u16 rcv_sid;
+  __u16 rcv_ssn;
+  __u16 rcv_flags;
+  __u32 rcv_ppid;
+  __u32 rcv_tsn;
+  __u32 rcv_cumtsn;
+  __u32 rcv_context;
+  sctp_assoc_t rcv_assoc_id;
+};
+struct sctp_nxtinfo {
+  __u16 nxt_sid;
+  __u16 nxt_flags;
+  __u32 nxt_ppid;
+  __u32 nxt_length;
+  sctp_assoc_t nxt_assoc_id;
+};
+struct sctp_prinfo {
+  __u16 pr_policy;
+  __u32 pr_value;
+};
+struct sctp_authinfo {
+  __u16 auth_keynumber;
+};
+enum sctp_sinfo_flags {
+  SCTP_UNORDERED = (1 << 0),
+  SCTP_ADDR_OVER = (1 << 1),
+  SCTP_ABORT = (1 << 2),
+  SCTP_SACK_IMMEDIATELY = (1 << 3),
+  SCTP_SENDALL = (1 << 6),
+  SCTP_PR_SCTP_ALL = (1 << 7),
+  SCTP_NOTIFICATION = MSG_NOTIFICATION,
+  SCTP_EOF = MSG_FIN,
+};
+typedef union {
+  __u8 raw;
+  struct sctp_initmsg init;
+  struct sctp_sndrcvinfo sndrcv;
+} sctp_cmsg_data_t;
+typedef enum sctp_cmsg_type {
+  SCTP_INIT,
+#define SCTP_INIT SCTP_INIT
+  SCTP_SNDRCV,
+#define SCTP_SNDRCV SCTP_SNDRCV
+  SCTP_SNDINFO,
+#define SCTP_SNDINFO SCTP_SNDINFO
+  SCTP_RCVINFO,
+#define SCTP_RCVINFO SCTP_RCVINFO
+  SCTP_NXTINFO,
+#define SCTP_NXTINFO SCTP_NXTINFO
+  SCTP_PRINFO,
+#define SCTP_PRINFO SCTP_PRINFO
+  SCTP_AUTHINFO,
+#define SCTP_AUTHINFO SCTP_AUTHINFO
+  SCTP_DSTADDRV4,
+#define SCTP_DSTADDRV4 SCTP_DSTADDRV4
+  SCTP_DSTADDRV6,
+#define SCTP_DSTADDRV6 SCTP_DSTADDRV6
+} sctp_cmsg_t;
+struct sctp_assoc_change {
+  __u16 sac_type;
+  __u16 sac_flags;
+  __u32 sac_length;
+  __u16 sac_state;
+  __u16 sac_error;
+  __u16 sac_outbound_streams;
+  __u16 sac_inbound_streams;
+  sctp_assoc_t sac_assoc_id;
+  __u8 sac_info[0];
+};
+enum sctp_sac_state {
+  SCTP_COMM_UP,
+  SCTP_COMM_LOST,
+  SCTP_RESTART,
+  SCTP_SHUTDOWN_COMP,
+  SCTP_CANT_STR_ASSOC,
+};
+struct sctp_paddr_change {
+  __u16 spc_type;
+  __u16 spc_flags;
+  __u32 spc_length;
+  struct sockaddr_storage spc_aaddr;
+  int spc_state;
+  int spc_error;
+  sctp_assoc_t spc_assoc_id;
+} __attribute__((packed, aligned(4)));
+enum sctp_spc_state {
+  SCTP_ADDR_AVAILABLE,
+  SCTP_ADDR_UNREACHABLE,
+  SCTP_ADDR_REMOVED,
+  SCTP_ADDR_ADDED,
+  SCTP_ADDR_MADE_PRIM,
+  SCTP_ADDR_CONFIRMED,
+  SCTP_ADDR_POTENTIALLY_FAILED,
+#define SCTP_ADDR_PF SCTP_ADDR_POTENTIALLY_FAILED
+};
+struct sctp_remote_error {
+  __u16 sre_type;
+  __u16 sre_flags;
+  __u32 sre_length;
+  __be16 sre_error;
+  sctp_assoc_t sre_assoc_id;
+  __u8 sre_data[0];
+};
+struct sctp_send_failed {
+  __u16 ssf_type;
+  __u16 ssf_flags;
+  __u32 ssf_length;
+  __u32 ssf_error;
+  struct sctp_sndrcvinfo ssf_info;
+  sctp_assoc_t ssf_assoc_id;
+  __u8 ssf_data[0];
+};
+struct sctp_send_failed_event {
+  __u16 ssf_type;
+  __u16 ssf_flags;
+  __u32 ssf_length;
+  __u32 ssf_error;
+  struct sctp_sndinfo ssfe_info;
+  sctp_assoc_t ssf_assoc_id;
+  __u8 ssf_data[0];
+};
+enum sctp_ssf_flags {
+  SCTP_DATA_UNSENT,
+  SCTP_DATA_SENT,
+};
+struct sctp_shutdown_event {
+  __u16 sse_type;
+  __u16 sse_flags;
+  __u32 sse_length;
+  sctp_assoc_t sse_assoc_id;
+};
+struct sctp_adaptation_event {
+  __u16 sai_type;
+  __u16 sai_flags;
+  __u32 sai_length;
+  __u32 sai_adaptation_ind;
+  sctp_assoc_t sai_assoc_id;
+};
+struct sctp_pdapi_event {
+  __u16 pdapi_type;
+  __u16 pdapi_flags;
+  __u32 pdapi_length;
+  __u32 pdapi_indication;
+  sctp_assoc_t pdapi_assoc_id;
+  __u32 pdapi_stream;
+  __u32 pdapi_seq;
+};
+enum {
+  SCTP_PARTIAL_DELIVERY_ABORTED = 0,
+};
+struct sctp_authkey_event {
+  __u16 auth_type;
+  __u16 auth_flags;
+  __u32 auth_length;
+  __u16 auth_keynumber;
+  __u16 auth_altkeynumber;
+  __u32 auth_indication;
+  sctp_assoc_t auth_assoc_id;
+};
+enum {
+  SCTP_AUTH_NEW_KEY,
+#define SCTP_AUTH_NEWKEY SCTP_AUTH_NEW_KEY
+  SCTP_AUTH_FREE_KEY,
+  SCTP_AUTH_NO_AUTH,
+};
+struct sctp_sender_dry_event {
+  __u16 sender_dry_type;
+  __u16 sender_dry_flags;
+  __u32 sender_dry_length;
+  sctp_assoc_t sender_dry_assoc_id;
+};
+#define SCTP_STREAM_RESET_INCOMING_SSN 0x0001
+#define SCTP_STREAM_RESET_OUTGOING_SSN 0x0002
+#define SCTP_STREAM_RESET_DENIED 0x0004
+#define SCTP_STREAM_RESET_FAILED 0x0008
+struct sctp_stream_reset_event {
+  __u16 strreset_type;
+  __u16 strreset_flags;
+  __u32 strreset_length;
+  sctp_assoc_t strreset_assoc_id;
+  __u16 strreset_stream_list[];
+};
+#define SCTP_ASSOC_RESET_DENIED 0x0004
+#define SCTP_ASSOC_RESET_FAILED 0x0008
+struct sctp_assoc_reset_event {
+  __u16 assocreset_type;
+  __u16 assocreset_flags;
+  __u32 assocreset_length;
+  sctp_assoc_t assocreset_assoc_id;
+  __u32 assocreset_local_tsn;
+  __u32 assocreset_remote_tsn;
+};
+#define SCTP_ASSOC_CHANGE_DENIED 0x0004
+#define SCTP_ASSOC_CHANGE_FAILED 0x0008
+#define SCTP_STREAM_CHANGE_DENIED SCTP_ASSOC_CHANGE_DENIED
+#define SCTP_STREAM_CHANGE_FAILED SCTP_ASSOC_CHANGE_FAILED
+struct sctp_stream_change_event {
+  __u16 strchange_type;
+  __u16 strchange_flags;
+  __u32 strchange_length;
+  sctp_assoc_t strchange_assoc_id;
+  __u16 strchange_instrms;
+  __u16 strchange_outstrms;
+};
+struct sctp_event_subscribe {
+  __u8 sctp_data_io_event;
+  __u8 sctp_association_event;
+  __u8 sctp_address_event;
+  __u8 sctp_send_failure_event;
+  __u8 sctp_peer_error_event;
+  __u8 sctp_shutdown_event;
+  __u8 sctp_partial_delivery_event;
+  __u8 sctp_adaptation_layer_event;
+  __u8 sctp_authentication_event;
+  __u8 sctp_sender_dry_event;
+  __u8 sctp_stream_reset_event;
+  __u8 sctp_assoc_reset_event;
+  __u8 sctp_stream_change_event;
+  __u8 sctp_send_failure_event_event;
+};
+union sctp_notification {
+  struct {
+    __u16 sn_type;
+    __u16 sn_flags;
+    __u32 sn_length;
+  } sn_header;
+  struct sctp_assoc_change sn_assoc_change;
+  struct sctp_paddr_change sn_paddr_change;
+  struct sctp_remote_error sn_remote_error;
+  struct sctp_send_failed sn_send_failed;
+  struct sctp_shutdown_event sn_shutdown_event;
+  struct sctp_adaptation_event sn_adaptation_event;
+  struct sctp_pdapi_event sn_pdapi_event;
+  struct sctp_authkey_event sn_authkey_event;
+  struct sctp_sender_dry_event sn_sender_dry_event;
+  struct sctp_stream_reset_event sn_strreset_event;
+  struct sctp_assoc_reset_event sn_assocreset_event;
+  struct sctp_stream_change_event sn_strchange_event;
+  struct sctp_send_failed_event sn_send_failed_event;
+};
+enum sctp_sn_type {
+  SCTP_SN_TYPE_BASE = (1 << 15),
+  SCTP_DATA_IO_EVENT = SCTP_SN_TYPE_BASE,
+#define SCTP_DATA_IO_EVENT SCTP_DATA_IO_EVENT
+  SCTP_ASSOC_CHANGE,
+#define SCTP_ASSOC_CHANGE SCTP_ASSOC_CHANGE
+  SCTP_PEER_ADDR_CHANGE,
+#define SCTP_PEER_ADDR_CHANGE SCTP_PEER_ADDR_CHANGE
+  SCTP_SEND_FAILED,
+#define SCTP_SEND_FAILED SCTP_SEND_FAILED
+  SCTP_REMOTE_ERROR,
+#define SCTP_REMOTE_ERROR SCTP_REMOTE_ERROR
+  SCTP_SHUTDOWN_EVENT,
+#define SCTP_SHUTDOWN_EVENT SCTP_SHUTDOWN_EVENT
+  SCTP_PARTIAL_DELIVERY_EVENT,
+#define SCTP_PARTIAL_DELIVERY_EVENT SCTP_PARTIAL_DELIVERY_EVENT
+  SCTP_ADAPTATION_INDICATION,
+#define SCTP_ADAPTATION_INDICATION SCTP_ADAPTATION_INDICATION
+  SCTP_AUTHENTICATION_EVENT,
+#define SCTP_AUTHENTICATION_INDICATION SCTP_AUTHENTICATION_EVENT
+  SCTP_SENDER_DRY_EVENT,
+#define SCTP_SENDER_DRY_EVENT SCTP_SENDER_DRY_EVENT
+  SCTP_STREAM_RESET_EVENT,
+#define SCTP_STREAM_RESET_EVENT SCTP_STREAM_RESET_EVENT
+  SCTP_ASSOC_RESET_EVENT,
+#define SCTP_ASSOC_RESET_EVENT SCTP_ASSOC_RESET_EVENT
+  SCTP_STREAM_CHANGE_EVENT,
+#define SCTP_STREAM_CHANGE_EVENT SCTP_STREAM_CHANGE_EVENT
+  SCTP_SEND_FAILED_EVENT,
+#define SCTP_SEND_FAILED_EVENT SCTP_SEND_FAILED_EVENT
+  SCTP_SN_TYPE_MAX = SCTP_SEND_FAILED_EVENT,
+#define SCTP_SN_TYPE_MAX SCTP_SN_TYPE_MAX
+};
+typedef enum sctp_sn_error {
+  SCTP_FAILED_THRESHOLD,
+  SCTP_RECEIVED_SACK,
+  SCTP_HEARTBEAT_SUCCESS,
+  SCTP_RESPONSE_TO_USER_REQ,
+  SCTP_INTERNAL_ERROR,
+  SCTP_SHUTDOWN_GUARD_EXPIRES,
+  SCTP_PEER_FAULTY,
+} sctp_sn_error_t;
+struct sctp_rtoinfo {
+  sctp_assoc_t srto_assoc_id;
+  __u32 srto_initial;
+  __u32 srto_max;
+  __u32 srto_min;
+};
+struct sctp_assocparams {
+  sctp_assoc_t sasoc_assoc_id;
+  __u16 sasoc_asocmaxrxt;
+  __u16 sasoc_number_peer_destinations;
+  __u32 sasoc_peer_rwnd;
+  __u32 sasoc_local_rwnd;
+  __u32 sasoc_cookie_life;
+};
+struct sctp_setpeerprim {
+  sctp_assoc_t sspp_assoc_id;
+  struct sockaddr_storage sspp_addr;
+} __attribute__((packed, aligned(4)));
+struct sctp_prim {
+  sctp_assoc_t ssp_assoc_id;
+  struct sockaddr_storage ssp_addr;
+} __attribute__((packed, aligned(4)));
+#define sctp_setprim sctp_prim
+struct sctp_setadaptation {
+  __u32 ssb_adaptation_ind;
+};
+enum sctp_spp_flags {
+  SPP_HB_ENABLE = 1 << 0,
+  SPP_HB_DISABLE = 1 << 1,
+  SPP_HB = SPP_HB_ENABLE | SPP_HB_DISABLE,
+  SPP_HB_DEMAND = 1 << 2,
+  SPP_PMTUD_ENABLE = 1 << 3,
+  SPP_PMTUD_DISABLE = 1 << 4,
+  SPP_PMTUD = SPP_PMTUD_ENABLE | SPP_PMTUD_DISABLE,
+  SPP_SACKDELAY_ENABLE = 1 << 5,
+  SPP_SACKDELAY_DISABLE = 1 << 6,
+  SPP_SACKDELAY = SPP_SACKDELAY_ENABLE | SPP_SACKDELAY_DISABLE,
+  SPP_HB_TIME_IS_ZERO = 1 << 7,
+  SPP_IPV6_FLOWLABEL = 1 << 8,
+  SPP_DSCP = 1 << 9,
+};
+struct sctp_paddrparams {
+  sctp_assoc_t spp_assoc_id;
+  struct sockaddr_storage spp_address;
+  __u32 spp_hbinterval;
+  __u16 spp_pathmaxrxt;
+  __u32 spp_pathmtu;
+  __u32 spp_sackdelay;
+  __u32 spp_flags;
+  __u32 spp_ipv6_flowlabel;
+  __u8 spp_dscp;
+} __attribute__((packed, aligned(4)));
+struct sctp_authchunk {
+  __u8 sauth_chunk;
+};
+enum {
+  SCTP_AUTH_HMAC_ID_SHA1 = 1,
+  SCTP_AUTH_HMAC_ID_SHA256 = 3,
+};
+struct sctp_hmacalgo {
+  __u32 shmac_num_idents;
+  __u16 shmac_idents[];
+};
+#define shmac_number_of_idents shmac_num_idents
+struct sctp_authkey {
+  sctp_assoc_t sca_assoc_id;
+  __u16 sca_keynumber;
+  __u16 sca_keylength;
+  __u8 sca_key[];
+};
+struct sctp_authkeyid {
+  sctp_assoc_t scact_assoc_id;
+  __u16 scact_keynumber;
+};
+struct sctp_sack_info {
+  sctp_assoc_t sack_assoc_id;
+  uint32_t sack_delay;
+  uint32_t sack_freq;
+};
+struct sctp_assoc_value {
+  sctp_assoc_t assoc_id;
+  uint32_t assoc_value;
+};
+struct sctp_stream_value {
+  sctp_assoc_t assoc_id;
+  uint16_t stream_id;
+  uint16_t stream_value;
+};
+struct sctp_paddrinfo {
+  sctp_assoc_t spinfo_assoc_id;
+  struct sockaddr_storage spinfo_address;
+  __s32 spinfo_state;
+  __u32 spinfo_cwnd;
+  __u32 spinfo_srtt;
+  __u32 spinfo_rto;
+  __u32 spinfo_mtu;
+} __attribute__((packed, aligned(4)));
+enum sctp_spinfo_state {
+  SCTP_INACTIVE,
+  SCTP_PF,
+#define SCTP_POTENTIALLY_FAILED SCTP_PF
+  SCTP_ACTIVE,
+  SCTP_UNCONFIRMED,
+  SCTP_UNKNOWN = 0xffff
+};
+struct sctp_status {
+  sctp_assoc_t sstat_assoc_id;
+  __s32 sstat_state;
+  __u32 sstat_rwnd;
+  __u16 sstat_unackdata;
+  __u16 sstat_penddata;
+  __u16 sstat_instrms;
+  __u16 sstat_outstrms;
+  __u32 sstat_fragmentation_point;
+  struct sctp_paddrinfo sstat_primary;
+};
+struct sctp_authchunks {
+  sctp_assoc_t gauth_assoc_id;
+  __u32 gauth_number_of_chunks;
+  uint8_t gauth_chunks[];
+};
+#define guth_number_of_chunks gauth_number_of_chunks
+enum sctp_sstat_state {
+  SCTP_EMPTY = 0,
+  SCTP_CLOSED = 1,
+  SCTP_COOKIE_WAIT = 2,
+  SCTP_COOKIE_ECHOED = 3,
+  SCTP_ESTABLISHED = 4,
+  SCTP_SHUTDOWN_PENDING = 5,
+  SCTP_SHUTDOWN_SENT = 6,
+  SCTP_SHUTDOWN_RECEIVED = 7,
+  SCTP_SHUTDOWN_ACK_SENT = 8,
+};
+struct sctp_assoc_ids {
+  __u32 gaids_number_of_ids;
+  sctp_assoc_t gaids_assoc_id[];
+};
+struct sctp_getaddrs_old {
+  sctp_assoc_t assoc_id;
+  int addr_num;
+  struct sockaddr * addrs;
+};
+struct sctp_getaddrs {
+  sctp_assoc_t assoc_id;
+  __u32 addr_num;
+  __u8 addrs[0];
+};
+struct sctp_assoc_stats {
+  sctp_assoc_t sas_assoc_id;
+  struct sockaddr_storage sas_obs_rto_ipaddr;
+  __u64 sas_maxrto;
+  __u64 sas_isacks;
+  __u64 sas_osacks;
+  __u64 sas_opackets;
+  __u64 sas_ipackets;
+  __u64 sas_rtxchunks;
+  __u64 sas_outofseqtsns;
+  __u64 sas_idupchunks;
+  __u64 sas_gapcnt;
+  __u64 sas_ouodchunks;
+  __u64 sas_iuodchunks;
+  __u64 sas_oodchunks;
+  __u64 sas_iodchunks;
+  __u64 sas_octrlchunks;
+  __u64 sas_ictrlchunks;
+};
+#define SCTP_BINDX_ADD_ADDR 0x01
+#define SCTP_BINDX_REM_ADDR 0x02
+typedef struct {
+  sctp_assoc_t associd;
+  int sd;
+} sctp_peeloff_arg_t;
+typedef struct {
+  sctp_peeloff_arg_t p_arg;
+  unsigned flags;
+} sctp_peeloff_flags_arg_t;
+struct sctp_paddrthlds {
+  sctp_assoc_t spt_assoc_id;
+  struct sockaddr_storage spt_address;
+  __u16 spt_pathmaxrxt;
+  __u16 spt_pathpfthld;
+};
+struct sctp_paddrthlds_v2 {
+  sctp_assoc_t spt_assoc_id;
+  struct sockaddr_storage spt_address;
+  __u16 spt_pathmaxrxt;
+  __u16 spt_pathpfthld;
+  __u16 spt_pathcpthld;
+};
+struct sctp_prstatus {
+  sctp_assoc_t sprstat_assoc_id;
+  __u16 sprstat_sid;
+  __u16 sprstat_policy;
+  __u64 sprstat_abandoned_unsent;
+  __u64 sprstat_abandoned_sent;
+};
+struct sctp_default_prinfo {
+  sctp_assoc_t pr_assoc_id;
+  __u32 pr_value;
+  __u16 pr_policy;
+};
+struct sctp_info {
+  __u32 sctpi_tag;
+  __u32 sctpi_state;
+  __u32 sctpi_rwnd;
+  __u16 sctpi_unackdata;
+  __u16 sctpi_penddata;
+  __u16 sctpi_instrms;
+  __u16 sctpi_outstrms;
+  __u32 sctpi_fragmentation_point;
+  __u32 sctpi_inqueue;
+  __u32 sctpi_outqueue;
+  __u32 sctpi_overall_error;
+  __u32 sctpi_max_burst;
+  __u32 sctpi_maxseg;
+  __u32 sctpi_peer_rwnd;
+  __u32 sctpi_peer_tag;
+  __u8 sctpi_peer_capable;
+  __u8 sctpi_peer_sack;
+  __u16 __reserved1;
+  __u64 sctpi_isacks;
+  __u64 sctpi_osacks;
+  __u64 sctpi_opackets;
+  __u64 sctpi_ipackets;
+  __u64 sctpi_rtxchunks;
+  __u64 sctpi_outofseqtsns;
+  __u64 sctpi_idupchunks;
+  __u64 sctpi_gapcnt;
+  __u64 sctpi_ouodchunks;
+  __u64 sctpi_iuodchunks;
+  __u64 sctpi_oodchunks;
+  __u64 sctpi_iodchunks;
+  __u64 sctpi_octrlchunks;
+  __u64 sctpi_ictrlchunks;
+  struct sockaddr_storage sctpi_p_address;
+  __s32 sctpi_p_state;
+  __u32 sctpi_p_cwnd;
+  __u32 sctpi_p_srtt;
+  __u32 sctpi_p_rto;
+  __u32 sctpi_p_hbinterval;
+  __u32 sctpi_p_pathmaxrxt;
+  __u32 sctpi_p_sackdelay;
+  __u32 sctpi_p_sackfreq;
+  __u32 sctpi_p_ssthresh;
+  __u32 sctpi_p_partial_bytes_acked;
+  __u32 sctpi_p_flight_size;
+  __u16 sctpi_p_error;
+  __u16 __reserved2;
+  __u32 sctpi_s_autoclose;
+  __u32 sctpi_s_adaptation_ind;
+  __u32 sctpi_s_pd_point;
+  __u8 sctpi_s_nodelay;
+  __u8 sctpi_s_disable_fragments;
+  __u8 sctpi_s_v4mapped;
+  __u8 sctpi_s_frag_interleave;
+  __u32 sctpi_s_type;
+  __u32 __reserved3;
+};
+struct sctp_reset_streams {
+  sctp_assoc_t srs_assoc_id;
+  uint16_t srs_flags;
+  uint16_t srs_number_streams;
+  uint16_t srs_stream_list[];
+};
+struct sctp_add_streams {
+  sctp_assoc_t sas_assoc_id;
+  uint16_t sas_instrms;
+  uint16_t sas_outstrms;
+};
+struct sctp_event {
+  sctp_assoc_t se_assoc_id;
+  uint16_t se_type;
+  uint8_t se_on;
+};
+struct sctp_udpencaps {
+  sctp_assoc_t sue_assoc_id;
+  struct sockaddr_storage sue_address;
+  uint16_t sue_port;
+};
+enum sctp_sched_type {
+  SCTP_SS_FCFS,
+  SCTP_SS_DEFAULT = SCTP_SS_FCFS,
+  SCTP_SS_PRIO,
+  SCTP_SS_RR,
+  SCTP_SS_MAX = SCTP_SS_RR
+};
+struct sctp_probeinterval {
+  sctp_assoc_t spi_assoc_id;
+  struct sockaddr_storage spi_address;
+  __u32 spi_interval;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/seccomp.h b/i686-linux-musl/include/linux/seccomp.h
new file mode 100644
index 0000000..e58b421
--- /dev/null
+++ b/i686-linux-musl/include/linux/seccomp.h
@@ -0,0 +1,89 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SECCOMP_H
+#define _UAPI_LINUX_SECCOMP_H
+#include <linux/compiler.h>
+#include <linux/types.h>
+#define SECCOMP_MODE_DISABLED 0
+#define SECCOMP_MODE_STRICT 1
+#define SECCOMP_MODE_FILTER 2
+#define SECCOMP_SET_MODE_STRICT 0
+#define SECCOMP_SET_MODE_FILTER 1
+#define SECCOMP_GET_ACTION_AVAIL 2
+#define SECCOMP_GET_NOTIF_SIZES 3
+#define SECCOMP_FILTER_FLAG_TSYNC (1UL << 0)
+#define SECCOMP_FILTER_FLAG_LOG (1UL << 1)
+#define SECCOMP_FILTER_FLAG_SPEC_ALLOW (1UL << 2)
+#define SECCOMP_FILTER_FLAG_NEW_LISTENER (1UL << 3)
+#define SECCOMP_FILTER_FLAG_TSYNC_ESRCH (1UL << 4)
+#define SECCOMP_RET_KILL_PROCESS 0x80000000U
+#define SECCOMP_RET_KILL_THREAD 0x00000000U
+#define SECCOMP_RET_KILL SECCOMP_RET_KILL_THREAD
+#define SECCOMP_RET_TRAP 0x00030000U
+#define SECCOMP_RET_ERRNO 0x00050000U
+#define SECCOMP_RET_USER_NOTIF 0x7fc00000U
+#define SECCOMP_RET_TRACE 0x7ff00000U
+#define SECCOMP_RET_LOG 0x7ffc0000U
+#define SECCOMP_RET_ALLOW 0x7fff0000U
+#define SECCOMP_RET_ACTION_FULL 0xffff0000U
+#define SECCOMP_RET_ACTION 0x7fff0000U
+#define SECCOMP_RET_DATA 0x0000ffffU
+struct seccomp_data {
+  int nr;
+  __u32 arch;
+  __u64 instruction_pointer;
+  __u64 args[6];
+};
+struct seccomp_notif_sizes {
+  __u16 seccomp_notif;
+  __u16 seccomp_notif_resp;
+  __u16 seccomp_data;
+};
+struct seccomp_notif {
+  __u64 id;
+  __u32 pid;
+  __u32 flags;
+  struct seccomp_data data;
+};
+#define SECCOMP_USER_NOTIF_FLAG_CONTINUE (1UL << 0)
+struct seccomp_notif_resp {
+  __u64 id;
+  __s64 val;
+  __s32 error;
+  __u32 flags;
+};
+#define SECCOMP_ADDFD_FLAG_SETFD (1UL << 0)
+#define SECCOMP_ADDFD_FLAG_SEND (1UL << 1)
+struct seccomp_notif_addfd {
+  __u64 id;
+  __u32 flags;
+  __u32 srcfd;
+  __u32 newfd;
+  __u32 newfd_flags;
+};
+#define SECCOMP_IOC_MAGIC '!'
+#define SECCOMP_IO(nr) _IO(SECCOMP_IOC_MAGIC, nr)
+#define SECCOMP_IOR(nr,type) _IOR(SECCOMP_IOC_MAGIC, nr, type)
+#define SECCOMP_IOW(nr,type) _IOW(SECCOMP_IOC_MAGIC, nr, type)
+#define SECCOMP_IOWR(nr,type) _IOWR(SECCOMP_IOC_MAGIC, nr, type)
+#define SECCOMP_IOCTL_NOTIF_RECV SECCOMP_IOWR(0, struct seccomp_notif)
+#define SECCOMP_IOCTL_NOTIF_SEND SECCOMP_IOWR(1, struct seccomp_notif_resp)
+#define SECCOMP_IOCTL_NOTIF_ID_VALID SECCOMP_IOW(2, __u64)
+#define SECCOMP_IOCTL_NOTIF_ADDFD SECCOMP_IOW(3, struct seccomp_notif_addfd)
+#endif
diff --git a/i686-linux-musl/include/linux/securebits.h b/i686-linux-musl/include/linux/securebits.h
new file mode 100644
index 0000000..b73053e
--- /dev/null
+++ b/i686-linux-musl/include/linux/securebits.h
@@ -0,0 +1,41 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SECUREBITS_H
+#define _UAPI_LINUX_SECUREBITS_H
+#define issecure_mask(X) (1 << (X))
+#define SECUREBITS_DEFAULT 0x00000000
+#define SECURE_NOROOT 0
+#define SECURE_NOROOT_LOCKED 1
+#define SECBIT_NOROOT (issecure_mask(SECURE_NOROOT))
+#define SECBIT_NOROOT_LOCKED (issecure_mask(SECURE_NOROOT_LOCKED))
+#define SECURE_NO_SETUID_FIXUP 2
+#define SECURE_NO_SETUID_FIXUP_LOCKED 3
+#define SECBIT_NO_SETUID_FIXUP (issecure_mask(SECURE_NO_SETUID_FIXUP))
+#define SECBIT_NO_SETUID_FIXUP_LOCKED (issecure_mask(SECURE_NO_SETUID_FIXUP_LOCKED))
+#define SECURE_KEEP_CAPS 4
+#define SECURE_KEEP_CAPS_LOCKED 5
+#define SECBIT_KEEP_CAPS (issecure_mask(SECURE_KEEP_CAPS))
+#define SECBIT_KEEP_CAPS_LOCKED (issecure_mask(SECURE_KEEP_CAPS_LOCKED))
+#define SECURE_NO_CAP_AMBIENT_RAISE 6
+#define SECURE_NO_CAP_AMBIENT_RAISE_LOCKED 7
+#define SECBIT_NO_CAP_AMBIENT_RAISE (issecure_mask(SECURE_NO_CAP_AMBIENT_RAISE))
+#define SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED (issecure_mask(SECURE_NO_CAP_AMBIENT_RAISE_LOCKED))
+#define SECURE_ALL_BITS (issecure_mask(SECURE_NOROOT) | issecure_mask(SECURE_NO_SETUID_FIXUP) | issecure_mask(SECURE_KEEP_CAPS) | issecure_mask(SECURE_NO_CAP_AMBIENT_RAISE))
+#define SECURE_ALL_LOCKS (SECURE_ALL_BITS << 1)
+#endif
diff --git a/i686-linux-musl/include/linux/sed-opal.h b/i686-linux-musl/include/linux/sed-opal.h
new file mode 100644
index 0000000..a20197a
--- /dev/null
+++ b/i686-linux-musl/include/linux/sed-opal.h
@@ -0,0 +1,131 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_SED_OPAL_H
+#define _UAPI_SED_OPAL_H
+#include <linux/types.h>
+#define OPAL_KEY_MAX 256
+#define OPAL_MAX_LRS 9
+enum opal_mbr {
+  OPAL_MBR_ENABLE = 0x0,
+  OPAL_MBR_DISABLE = 0x01,
+};
+enum opal_mbr_done_flag {
+  OPAL_MBR_NOT_DONE = 0x0,
+  OPAL_MBR_DONE = 0x01
+};
+enum opal_user {
+  OPAL_ADMIN1 = 0x0,
+  OPAL_USER1 = 0x01,
+  OPAL_USER2 = 0x02,
+  OPAL_USER3 = 0x03,
+  OPAL_USER4 = 0x04,
+  OPAL_USER5 = 0x05,
+  OPAL_USER6 = 0x06,
+  OPAL_USER7 = 0x07,
+  OPAL_USER8 = 0x08,
+  OPAL_USER9 = 0x09,
+};
+enum opal_lock_state {
+  OPAL_RO = 0x01,
+  OPAL_RW = 0x02,
+  OPAL_LK = 0x04,
+};
+struct opal_key {
+  __u8 lr;
+  __u8 key_len;
+  __u8 __align[6];
+  __u8 key[OPAL_KEY_MAX];
+};
+struct opal_lr_act {
+  struct opal_key key;
+  __u32 sum;
+  __u8 num_lrs;
+  __u8 lr[OPAL_MAX_LRS];
+  __u8 align[2];
+};
+struct opal_session_info {
+  __u32 sum;
+  __u32 who;
+  struct opal_key opal_key;
+};
+struct opal_user_lr_setup {
+  __u64 range_start;
+  __u64 range_length;
+  __u32 RLE;
+  __u32 WLE;
+  struct opal_session_info session;
+};
+struct opal_lock_unlock {
+  struct opal_session_info session;
+  __u32 l_state;
+  __u8 __align[4];
+};
+struct opal_new_pw {
+  struct opal_session_info session;
+  struct opal_session_info new_user_pw;
+};
+struct opal_mbr_data {
+  struct opal_key key;
+  __u8 enable_disable;
+  __u8 __align[7];
+};
+struct opal_mbr_done {
+  struct opal_key key;
+  __u8 done_flag;
+  __u8 __align[7];
+};
+struct opal_shadow_mbr {
+  struct opal_key key;
+  const __u64 data;
+  __u64 offset;
+  __u64 size;
+};
+enum opal_table_ops {
+  OPAL_READ_TABLE,
+  OPAL_WRITE_TABLE,
+};
+#define OPAL_UID_LENGTH 8
+struct opal_read_write_table {
+  struct opal_key key;
+  const __u64 data;
+  const __u8 table_uid[OPAL_UID_LENGTH];
+  __u64 offset;
+  __u64 size;
+#define OPAL_TABLE_READ (1 << OPAL_READ_TABLE)
+#define OPAL_TABLE_WRITE (1 << OPAL_WRITE_TABLE)
+  __u64 flags;
+  __u64 priv;
+};
+#define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock)
+#define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock)
+#define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key)
+#define IOC_OPAL_ACTIVATE_LSP _IOW('p', 223, struct opal_lr_act)
+#define IOC_OPAL_SET_PW _IOW('p', 224, struct opal_new_pw)
+#define IOC_OPAL_ACTIVATE_USR _IOW('p', 225, struct opal_session_info)
+#define IOC_OPAL_REVERT_TPR _IOW('p', 226, struct opal_key)
+#define IOC_OPAL_LR_SETUP _IOW('p', 227, struct opal_user_lr_setup)
+#define IOC_OPAL_ADD_USR_TO_LR _IOW('p', 228, struct opal_lock_unlock)
+#define IOC_OPAL_ENABLE_DISABLE_MBR _IOW('p', 229, struct opal_mbr_data)
+#define IOC_OPAL_ERASE_LR _IOW('p', 230, struct opal_session_info)
+#define IOC_OPAL_SECURE_ERASE_LR _IOW('p', 231, struct opal_session_info)
+#define IOC_OPAL_PSID_REVERT_TPR _IOW('p', 232, struct opal_key)
+#define IOC_OPAL_MBR_DONE _IOW('p', 233, struct opal_mbr_done)
+#define IOC_OPAL_WRITE_SHADOW_MBR _IOW('p', 234, struct opal_shadow_mbr)
+#define IOC_OPAL_GENERIC_TABLE_RW _IOW('p', 235, struct opal_read_write_table)
+#endif
diff --git a/i686-linux-musl/include/linux/seg6.h b/i686-linux-musl/include/linux/seg6.h
new file mode 100644
index 0000000..f180485
--- /dev/null
+++ b/i686-linux-musl/include/linux/seg6.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SEG6_H
+#define _UAPI_LINUX_SEG6_H
+#include <linux/types.h>
+#include <linux/in6.h>
+struct ipv6_sr_hdr {
+  __u8 nexthdr;
+  __u8 hdrlen;
+  __u8 type;
+  __u8 segments_left;
+  __u8 first_segment;
+  __u8 flags;
+  __u16 tag;
+  struct in6_addr segments[0];
+};
+#define SR6_FLAG1_PROTECTED (1 << 6)
+#define SR6_FLAG1_OAM (1 << 5)
+#define SR6_FLAG1_ALERT (1 << 4)
+#define SR6_FLAG1_HMAC (1 << 3)
+#define SR6_TLV_INGRESS 1
+#define SR6_TLV_EGRESS 2
+#define SR6_TLV_OPAQUE 3
+#define SR6_TLV_PADDING 4
+#define SR6_TLV_HMAC 5
+#define sr_has_hmac(srh) ((srh)->flags & SR6_FLAG1_HMAC)
+struct sr6_tlv {
+  __u8 type;
+  __u8 len;
+  __u8 data[0];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/seg6_genl.h b/i686-linux-musl/include/linux/seg6_genl.h
new file mode 100644
index 0000000..bcd5f36
--- /dev/null
+++ b/i686-linux-musl/include/linux/seg6_genl.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SEG6_GENL_H
+#define _UAPI_LINUX_SEG6_GENL_H
+#define SEG6_GENL_NAME "SEG6"
+#define SEG6_GENL_VERSION 0x1
+enum {
+  SEG6_ATTR_UNSPEC,
+  SEG6_ATTR_DST,
+  SEG6_ATTR_DSTLEN,
+  SEG6_ATTR_HMACKEYID,
+  SEG6_ATTR_SECRET,
+  SEG6_ATTR_SECRETLEN,
+  SEG6_ATTR_ALGID,
+  SEG6_ATTR_HMACINFO,
+  __SEG6_ATTR_MAX,
+};
+#define SEG6_ATTR_MAX (__SEG6_ATTR_MAX - 1)
+enum {
+  SEG6_CMD_UNSPEC,
+  SEG6_CMD_SETHMAC,
+  SEG6_CMD_DUMPHMAC,
+  SEG6_CMD_SET_TUNSRC,
+  SEG6_CMD_GET_TUNSRC,
+  __SEG6_CMD_MAX,
+};
+#define SEG6_CMD_MAX (__SEG6_CMD_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/seg6_hmac.h b/i686-linux-musl/include/linux/seg6_hmac.h
new file mode 100644
index 0000000..d5ef671
--- /dev/null
+++ b/i686-linux-musl/include/linux/seg6_hmac.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SEG6_HMAC_H
+#define _UAPI_LINUX_SEG6_HMAC_H
+#include <linux/types.h>
+#include <linux/seg6.h>
+#define SEG6_HMAC_SECRET_LEN 64
+#define SEG6_HMAC_FIELD_LEN 32
+struct sr6_tlv_hmac {
+  struct sr6_tlv tlvhdr;
+  __u16 reserved;
+  __be32 hmackeyid;
+  __u8 hmac[SEG6_HMAC_FIELD_LEN];
+};
+enum {
+  SEG6_HMAC_ALGO_SHA1 = 1,
+  SEG6_HMAC_ALGO_SHA256 = 2,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/seg6_iptunnel.h b/i686-linux-musl/include/linux/seg6_iptunnel.h
new file mode 100644
index 0000000..1c1ad83
--- /dev/null
+++ b/i686-linux-musl/include/linux/seg6_iptunnel.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SEG6_IPTUNNEL_H
+#define _UAPI_LINUX_SEG6_IPTUNNEL_H
+#include <linux/seg6.h>
+enum {
+  SEG6_IPTUNNEL_UNSPEC,
+  SEG6_IPTUNNEL_SRH,
+  __SEG6_IPTUNNEL_MAX,
+};
+#define SEG6_IPTUNNEL_MAX (__SEG6_IPTUNNEL_MAX - 1)
+struct seg6_iptunnel_encap {
+  int mode;
+  struct ipv6_sr_hdr srh[0];
+};
+#define SEG6_IPTUN_ENCAP_SIZE(x) ((sizeof(* x)) + (((x)->srh->hdrlen + 1) << 3))
+enum {
+  SEG6_IPTUN_MODE_INLINE,
+  SEG6_IPTUN_MODE_ENCAP,
+  SEG6_IPTUN_MODE_L2ENCAP,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/seg6_local.h b/i686-linux-musl/include/linux/seg6_local.h
new file mode 100644
index 0000000..61a8d97
--- /dev/null
+++ b/i686-linux-musl/include/linux/seg6_local.h
@@ -0,0 +1,74 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SEG6_LOCAL_H
+#define _UAPI_LINUX_SEG6_LOCAL_H
+#include <linux/seg6.h>
+enum {
+  SEG6_LOCAL_UNSPEC,
+  SEG6_LOCAL_ACTION,
+  SEG6_LOCAL_SRH,
+  SEG6_LOCAL_TABLE,
+  SEG6_LOCAL_NH4,
+  SEG6_LOCAL_NH6,
+  SEG6_LOCAL_IIF,
+  SEG6_LOCAL_OIF,
+  SEG6_LOCAL_BPF,
+  SEG6_LOCAL_VRFTABLE,
+  SEG6_LOCAL_COUNTERS,
+  __SEG6_LOCAL_MAX,
+};
+#define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1)
+enum {
+  SEG6_LOCAL_ACTION_UNSPEC = 0,
+  SEG6_LOCAL_ACTION_END = 1,
+  SEG6_LOCAL_ACTION_END_X = 2,
+  SEG6_LOCAL_ACTION_END_T = 3,
+  SEG6_LOCAL_ACTION_END_DX2 = 4,
+  SEG6_LOCAL_ACTION_END_DX6 = 5,
+  SEG6_LOCAL_ACTION_END_DX4 = 6,
+  SEG6_LOCAL_ACTION_END_DT6 = 7,
+  SEG6_LOCAL_ACTION_END_DT4 = 8,
+  SEG6_LOCAL_ACTION_END_B6 = 9,
+  SEG6_LOCAL_ACTION_END_B6_ENCAP = 10,
+  SEG6_LOCAL_ACTION_END_BM = 11,
+  SEG6_LOCAL_ACTION_END_S = 12,
+  SEG6_LOCAL_ACTION_END_AS = 13,
+  SEG6_LOCAL_ACTION_END_AM = 14,
+  SEG6_LOCAL_ACTION_END_BPF = 15,
+  SEG6_LOCAL_ACTION_END_DT46 = 16,
+  __SEG6_LOCAL_ACTION_MAX,
+};
+#define SEG6_LOCAL_ACTION_MAX (__SEG6_LOCAL_ACTION_MAX - 1)
+enum {
+  SEG6_LOCAL_BPF_PROG_UNSPEC,
+  SEG6_LOCAL_BPF_PROG,
+  SEG6_LOCAL_BPF_PROG_NAME,
+  __SEG6_LOCAL_BPF_PROG_MAX,
+};
+#define SEG6_LOCAL_BPF_PROG_MAX (__SEG6_LOCAL_BPF_PROG_MAX - 1)
+enum {
+  SEG6_LOCAL_CNT_UNSPEC,
+  SEG6_LOCAL_CNT_PAD,
+  SEG6_LOCAL_CNT_PACKETS,
+  SEG6_LOCAL_CNT_BYTES,
+  SEG6_LOCAL_CNT_ERRORS,
+  __SEG6_LOCAL_CNT_MAX,
+};
+#define SEG6_LOCAL_CNT_MAX (__SEG6_LOCAL_CNT_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/selinux_netlink.h b/i686-linux-musl/include/linux/selinux_netlink.h
new file mode 100644
index 0000000..16d928d
--- /dev/null
+++ b/i686-linux-musl/include/linux/selinux_netlink.h
@@ -0,0 +1,45 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_SELINUX_NETLINK_H
+#define _LINUX_SELINUX_NETLINK_H
+#include <linux/types.h>
+#define SELNL_MSG_BASE 0x10
+enum {
+  SELNL_MSG_SETENFORCE = SELNL_MSG_BASE,
+  SELNL_MSG_POLICYLOAD,
+  SELNL_MSG_MAX
+};
+#define SELNL_GRP_NONE 0x00000000
+#define SELNL_GRP_AVC 0x00000001
+#define SELNL_GRP_ALL 0xffffffff
+enum selinux_nlgroups {
+  SELNLGRP_NONE,
+#define SELNLGRP_NONE SELNLGRP_NONE
+  SELNLGRP_AVC,
+#define SELNLGRP_AVC SELNLGRP_AVC
+  __SELNLGRP_MAX
+};
+#define SELNLGRP_MAX (__SELNLGRP_MAX - 1)
+struct selnl_msg_setenforce {
+  __s32 val;
+};
+struct selnl_msg_policyload {
+  __u32 seqno;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/sem.h b/i686-linux-musl/include/linux/sem.h
new file mode 100644
index 0000000..98ed1bf
--- /dev/null
+++ b/i686-linux-musl/include/linux/sem.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SEM_H
+#define _UAPI_LINUX_SEM_H
+#include <linux/ipc.h>
+#define SEM_UNDO 0x1000
+#define GETPID 11
+#define GETVAL 12
+#define GETALL 13
+#define GETNCNT 14
+#define GETZCNT 15
+#define SETVAL 16
+#define SETALL 17
+#define SEM_STAT 18
+#define SEM_INFO 19
+#define SEM_STAT_ANY 20
+struct __kernel_legacy_semid_ds {
+  struct __kernel_legacy_ipc_perm sem_perm;
+  __kernel_old_time_t sem_otime;
+  __kernel_old_time_t sem_ctime;
+  struct sem * sem_base;
+  struct sem_queue * sem_pending;
+  struct sem_queue * * sem_pending_last;
+  struct sem_undo * undo;
+  unsigned short sem_nsems;
+};
+#include <asm/sembuf.h>
+struct sembuf {
+  unsigned short sem_num;
+  short sem_op;
+  short sem_flg;
+};
+union __kernel_legacy_semun {
+  int val;
+  struct __kernel_legacy_semid_ds __user * buf;
+  unsigned short __user * array;
+  struct seminfo __user * __buf;
+  void __user * __pad;
+};
+struct seminfo {
+  int semmap;
+  int semmni;
+  int semmns;
+  int semmnu;
+  int semmsl;
+  int semopm;
+  int semume;
+  int semusz;
+  int semvmx;
+  int semaem;
+};
+#define SEMMNI 32000
+#define SEMMSL 32000
+#define SEMMNS (SEMMNI * SEMMSL)
+#define SEMOPM 500
+#define SEMVMX 32767
+#define SEMAEM SEMVMX
+#define SEMUME SEMOPM
+#define SEMMNU SEMMNS
+#define SEMMAP SEMMNS
+#define SEMUSZ 20
+#endif
diff --git a/i686-linux-musl/include/linux/serial.h b/i686-linux-musl/include/linux/serial.h
new file mode 100644
index 0000000..e4e903d
--- /dev/null
+++ b/i686-linux-musl/include/linux/serial.h
@@ -0,0 +1,114 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SERIAL_H
+#define _UAPI_LINUX_SERIAL_H
+#include <linux/types.h>
+#include <linux/tty_flags.h>
+struct serial_struct {
+  int type;
+  int line;
+  unsigned int port;
+  int irq;
+  int flags;
+  int xmit_fifo_size;
+  int custom_divisor;
+  int baud_base;
+  unsigned short close_delay;
+  char io_type;
+  char reserved_char[1];
+  int hub6;
+  unsigned short closing_wait;
+  unsigned short closing_wait2;
+  unsigned char * iomem_base;
+  unsigned short iomem_reg_shift;
+  unsigned int port_high;
+  unsigned long iomap_base;
+};
+#define ASYNC_CLOSING_WAIT_INF 0
+#define ASYNC_CLOSING_WAIT_NONE 65535
+#define PORT_UNKNOWN 0
+#define PORT_8250 1
+#define PORT_16450 2
+#define PORT_16550 3
+#define PORT_16550A 4
+#define PORT_CIRRUS 5
+#define PORT_16650 6
+#define PORT_16650V2 7
+#define PORT_16750 8
+#define PORT_STARTECH 9
+#define PORT_16C950 10
+#define PORT_16654 11
+#define PORT_16850 12
+#define PORT_RSA 13
+#define PORT_MAX 13
+#define SERIAL_IO_PORT 0
+#define SERIAL_IO_HUB6 1
+#define SERIAL_IO_MEM 2
+#define SERIAL_IO_MEM32 3
+#define SERIAL_IO_AU 4
+#define SERIAL_IO_TSI 5
+#define SERIAL_IO_MEM32BE 6
+#define SERIAL_IO_MEM16 7
+#define UART_CLEAR_FIFO 0x01
+#define UART_USE_FIFO 0x02
+#define UART_STARTECH 0x04
+#define UART_NATSEMI 0x08
+struct serial_multiport_struct {
+  int irq;
+  int port1;
+  unsigned char mask1, match1;
+  int port2;
+  unsigned char mask2, match2;
+  int port3;
+  unsigned char mask3, match3;
+  int port4;
+  unsigned char mask4, match4;
+  int port_monitor;
+  int reserved[32];
+};
+struct serial_icounter_struct {
+  int cts, dsr, rng, dcd;
+  int rx, tx;
+  int frame, overrun, parity, brk;
+  int buf_overrun;
+  int reserved[9];
+};
+struct serial_rs485 {
+  __u32 flags;
+#define SER_RS485_ENABLED (1 << 0)
+#define SER_RS485_RTS_ON_SEND (1 << 1)
+#define SER_RS485_RTS_AFTER_SEND (1 << 2)
+#define SER_RS485_RX_DURING_TX (1 << 4)
+#define SER_RS485_TERMINATE_BUS (1 << 5)
+  __u32 delay_rts_before_send;
+  __u32 delay_rts_after_send;
+  __u32 padding[5];
+};
+struct serial_iso7816 {
+  __u32 flags;
+#define SER_ISO7816_ENABLED (1 << 0)
+#define SER_ISO7816_T_PARAM (0x0f << 4)
+#define SER_ISO7816_T(t) (((t) & 0x0f) << 4)
+  __u32 tg;
+  __u32 sc_fi;
+  __u32 sc_di;
+  __u32 clk;
+  __u32 reserved[5];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/serial_core.h b/i686-linux-musl/include/linux/serial_core.h
new file mode 100644
index 0000000..0caf698
--- /dev/null
+++ b/i686-linux-musl/include/linux/serial_core.h
@@ -0,0 +1,125 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPILINUX_SERIAL_CORE_H
+#define _UAPILINUX_SERIAL_CORE_H
+#include <linux/serial.h>
+#define PORT_NS16550A 14
+#define PORT_XSCALE 15
+#define PORT_RM9000 16
+#define PORT_OCTEON 17
+#define PORT_AR7 18
+#define PORT_U6_16550A 19
+#define PORT_TEGRA 20
+#define PORT_XR17D15X 21
+#define PORT_LPC3220 22
+#define PORT_8250_CIR 23
+#define PORT_XR17V35X 24
+#define PORT_BRCM_TRUMANAGE 25
+#define PORT_ALTR_16550_F32 26
+#define PORT_ALTR_16550_F64 27
+#define PORT_ALTR_16550_F128 28
+#define PORT_RT2880 29
+#define PORT_16550A_FSL64 30
+#define PORT_PXA 31
+#define PORT_AMBA 32
+#define PORT_CLPS711X 33
+#define PORT_SA1100 34
+#define PORT_UART00 35
+#define PORT_OWL 36
+#define PORT_21285 37
+#define PORT_SUNZILOG 38
+#define PORT_SUNSAB 39
+#define PORT_NPCM 40
+#define PORT_TEGRA_TCU 41
+#define PORT_PCH_8LINE 44
+#define PORT_PCH_2LINE 45
+#define PORT_DZ 46
+#define PORT_ZS 47
+#define PORT_MUX 48
+#define PORT_ATMEL 49
+#define PORT_MAC_ZILOG 50
+#define PORT_PMAC_ZILOG 51
+#define PORT_SCI 52
+#define PORT_SCIF 53
+#define PORT_IRDA 54
+#define PORT_S3C2410 55
+#define PORT_IP22ZILOG 56
+#define PORT_LH7A40X 57
+#define PORT_CPM 58
+#define PORT_MPC52xx 59
+#define PORT_ICOM 60
+#define PORT_S3C2440 61
+#define PORT_IMX 62
+#define PORT_MPSC 63
+#define PORT_TXX9 64
+#define PORT_VR41XX_SIU 65
+#define PORT_VR41XX_DSIU 66
+#define PORT_S3C2400 67
+#define PORT_M32R_SIO 68
+#define PORT_JSM 69
+#define PORT_SUNHV 72
+#define PORT_S3C2412 73
+#define PORT_UARTLITE 74
+#define PORT_BFIN 75
+#define PORT_SB1250_DUART 77
+#define PORT_MCF 78
+#define PORT_BFIN_SPORT 79
+#define PORT_MN10300 80
+#define PORT_MN10300_CTS 81
+#define PORT_SC26XX 82
+#define PORT_SCIFA 83
+#define PORT_S3C6400 84
+#define PORT_NWPSERIAL 85
+#define PORT_MAX3100 86
+#define PORT_TIMBUART 87
+#define PORT_MSM 88
+#define PORT_BCM63XX 89
+#define PORT_APBUART 90
+#define PORT_ALTERA_JTAGUART 91
+#define PORT_ALTERA_UART 92
+#define PORT_SCIFB 93
+#define PORT_MAX310X 94
+#define PORT_DA830 95
+#define PORT_OMAP 96
+#define PORT_VT8500 97
+#define PORT_XUARTPS 98
+#define PORT_AR933X 99
+#define PORT_ARC 101
+#define PORT_RP2 102
+#define PORT_LPUART 103
+#define PORT_HSCIF 104
+#define PORT_ASC 105
+#define PORT_TILEGX 106
+#define PORT_MEN_Z135 107
+#define PORT_SC16IS7XX 108
+#define PORT_MESON 109
+#define PORT_DIGICOLOR 110
+#define PORT_SPRD 111
+#define PORT_CRIS 112
+#define PORT_STM32 113
+#define PORT_MVEBU 114
+#define PORT_PIC32 115
+#define PORT_MPS2UART 116
+#define PORT_MTK_BTIF 117
+#define PORT_RDA 118
+#define PORT_MLB_USIO 119
+#define PORT_SIFIVE_V0 120
+#define PORT_SUNIX 121
+#define PORT_LINFLEXUART 122
+#endif
diff --git a/i686-linux-musl/include/linux/serial_reg.h b/i686-linux-musl/include/linux/serial_reg.h
new file mode 100644
index 0000000..b6648f8
--- /dev/null
+++ b/i686-linux-musl/include/linux/serial_reg.h
@@ -0,0 +1,246 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_SERIAL_REG_H
+#define _LINUX_SERIAL_REG_H
+#define UART_RX 0
+#define UART_TX 0
+#define UART_IER 1
+#define UART_IER_MSI 0x08
+#define UART_IER_RLSI 0x04
+#define UART_IER_THRI 0x02
+#define UART_IER_RDI 0x01
+#define UART_IERX_SLEEP 0x10
+#define UART_IIR 2
+#define UART_IIR_NO_INT 0x01
+#define UART_IIR_ID 0x0e
+#define UART_IIR_MSI 0x00
+#define UART_IIR_THRI 0x02
+#define UART_IIR_RDI 0x04
+#define UART_IIR_RLSI 0x06
+#define UART_IIR_BUSY 0x07
+#define UART_IIR_RX_TIMEOUT 0x0c
+#define UART_IIR_XOFF 0x10
+#define UART_IIR_CTS_RTS_DSR 0x20
+#define UART_FCR 2
+#define UART_FCR_ENABLE_FIFO 0x01
+#define UART_FCR_CLEAR_RCVR 0x02
+#define UART_FCR_CLEAR_XMIT 0x04
+#define UART_FCR_DMA_SELECT 0x08
+#define UART_FCR_R_TRIG_00 0x00
+#define UART_FCR_R_TRIG_01 0x40
+#define UART_FCR_R_TRIG_10 0x80
+#define UART_FCR_R_TRIG_11 0xc0
+#define UART_FCR_T_TRIG_00 0x00
+#define UART_FCR_T_TRIG_01 0x10
+#define UART_FCR_T_TRIG_10 0x20
+#define UART_FCR_T_TRIG_11 0x30
+#define UART_FCR_TRIGGER_MASK 0xC0
+#define UART_FCR_TRIGGER_1 0x00
+#define UART_FCR_TRIGGER_4 0x40
+#define UART_FCR_TRIGGER_8 0x80
+#define UART_FCR_TRIGGER_14 0xC0
+#define UART_FCR6_R_TRIGGER_8 0x00
+#define UART_FCR6_R_TRIGGER_16 0x40
+#define UART_FCR6_R_TRIGGER_24 0x80
+#define UART_FCR6_R_TRIGGER_28 0xC0
+#define UART_FCR6_T_TRIGGER_16 0x00
+#define UART_FCR6_T_TRIGGER_8 0x10
+#define UART_FCR6_T_TRIGGER_24 0x20
+#define UART_FCR6_T_TRIGGER_30 0x30
+#define UART_FCR7_64BYTE 0x20
+#define UART_FCR_R_TRIG_SHIFT 6
+#define UART_FCR_R_TRIG_BITS(x) (((x) & UART_FCR_TRIGGER_MASK) >> UART_FCR_R_TRIG_SHIFT)
+#define UART_FCR_R_TRIG_MAX_STATE 4
+#define UART_LCR 3
+#define UART_LCR_DLAB 0x80
+#define UART_LCR_SBC 0x40
+#define UART_LCR_SPAR 0x20
+#define UART_LCR_EPAR 0x10
+#define UART_LCR_PARITY 0x08
+#define UART_LCR_STOP 0x04
+#define UART_LCR_WLEN5 0x00
+#define UART_LCR_WLEN6 0x01
+#define UART_LCR_WLEN7 0x02
+#define UART_LCR_WLEN8 0x03
+#define UART_LCR_CONF_MODE_A UART_LCR_DLAB
+#define UART_LCR_CONF_MODE_B 0xBF
+#define UART_MCR 4
+#define UART_MCR_CLKSEL 0x80
+#define UART_MCR_TCRTLR 0x40
+#define UART_MCR_XONANY 0x20
+#define UART_MCR_AFE 0x20
+#define UART_MCR_LOOP 0x10
+#define UART_MCR_OUT2 0x08
+#define UART_MCR_OUT1 0x04
+#define UART_MCR_RTS 0x02
+#define UART_MCR_DTR 0x01
+#define UART_LSR 5
+#define UART_LSR_FIFOE 0x80
+#define UART_LSR_TEMT 0x40
+#define UART_LSR_THRE 0x20
+#define UART_LSR_BI 0x10
+#define UART_LSR_FE 0x08
+#define UART_LSR_PE 0x04
+#define UART_LSR_OE 0x02
+#define UART_LSR_DR 0x01
+#define UART_LSR_BRK_ERROR_BITS 0x1E
+#define UART_MSR 6
+#define UART_MSR_DCD 0x80
+#define UART_MSR_RI 0x40
+#define UART_MSR_DSR 0x20
+#define UART_MSR_CTS 0x10
+#define UART_MSR_DDCD 0x08
+#define UART_MSR_TERI 0x04
+#define UART_MSR_DDSR 0x02
+#define UART_MSR_DCTS 0x01
+#define UART_MSR_ANY_DELTA 0x0F
+#define UART_SCR 7
+#define UART_DLL 0
+#define UART_DLM 1
+#define UART_DIV_MAX 0xFFFF
+#define UART_EFR 2
+#define UART_XR_EFR 9
+#define UART_EFR_CTS 0x80
+#define UART_EFR_RTS 0x40
+#define UART_EFR_SCD 0x20
+#define UART_EFR_ECB 0x10
+#define UART_XON1 4
+#define UART_XON2 5
+#define UART_XOFF1 6
+#define UART_XOFF2 7
+#define UART_TI752_TCR 6
+#define UART_TI752_TLR 7
+#define UART_TRG 0
+#define UART_TRG_1 0x01
+#define UART_TRG_4 0x04
+#define UART_TRG_8 0x08
+#define UART_TRG_16 0x10
+#define UART_TRG_32 0x20
+#define UART_TRG_64 0x40
+#define UART_TRG_96 0x60
+#define UART_TRG_120 0x78
+#define UART_TRG_128 0x80
+#define UART_FCTR 1
+#define UART_FCTR_RTS_NODELAY 0x00
+#define UART_FCTR_RTS_4DELAY 0x01
+#define UART_FCTR_RTS_6DELAY 0x02
+#define UART_FCTR_RTS_8DELAY 0x03
+#define UART_FCTR_IRDA 0x04
+#define UART_FCTR_TX_INT 0x08
+#define UART_FCTR_TRGA 0x00
+#define UART_FCTR_TRGB 0x10
+#define UART_FCTR_TRGC 0x20
+#define UART_FCTR_TRGD 0x30
+#define UART_FCTR_SCR_SWAP 0x40
+#define UART_FCTR_RX 0x00
+#define UART_FCTR_TX 0x80
+#define UART_EMSR 7
+#define UART_EMSR_FIFO_COUNT 0x01
+#define UART_EMSR_ALT_COUNT 0x02
+#define UART_IER_DMAE 0x80
+#define UART_IER_UUE 0x40
+#define UART_IER_NRZE 0x20
+#define UART_IER_RTOIE 0x10
+#define UART_IIR_TOD 0x08
+#define UART_FCR_PXAR1 0x00
+#define UART_FCR_PXAR8 0x40
+#define UART_FCR_PXAR16 0x80
+#define UART_FCR_PXAR32 0xc0
+#define UART_ASR 0x01
+#define UART_RFL 0x03
+#define UART_TFL 0x04
+#define UART_ICR 0x05
+#define UART_ACR 0x00
+#define UART_CPR 0x01
+#define UART_TCR 0x02
+#define UART_CKS 0x03
+#define UART_TTL 0x04
+#define UART_RTL 0x05
+#define UART_FCL 0x06
+#define UART_FCH 0x07
+#define UART_ID1 0x08
+#define UART_ID2 0x09
+#define UART_ID3 0x0A
+#define UART_REV 0x0B
+#define UART_CSR 0x0C
+#define UART_NMR 0x0D
+#define UART_CTR 0xFF
+#define UART_ACR_RXDIS 0x01
+#define UART_ACR_TXDIS 0x02
+#define UART_ACR_DSRFC 0x04
+#define UART_ACR_TLENB 0x20
+#define UART_ACR_ICRRD 0x40
+#define UART_ACR_ASREN 0x80
+#define UART_RSA_BASE (- 8)
+#define UART_RSA_MSR ((UART_RSA_BASE) + 0)
+#define UART_RSA_MSR_SWAP (1 << 0)
+#define UART_RSA_MSR_FIFO (1 << 2)
+#define UART_RSA_MSR_FLOW (1 << 3)
+#define UART_RSA_MSR_ITYP (1 << 4)
+#define UART_RSA_IER ((UART_RSA_BASE) + 1)
+#define UART_RSA_IER_Rx_FIFO_H (1 << 0)
+#define UART_RSA_IER_Tx_FIFO_H (1 << 1)
+#define UART_RSA_IER_Tx_FIFO_E (1 << 2)
+#define UART_RSA_IER_Rx_TOUT (1 << 3)
+#define UART_RSA_IER_TIMER (1 << 4)
+#define UART_RSA_SRR ((UART_RSA_BASE) + 2)
+#define UART_RSA_SRR_Tx_FIFO_NEMP (1 << 0)
+#define UART_RSA_SRR_Tx_FIFO_NHFL (1 << 1)
+#define UART_RSA_SRR_Tx_FIFO_NFUL (1 << 2)
+#define UART_RSA_SRR_Rx_FIFO_NEMP (1 << 3)
+#define UART_RSA_SRR_Rx_FIFO_NHFL (1 << 4)
+#define UART_RSA_SRR_Rx_FIFO_NFUL (1 << 5)
+#define UART_RSA_SRR_Rx_TOUT (1 << 6)
+#define UART_RSA_SRR_TIMER (1 << 7)
+#define UART_RSA_FRR ((UART_RSA_BASE) + 2)
+#define UART_RSA_TIVSR ((UART_RSA_BASE) + 3)
+#define UART_RSA_TCR ((UART_RSA_BASE) + 4)
+#define UART_RSA_TCR_SWITCH (1 << 0)
+#define SERIAL_RSA_BAUD_BASE (921600)
+#define SERIAL_RSA_BAUD_BASE_LO (SERIAL_RSA_BAUD_BASE / 8)
+#define UART_DA830_PWREMU_MGMT 12
+#define UART_DA830_PWREMU_MGMT_FREE (1 << 0)
+#define UART_DA830_PWREMU_MGMT_URRST (1 << 13)
+#define UART_DA830_PWREMU_MGMT_UTRST (1 << 14)
+#define OMAP1_UART1_BASE 0xfffb0000
+#define OMAP1_UART2_BASE 0xfffb0800
+#define OMAP1_UART3_BASE 0xfffb9800
+#define UART_OMAP_MDR1 0x08
+#define UART_OMAP_MDR2 0x09
+#define UART_OMAP_SCR 0x10
+#define UART_OMAP_SSR 0x11
+#define UART_OMAP_EBLR 0x12
+#define UART_OMAP_OSC_12M_SEL 0x13
+#define UART_OMAP_MVER 0x14
+#define UART_OMAP_SYSC 0x15
+#define UART_OMAP_SYSS 0x16
+#define UART_OMAP_WER 0x17
+#define UART_OMAP_TX_LVL 0x1a
+#define UART_OMAP_MDR1_16X_MODE 0x00
+#define UART_OMAP_MDR1_SIR_MODE 0x01
+#define UART_OMAP_MDR1_16X_ABAUD_MODE 0x02
+#define UART_OMAP_MDR1_13X_MODE 0x03
+#define UART_OMAP_MDR1_MIR_MODE 0x04
+#define UART_OMAP_MDR1_FIR_MODE 0x05
+#define UART_OMAP_MDR1_CIR_MODE 0x06
+#define UART_OMAP_MDR1_DISABLE 0x07
+#define UART_ALTR_AFR 0x40
+#define UART_ALTR_EN_TXFIFO_LW 0x01
+#define UART_ALTR_TX_LOW 0x41
+#endif
diff --git a/i686-linux-musl/include/linux/serio.h b/i686-linux-musl/include/linux/serio.h
new file mode 100644
index 0000000..605a4e4
--- /dev/null
+++ b/i686-linux-musl/include/linux/serio.h
@@ -0,0 +1,81 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_SERIO_H
+#define _UAPI_SERIO_H
+#include <linux/const.h>
+#include <linux/ioctl.h>
+#define SPIOCSTYPE _IOW('q', 0x01, unsigned long)
+#define SERIO_TIMEOUT _BITUL(0)
+#define SERIO_PARITY _BITUL(1)
+#define SERIO_FRAME _BITUL(2)
+#define SERIO_OOB_DATA _BITUL(3)
+#define SERIO_XT 0x00
+#define SERIO_8042 0x01
+#define SERIO_RS232 0x02
+#define SERIO_HIL_MLC 0x03
+#define SERIO_PS_PSTHRU 0x05
+#define SERIO_8042_XL 0x06
+#define SERIO_UNKNOWN 0x00
+#define SERIO_MSC 0x01
+#define SERIO_SUN 0x02
+#define SERIO_MS 0x03
+#define SERIO_MP 0x04
+#define SERIO_MZ 0x05
+#define SERIO_MZP 0x06
+#define SERIO_MZPP 0x07
+#define SERIO_VSXXXAA 0x08
+#define SERIO_SUNKBD 0x10
+#define SERIO_WARRIOR 0x18
+#define SERIO_SPACEORB 0x19
+#define SERIO_MAGELLAN 0x1a
+#define SERIO_SPACEBALL 0x1b
+#define SERIO_GUNZE 0x1c
+#define SERIO_IFORCE 0x1d
+#define SERIO_STINGER 0x1e
+#define SERIO_NEWTON 0x1f
+#define SERIO_STOWAWAY 0x20
+#define SERIO_H3600 0x21
+#define SERIO_PS2SER 0x22
+#define SERIO_TWIDKBD 0x23
+#define SERIO_TWIDJOY 0x24
+#define SERIO_HIL 0x25
+#define SERIO_SNES232 0x26
+#define SERIO_SEMTECH 0x27
+#define SERIO_LKKBD 0x28
+#define SERIO_ELO 0x29
+#define SERIO_MICROTOUCH 0x30
+#define SERIO_PENMOUNT 0x31
+#define SERIO_TOUCHRIGHT 0x32
+#define SERIO_TOUCHWIN 0x33
+#define SERIO_TAOSEVM 0x34
+#define SERIO_FUJITSU 0x35
+#define SERIO_ZHENHUA 0x36
+#define SERIO_INEXIO 0x37
+#define SERIO_TOUCHIT213 0x38
+#define SERIO_W8001 0x39
+#define SERIO_DYNAPRO 0x3a
+#define SERIO_HAMPSHIRE 0x3b
+#define SERIO_PS2MULT 0x3c
+#define SERIO_TSC40 0x3d
+#define SERIO_WACOM_IV 0x3e
+#define SERIO_EGALAX 0x3f
+#define SERIO_PULSE8_CEC 0x40
+#define SERIO_RAINSHADOW_CEC 0x41
+#define SERIO_FSIA6B 0x42
+#endif
diff --git a/i686-linux-musl/include/linux/shm.h b/i686-linux-musl/include/linux/shm.h
new file mode 100644
index 0000000..72ee715
--- /dev/null
+++ b/i686-linux-musl/include/linux/shm.h
@@ -0,0 +1,86 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SHM_H_
+#define _UAPI_LINUX_SHM_H_
+#include <linux/ipc.h>
+#include <linux/errno.h>
+#include <asm-generic/hugetlb_encode.h>
+#include <unistd.h>
+#define SHMMIN 1
+#define SHMMNI 4096
+#define SHMMAX (ULONG_MAX - (1UL << 24))
+#define SHMALL (ULONG_MAX - (1UL << 24))
+#define SHMSEG SHMMNI
+struct __kernel_legacy_shmid_ds {
+  struct __kernel_legacy_ipc_perm shm_perm;
+  int shm_segsz;
+  __kernel_old_time_t shm_atime;
+  __kernel_old_time_t shm_dtime;
+  __kernel_old_time_t shm_ctime;
+  __kernel_ipc_pid_t shm_cpid;
+  __kernel_ipc_pid_t shm_lpid;
+  unsigned short shm_nattch;
+  unsigned short shm_unused;
+  void * shm_unused2;
+  void * shm_unused3;
+};
+#include <asm/shmbuf.h>
+#define SHM_R 0400
+#define SHM_W 0200
+#define SHM_HUGETLB 04000
+#define SHM_NORESERVE 010000
+#define SHM_HUGE_SHIFT HUGETLB_FLAG_ENCODE_SHIFT
+#define SHM_HUGE_MASK HUGETLB_FLAG_ENCODE_MASK
+#define SHM_HUGE_64KB HUGETLB_FLAG_ENCODE_64KB
+#define SHM_HUGE_512KB HUGETLB_FLAG_ENCODE_512KB
+#define SHM_HUGE_1MB HUGETLB_FLAG_ENCODE_1MB
+#define SHM_HUGE_2MB HUGETLB_FLAG_ENCODE_2MB
+#define SHM_HUGE_8MB HUGETLB_FLAG_ENCODE_8MB
+#define SHM_HUGE_16MB HUGETLB_FLAG_ENCODE_16MB
+#define SHM_HUGE_32MB HUGETLB_FLAG_ENCODE_32MB
+#define SHM_HUGE_256MB HUGETLB_FLAG_ENCODE_256MB
+#define SHM_HUGE_512MB HUGETLB_FLAG_ENCODE_512MB
+#define SHM_HUGE_1GB HUGETLB_FLAG_ENCODE_1GB
+#define SHM_HUGE_2GB HUGETLB_FLAG_ENCODE_2GB
+#define SHM_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB
+#define SHM_RDONLY 010000
+#define SHM_RND 020000
+#define SHM_REMAP 040000
+#define SHM_EXEC 0100000
+#define SHM_LOCK 11
+#define SHM_UNLOCK 12
+#define SHM_STAT 13
+#define SHM_INFO 14
+#define SHM_STAT_ANY 15
+struct shminfo {
+  int shmmax;
+  int shmmin;
+  int shmmni;
+  int shmseg;
+  int shmall;
+};
+struct shm_info {
+  int used_ids;
+  __kernel_ulong_t shm_tot;
+  __kernel_ulong_t shm_rss;
+  __kernel_ulong_t shm_swp;
+  __kernel_ulong_t swap_attempts;
+  __kernel_ulong_t swap_successes;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/signal.h b/i686-linux-musl/include/linux/signal.h
new file mode 100644
index 0000000..dd00a32
--- /dev/null
+++ b/i686-linux-musl/include/linux/signal.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SIGNAL_H
+#define _UAPI_LINUX_SIGNAL_H
+#include <asm/signal.h>
+#include <asm/siginfo.h>
+#define SS_ONSTACK 1
+#define SS_DISABLE 2
+#define SS_AUTODISARM (1U << 31)
+#define SS_FLAG_BITS SS_AUTODISARM
+#endif
diff --git a/i686-linux-musl/include/linux/signalfd.h b/i686-linux-musl/include/linux/signalfd.h
new file mode 100644
index 0000000..5108ef0
--- /dev/null
+++ b/i686-linux-musl/include/linux/signalfd.h
@@ -0,0 +1,49 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SIGNALFD_H
+#define _UAPI_LINUX_SIGNALFD_H
+#include <linux/types.h>
+#include <linux/fcntl.h>
+#define SFD_CLOEXEC O_CLOEXEC
+#define SFD_NONBLOCK O_NONBLOCK
+struct signalfd_siginfo {
+  __u32 ssi_signo;
+  __s32 ssi_errno;
+  __s32 ssi_code;
+  __u32 ssi_pid;
+  __u32 ssi_uid;
+  __s32 ssi_fd;
+  __u32 ssi_tid;
+  __u32 ssi_band;
+  __u32 ssi_overrun;
+  __u32 ssi_trapno;
+  __s32 ssi_status;
+  __s32 ssi_int;
+  __u64 ssi_ptr;
+  __u64 ssi_utime;
+  __u64 ssi_stime;
+  __u64 ssi_addr;
+  __u16 ssi_addr_lsb;
+  __u16 __pad2;
+  __s32 ssi_syscall;
+  __u64 ssi_call_addr;
+  __u32 ssi_arch;
+  __u8 __pad[28];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/smc.h b/i686-linux-musl/include/linux/smc.h
new file mode 100644
index 0000000..5c07207
--- /dev/null
+++ b/i686-linux-musl/include/linux/smc.h
@@ -0,0 +1,250 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SMC_H_
+#define _UAPI_LINUX_SMC_H_
+enum {
+  SMC_PNETID_UNSPEC,
+  SMC_PNETID_NAME,
+  SMC_PNETID_ETHNAME,
+  SMC_PNETID_IBNAME,
+  SMC_PNETID_IBPORT,
+  __SMC_PNETID_MAX,
+  SMC_PNETID_MAX = __SMC_PNETID_MAX - 1
+};
+enum {
+  SMC_PNETID_GET = 1,
+  SMC_PNETID_ADD,
+  SMC_PNETID_DEL,
+  SMC_PNETID_FLUSH
+};
+#define SMCR_GENL_FAMILY_NAME "SMC_PNETID"
+#define SMCR_GENL_FAMILY_VERSION 1
+#define SMC_GENL_FAMILY_NAME "SMC_GEN_NETLINK"
+#define SMC_GENL_FAMILY_VERSION 1
+#define SMC_PCI_ID_STR_LEN 16
+#define SMC_MAX_HOSTNAME_LEN 32
+#define SMC_MAX_UEID 4
+#define SMC_MAX_EID_LEN 32
+enum {
+  SMC_NETLINK_GET_SYS_INFO = 1,
+  SMC_NETLINK_GET_LGR_SMCR,
+  SMC_NETLINK_GET_LINK_SMCR,
+  SMC_NETLINK_GET_LGR_SMCD,
+  SMC_NETLINK_GET_DEV_SMCD,
+  SMC_NETLINK_GET_DEV_SMCR,
+  SMC_NETLINK_GET_STATS,
+  SMC_NETLINK_GET_FBACK_STATS,
+  SMC_NETLINK_DUMP_UEID,
+  SMC_NETLINK_ADD_UEID,
+  SMC_NETLINK_REMOVE_UEID,
+  SMC_NETLINK_FLUSH_UEID,
+  SMC_NETLINK_DUMP_SEID,
+  SMC_NETLINK_ENABLE_SEID,
+  SMC_NETLINK_DISABLE_SEID,
+};
+enum {
+  SMC_GEN_UNSPEC,
+  SMC_GEN_SYS_INFO,
+  SMC_GEN_LGR_SMCR,
+  SMC_GEN_LINK_SMCR,
+  SMC_GEN_LGR_SMCD,
+  SMC_GEN_DEV_SMCD,
+  SMC_GEN_DEV_SMCR,
+  SMC_GEN_STATS,
+  SMC_GEN_FBACK_STATS,
+  __SMC_GEN_MAX,
+  SMC_GEN_MAX = __SMC_GEN_MAX - 1
+};
+enum {
+  SMC_NLA_SYS_UNSPEC,
+  SMC_NLA_SYS_VER,
+  SMC_NLA_SYS_REL,
+  SMC_NLA_SYS_IS_ISM_V2,
+  SMC_NLA_SYS_LOCAL_HOST,
+  SMC_NLA_SYS_SEID,
+  SMC_NLA_SYS_IS_SMCR_V2,
+  __SMC_NLA_SYS_MAX,
+  SMC_NLA_SYS_MAX = __SMC_NLA_SYS_MAX - 1
+};
+enum {
+  SMC_NLA_LGR_V2_VER,
+  SMC_NLA_LGR_V2_REL,
+  SMC_NLA_LGR_V2_OS,
+  SMC_NLA_LGR_V2_NEG_EID,
+  SMC_NLA_LGR_V2_PEER_HOST,
+  __SMC_NLA_LGR_V2_MAX,
+  SMC_NLA_LGR_V2_MAX = __SMC_NLA_LGR_V2_MAX - 1
+};
+enum {
+  SMC_NLA_LGR_R_V2_UNSPEC,
+  SMC_NLA_LGR_R_V2_DIRECT,
+  __SMC_NLA_LGR_R_V2_MAX,
+  SMC_NLA_LGR_R_V2_MAX = __SMC_NLA_LGR_R_V2_MAX - 1
+};
+enum {
+  SMC_NLA_LGR_R_UNSPEC,
+  SMC_NLA_LGR_R_ID,
+  SMC_NLA_LGR_R_ROLE,
+  SMC_NLA_LGR_R_TYPE,
+  SMC_NLA_LGR_R_PNETID,
+  SMC_NLA_LGR_R_VLAN_ID,
+  SMC_NLA_LGR_R_CONNS_NUM,
+  SMC_NLA_LGR_R_V2_COMMON,
+  SMC_NLA_LGR_R_V2,
+  __SMC_NLA_LGR_R_MAX,
+  SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1
+};
+enum {
+  SMC_NLA_LINK_UNSPEC,
+  SMC_NLA_LINK_ID,
+  SMC_NLA_LINK_IB_DEV,
+  SMC_NLA_LINK_IB_PORT,
+  SMC_NLA_LINK_GID,
+  SMC_NLA_LINK_PEER_GID,
+  SMC_NLA_LINK_CONN_CNT,
+  SMC_NLA_LINK_NET_DEV,
+  SMC_NLA_LINK_UID,
+  SMC_NLA_LINK_PEER_UID,
+  SMC_NLA_LINK_STATE,
+  __SMC_NLA_LINK_MAX,
+  SMC_NLA_LINK_MAX = __SMC_NLA_LINK_MAX - 1
+};
+enum {
+  SMC_NLA_LGR_D_UNSPEC,
+  SMC_NLA_LGR_D_ID,
+  SMC_NLA_LGR_D_GID,
+  SMC_NLA_LGR_D_PEER_GID,
+  SMC_NLA_LGR_D_VLAN_ID,
+  SMC_NLA_LGR_D_CONNS_NUM,
+  SMC_NLA_LGR_D_PNETID,
+  SMC_NLA_LGR_D_CHID,
+  SMC_NLA_LGR_D_PAD,
+  SMC_NLA_LGR_D_V2_COMMON,
+  __SMC_NLA_LGR_D_MAX,
+  SMC_NLA_LGR_D_MAX = __SMC_NLA_LGR_D_MAX - 1
+};
+enum {
+  SMC_NLA_DEV_PORT_UNSPEC,
+  SMC_NLA_DEV_PORT_PNET_USR,
+  SMC_NLA_DEV_PORT_PNETID,
+  SMC_NLA_DEV_PORT_NETDEV,
+  SMC_NLA_DEV_PORT_STATE,
+  SMC_NLA_DEV_PORT_VALID,
+  SMC_NLA_DEV_PORT_LNK_CNT,
+  __SMC_NLA_DEV_PORT_MAX,
+  SMC_NLA_DEV_PORT_MAX = __SMC_NLA_DEV_PORT_MAX - 1
+};
+enum {
+  SMC_NLA_DEV_UNSPEC,
+  SMC_NLA_DEV_USE_CNT,
+  SMC_NLA_DEV_IS_CRIT,
+  SMC_NLA_DEV_PCI_FID,
+  SMC_NLA_DEV_PCI_CHID,
+  SMC_NLA_DEV_PCI_VENDOR,
+  SMC_NLA_DEV_PCI_DEVICE,
+  SMC_NLA_DEV_PCI_ID,
+  SMC_NLA_DEV_PORT,
+  SMC_NLA_DEV_PORT2,
+  SMC_NLA_DEV_IB_NAME,
+  __SMC_NLA_DEV_MAX,
+  SMC_NLA_DEV_MAX = __SMC_NLA_DEV_MAX - 1
+};
+enum {
+  SMC_NLA_STATS_PLOAD_PAD,
+  SMC_NLA_STATS_PLOAD_8K,
+  SMC_NLA_STATS_PLOAD_16K,
+  SMC_NLA_STATS_PLOAD_32K,
+  SMC_NLA_STATS_PLOAD_64K,
+  SMC_NLA_STATS_PLOAD_128K,
+  SMC_NLA_STATS_PLOAD_256K,
+  SMC_NLA_STATS_PLOAD_512K,
+  SMC_NLA_STATS_PLOAD_1024K,
+  SMC_NLA_STATS_PLOAD_G_1024K,
+  __SMC_NLA_STATS_PLOAD_MAX,
+  SMC_NLA_STATS_PLOAD_MAX = __SMC_NLA_STATS_PLOAD_MAX - 1
+};
+enum {
+  SMC_NLA_STATS_RMB_PAD,
+  SMC_NLA_STATS_RMB_SIZE_SM_PEER_CNT,
+  SMC_NLA_STATS_RMB_SIZE_SM_CNT,
+  SMC_NLA_STATS_RMB_FULL_PEER_CNT,
+  SMC_NLA_STATS_RMB_FULL_CNT,
+  SMC_NLA_STATS_RMB_REUSE_CNT,
+  SMC_NLA_STATS_RMB_ALLOC_CNT,
+  SMC_NLA_STATS_RMB_DGRADE_CNT,
+  __SMC_NLA_STATS_RMB_MAX,
+  SMC_NLA_STATS_RMB_MAX = __SMC_NLA_STATS_RMB_MAX - 1
+};
+enum {
+  SMC_NLA_STATS_T_PAD,
+  SMC_NLA_STATS_T_TX_RMB_SIZE,
+  SMC_NLA_STATS_T_RX_RMB_SIZE,
+  SMC_NLA_STATS_T_TXPLOAD_SIZE,
+  SMC_NLA_STATS_T_RXPLOAD_SIZE,
+  SMC_NLA_STATS_T_TX_RMB_STATS,
+  SMC_NLA_STATS_T_RX_RMB_STATS,
+  SMC_NLA_STATS_T_CLNT_V1_SUCC,
+  SMC_NLA_STATS_T_CLNT_V2_SUCC,
+  SMC_NLA_STATS_T_SRV_V1_SUCC,
+  SMC_NLA_STATS_T_SRV_V2_SUCC,
+  SMC_NLA_STATS_T_SENDPAGE_CNT,
+  SMC_NLA_STATS_T_SPLICE_CNT,
+  SMC_NLA_STATS_T_CORK_CNT,
+  SMC_NLA_STATS_T_NDLY_CNT,
+  SMC_NLA_STATS_T_URG_DATA_CNT,
+  SMC_NLA_STATS_T_RX_BYTES,
+  SMC_NLA_STATS_T_TX_BYTES,
+  SMC_NLA_STATS_T_RX_CNT,
+  SMC_NLA_STATS_T_TX_CNT,
+  __SMC_NLA_STATS_T_MAX,
+  SMC_NLA_STATS_T_MAX = __SMC_NLA_STATS_T_MAX - 1
+};
+enum {
+  SMC_NLA_STATS_PAD,
+  SMC_NLA_STATS_SMCD_TECH,
+  SMC_NLA_STATS_SMCR_TECH,
+  SMC_NLA_STATS_CLNT_HS_ERR_CNT,
+  SMC_NLA_STATS_SRV_HS_ERR_CNT,
+  __SMC_NLA_STATS_MAX,
+  SMC_NLA_STATS_MAX = __SMC_NLA_STATS_MAX - 1
+};
+enum {
+  SMC_NLA_FBACK_STATS_PAD,
+  SMC_NLA_FBACK_STATS_TYPE,
+  SMC_NLA_FBACK_STATS_SRV_CNT,
+  SMC_NLA_FBACK_STATS_CLNT_CNT,
+  SMC_NLA_FBACK_STATS_RSN_CODE,
+  SMC_NLA_FBACK_STATS_RSN_CNT,
+  __SMC_NLA_FBACK_STATS_MAX,
+  SMC_NLA_FBACK_STATS_MAX = __SMC_NLA_FBACK_STATS_MAX - 1
+};
+enum {
+  SMC_NLA_EID_TABLE_UNSPEC,
+  SMC_NLA_EID_TABLE_ENTRY,
+  __SMC_NLA_EID_TABLE_MAX,
+  SMC_NLA_EID_TABLE_MAX = __SMC_NLA_EID_TABLE_MAX - 1
+};
+enum {
+  SMC_NLA_SEID_UNSPEC,
+  SMC_NLA_SEID_ENTRY,
+  SMC_NLA_SEID_ENABLED,
+  __SMC_NLA_SEID_TABLE_MAX,
+  SMC_NLA_SEID_TABLE_MAX = __SMC_NLA_SEID_TABLE_MAX - 1
+};
+#endif
diff --git a/i686-linux-musl/include/linux/smc_diag.h b/i686-linux-musl/include/linux/smc_diag.h
new file mode 100644
index 0000000..30e0fa2
--- /dev/null
+++ b/i686-linux-musl/include/linux/smc_diag.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_SMC_DIAG_H_
+#define _UAPI_SMC_DIAG_H_
+#include <linux/types.h>
+#include <linux/inet_diag.h>
+#include <rdma/ib_user_verbs.h>
+struct smc_diag_req {
+  __u8 diag_family;
+  __u8 pad[2];
+  __u8 diag_ext;
+  struct inet_diag_sockid id;
+};
+struct smc_diag_msg {
+  __u8 diag_family;
+  __u8 diag_state;
+  union {
+    __u8 diag_mode;
+    __u8 diag_fallback;
+  };
+  __u8 diag_shutdown;
+  struct inet_diag_sockid id;
+  __u32 diag_uid;
+  __aligned_u64 diag_inode;
+};
+enum {
+  SMC_DIAG_MODE_SMCR,
+  SMC_DIAG_MODE_FALLBACK_TCP,
+  SMC_DIAG_MODE_SMCD,
+};
+enum {
+  SMC_DIAG_NONE,
+  SMC_DIAG_CONNINFO,
+  SMC_DIAG_LGRINFO,
+  SMC_DIAG_SHUTDOWN,
+  SMC_DIAG_DMBINFO,
+  SMC_DIAG_FALLBACK,
+  __SMC_DIAG_MAX,
+};
+#define SMC_DIAG_MAX (__SMC_DIAG_MAX - 1)
+struct smc_diag_cursor {
+  __u16 reserved;
+  __u16 wrap;
+  __u32 count;
+};
+struct smc_diag_conninfo {
+  __u32 token;
+  __u32 sndbuf_size;
+  __u32 rmbe_size;
+  __u32 peer_rmbe_size;
+  struct smc_diag_cursor rx_prod;
+  struct smc_diag_cursor rx_cons;
+  struct smc_diag_cursor tx_prod;
+  struct smc_diag_cursor tx_cons;
+  __u8 rx_prod_flags;
+  __u8 rx_conn_state_flags;
+  __u8 tx_prod_flags;
+  __u8 tx_conn_state_flags;
+  struct smc_diag_cursor tx_prep;
+  struct smc_diag_cursor tx_sent;
+  struct smc_diag_cursor tx_fin;
+};
+struct smc_diag_linkinfo {
+  __u8 link_id;
+  __u8 ibname[IB_DEVICE_NAME_MAX];
+  __u8 ibport;
+  __u8 gid[40];
+  __u8 peer_gid[40];
+};
+struct smc_diag_lgrinfo {
+  struct smc_diag_linkinfo lnk[1];
+  __u8 role;
+};
+struct smc_diag_fallback {
+  __u32 reason;
+  __u32 peer_diagnosis;
+};
+struct smcd_diag_dmbinfo {
+  __u32 linkid;
+  __aligned_u64 peer_gid;
+  __aligned_u64 my_gid;
+  __aligned_u64 token;
+  __aligned_u64 peer_token;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/smiapp.h b/i686-linux-musl/include/linux/smiapp.h
new file mode 100644
index 0000000..3dd54cc
--- /dev/null
+++ b/i686-linux-musl/include/linux/smiapp.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_LINUX_SMIAPP_H_
+#define __UAPI_LINUX_SMIAPP_H_
+#define V4L2_SMIAPP_TEST_PATTERN_MODE_DISABLED 0
+#define V4L2_SMIAPP_TEST_PATTERN_MODE_SOLID_COLOUR 1
+#define V4L2_SMIAPP_TEST_PATTERN_MODE_COLOUR_BARS 2
+#define V4L2_SMIAPP_TEST_PATTERN_MODE_COLOUR_BARS_GREY 3
+#define V4L2_SMIAPP_TEST_PATTERN_MODE_PN9 4
+#endif
diff --git a/i686-linux-musl/include/linux/snmp.h b/i686-linux-musl/include/linux/snmp.h
new file mode 100644
index 0000000..a503a7e
--- /dev/null
+++ b/i686-linux-musl/include/linux/snmp.h
@@ -0,0 +1,310 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_SNMP_H
+#define _LINUX_SNMP_H
+enum {
+  IPSTATS_MIB_NUM = 0,
+  IPSTATS_MIB_INPKTS,
+  IPSTATS_MIB_INOCTETS,
+  IPSTATS_MIB_INDELIVERS,
+  IPSTATS_MIB_OUTFORWDATAGRAMS,
+  IPSTATS_MIB_OUTPKTS,
+  IPSTATS_MIB_OUTOCTETS,
+  IPSTATS_MIB_INHDRERRORS,
+  IPSTATS_MIB_INTOOBIGERRORS,
+  IPSTATS_MIB_INNOROUTES,
+  IPSTATS_MIB_INADDRERRORS,
+  IPSTATS_MIB_INUNKNOWNPROTOS,
+  IPSTATS_MIB_INTRUNCATEDPKTS,
+  IPSTATS_MIB_INDISCARDS,
+  IPSTATS_MIB_OUTDISCARDS,
+  IPSTATS_MIB_OUTNOROUTES,
+  IPSTATS_MIB_REASMTIMEOUT,
+  IPSTATS_MIB_REASMREQDS,
+  IPSTATS_MIB_REASMOKS,
+  IPSTATS_MIB_REASMFAILS,
+  IPSTATS_MIB_FRAGOKS,
+  IPSTATS_MIB_FRAGFAILS,
+  IPSTATS_MIB_FRAGCREATES,
+  IPSTATS_MIB_INMCASTPKTS,
+  IPSTATS_MIB_OUTMCASTPKTS,
+  IPSTATS_MIB_INBCASTPKTS,
+  IPSTATS_MIB_OUTBCASTPKTS,
+  IPSTATS_MIB_INMCASTOCTETS,
+  IPSTATS_MIB_OUTMCASTOCTETS,
+  IPSTATS_MIB_INBCASTOCTETS,
+  IPSTATS_MIB_OUTBCASTOCTETS,
+  IPSTATS_MIB_CSUMERRORS,
+  IPSTATS_MIB_NOECTPKTS,
+  IPSTATS_MIB_ECT1PKTS,
+  IPSTATS_MIB_ECT0PKTS,
+  IPSTATS_MIB_CEPKTS,
+  IPSTATS_MIB_REASM_OVERLAPS,
+  __IPSTATS_MIB_MAX
+};
+enum {
+  ICMP_MIB_NUM = 0,
+  ICMP_MIB_INMSGS,
+  ICMP_MIB_INERRORS,
+  ICMP_MIB_INDESTUNREACHS,
+  ICMP_MIB_INTIMEEXCDS,
+  ICMP_MIB_INPARMPROBS,
+  ICMP_MIB_INSRCQUENCHS,
+  ICMP_MIB_INREDIRECTS,
+  ICMP_MIB_INECHOS,
+  ICMP_MIB_INECHOREPS,
+  ICMP_MIB_INTIMESTAMPS,
+  ICMP_MIB_INTIMESTAMPREPS,
+  ICMP_MIB_INADDRMASKS,
+  ICMP_MIB_INADDRMASKREPS,
+  ICMP_MIB_OUTMSGS,
+  ICMP_MIB_OUTERRORS,
+  ICMP_MIB_OUTDESTUNREACHS,
+  ICMP_MIB_OUTTIMEEXCDS,
+  ICMP_MIB_OUTPARMPROBS,
+  ICMP_MIB_OUTSRCQUENCHS,
+  ICMP_MIB_OUTREDIRECTS,
+  ICMP_MIB_OUTECHOS,
+  ICMP_MIB_OUTECHOREPS,
+  ICMP_MIB_OUTTIMESTAMPS,
+  ICMP_MIB_OUTTIMESTAMPREPS,
+  ICMP_MIB_OUTADDRMASKS,
+  ICMP_MIB_OUTADDRMASKREPS,
+  ICMP_MIB_CSUMERRORS,
+  __ICMP_MIB_MAX
+};
+#define __ICMPMSG_MIB_MAX 512
+enum {
+  ICMP6_MIB_NUM = 0,
+  ICMP6_MIB_INMSGS,
+  ICMP6_MIB_INERRORS,
+  ICMP6_MIB_OUTMSGS,
+  ICMP6_MIB_OUTERRORS,
+  ICMP6_MIB_CSUMERRORS,
+  __ICMP6_MIB_MAX
+};
+#define __ICMP6MSG_MIB_MAX 512
+enum {
+  TCP_MIB_NUM = 0,
+  TCP_MIB_RTOALGORITHM,
+  TCP_MIB_RTOMIN,
+  TCP_MIB_RTOMAX,
+  TCP_MIB_MAXCONN,
+  TCP_MIB_ACTIVEOPENS,
+  TCP_MIB_PASSIVEOPENS,
+  TCP_MIB_ATTEMPTFAILS,
+  TCP_MIB_ESTABRESETS,
+  TCP_MIB_CURRESTAB,
+  TCP_MIB_INSEGS,
+  TCP_MIB_OUTSEGS,
+  TCP_MIB_RETRANSSEGS,
+  TCP_MIB_INERRS,
+  TCP_MIB_OUTRSTS,
+  TCP_MIB_CSUMERRORS,
+  __TCP_MIB_MAX
+};
+enum {
+  UDP_MIB_NUM = 0,
+  UDP_MIB_INDATAGRAMS,
+  UDP_MIB_NOPORTS,
+  UDP_MIB_INERRORS,
+  UDP_MIB_OUTDATAGRAMS,
+  UDP_MIB_RCVBUFERRORS,
+  UDP_MIB_SNDBUFERRORS,
+  UDP_MIB_CSUMERRORS,
+  UDP_MIB_IGNOREDMULTI,
+  UDP_MIB_MEMERRORS,
+  __UDP_MIB_MAX
+};
+enum {
+  LINUX_MIB_NUM = 0,
+  LINUX_MIB_SYNCOOKIESSENT,
+  LINUX_MIB_SYNCOOKIESRECV,
+  LINUX_MIB_SYNCOOKIESFAILED,
+  LINUX_MIB_EMBRYONICRSTS,
+  LINUX_MIB_PRUNECALLED,
+  LINUX_MIB_RCVPRUNED,
+  LINUX_MIB_OFOPRUNED,
+  LINUX_MIB_OUTOFWINDOWICMPS,
+  LINUX_MIB_LOCKDROPPEDICMPS,
+  LINUX_MIB_ARPFILTER,
+  LINUX_MIB_TIMEWAITED,
+  LINUX_MIB_TIMEWAITRECYCLED,
+  LINUX_MIB_TIMEWAITKILLED,
+  LINUX_MIB_PAWSACTIVEREJECTED,
+  LINUX_MIB_PAWSESTABREJECTED,
+  LINUX_MIB_DELAYEDACKS,
+  LINUX_MIB_DELAYEDACKLOCKED,
+  LINUX_MIB_DELAYEDACKLOST,
+  LINUX_MIB_LISTENOVERFLOWS,
+  LINUX_MIB_LISTENDROPS,
+  LINUX_MIB_TCPHPHITS,
+  LINUX_MIB_TCPPUREACKS,
+  LINUX_MIB_TCPHPACKS,
+  LINUX_MIB_TCPRENORECOVERY,
+  LINUX_MIB_TCPSACKRECOVERY,
+  LINUX_MIB_TCPSACKRENEGING,
+  LINUX_MIB_TCPSACKREORDER,
+  LINUX_MIB_TCPRENOREORDER,
+  LINUX_MIB_TCPTSREORDER,
+  LINUX_MIB_TCPFULLUNDO,
+  LINUX_MIB_TCPPARTIALUNDO,
+  LINUX_MIB_TCPDSACKUNDO,
+  LINUX_MIB_TCPLOSSUNDO,
+  LINUX_MIB_TCPLOSTRETRANSMIT,
+  LINUX_MIB_TCPRENOFAILURES,
+  LINUX_MIB_TCPSACKFAILURES,
+  LINUX_MIB_TCPLOSSFAILURES,
+  LINUX_MIB_TCPFASTRETRANS,
+  LINUX_MIB_TCPSLOWSTARTRETRANS,
+  LINUX_MIB_TCPTIMEOUTS,
+  LINUX_MIB_TCPLOSSPROBES,
+  LINUX_MIB_TCPLOSSPROBERECOVERY,
+  LINUX_MIB_TCPRENORECOVERYFAIL,
+  LINUX_MIB_TCPSACKRECOVERYFAIL,
+  LINUX_MIB_TCPRCVCOLLAPSED,
+  LINUX_MIB_TCPDSACKOLDSENT,
+  LINUX_MIB_TCPDSACKOFOSENT,
+  LINUX_MIB_TCPDSACKRECV,
+  LINUX_MIB_TCPDSACKOFORECV,
+  LINUX_MIB_TCPABORTONDATA,
+  LINUX_MIB_TCPABORTONCLOSE,
+  LINUX_MIB_TCPABORTONMEMORY,
+  LINUX_MIB_TCPABORTONTIMEOUT,
+  LINUX_MIB_TCPABORTONLINGER,
+  LINUX_MIB_TCPABORTFAILED,
+  LINUX_MIB_TCPMEMORYPRESSURES,
+  LINUX_MIB_TCPMEMORYPRESSURESCHRONO,
+  LINUX_MIB_TCPSACKDISCARD,
+  LINUX_MIB_TCPDSACKIGNOREDOLD,
+  LINUX_MIB_TCPDSACKIGNOREDNOUNDO,
+  LINUX_MIB_TCPSPURIOUSRTOS,
+  LINUX_MIB_TCPMD5NOTFOUND,
+  LINUX_MIB_TCPMD5UNEXPECTED,
+  LINUX_MIB_TCPMD5FAILURE,
+  LINUX_MIB_SACKSHIFTED,
+  LINUX_MIB_SACKMERGED,
+  LINUX_MIB_SACKSHIFTFALLBACK,
+  LINUX_MIB_TCPBACKLOGDROP,
+  LINUX_MIB_PFMEMALLOCDROP,
+  LINUX_MIB_TCPMINTTLDROP,
+  LINUX_MIB_TCPDEFERACCEPTDROP,
+  LINUX_MIB_IPRPFILTER,
+  LINUX_MIB_TCPTIMEWAITOVERFLOW,
+  LINUX_MIB_TCPREQQFULLDOCOOKIES,
+  LINUX_MIB_TCPREQQFULLDROP,
+  LINUX_MIB_TCPRETRANSFAIL,
+  LINUX_MIB_TCPRCVCOALESCE,
+  LINUX_MIB_TCPBACKLOGCOALESCE,
+  LINUX_MIB_TCPOFOQUEUE,
+  LINUX_MIB_TCPOFODROP,
+  LINUX_MIB_TCPOFOMERGE,
+  LINUX_MIB_TCPCHALLENGEACK,
+  LINUX_MIB_TCPSYNCHALLENGE,
+  LINUX_MIB_TCPFASTOPENACTIVE,
+  LINUX_MIB_TCPFASTOPENACTIVEFAIL,
+  LINUX_MIB_TCPFASTOPENPASSIVE,
+  LINUX_MIB_TCPFASTOPENPASSIVEFAIL,
+  LINUX_MIB_TCPFASTOPENLISTENOVERFLOW,
+  LINUX_MIB_TCPFASTOPENCOOKIEREQD,
+  LINUX_MIB_TCPFASTOPENBLACKHOLE,
+  LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES,
+  LINUX_MIB_BUSYPOLLRXPACKETS,
+  LINUX_MIB_TCPAUTOCORKING,
+  LINUX_MIB_TCPFROMZEROWINDOWADV,
+  LINUX_MIB_TCPTOZEROWINDOWADV,
+  LINUX_MIB_TCPWANTZEROWINDOWADV,
+  LINUX_MIB_TCPSYNRETRANS,
+  LINUX_MIB_TCPORIGDATASENT,
+  LINUX_MIB_TCPHYSTARTTRAINDETECT,
+  LINUX_MIB_TCPHYSTARTTRAINCWND,
+  LINUX_MIB_TCPHYSTARTDELAYDETECT,
+  LINUX_MIB_TCPHYSTARTDELAYCWND,
+  LINUX_MIB_TCPACKSKIPPEDSYNRECV,
+  LINUX_MIB_TCPACKSKIPPEDPAWS,
+  LINUX_MIB_TCPACKSKIPPEDSEQ,
+  LINUX_MIB_TCPACKSKIPPEDFINWAIT2,
+  LINUX_MIB_TCPACKSKIPPEDTIMEWAIT,
+  LINUX_MIB_TCPACKSKIPPEDCHALLENGE,
+  LINUX_MIB_TCPWINPROBE,
+  LINUX_MIB_TCPKEEPALIVE,
+  LINUX_MIB_TCPMTUPFAIL,
+  LINUX_MIB_TCPMTUPSUCCESS,
+  LINUX_MIB_TCPDELIVERED,
+  LINUX_MIB_TCPDELIVEREDCE,
+  LINUX_MIB_TCPACKCOMPRESSED,
+  LINUX_MIB_TCPZEROWINDOWDROP,
+  LINUX_MIB_TCPRCVQDROP,
+  LINUX_MIB_TCPWQUEUETOOBIG,
+  LINUX_MIB_TCPFASTOPENPASSIVEALTKEY,
+  LINUX_MIB_TCPTIMEOUTREHASH,
+  LINUX_MIB_TCPDUPLICATEDATAREHASH,
+  LINUX_MIB_TCPDSACKRECVSEGS,
+  LINUX_MIB_TCPDSACKIGNOREDDUBIOUS,
+  LINUX_MIB_TCPMIGRATEREQSUCCESS,
+  LINUX_MIB_TCPMIGRATEREQFAILURE,
+  __LINUX_MIB_MAX
+};
+enum {
+  LINUX_MIB_XFRMNUM = 0,
+  LINUX_MIB_XFRMINERROR,
+  LINUX_MIB_XFRMINBUFFERERROR,
+  LINUX_MIB_XFRMINHDRERROR,
+  LINUX_MIB_XFRMINNOSTATES,
+  LINUX_MIB_XFRMINSTATEPROTOERROR,
+  LINUX_MIB_XFRMINSTATEMODEERROR,
+  LINUX_MIB_XFRMINSTATESEQERROR,
+  LINUX_MIB_XFRMINSTATEEXPIRED,
+  LINUX_MIB_XFRMINSTATEMISMATCH,
+  LINUX_MIB_XFRMINSTATEINVALID,
+  LINUX_MIB_XFRMINTMPLMISMATCH,
+  LINUX_MIB_XFRMINNOPOLS,
+  LINUX_MIB_XFRMINPOLBLOCK,
+  LINUX_MIB_XFRMINPOLERROR,
+  LINUX_MIB_XFRMOUTERROR,
+  LINUX_MIB_XFRMOUTBUNDLEGENERROR,
+  LINUX_MIB_XFRMOUTBUNDLECHECKERROR,
+  LINUX_MIB_XFRMOUTNOSTATES,
+  LINUX_MIB_XFRMOUTSTATEPROTOERROR,
+  LINUX_MIB_XFRMOUTSTATEMODEERROR,
+  LINUX_MIB_XFRMOUTSTATESEQERROR,
+  LINUX_MIB_XFRMOUTSTATEEXPIRED,
+  LINUX_MIB_XFRMOUTPOLBLOCK,
+  LINUX_MIB_XFRMOUTPOLDEAD,
+  LINUX_MIB_XFRMOUTPOLERROR,
+  LINUX_MIB_XFRMFWDHDRERROR,
+  LINUX_MIB_XFRMOUTSTATEINVALID,
+  LINUX_MIB_XFRMACQUIREERROR,
+  __LINUX_MIB_XFRMMAX
+};
+enum {
+  LINUX_MIB_TLSNUM = 0,
+  LINUX_MIB_TLSCURRTXSW,
+  LINUX_MIB_TLSCURRRXSW,
+  LINUX_MIB_TLSCURRTXDEVICE,
+  LINUX_MIB_TLSCURRRXDEVICE,
+  LINUX_MIB_TLSTXSW,
+  LINUX_MIB_TLSRXSW,
+  LINUX_MIB_TLSTXDEVICE,
+  LINUX_MIB_TLSRXDEVICE,
+  LINUX_MIB_TLSDECRYPTERROR,
+  LINUX_MIB_TLSRXDEVICERESYNC,
+  __LINUX_MIB_TLSMAX
+};
+#endif
diff --git a/i686-linux-musl/include/linux/sock_diag.h b/i686-linux-musl/include/linux/sock_diag.h
new file mode 100644
index 0000000..a4e40d9
--- /dev/null
+++ b/i686-linux-musl/include/linux/sock_diag.h
@@ -0,0 +1,69 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__SOCK_DIAG_H__
+#define _UAPI__SOCK_DIAG_H__
+#include <linux/types.h>
+#define SOCK_DIAG_BY_FAMILY 20
+#define SOCK_DESTROY 21
+struct sock_diag_req {
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
+};
+enum {
+  SK_MEMINFO_RMEM_ALLOC,
+  SK_MEMINFO_RCVBUF,
+  SK_MEMINFO_WMEM_ALLOC,
+  SK_MEMINFO_SNDBUF,
+  SK_MEMINFO_FWD_ALLOC,
+  SK_MEMINFO_WMEM_QUEUED,
+  SK_MEMINFO_OPTMEM,
+  SK_MEMINFO_BACKLOG,
+  SK_MEMINFO_DROPS,
+  SK_MEMINFO_VARS,
+};
+enum sknetlink_groups {
+  SKNLGRP_NONE,
+  SKNLGRP_INET_TCP_DESTROY,
+  SKNLGRP_INET_UDP_DESTROY,
+  SKNLGRP_INET6_TCP_DESTROY,
+  SKNLGRP_INET6_UDP_DESTROY,
+  __SKNLGRP_MAX,
+};
+#define SKNLGRP_MAX (__SKNLGRP_MAX - 1)
+enum {
+  SK_DIAG_BPF_STORAGE_REQ_NONE,
+  SK_DIAG_BPF_STORAGE_REQ_MAP_FD,
+  __SK_DIAG_BPF_STORAGE_REQ_MAX,
+};
+#define SK_DIAG_BPF_STORAGE_REQ_MAX (__SK_DIAG_BPF_STORAGE_REQ_MAX - 1)
+enum {
+  SK_DIAG_BPF_STORAGE_REP_NONE,
+  SK_DIAG_BPF_STORAGE,
+  __SK_DIAG_BPF_STORAGE_REP_MAX,
+};
+#define SK_DIAB_BPF_STORAGE_REP_MAX (__SK_DIAG_BPF_STORAGE_REP_MAX - 1)
+enum {
+  SK_DIAG_BPF_STORAGE_NONE,
+  SK_DIAG_BPF_STORAGE_PAD,
+  SK_DIAG_BPF_STORAGE_MAP_ID,
+  SK_DIAG_BPF_STORAGE_MAP_VALUE,
+  __SK_DIAG_BPF_STORAGE_MAX,
+};
+#define SK_DIAG_BPF_STORAGE_MAX (__SK_DIAG_BPF_STORAGE_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/socket.h b/i686-linux-musl/include/linux/socket.h
new file mode 100644
index 0000000..be16548
--- /dev/null
+++ b/i686-linux-musl/include/linux/socket.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SOCKET_H
+#define _UAPI_LINUX_SOCKET_H
+#define _K_SS_MAXSIZE 128
+typedef unsigned short __kernel_sa_family_t;
+struct __kernel_sockaddr_storage {
+  union {
+    struct {
+      __kernel_sa_family_t ss_family;
+      char __data[_K_SS_MAXSIZE - sizeof(unsigned short)];
+    };
+    void * __align;
+  };
+};
+#define SOCK_SNDBUF_LOCK 1
+#define SOCK_RCVBUF_LOCK 2
+#define SOCK_BUF_LOCK_MASK (SOCK_SNDBUF_LOCK | SOCK_RCVBUF_LOCK)
+#endif
diff --git a/i686-linux-musl/include/linux/sockios.h b/i686-linux-musl/include/linux/sockios.h
new file mode 100644
index 0000000..2d13d93
--- /dev/null
+++ b/i686-linux-musl/include/linux/sockios.h
@@ -0,0 +1,110 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_SOCKIOS_H
+#define _LINUX_SOCKIOS_H
+#include <asm/bitsperlong.h>
+#include <asm/sockios.h>
+#define SIOCINQ FIONREAD
+#define SIOCOUTQ TIOCOUTQ
+#define SOCK_IOC_TYPE 0x89
+#define SIOCGSTAMP_NEW _IOR(SOCK_IOC_TYPE, 0x06, long long[2])
+#define SIOCGSTAMPNS_NEW _IOR(SOCK_IOC_TYPE, 0x07, long long[2])
+#if __BITS_PER_LONG == 64 || defined(__x86_64__) && defined(__ILP32__)
+#define SIOCGSTAMP SIOCGSTAMP_OLD
+#define SIOCGSTAMPNS SIOCGSTAMPNS_OLD
+#else
+#define SIOCGSTAMP ((sizeof(struct timeval)) == 8 ? SIOCGSTAMP_OLD : SIOCGSTAMP_NEW)
+#define SIOCGSTAMPNS ((sizeof(struct timespec)) == 8 ? SIOCGSTAMPNS_OLD : SIOCGSTAMPNS_NEW)
+#endif
+#define SIOCADDRT 0x890B
+#define SIOCDELRT 0x890C
+#define SIOCRTMSG 0x890D
+#define SIOCGIFNAME 0x8910
+#define SIOCSIFLINK 0x8911
+#define SIOCGIFCONF 0x8912
+#define SIOCGIFFLAGS 0x8913
+#define SIOCSIFFLAGS 0x8914
+#define SIOCGIFADDR 0x8915
+#define SIOCSIFADDR 0x8916
+#define SIOCGIFDSTADDR 0x8917
+#define SIOCSIFDSTADDR 0x8918
+#define SIOCGIFBRDADDR 0x8919
+#define SIOCSIFBRDADDR 0x891a
+#define SIOCGIFNETMASK 0x891b
+#define SIOCSIFNETMASK 0x891c
+#define SIOCGIFMETRIC 0x891d
+#define SIOCSIFMETRIC 0x891e
+#define SIOCGIFMEM 0x891f
+#define SIOCSIFMEM 0x8920
+#define SIOCGIFMTU 0x8921
+#define SIOCSIFMTU 0x8922
+#define SIOCSIFNAME 0x8923
+#define SIOCSIFHWADDR 0x8924
+#define SIOCGIFENCAP 0x8925
+#define SIOCSIFENCAP 0x8926
+#define SIOCGIFHWADDR 0x8927
+#define SIOCGIFSLAVE 0x8929
+#define SIOCSIFSLAVE 0x8930
+#define SIOCADDMULTI 0x8931
+#define SIOCDELMULTI 0x8932
+#define SIOCGIFINDEX 0x8933
+#define SIOGIFINDEX SIOCGIFINDEX
+#define SIOCSIFPFLAGS 0x8934
+#define SIOCGIFPFLAGS 0x8935
+#define SIOCDIFADDR 0x8936
+#define SIOCSIFHWBROADCAST 0x8937
+#define SIOCGIFCOUNT 0x8938
+#define SIOCGIFBR 0x8940
+#define SIOCSIFBR 0x8941
+#define SIOCGIFTXQLEN 0x8942
+#define SIOCSIFTXQLEN 0x8943
+#define SIOCETHTOOL 0x8946
+#define SIOCGMIIPHY 0x8947
+#define SIOCGMIIREG 0x8948
+#define SIOCSMIIREG 0x8949
+#define SIOCWANDEV 0x894A
+#define SIOCOUTQNSD 0x894B
+#define SIOCGSKNS 0x894C
+#define SIOCDARP 0x8953
+#define SIOCGARP 0x8954
+#define SIOCSARP 0x8955
+#define SIOCDRARP 0x8960
+#define SIOCGRARP 0x8961
+#define SIOCSRARP 0x8962
+#define SIOCGIFMAP 0x8970
+#define SIOCSIFMAP 0x8971
+#define SIOCADDDLCI 0x8980
+#define SIOCDELDLCI 0x8981
+#define SIOCGIFVLAN 0x8982
+#define SIOCSIFVLAN 0x8983
+#define SIOCBONDENSLAVE 0x8990
+#define SIOCBONDRELEASE 0x8991
+#define SIOCBONDSETHWADDR 0x8992
+#define SIOCBONDSLAVEINFOQUERY 0x8993
+#define SIOCBONDINFOQUERY 0x8994
+#define SIOCBONDCHANGEACTIVE 0x8995
+#define SIOCBRADDBR 0x89a0
+#define SIOCBRDELBR 0x89a1
+#define SIOCBRADDIF 0x89a2
+#define SIOCBRDELIF 0x89a3
+#define SIOCSHWTSTAMP 0x89b0
+#define SIOCGHWTSTAMP 0x89b1
+#define SIOCDEVPRIVATE 0x89F0
+#define SIOCPROTOPRIVATE 0x89E0
+#endif
diff --git a/i686-linux-musl/include/linux/sonet.h b/i686-linux-musl/include/linux/sonet.h
new file mode 100644
index 0000000..ca10ec2
--- /dev/null
+++ b/i686-linux-musl/include/linux/sonet.h
@@ -0,0 +1,46 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPILINUX_SONET_H
+#define _UAPILINUX_SONET_H
+#define __SONET_ITEMS __HANDLE_ITEM(section_bip); __HANDLE_ITEM(line_bip); __HANDLE_ITEM(path_bip); __HANDLE_ITEM(line_febe); __HANDLE_ITEM(path_febe); __HANDLE_ITEM(corr_hcs); __HANDLE_ITEM(uncorr_hcs); __HANDLE_ITEM(tx_cells); __HANDLE_ITEM(rx_cells);
+struct sonet_stats {
+#define __HANDLE_ITEM(i) int i
+  __SONET_ITEMS
+#undef __HANDLE_ITEM
+} __attribute__((packed));
+#define SONET_GETSTAT _IOR('a', ATMIOC_PHYTYP, struct sonet_stats)
+#define SONET_GETSTATZ _IOR('a', ATMIOC_PHYTYP + 1, struct sonet_stats)
+#define SONET_SETDIAG _IOWR('a', ATMIOC_PHYTYP + 2, int)
+#define SONET_CLRDIAG _IOWR('a', ATMIOC_PHYTYP + 3, int)
+#define SONET_GETDIAG _IOR('a', ATMIOC_PHYTYP + 4, int)
+#define SONET_SETFRAMING _IOW('a', ATMIOC_PHYTYP + 5, int)
+#define SONET_GETFRAMING _IOR('a', ATMIOC_PHYTYP + 6, int)
+#define SONET_GETFRSENSE _IOR('a', ATMIOC_PHYTYP + 7, unsigned char[SONET_FRSENSE_SIZE])
+#define SONET_INS_SBIP 1
+#define SONET_INS_LBIP 2
+#define SONET_INS_PBIP 4
+#define SONET_INS_FRAME 8
+#define SONET_INS_LOS 16
+#define SONET_INS_LAIS 32
+#define SONET_INS_PAIS 64
+#define SONET_INS_HCS 128
+#define SONET_FRAME_SONET 0
+#define SONET_FRAME_SDH 1
+#define SONET_FRSENSE_SIZE 6
+#endif
diff --git a/i686-linux-musl/include/linux/sonypi.h b/i686-linux-musl/include/linux/sonypi.h
new file mode 100644
index 0000000..84befde
--- /dev/null
+++ b/i686-linux-musl/include/linux/sonypi.h
@@ -0,0 +1,111 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_SONYPI_H_
+#define _UAPI_SONYPI_H_
+#include <linux/types.h>
+#define SONYPI_EVENT_IGNORE 0
+#define SONYPI_EVENT_JOGDIAL_DOWN 1
+#define SONYPI_EVENT_JOGDIAL_UP 2
+#define SONYPI_EVENT_JOGDIAL_DOWN_PRESSED 3
+#define SONYPI_EVENT_JOGDIAL_UP_PRESSED 4
+#define SONYPI_EVENT_JOGDIAL_PRESSED 5
+#define SONYPI_EVENT_JOGDIAL_RELEASED 6
+#define SONYPI_EVENT_CAPTURE_PRESSED 7
+#define SONYPI_EVENT_CAPTURE_RELEASED 8
+#define SONYPI_EVENT_CAPTURE_PARTIALPRESSED 9
+#define SONYPI_EVENT_CAPTURE_PARTIALRELEASED 10
+#define SONYPI_EVENT_FNKEY_ESC 11
+#define SONYPI_EVENT_FNKEY_F1 12
+#define SONYPI_EVENT_FNKEY_F2 13
+#define SONYPI_EVENT_FNKEY_F3 14
+#define SONYPI_EVENT_FNKEY_F4 15
+#define SONYPI_EVENT_FNKEY_F5 16
+#define SONYPI_EVENT_FNKEY_F6 17
+#define SONYPI_EVENT_FNKEY_F7 18
+#define SONYPI_EVENT_FNKEY_F8 19
+#define SONYPI_EVENT_FNKEY_F9 20
+#define SONYPI_EVENT_FNKEY_F10 21
+#define SONYPI_EVENT_FNKEY_F11 22
+#define SONYPI_EVENT_FNKEY_F12 23
+#define SONYPI_EVENT_FNKEY_1 24
+#define SONYPI_EVENT_FNKEY_2 25
+#define SONYPI_EVENT_FNKEY_D 26
+#define SONYPI_EVENT_FNKEY_E 27
+#define SONYPI_EVENT_FNKEY_F 28
+#define SONYPI_EVENT_FNKEY_S 29
+#define SONYPI_EVENT_FNKEY_B 30
+#define SONYPI_EVENT_BLUETOOTH_PRESSED 31
+#define SONYPI_EVENT_PKEY_P1 32
+#define SONYPI_EVENT_PKEY_P2 33
+#define SONYPI_EVENT_PKEY_P3 34
+#define SONYPI_EVENT_BACK_PRESSED 35
+#define SONYPI_EVENT_LID_CLOSED 36
+#define SONYPI_EVENT_LID_OPENED 37
+#define SONYPI_EVENT_BLUETOOTH_ON 38
+#define SONYPI_EVENT_BLUETOOTH_OFF 39
+#define SONYPI_EVENT_HELP_PRESSED 40
+#define SONYPI_EVENT_FNKEY_ONLY 41
+#define SONYPI_EVENT_JOGDIAL_FAST_DOWN 42
+#define SONYPI_EVENT_JOGDIAL_FAST_UP 43
+#define SONYPI_EVENT_JOGDIAL_FAST_DOWN_PRESSED 44
+#define SONYPI_EVENT_JOGDIAL_FAST_UP_PRESSED 45
+#define SONYPI_EVENT_JOGDIAL_VFAST_DOWN 46
+#define SONYPI_EVENT_JOGDIAL_VFAST_UP 47
+#define SONYPI_EVENT_JOGDIAL_VFAST_DOWN_PRESSED 48
+#define SONYPI_EVENT_JOGDIAL_VFAST_UP_PRESSED 49
+#define SONYPI_EVENT_ZOOM_PRESSED 50
+#define SONYPI_EVENT_THUMBPHRASE_PRESSED 51
+#define SONYPI_EVENT_MEYE_FACE 52
+#define SONYPI_EVENT_MEYE_OPPOSITE 53
+#define SONYPI_EVENT_MEMORYSTICK_INSERT 54
+#define SONYPI_EVENT_MEMORYSTICK_EJECT 55
+#define SONYPI_EVENT_ANYBUTTON_RELEASED 56
+#define SONYPI_EVENT_BATTERY_INSERT 57
+#define SONYPI_EVENT_BATTERY_REMOVE 58
+#define SONYPI_EVENT_FNKEY_RELEASED 59
+#define SONYPI_EVENT_WIRELESS_ON 60
+#define SONYPI_EVENT_WIRELESS_OFF 61
+#define SONYPI_EVENT_ZOOM_IN_PRESSED 62
+#define SONYPI_EVENT_ZOOM_OUT_PRESSED 63
+#define SONYPI_EVENT_CD_EJECT_PRESSED 64
+#define SONYPI_EVENT_MODEKEY_PRESSED 65
+#define SONYPI_EVENT_PKEY_P4 66
+#define SONYPI_EVENT_PKEY_P5 67
+#define SONYPI_EVENT_SETTINGKEY_PRESSED 68
+#define SONYPI_EVENT_VOLUME_INC_PRESSED 69
+#define SONYPI_EVENT_VOLUME_DEC_PRESSED 70
+#define SONYPI_EVENT_BRIGHTNESS_PRESSED 71
+#define SONYPI_EVENT_MEDIA_PRESSED 72
+#define SONYPI_EVENT_VENDOR_PRESSED 73
+#define SONYPI_IOCGBRT _IOR('v', 0, __u8)
+#define SONYPI_IOCSBRT _IOW('v', 0, __u8)
+#define SONYPI_IOCGBAT1CAP _IOR('v', 2, __u16)
+#define SONYPI_IOCGBAT1REM _IOR('v', 3, __u16)
+#define SONYPI_IOCGBAT2CAP _IOR('v', 4, __u16)
+#define SONYPI_IOCGBAT2REM _IOR('v', 5, __u16)
+#define SONYPI_BFLAGS_B1 0x01
+#define SONYPI_BFLAGS_B2 0x02
+#define SONYPI_BFLAGS_AC 0x04
+#define SONYPI_IOCGBATFLAGS _IOR('v', 7, __u8)
+#define SONYPI_IOCGBLUE _IOR('v', 8, __u8)
+#define SONYPI_IOCSBLUE _IOW('v', 9, __u8)
+#define SONYPI_IOCGFAN _IOR('v', 10, __u8)
+#define SONYPI_IOCSFAN _IOW('v', 11, __u8)
+#define SONYPI_IOCGTEMP _IOR('v', 12, __u8)
+#endif
diff --git a/i686-linux-musl/include/linux/sound.h b/i686-linux-musl/include/linux/sound.h
new file mode 100644
index 0000000..c303564
--- /dev/null
+++ b/i686-linux-musl/include/linux/sound.h
@@ -0,0 +1,37 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SOUND_H
+#define _UAPI_LINUX_SOUND_H
+#include <linux/fs.h>
+#define SND_DEV_CTL 0
+#define SND_DEV_SEQ 1
+#define SND_DEV_MIDIN 2
+#define SND_DEV_DSP 3
+#define SND_DEV_AUDIO 4
+#define SND_DEV_DSP16 5
+#define SND_DEV_UNUSED 6
+#define SND_DEV_AWFM 7
+#define SND_DEV_SEQ2 8
+#define SND_DEV_SYNTH 9
+#define SND_DEV_DMFM 10
+#define SND_DEV_UNKNOWN11 11
+#define SND_DEV_ADSP 12
+#define SND_DEV_AMIDI 13
+#define SND_DEV_ADMMIDI 14
+#endif
diff --git a/i686-linux-musl/include/linux/soundcard.h b/i686-linux-musl/include/linux/soundcard.h
new file mode 100644
index 0000000..1c345bd
--- /dev/null
+++ b/i686-linux-musl/include/linux/soundcard.h
@@ -0,0 +1,677 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPISOUNDCARD_H
+#define _UAPISOUNDCARD_H
+#define SOUND_VERSION 0x030802
+#define OPEN_SOUND_SYSTEM
+#include <linux/ioctl.h>
+#include <endian.h>
+#define SNDCARD_ADLIB 1
+#define SNDCARD_SB 2
+#define SNDCARD_PAS 3
+#define SNDCARD_GUS 4
+#define SNDCARD_MPU401 5
+#define SNDCARD_SB16 6
+#define SNDCARD_SB16MIDI 7
+#define SNDCARD_UART6850 8
+#define SNDCARD_GUS16 9
+#define SNDCARD_MSS 10
+#define SNDCARD_PSS 11
+#define SNDCARD_SSCAPE 12
+#define SNDCARD_PSS_MPU 13
+#define SNDCARD_PSS_MSS 14
+#define SNDCARD_SSCAPE_MSS 15
+#define SNDCARD_TRXPRO 16
+#define SNDCARD_TRXPRO_SB 17
+#define SNDCARD_TRXPRO_MPU 18
+#define SNDCARD_MAD16 19
+#define SNDCARD_MAD16_MPU 20
+#define SNDCARD_CS4232 21
+#define SNDCARD_CS4232_MPU 22
+#define SNDCARD_MAUI 23
+#define SNDCARD_PSEUDO_MSS 24
+#define SNDCARD_GUSPNP 25
+#define SNDCARD_UART401 26
+#ifndef _SIOWR
+#if defined(_IOWR) && (defined(_AIX) || !defined(sun) && !defined(sparc) && !defined(__sparc__) && !defined(__INCioctlh) && !defined(__Lynx__))
+#define SIOCPARM_MASK IOCPARM_MASK
+#define SIOC_VOID IOC_VOID
+#define SIOC_OUT IOC_OUT
+#define SIOC_IN IOC_IN
+#define SIOC_INOUT IOC_INOUT
+#define _SIOC_SIZE _IOC_SIZE
+#define _SIOC_DIR _IOC_DIR
+#define _SIOC_NONE _IOC_NONE
+#define _SIOC_READ _IOC_READ
+#define _SIOC_WRITE _IOC_WRITE
+#define _SIO _IO
+#define _SIOR _IOR
+#define _SIOW _IOW
+#define _SIOWR _IOWR
+#else
+#define SIOCPARM_MASK 0x1fff
+#define SIOC_VOID 0x00000000
+#define SIOC_OUT 0x20000000
+#define SIOC_IN 0x40000000
+#define SIOC_INOUT (SIOC_IN | SIOC_OUT)
+#define _SIO(x,y) ((int) (SIOC_VOID | (x << 8) | y))
+#define _SIOR(x,y,t) ((int) (SIOC_OUT | ((sizeof(t) & SIOCPARM_MASK) << 16) | (x << 8) | y))
+#define _SIOW(x,y,t) ((int) (SIOC_IN | ((sizeof(t) & SIOCPARM_MASK) << 16) | (x << 8) | y))
+#define _SIOWR(x,y,t) ((int) (SIOC_INOUT | ((sizeof(t) & SIOCPARM_MASK) << 16) | (x << 8) | y))
+#define _SIOC_SIZE(x) ((x >> 16) & SIOCPARM_MASK)
+#define _SIOC_DIR(x) (x & 0xf0000000)
+#define _SIOC_NONE SIOC_VOID
+#define _SIOC_READ SIOC_OUT
+#define _SIOC_WRITE SIOC_IN
+#endif
+#endif
+#define SNDCTL_SEQ_RESET _SIO('Q', 0)
+#define SNDCTL_SEQ_SYNC _SIO('Q', 1)
+#define SNDCTL_SYNTH_INFO _SIOWR('Q', 2, struct synth_info)
+#define SNDCTL_SEQ_CTRLRATE _SIOWR('Q', 3, int)
+#define SNDCTL_SEQ_GETOUTCOUNT _SIOR('Q', 4, int)
+#define SNDCTL_SEQ_GETINCOUNT _SIOR('Q', 5, int)
+#define SNDCTL_SEQ_PERCMODE _SIOW('Q', 6, int)
+#define SNDCTL_FM_LOAD_INSTR _SIOW('Q', 7, struct sbi_instrument)
+#define SNDCTL_SEQ_TESTMIDI _SIOW('Q', 8, int)
+#define SNDCTL_SEQ_RESETSAMPLES _SIOW('Q', 9, int)
+#define SNDCTL_SEQ_NRSYNTHS _SIOR('Q', 10, int)
+#define SNDCTL_SEQ_NRMIDIS _SIOR('Q', 11, int)
+#define SNDCTL_MIDI_INFO _SIOWR('Q', 12, struct midi_info)
+#define SNDCTL_SEQ_THRESHOLD _SIOW('Q', 13, int)
+#define SNDCTL_SYNTH_MEMAVL _SIOWR('Q', 14, int)
+#define SNDCTL_FM_4OP_ENABLE _SIOW('Q', 15, int)
+#define SNDCTL_SEQ_PANIC _SIO('Q', 17)
+#define SNDCTL_SEQ_OUTOFBAND _SIOW('Q', 18, struct seq_event_rec)
+#define SNDCTL_SEQ_GETTIME _SIOR('Q', 19, int)
+#define SNDCTL_SYNTH_ID _SIOWR('Q', 20, struct synth_info)
+#define SNDCTL_SYNTH_CONTROL _SIOWR('Q', 21, struct synth_control)
+#define SNDCTL_SYNTH_REMOVESAMPLE _SIOWR('Q', 22, struct remove_sample)
+typedef struct synth_control {
+  int devno;
+  char data[4000];
+} synth_control;
+typedef struct remove_sample {
+  int devno;
+  int bankno;
+  int instrno;
+} remove_sample;
+typedef struct seq_event_rec {
+  unsigned char arr[8];
+} seq_event_rec;
+#define SNDCTL_TMR_TIMEBASE _SIOWR('T', 1, int)
+#define SNDCTL_TMR_START _SIO('T', 2)
+#define SNDCTL_TMR_STOP _SIO('T', 3)
+#define SNDCTL_TMR_CONTINUE _SIO('T', 4)
+#define SNDCTL_TMR_TEMPO _SIOWR('T', 5, int)
+#define SNDCTL_TMR_SOURCE _SIOWR('T', 6, int)
+#define TMR_INTERNAL 0x00000001
+#define TMR_EXTERNAL 0x00000002
+#define TMR_MODE_MIDI 0x00000010
+#define TMR_MODE_FSK 0x00000020
+#define TMR_MODE_CLS 0x00000040
+#define TMR_MODE_SMPTE 0x00000080
+#define SNDCTL_TMR_METRONOME _SIOW('T', 7, int)
+#define SNDCTL_TMR_SELECT _SIOW('T', 8, int)
+#define _LINUX_PATCHKEY_H_INDIRECT
+#include <linux/patchkey.h>
+#undef _LINUX_PATCHKEY_H_INDIRECT
+#ifdef __BYTE_ORDER
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define AFMT_S16_NE AFMT_S16_BE
+#elif __BYTE_ORDER==__LITTLE_ENDIAN
+#define AFMT_S16_NE AFMT_S16_LE
+#else
+#error "could not determine byte order"
+#endif
+#endif
+struct patch_info {
+  unsigned short key;
+#define WAVE_PATCH _PATCHKEY(0x04)
+#define GUS_PATCH WAVE_PATCH
+#define WAVEFRONT_PATCH _PATCHKEY(0x06)
+  short device_no;
+  short instr_no;
+  unsigned int mode;
+#define WAVE_16_BITS 0x01
+#define WAVE_UNSIGNED 0x02
+#define WAVE_LOOPING 0x04
+#define WAVE_BIDIR_LOOP 0x08
+#define WAVE_LOOP_BACK 0x10
+#define WAVE_SUSTAIN_ON 0x20
+#define WAVE_ENVELOPES 0x40
+#define WAVE_FAST_RELEASE 0x80
+#define WAVE_VIBRATO 0x00010000
+#define WAVE_TREMOLO 0x00020000
+#define WAVE_SCALE 0x00040000
+#define WAVE_FRACTIONS 0x00080000
+#define WAVE_ROM 0x40000000
+#define WAVE_MULAW 0x20000000
+  int len;
+  int loop_start, loop_end;
+  unsigned int base_freq;
+  unsigned int base_note;
+  unsigned int high_note;
+  unsigned int low_note;
+  int panning;
+  int detuning;
+  unsigned char env_rate[6];
+  unsigned char env_offset[6];
+  unsigned char tremolo_sweep;
+  unsigned char tremolo_rate;
+  unsigned char tremolo_depth;
+  unsigned char vibrato_sweep;
+  unsigned char vibrato_rate;
+  unsigned char vibrato_depth;
+  int scale_frequency;
+  unsigned int scale_factor;
+  int volume;
+  int fractions;
+  int reserved1;
+  int spare[2];
+  char data[1];
+};
+struct sysex_info {
+  short key;
+#define SYSEX_PATCH _PATCHKEY(0x05)
+#define MAUI_PATCH _PATCHKEY(0x06)
+  short device_no;
+  int len;
+  unsigned char data[1];
+};
+#define SEQ_NOTEOFF 0
+#define SEQ_FMNOTEOFF SEQ_NOTEOFF
+#define SEQ_NOTEON 1
+#define SEQ_FMNOTEON SEQ_NOTEON
+#define SEQ_WAIT TMR_WAIT_ABS
+#define SEQ_PGMCHANGE 3
+#define SEQ_FMPGMCHANGE SEQ_PGMCHANGE
+#define SEQ_SYNCTIMER TMR_START
+#define SEQ_MIDIPUTC 5
+#define SEQ_DRUMON 6
+#define SEQ_DRUMOFF 7
+#define SEQ_ECHO TMR_ECHO
+#define SEQ_AFTERTOUCH 9
+#define SEQ_CONTROLLER 10
+#define CTL_BANK_SELECT 0x00
+#define CTL_MODWHEEL 0x01
+#define CTL_BREATH 0x02
+#define CTL_FOOT 0x04
+#define CTL_PORTAMENTO_TIME 0x05
+#define CTL_DATA_ENTRY 0x06
+#define CTL_MAIN_VOLUME 0x07
+#define CTL_BALANCE 0x08
+#define CTL_PAN 0x0a
+#define CTL_EXPRESSION 0x0b
+#define CTL_GENERAL_PURPOSE1 0x10
+#define CTL_GENERAL_PURPOSE2 0x11
+#define CTL_GENERAL_PURPOSE3 0x12
+#define CTL_GENERAL_PURPOSE4 0x13
+#define CTL_DAMPER_PEDAL 0x40
+#define CTL_SUSTAIN 0x40
+#define CTL_HOLD 0x40
+#define CTL_PORTAMENTO 0x41
+#define CTL_SOSTENUTO 0x42
+#define CTL_SOFT_PEDAL 0x43
+#define CTL_HOLD2 0x45
+#define CTL_GENERAL_PURPOSE5 0x50
+#define CTL_GENERAL_PURPOSE6 0x51
+#define CTL_GENERAL_PURPOSE7 0x52
+#define CTL_GENERAL_PURPOSE8 0x53
+#define CTL_EXT_EFF_DEPTH 0x5b
+#define CTL_TREMOLO_DEPTH 0x5c
+#define CTL_CHORUS_DEPTH 0x5d
+#define CTL_DETUNE_DEPTH 0x5e
+#define CTL_CELESTE_DEPTH 0x5e
+#define CTL_PHASER_DEPTH 0x5f
+#define CTL_DATA_INCREMENT 0x60
+#define CTL_DATA_DECREMENT 0x61
+#define CTL_NONREG_PARM_NUM_LSB 0x62
+#define CTL_NONREG_PARM_NUM_MSB 0x63
+#define CTL_REGIST_PARM_NUM_LSB 0x64
+#define CTL_REGIST_PARM_NUM_MSB 0x65
+#define CTRL_PITCH_BENDER 255
+#define CTRL_PITCH_BENDER_RANGE 254
+#define CTRL_EXPRESSION 253
+#define CTRL_MAIN_VOLUME 252
+#define SEQ_BALANCE 11
+#define SEQ_VOLMODE 12
+#define VOL_METHOD_ADAGIO 1
+#define VOL_METHOD_LINEAR 2
+#define SEQ_FULLSIZE 0xfd
+#define SEQ_PRIVATE 0xfe
+#define SEQ_EXTENDED 0xff
+typedef unsigned char sbi_instr_data[32];
+struct sbi_instrument {
+  unsigned short key;
+#define FM_PATCH _PATCHKEY(0x01)
+#define OPL3_PATCH _PATCHKEY(0x03)
+  short device;
+  int channel;
+  sbi_instr_data operators;
+};
+struct synth_info {
+  char name[30];
+  int device;
+  int synth_type;
+#define SYNTH_TYPE_FM 0
+#define SYNTH_TYPE_SAMPLE 1
+#define SYNTH_TYPE_MIDI 2
+  int synth_subtype;
+#define FM_TYPE_ADLIB 0x00
+#define FM_TYPE_OPL3 0x01
+#define MIDI_TYPE_MPU401 0x401
+#define SAMPLE_TYPE_BASIC 0x10
+#define SAMPLE_TYPE_GUS SAMPLE_TYPE_BASIC
+#define SAMPLE_TYPE_WAVEFRONT 0x11
+  int perc_mode;
+  int nr_voices;
+  int nr_drums;
+  int instr_bank_size;
+  unsigned int capabilities;
+#define SYNTH_CAP_PERCMODE 0x00000001
+#define SYNTH_CAP_OPL3 0x00000002
+#define SYNTH_CAP_INPUT 0x00000004
+  int dummies[19];
+};
+struct sound_timer_info {
+  char name[32];
+  int caps;
+};
+#define MIDI_CAP_MPU401 1
+struct midi_info {
+  char name[30];
+  int device;
+  unsigned int capabilities;
+  int dev_type;
+  int dummies[18];
+};
+typedef struct {
+  unsigned char cmd;
+  char nr_args, nr_returns;
+  unsigned char data[30];
+} mpu_command_rec;
+#define SNDCTL_MIDI_PRETIME _SIOWR('m', 0, int)
+#define SNDCTL_MIDI_MPUMODE _SIOWR('m', 1, int)
+#define SNDCTL_MIDI_MPUCMD _SIOWR('m', 2, mpu_command_rec)
+#define SNDCTL_DSP_RESET _SIO('P', 0)
+#define SNDCTL_DSP_SYNC _SIO('P', 1)
+#define SNDCTL_DSP_SPEED _SIOWR('P', 2, int)
+#define SNDCTL_DSP_STEREO _SIOWR('P', 3, int)
+#define SNDCTL_DSP_GETBLKSIZE _SIOWR('P', 4, int)
+#define SNDCTL_DSP_SAMPLESIZE SNDCTL_DSP_SETFMT
+#define SNDCTL_DSP_CHANNELS _SIOWR('P', 6, int)
+#define SOUND_PCM_WRITE_CHANNELS SNDCTL_DSP_CHANNELS
+#define SOUND_PCM_WRITE_FILTER _SIOWR('P', 7, int)
+#define SNDCTL_DSP_POST _SIO('P', 8)
+#define SNDCTL_DSP_SUBDIVIDE _SIOWR('P', 9, int)
+#define SNDCTL_DSP_SETFRAGMENT _SIOWR('P', 10, int)
+#define SNDCTL_DSP_GETFMTS _SIOR('P', 11, int)
+#define SNDCTL_DSP_SETFMT _SIOWR('P', 5, int)
+#define AFMT_QUERY 0x00000000
+#define AFMT_MU_LAW 0x00000001
+#define AFMT_A_LAW 0x00000002
+#define AFMT_IMA_ADPCM 0x00000004
+#define AFMT_U8 0x00000008
+#define AFMT_S16_LE 0x00000010
+#define AFMT_S16_BE 0x00000020
+#define AFMT_S8 0x00000040
+#define AFMT_U16_LE 0x00000080
+#define AFMT_U16_BE 0x00000100
+#define AFMT_MPEG 0x00000200
+#define AFMT_AC3 0x00000400
+typedef struct audio_buf_info {
+  int fragments;
+  int fragstotal;
+  int fragsize;
+  int bytes;
+} audio_buf_info;
+#define SNDCTL_DSP_GETOSPACE _SIOR('P', 12, audio_buf_info)
+#define SNDCTL_DSP_GETISPACE _SIOR('P', 13, audio_buf_info)
+#define SNDCTL_DSP_NONBLOCK _SIO('P', 14)
+#define SNDCTL_DSP_GETCAPS _SIOR('P', 15, int)
+#define DSP_CAP_REVISION 0x000000ff
+#define DSP_CAP_DUPLEX 0x00000100
+#define DSP_CAP_REALTIME 0x00000200
+#define DSP_CAP_BATCH 0x00000400
+#define DSP_CAP_COPROC 0x00000800
+#define DSP_CAP_TRIGGER 0x00001000
+#define DSP_CAP_MMAP 0x00002000
+#define DSP_CAP_MULTI 0x00004000
+#define DSP_CAP_BIND 0x00008000
+#define SNDCTL_DSP_GETTRIGGER _SIOR('P', 16, int)
+#define SNDCTL_DSP_SETTRIGGER _SIOW('P', 16, int)
+#define PCM_ENABLE_INPUT 0x00000001
+#define PCM_ENABLE_OUTPUT 0x00000002
+typedef struct count_info {
+  int bytes;
+  int blocks;
+  int ptr;
+} count_info;
+#define SNDCTL_DSP_GETIPTR _SIOR('P', 17, count_info)
+#define SNDCTL_DSP_GETOPTR _SIOR('P', 18, count_info)
+typedef struct buffmem_desc {
+  unsigned * buffer;
+  int size;
+} buffmem_desc;
+#define SNDCTL_DSP_MAPINBUF _SIOR('P', 19, buffmem_desc)
+#define SNDCTL_DSP_MAPOUTBUF _SIOR('P', 20, buffmem_desc)
+#define SNDCTL_DSP_SETSYNCRO _SIO('P', 21)
+#define SNDCTL_DSP_SETDUPLEX _SIO('P', 22)
+#define SNDCTL_DSP_GETODELAY _SIOR('P', 23, int)
+#define SNDCTL_DSP_GETCHANNELMASK _SIOWR('P', 64, int)
+#define SNDCTL_DSP_BIND_CHANNEL _SIOWR('P', 65, int)
+#define DSP_BIND_QUERY 0x00000000
+#define DSP_BIND_FRONT 0x00000001
+#define DSP_BIND_SURR 0x00000002
+#define DSP_BIND_CENTER_LFE 0x00000004
+#define DSP_BIND_HANDSET 0x00000008
+#define DSP_BIND_MIC 0x00000010
+#define DSP_BIND_MODEM1 0x00000020
+#define DSP_BIND_MODEM2 0x00000040
+#define DSP_BIND_I2S 0x00000080
+#define DSP_BIND_SPDIF 0x00000100
+#define SNDCTL_DSP_SETSPDIF _SIOW('P', 66, int)
+#define SNDCTL_DSP_GETSPDIF _SIOR('P', 67, int)
+#define SPDIF_PRO 0x0001
+#define SPDIF_N_AUD 0x0002
+#define SPDIF_COPY 0x0004
+#define SPDIF_PRE 0x0008
+#define SPDIF_CC 0x07f0
+#define SPDIF_L 0x0800
+#define SPDIF_DRS 0x4000
+#define SPDIF_V 0x8000
+#define SNDCTL_DSP_PROFILE _SIOW('P', 23, int)
+#define APF_NORMAL 0
+#define APF_NETWORK 1
+#define APF_CPUINTENS 2
+#define SOUND_PCM_READ_RATE _SIOR('P', 2, int)
+#define SOUND_PCM_READ_CHANNELS _SIOR('P', 6, int)
+#define SOUND_PCM_READ_BITS _SIOR('P', 5, int)
+#define SOUND_PCM_READ_FILTER _SIOR('P', 7, int)
+#define SOUND_PCM_WRITE_BITS SNDCTL_DSP_SETFMT
+#define SOUND_PCM_WRITE_RATE SNDCTL_DSP_SPEED
+#define SOUND_PCM_POST SNDCTL_DSP_POST
+#define SOUND_PCM_RESET SNDCTL_DSP_RESET
+#define SOUND_PCM_SYNC SNDCTL_DSP_SYNC
+#define SOUND_PCM_SUBDIVIDE SNDCTL_DSP_SUBDIVIDE
+#define SOUND_PCM_SETFRAGMENT SNDCTL_DSP_SETFRAGMENT
+#define SOUND_PCM_GETFMTS SNDCTL_DSP_GETFMTS
+#define SOUND_PCM_SETFMT SNDCTL_DSP_SETFMT
+#define SOUND_PCM_GETOSPACE SNDCTL_DSP_GETOSPACE
+#define SOUND_PCM_GETISPACE SNDCTL_DSP_GETISPACE
+#define SOUND_PCM_NONBLOCK SNDCTL_DSP_NONBLOCK
+#define SOUND_PCM_GETCAPS SNDCTL_DSP_GETCAPS
+#define SOUND_PCM_GETTRIGGER SNDCTL_DSP_GETTRIGGER
+#define SOUND_PCM_SETTRIGGER SNDCTL_DSP_SETTRIGGER
+#define SOUND_PCM_SETSYNCRO SNDCTL_DSP_SETSYNCRO
+#define SOUND_PCM_GETIPTR SNDCTL_DSP_GETIPTR
+#define SOUND_PCM_GETOPTR SNDCTL_DSP_GETOPTR
+#define SOUND_PCM_MAPINBUF SNDCTL_DSP_MAPINBUF
+#define SOUND_PCM_MAPOUTBUF SNDCTL_DSP_MAPOUTBUF
+typedef struct copr_buffer {
+  int command;
+  int flags;
+#define CPF_NONE 0x0000
+#define CPF_FIRST 0x0001
+#define CPF_LAST 0x0002
+  int len;
+  int offs;
+  unsigned char data[4000];
+} copr_buffer;
+typedef struct copr_debug_buf {
+  int command;
+  int parm1;
+  int parm2;
+  int flags;
+  int len;
+} copr_debug_buf;
+typedef struct copr_msg {
+  int len;
+  unsigned char data[4000];
+} copr_msg;
+#define SNDCTL_COPR_RESET _SIO('C', 0)
+#define SNDCTL_COPR_LOAD _SIOWR('C', 1, copr_buffer)
+#define SNDCTL_COPR_RDATA _SIOWR('C', 2, copr_debug_buf)
+#define SNDCTL_COPR_RCODE _SIOWR('C', 3, copr_debug_buf)
+#define SNDCTL_COPR_WDATA _SIOW('C', 4, copr_debug_buf)
+#define SNDCTL_COPR_WCODE _SIOW('C', 5, copr_debug_buf)
+#define SNDCTL_COPR_RUN _SIOWR('C', 6, copr_debug_buf)
+#define SNDCTL_COPR_HALT _SIOWR('C', 7, copr_debug_buf)
+#define SNDCTL_COPR_SENDMSG _SIOWR('C', 8, copr_msg)
+#define SNDCTL_COPR_RCVMSG _SIOR('C', 9, copr_msg)
+#define SOUND_MIXER_NRDEVICES 25
+#define SOUND_MIXER_VOLUME 0
+#define SOUND_MIXER_BASS 1
+#define SOUND_MIXER_TREBLE 2
+#define SOUND_MIXER_SYNTH 3
+#define SOUND_MIXER_PCM 4
+#define SOUND_MIXER_SPEAKER 5
+#define SOUND_MIXER_LINE 6
+#define SOUND_MIXER_MIC 7
+#define SOUND_MIXER_CD 8
+#define SOUND_MIXER_IMIX 9
+#define SOUND_MIXER_ALTPCM 10
+#define SOUND_MIXER_RECLEV 11
+#define SOUND_MIXER_IGAIN 12
+#define SOUND_MIXER_OGAIN 13
+#define SOUND_MIXER_LINE1 14
+#define SOUND_MIXER_LINE2 15
+#define SOUND_MIXER_LINE3 16
+#define SOUND_MIXER_DIGITAL1 17
+#define SOUND_MIXER_DIGITAL2 18
+#define SOUND_MIXER_DIGITAL3 19
+#define SOUND_MIXER_PHONEIN 20
+#define SOUND_MIXER_PHONEOUT 21
+#define SOUND_MIXER_VIDEO 22
+#define SOUND_MIXER_RADIO 23
+#define SOUND_MIXER_MONITOR 24
+#define SOUND_ONOFF_MIN 28
+#define SOUND_ONOFF_MAX 30
+#define SOUND_MIXER_NONE 31
+#define SOUND_MIXER_ENHANCE SOUND_MIXER_NONE
+#define SOUND_MIXER_MUTE SOUND_MIXER_NONE
+#define SOUND_MIXER_LOUD SOUND_MIXER_NONE
+#define SOUND_DEVICE_LABELS { "Vol  ", "Bass ", "Trebl", "Synth", "Pcm  ", "Spkr ", "Line ", "Mic  ", "CD   ", "Mix  ", "Pcm2 ", "Rec  ", "IGain", "OGain", "Line1", "Line2", "Line3", "Digital1", "Digital2", "Digital3", "PhoneIn", "PhoneOut", "Video", "Radio", "Monitor" }
+#define SOUND_DEVICE_NAMES { "vol", "bass", "treble", "synth", "pcm", "speaker", "line", "mic", "cd", "mix", "pcm2", "rec", "igain", "ogain", "line1", "line2", "line3", "dig1", "dig2", "dig3", "phin", "phout", "video", "radio", "monitor" }
+#define SOUND_MIXER_RECSRC 0xff
+#define SOUND_MIXER_DEVMASK 0xfe
+#define SOUND_MIXER_RECMASK 0xfd
+#define SOUND_MIXER_CAPS 0xfc
+#define SOUND_CAP_EXCL_INPUT 0x00000001
+#define SOUND_MIXER_STEREODEVS 0xfb
+#define SOUND_MIXER_OUTSRC 0xfa
+#define SOUND_MIXER_OUTMASK 0xf9
+#define SOUND_MASK_VOLUME (1 << SOUND_MIXER_VOLUME)
+#define SOUND_MASK_BASS (1 << SOUND_MIXER_BASS)
+#define SOUND_MASK_TREBLE (1 << SOUND_MIXER_TREBLE)
+#define SOUND_MASK_SYNTH (1 << SOUND_MIXER_SYNTH)
+#define SOUND_MASK_PCM (1 << SOUND_MIXER_PCM)
+#define SOUND_MASK_SPEAKER (1 << SOUND_MIXER_SPEAKER)
+#define SOUND_MASK_LINE (1 << SOUND_MIXER_LINE)
+#define SOUND_MASK_MIC (1 << SOUND_MIXER_MIC)
+#define SOUND_MASK_CD (1 << SOUND_MIXER_CD)
+#define SOUND_MASK_IMIX (1 << SOUND_MIXER_IMIX)
+#define SOUND_MASK_ALTPCM (1 << SOUND_MIXER_ALTPCM)
+#define SOUND_MASK_RECLEV (1 << SOUND_MIXER_RECLEV)
+#define SOUND_MASK_IGAIN (1 << SOUND_MIXER_IGAIN)
+#define SOUND_MASK_OGAIN (1 << SOUND_MIXER_OGAIN)
+#define SOUND_MASK_LINE1 (1 << SOUND_MIXER_LINE1)
+#define SOUND_MASK_LINE2 (1 << SOUND_MIXER_LINE2)
+#define SOUND_MASK_LINE3 (1 << SOUND_MIXER_LINE3)
+#define SOUND_MASK_DIGITAL1 (1 << SOUND_MIXER_DIGITAL1)
+#define SOUND_MASK_DIGITAL2 (1 << SOUND_MIXER_DIGITAL2)
+#define SOUND_MASK_DIGITAL3 (1 << SOUND_MIXER_DIGITAL3)
+#define SOUND_MASK_PHONEIN (1 << SOUND_MIXER_PHONEIN)
+#define SOUND_MASK_PHONEOUT (1 << SOUND_MIXER_PHONEOUT)
+#define SOUND_MASK_RADIO (1 << SOUND_MIXER_RADIO)
+#define SOUND_MASK_VIDEO (1 << SOUND_MIXER_VIDEO)
+#define SOUND_MASK_MONITOR (1 << SOUND_MIXER_MONITOR)
+#define SOUND_MASK_MUTE (1 << SOUND_MIXER_MUTE)
+#define SOUND_MASK_ENHANCE (1 << SOUND_MIXER_ENHANCE)
+#define SOUND_MASK_LOUD (1 << SOUND_MIXER_LOUD)
+#define MIXER_READ(dev) _SIOR('M', dev, int)
+#define SOUND_MIXER_READ_VOLUME MIXER_READ(SOUND_MIXER_VOLUME)
+#define SOUND_MIXER_READ_BASS MIXER_READ(SOUND_MIXER_BASS)
+#define SOUND_MIXER_READ_TREBLE MIXER_READ(SOUND_MIXER_TREBLE)
+#define SOUND_MIXER_READ_SYNTH MIXER_READ(SOUND_MIXER_SYNTH)
+#define SOUND_MIXER_READ_PCM MIXER_READ(SOUND_MIXER_PCM)
+#define SOUND_MIXER_READ_SPEAKER MIXER_READ(SOUND_MIXER_SPEAKER)
+#define SOUND_MIXER_READ_LINE MIXER_READ(SOUND_MIXER_LINE)
+#define SOUND_MIXER_READ_MIC MIXER_READ(SOUND_MIXER_MIC)
+#define SOUND_MIXER_READ_CD MIXER_READ(SOUND_MIXER_CD)
+#define SOUND_MIXER_READ_IMIX MIXER_READ(SOUND_MIXER_IMIX)
+#define SOUND_MIXER_READ_ALTPCM MIXER_READ(SOUND_MIXER_ALTPCM)
+#define SOUND_MIXER_READ_RECLEV MIXER_READ(SOUND_MIXER_RECLEV)
+#define SOUND_MIXER_READ_IGAIN MIXER_READ(SOUND_MIXER_IGAIN)
+#define SOUND_MIXER_READ_OGAIN MIXER_READ(SOUND_MIXER_OGAIN)
+#define SOUND_MIXER_READ_LINE1 MIXER_READ(SOUND_MIXER_LINE1)
+#define SOUND_MIXER_READ_LINE2 MIXER_READ(SOUND_MIXER_LINE2)
+#define SOUND_MIXER_READ_LINE3 MIXER_READ(SOUND_MIXER_LINE3)
+#define SOUND_MIXER_READ_MUTE MIXER_READ(SOUND_MIXER_MUTE)
+#define SOUND_MIXER_READ_ENHANCE MIXER_READ(SOUND_MIXER_ENHANCE)
+#define SOUND_MIXER_READ_LOUD MIXER_READ(SOUND_MIXER_LOUD)
+#define SOUND_MIXER_READ_RECSRC MIXER_READ(SOUND_MIXER_RECSRC)
+#define SOUND_MIXER_READ_DEVMASK MIXER_READ(SOUND_MIXER_DEVMASK)
+#define SOUND_MIXER_READ_RECMASK MIXER_READ(SOUND_MIXER_RECMASK)
+#define SOUND_MIXER_READ_STEREODEVS MIXER_READ(SOUND_MIXER_STEREODEVS)
+#define SOUND_MIXER_READ_CAPS MIXER_READ(SOUND_MIXER_CAPS)
+#define MIXER_WRITE(dev) _SIOWR('M', dev, int)
+#define SOUND_MIXER_WRITE_VOLUME MIXER_WRITE(SOUND_MIXER_VOLUME)
+#define SOUND_MIXER_WRITE_BASS MIXER_WRITE(SOUND_MIXER_BASS)
+#define SOUND_MIXER_WRITE_TREBLE MIXER_WRITE(SOUND_MIXER_TREBLE)
+#define SOUND_MIXER_WRITE_SYNTH MIXER_WRITE(SOUND_MIXER_SYNTH)
+#define SOUND_MIXER_WRITE_PCM MIXER_WRITE(SOUND_MIXER_PCM)
+#define SOUND_MIXER_WRITE_SPEAKER MIXER_WRITE(SOUND_MIXER_SPEAKER)
+#define SOUND_MIXER_WRITE_LINE MIXER_WRITE(SOUND_MIXER_LINE)
+#define SOUND_MIXER_WRITE_MIC MIXER_WRITE(SOUND_MIXER_MIC)
+#define SOUND_MIXER_WRITE_CD MIXER_WRITE(SOUND_MIXER_CD)
+#define SOUND_MIXER_WRITE_IMIX MIXER_WRITE(SOUND_MIXER_IMIX)
+#define SOUND_MIXER_WRITE_ALTPCM MIXER_WRITE(SOUND_MIXER_ALTPCM)
+#define SOUND_MIXER_WRITE_RECLEV MIXER_WRITE(SOUND_MIXER_RECLEV)
+#define SOUND_MIXER_WRITE_IGAIN MIXER_WRITE(SOUND_MIXER_IGAIN)
+#define SOUND_MIXER_WRITE_OGAIN MIXER_WRITE(SOUND_MIXER_OGAIN)
+#define SOUND_MIXER_WRITE_LINE1 MIXER_WRITE(SOUND_MIXER_LINE1)
+#define SOUND_MIXER_WRITE_LINE2 MIXER_WRITE(SOUND_MIXER_LINE2)
+#define SOUND_MIXER_WRITE_LINE3 MIXER_WRITE(SOUND_MIXER_LINE3)
+#define SOUND_MIXER_WRITE_MUTE MIXER_WRITE(SOUND_MIXER_MUTE)
+#define SOUND_MIXER_WRITE_ENHANCE MIXER_WRITE(SOUND_MIXER_ENHANCE)
+#define SOUND_MIXER_WRITE_LOUD MIXER_WRITE(SOUND_MIXER_LOUD)
+#define SOUND_MIXER_WRITE_RECSRC MIXER_WRITE(SOUND_MIXER_RECSRC)
+typedef struct mixer_info {
+  char id[16];
+  char name[32];
+  int modify_counter;
+  int fillers[10];
+} mixer_info;
+typedef struct _old_mixer_info {
+  char id[16];
+  char name[32];
+} _old_mixer_info;
+#define SOUND_MIXER_INFO _SIOR('M', 101, mixer_info)
+#define SOUND_OLD_MIXER_INFO _SIOR('M', 101, _old_mixer_info)
+typedef unsigned char mixer_record[128];
+#define SOUND_MIXER_ACCESS _SIOWR('M', 102, mixer_record)
+#define SOUND_MIXER_AGC _SIOWR('M', 103, int)
+#define SOUND_MIXER_3DSE _SIOWR('M', 104, int)
+#define SOUND_MIXER_PRIVATE1 _SIOWR('M', 111, int)
+#define SOUND_MIXER_PRIVATE2 _SIOWR('M', 112, int)
+#define SOUND_MIXER_PRIVATE3 _SIOWR('M', 113, int)
+#define SOUND_MIXER_PRIVATE4 _SIOWR('M', 114, int)
+#define SOUND_MIXER_PRIVATE5 _SIOWR('M', 115, int)
+typedef struct mixer_vol_table {
+  int num;
+  char name[32];
+  int levels[32];
+} mixer_vol_table;
+#define SOUND_MIXER_GETLEVELS _SIOWR('M', 116, mixer_vol_table)
+#define SOUND_MIXER_SETLEVELS _SIOWR('M', 117, mixer_vol_table)
+#define OSS_GETVERSION _SIOR('M', 118, int)
+#define EV_SEQ_LOCAL 0x80
+#define EV_TIMING 0x81
+#define EV_CHN_COMMON 0x92
+#define EV_CHN_VOICE 0x93
+#define EV_SYSEX 0x94
+#define MIDI_NOTEOFF 0x80
+#define MIDI_NOTEON 0x90
+#define MIDI_KEY_PRESSURE 0xA0
+#define MIDI_CTL_CHANGE 0xB0
+#define MIDI_PGM_CHANGE 0xC0
+#define MIDI_CHN_PRESSURE 0xD0
+#define MIDI_PITCH_BEND 0xE0
+#define MIDI_SYSTEM_PREFIX 0xF0
+#define TMR_WAIT_REL 1
+#define TMR_WAIT_ABS 2
+#define TMR_STOP 3
+#define TMR_START 4
+#define TMR_CONTINUE 5
+#define TMR_TEMPO 6
+#define TMR_ECHO 8
+#define TMR_CLOCK 9
+#define TMR_SPP 10
+#define TMR_TIMESIG 11
+#define LOCL_STARTAUDIO 1
+#define SEQ_DECLAREBUF() SEQ_USE_EXTBUF()
+#define SEQ_PM_DEFINES int __foo_bar___
+#define SEQ_LOAD_GMINSTR(dev,instr)
+#define SEQ_LOAD_GMDRUM(dev,drum)
+#define _SEQ_EXTERN extern
+#define SEQ_USE_EXTBUF() _SEQ_EXTERN unsigned char _seqbuf[]; _SEQ_EXTERN int _seqbuflen; _SEQ_EXTERN int _seqbufptr
+#ifndef USE_SIMPLE_MACROS
+#define SEQ_DEFINEBUF(len) unsigned char _seqbuf[len]; int _seqbuflen = len; int _seqbufptr = 0
+#define _SEQ_NEEDBUF(len) if((_seqbufptr + (len)) > _seqbuflen) seqbuf_dump()
+#define _SEQ_ADVBUF(len) _seqbufptr += len
+#define SEQ_DUMPBUF seqbuf_dump
+#else
+#define _SEQ_NEEDBUF(len)
+#endif
+#define SEQ_VOLUME_MODE(dev,mode) { _SEQ_NEEDBUF(8); _seqbuf[_seqbufptr] = SEQ_EXTENDED; _seqbuf[_seqbufptr + 1] = SEQ_VOLMODE; _seqbuf[_seqbufptr + 2] = (dev); _seqbuf[_seqbufptr + 3] = (mode); _seqbuf[_seqbufptr + 4] = 0; _seqbuf[_seqbufptr + 5] = 0; _seqbuf[_seqbufptr + 6] = 0; _seqbuf[_seqbufptr + 7] = 0; _SEQ_ADVBUF(8); }
+#define _CHN_VOICE(dev,event,chn,note,parm) { _SEQ_NEEDBUF(8); _seqbuf[_seqbufptr] = EV_CHN_VOICE; _seqbuf[_seqbufptr + 1] = (dev); _seqbuf[_seqbufptr + 2] = (event); _seqbuf[_seqbufptr + 3] = (chn); _seqbuf[_seqbufptr + 4] = (note); _seqbuf[_seqbufptr + 5] = (parm); _seqbuf[_seqbufptr + 6] = (0); _seqbuf[_seqbufptr + 7] = 0; _SEQ_ADVBUF(8); }
+#define SEQ_START_NOTE(dev,chn,note,vol) _CHN_VOICE(dev, MIDI_NOTEON, chn, note, vol)
+#define SEQ_STOP_NOTE(dev,chn,note,vol) _CHN_VOICE(dev, MIDI_NOTEOFF, chn, note, vol)
+#define SEQ_KEY_PRESSURE(dev,chn,note,pressure) _CHN_VOICE(dev, MIDI_KEY_PRESSURE, chn, note, pressure)
+#define _CHN_COMMON(dev,event,chn,p1,p2,w14) { _SEQ_NEEDBUF(8); _seqbuf[_seqbufptr] = EV_CHN_COMMON; _seqbuf[_seqbufptr + 1] = (dev); _seqbuf[_seqbufptr + 2] = (event); _seqbuf[_seqbufptr + 3] = (chn); _seqbuf[_seqbufptr + 4] = (p1); _seqbuf[_seqbufptr + 5] = (p2); * (short *) & _seqbuf[_seqbufptr + 6] = (w14); _SEQ_ADVBUF(8); }
+#define SEQ_SYSEX(dev,buf,len) { int ii, ll = (len); unsigned char * bufp = buf; if(ll > 6) ll = 6; _SEQ_NEEDBUF(8); _seqbuf[_seqbufptr] = EV_SYSEX; _seqbuf[_seqbufptr + 1] = (dev); for(ii = 0; ii < ll; ii ++) _seqbuf[_seqbufptr + ii + 2] = bufp[ii]; for(ii = ll; ii < 6; ii ++) _seqbuf[_seqbufptr + ii + 2] = 0xff; _SEQ_ADVBUF(8); }
+#define SEQ_CHN_PRESSURE(dev,chn,pressure) _CHN_COMMON(dev, MIDI_CHN_PRESSURE, chn, pressure, 0, 0)
+#define SEQ_SET_PATCH SEQ_PGM_CHANGE
+#define SEQ_PGM_CHANGE(dev,chn,patch) _CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0)
+#define SEQ_CONTROL(dev,chn,controller,value) _CHN_COMMON(dev, MIDI_CTL_CHANGE, chn, controller, 0, value)
+#define SEQ_BENDER(dev,chn,value) _CHN_COMMON(dev, MIDI_PITCH_BEND, chn, 0, 0, value)
+#define SEQ_V2_X_CONTROL(dev,voice,controller,value) { _SEQ_NEEDBUF(8); _seqbuf[_seqbufptr] = SEQ_EXTENDED; _seqbuf[_seqbufptr + 1] = SEQ_CONTROLLER; _seqbuf[_seqbufptr + 2] = (dev); _seqbuf[_seqbufptr + 3] = (voice); _seqbuf[_seqbufptr + 4] = (controller); _seqbuf[_seqbufptr + 5] = ((value) & 0xff); _seqbuf[_seqbufptr + 6] = ((value >> 8) & 0xff); _seqbuf[_seqbufptr + 7] = 0; _SEQ_ADVBUF(8); }
+#define SEQ_PITCHBEND(dev,voice,value) SEQ_V2_X_CONTROL(dev, voice, CTRL_PITCH_BENDER, value)
+#define SEQ_BENDER_RANGE(dev,voice,value) SEQ_V2_X_CONTROL(dev, voice, CTRL_PITCH_BENDER_RANGE, value)
+#define SEQ_EXPRESSION(dev,voice,value) SEQ_CONTROL(dev, voice, CTL_EXPRESSION, value * 128)
+#define SEQ_MAIN_VOLUME(dev,voice,value) SEQ_CONTROL(dev, voice, CTL_MAIN_VOLUME, (value * 16383) / 100)
+#define SEQ_PANNING(dev,voice,pos) SEQ_CONTROL(dev, voice, CTL_PAN, (pos + 128) / 2)
+#define _TIMER_EVENT(ev,parm) { _SEQ_NEEDBUF(8); _seqbuf[_seqbufptr + 0] = EV_TIMING; _seqbuf[_seqbufptr + 1] = (ev); _seqbuf[_seqbufptr + 2] = 0; _seqbuf[_seqbufptr + 3] = 0; * (unsigned int *) & _seqbuf[_seqbufptr + 4] = (parm); _SEQ_ADVBUF(8); }
+#define SEQ_START_TIMER() _TIMER_EVENT(TMR_START, 0)
+#define SEQ_STOP_TIMER() _TIMER_EVENT(TMR_STOP, 0)
+#define SEQ_CONTINUE_TIMER() _TIMER_EVENT(TMR_CONTINUE, 0)
+#define SEQ_WAIT_TIME(ticks) _TIMER_EVENT(TMR_WAIT_ABS, ticks)
+#define SEQ_DELTA_TIME(ticks) _TIMER_EVENT(TMR_WAIT_REL, ticks)
+#define SEQ_ECHO_BACK(key) _TIMER_EVENT(TMR_ECHO, key)
+#define SEQ_SET_TEMPO(value) _TIMER_EVENT(TMR_TEMPO, value)
+#define SEQ_SONGPOS(pos) _TIMER_EVENT(TMR_SPP, pos)
+#define SEQ_TIME_SIGNATURE(sig) _TIMER_EVENT(TMR_TIMESIG, sig)
+#define _LOCAL_EVENT(ev,parm) { _SEQ_NEEDBUF(8); _seqbuf[_seqbufptr + 0] = EV_SEQ_LOCAL; _seqbuf[_seqbufptr + 1] = (ev); _seqbuf[_seqbufptr + 2] = 0; _seqbuf[_seqbufptr + 3] = 0; * (unsigned int *) & _seqbuf[_seqbufptr + 4] = (parm); _SEQ_ADVBUF(8); }
+#define SEQ_PLAYAUDIO(devmask) _LOCAL_EVENT(LOCL_STARTAUDIO, devmask)
+#define SEQ_MIDIOUT(device,byte) { _SEQ_NEEDBUF(4); _seqbuf[_seqbufptr] = SEQ_MIDIPUTC; _seqbuf[_seqbufptr + 1] = (byte); _seqbuf[_seqbufptr + 2] = (device); _seqbuf[_seqbufptr + 3] = 0; _SEQ_ADVBUF(4); }
+#define SEQ_WRPATCH(patchx,len) { if(_seqbufptr) SEQ_DUMPBUF(); if(write(seqfd, (char *) (patchx), len) == - 1) perror("Write patch: /dev/sequencer"); }
+#define SEQ_WRPATCH2(patchx,len) (SEQ_DUMPBUF(), write(seqfd, (char *) (patchx), len))
+#endif
diff --git a/i686-linux-musl/include/linux/spi/spi.h b/i686-linux-musl/include/linux/spi/spi.h
new file mode 100644
index 0000000..39267a2
--- /dev/null
+++ b/i686-linux-musl/include/linux/spi/spi.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_SPI_H
+#define _UAPI_SPI_H
+#include <linux/const.h>
+#define SPI_CPHA _BITUL(0)
+#define SPI_CPOL _BITUL(1)
+#define SPI_MODE_0 (0 | 0)
+#define SPI_MODE_1 (0 | SPI_CPHA)
+#define SPI_MODE_2 (SPI_CPOL | 0)
+#define SPI_MODE_3 (SPI_CPOL | SPI_CPHA)
+#define SPI_MODE_X_MASK (SPI_CPOL | SPI_CPHA)
+#define SPI_CS_HIGH _BITUL(2)
+#define SPI_LSB_FIRST _BITUL(3)
+#define SPI_3WIRE _BITUL(4)
+#define SPI_LOOP _BITUL(5)
+#define SPI_NO_CS _BITUL(6)
+#define SPI_READY _BITUL(7)
+#define SPI_TX_DUAL _BITUL(8)
+#define SPI_TX_QUAD _BITUL(9)
+#define SPI_RX_DUAL _BITUL(10)
+#define SPI_RX_QUAD _BITUL(11)
+#define SPI_CS_WORD _BITUL(12)
+#define SPI_TX_OCTAL _BITUL(13)
+#define SPI_RX_OCTAL _BITUL(14)
+#define SPI_3WIRE_HIZ _BITUL(15)
+#define SPI_MODE_USER_MASK (_BITUL(16) - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/spi/spidev.h b/i686-linux-musl/include/linux/spi/spidev.h
new file mode 100644
index 0000000..19d1d84
--- /dev/null
+++ b/i686-linux-musl/include/linux/spi/spidev.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef SPIDEV_H
+#define SPIDEV_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#include <linux/spi/spi.h>
+#define SPI_IOC_MAGIC 'k'
+struct spi_ioc_transfer {
+  __u64 tx_buf;
+  __u64 rx_buf;
+  __u32 len;
+  __u32 speed_hz;
+  __u16 delay_usecs;
+  __u8 bits_per_word;
+  __u8 cs_change;
+  __u8 tx_nbits;
+  __u8 rx_nbits;
+  __u8 word_delay_usecs;
+  __u8 pad;
+};
+#define SPI_MSGSIZE(N) ((((N) * (sizeof(struct spi_ioc_transfer))) < (1 << _IOC_SIZEBITS)) ? ((N) * (sizeof(struct spi_ioc_transfer))) : 0)
+#define SPI_IOC_MESSAGE(N) _IOW(SPI_IOC_MAGIC, 0, char[SPI_MSGSIZE(N)])
+#define SPI_IOC_RD_MODE _IOR(SPI_IOC_MAGIC, 1, __u8)
+#define SPI_IOC_WR_MODE _IOW(SPI_IOC_MAGIC, 1, __u8)
+#define SPI_IOC_RD_LSB_FIRST _IOR(SPI_IOC_MAGIC, 2, __u8)
+#define SPI_IOC_WR_LSB_FIRST _IOW(SPI_IOC_MAGIC, 2, __u8)
+#define SPI_IOC_RD_BITS_PER_WORD _IOR(SPI_IOC_MAGIC, 3, __u8)
+#define SPI_IOC_WR_BITS_PER_WORD _IOW(SPI_IOC_MAGIC, 3, __u8)
+#define SPI_IOC_RD_MAX_SPEED_HZ _IOR(SPI_IOC_MAGIC, 4, __u32)
+#define SPI_IOC_WR_MAX_SPEED_HZ _IOW(SPI_IOC_MAGIC, 4, __u32)
+#define SPI_IOC_RD_MODE32 _IOR(SPI_IOC_MAGIC, 5, __u32)
+#define SPI_IOC_WR_MODE32 _IOW(SPI_IOC_MAGIC, 5, __u32)
+#endif
diff --git a/i686-linux-musl/include/linux/stat.h b/i686-linux-musl/include/linux/stat.h
new file mode 100644
index 0000000..a15b9b5
--- /dev/null
+++ b/i686-linux-musl/include/linux/stat.h
@@ -0,0 +1,109 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_STAT_H
+#define _UAPI_LINUX_STAT_H
+#include <linux/types.h>
+#if !defined(__GLIBC__) || __GLIBC__ < 2
+#define S_IFMT 00170000
+#define S_IFSOCK 0140000
+#define S_IFLNK 0120000
+#define S_IFREG 0100000
+#define S_IFBLK 0060000
+#define S_IFDIR 0040000
+#define S_IFCHR 0020000
+#define S_IFIFO 0010000
+#define S_ISUID 0004000
+#define S_ISGID 0002000
+#define S_ISVTX 0001000
+#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
+#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
+#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
+#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
+#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
+#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
+#define S_IRWXU 00700
+#define S_IRUSR 00400
+#define S_IWUSR 00200
+#define S_IXUSR 00100
+#define S_IRWXG 00070
+#define S_IRGRP 00040
+#define S_IWGRP 00020
+#define S_IXGRP 00010
+#define S_IRWXO 00007
+#define S_IROTH 00004
+#define S_IWOTH 00002
+#define S_IXOTH 00001
+#endif
+struct statx_timestamp {
+  __s64 tv_sec;
+  __u32 tv_nsec;
+  __s32 __reserved;
+};
+struct statx {
+  __u32 stx_mask;
+  __u32 stx_blksize;
+  __u64 stx_attributes;
+  __u32 stx_nlink;
+  __u32 stx_uid;
+  __u32 stx_gid;
+  __u16 stx_mode;
+  __u16 __spare0[1];
+  __u64 stx_ino;
+  __u64 stx_size;
+  __u64 stx_blocks;
+  __u64 stx_attributes_mask;
+  struct statx_timestamp stx_atime;
+  struct statx_timestamp stx_btime;
+  struct statx_timestamp stx_ctime;
+  struct statx_timestamp stx_mtime;
+  __u32 stx_rdev_major;
+  __u32 stx_rdev_minor;
+  __u32 stx_dev_major;
+  __u32 stx_dev_minor;
+  __u64 stx_mnt_id;
+  __u64 __spare2;
+  __u64 __spare3[12];
+};
+#define STATX_TYPE 0x00000001U
+#define STATX_MODE 0x00000002U
+#define STATX_NLINK 0x00000004U
+#define STATX_UID 0x00000008U
+#define STATX_GID 0x00000010U
+#define STATX_ATIME 0x00000020U
+#define STATX_MTIME 0x00000040U
+#define STATX_CTIME 0x00000080U
+#define STATX_INO 0x00000100U
+#define STATX_SIZE 0x00000200U
+#define STATX_BLOCKS 0x00000400U
+#define STATX_BASIC_STATS 0x000007ffU
+#define STATX_BTIME 0x00000800U
+#define STATX_MNT_ID 0x00001000U
+#define STATX__RESERVED 0x80000000U
+#define STATX_ALL 0x00000fffU
+#define STATX_ATTR_COMPRESSED 0x00000004
+#define STATX_ATTR_IMMUTABLE 0x00000010
+#define STATX_ATTR_APPEND 0x00000020
+#define STATX_ATTR_NODUMP 0x00000040
+#define STATX_ATTR_ENCRYPTED 0x00000800
+#define STATX_ATTR_AUTOMOUNT 0x00001000
+#define STATX_ATTR_MOUNT_ROOT 0x00002000
+#define STATX_ATTR_VERITY 0x00100000
+#define STATX_ATTR_DAX 0x00200000
+#endif
diff --git a/i686-linux-musl/include/linux/stddef.h b/i686-linux-musl/include/linux/stddef.h
new file mode 100644
index 0000000..d5cdf80
--- /dev/null
+++ b/i686-linux-musl/include/linux/stddef.h
@@ -0,0 +1,24 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <linux/compiler_types.h>
+#ifndef __always_inline
+#define __always_inline inline
+#endif
+#define __struct_group(TAG,NAME,ATTRS,MEMBERS...) union { struct { MEMBERS } ATTRS; struct TAG { MEMBERS } ATTRS NAME; }
+#define __DECLARE_FLEX_ARRAY(TYPE,NAME) struct { struct { } __empty_ ##NAME; TYPE NAME[]; }
diff --git a/i686-linux-musl/include/linux/stm.h b/i686-linux-musl/include/linux/stm.h
new file mode 100644
index 0000000..1c7f7f3
--- /dev/null
+++ b/i686-linux-musl/include/linux/stm.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_STM_H
+#define _UAPI_LINUX_STM_H
+#include <linux/types.h>
+#define STP_MASTER_MAX 0xffff
+#define STP_CHANNEL_MAX 0xffff
+struct stp_policy_id {
+  __u32 size;
+  __u16 master;
+  __u16 channel;
+  __u16 width;
+  __u16 __reserved_0;
+  __u32 __reserved_1;
+  char id[0];
+};
+#define STP_POLICY_ID_SET _IOWR('%', 0, struct stp_policy_id)
+#define STP_POLICY_ID_GET _IOR('%', 1, struct stp_policy_id)
+#define STP_SET_OPTIONS _IOW('%', 2, __u64)
+#endif
diff --git a/i686-linux-musl/include/linux/string.h b/i686-linux-musl/include/linux/string.h
new file mode 100644
index 0000000..2ff62f2
--- /dev/null
+++ b/i686-linux-musl/include/linux/string.h
@@ -0,0 +1,22 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_STRING_H_
+#define _UAPI_LINUX_STRING_H_
+#include <string.h>
+#endif
diff --git a/i686-linux-musl/include/linux/sunrpc/debug.h b/i686-linux-musl/include/linux/sunrpc/debug.h
new file mode 100644
index 0000000..86c4d86
--- /dev/null
+++ b/i686-linux-musl/include/linux/sunrpc/debug.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SUNRPC_DEBUG_H_
+#define _UAPI_LINUX_SUNRPC_DEBUG_H_
+#define RPCDBG_XPRT 0x0001
+#define RPCDBG_CALL 0x0002
+#define RPCDBG_DEBUG 0x0004
+#define RPCDBG_NFS 0x0008
+#define RPCDBG_AUTH 0x0010
+#define RPCDBG_BIND 0x0020
+#define RPCDBG_SCHED 0x0040
+#define RPCDBG_TRANS 0x0080
+#define RPCDBG_SVCXPRT 0x0100
+#define RPCDBG_SVCDSP 0x0200
+#define RPCDBG_MISC 0x0400
+#define RPCDBG_CACHE 0x0800
+#define RPCDBG_ALL 0x7fff
+enum {
+  CTL_RPCDEBUG = 1,
+  CTL_NFSDEBUG,
+  CTL_NFSDDEBUG,
+  CTL_NLMDEBUG,
+  CTL_SLOTTABLE_UDP,
+  CTL_SLOTTABLE_TCP,
+  CTL_MIN_RESVPORT,
+  CTL_MAX_RESVPORT,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/surface_aggregator/cdev.h b/i686-linux-musl/include/linux/surface_aggregator/cdev.h
new file mode 100644
index 0000000..2e097f0
--- /dev/null
+++ b/i686-linux-musl/include/linux/surface_aggregator/cdev.h
@@ -0,0 +1,75 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SURFACE_AGGREGATOR_CDEV_H
+#define _UAPI_LINUX_SURFACE_AGGREGATOR_CDEV_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+enum ssam_cdev_request_flags {
+  SSAM_CDEV_REQUEST_HAS_RESPONSE = 0x01,
+  SSAM_CDEV_REQUEST_UNSEQUENCED = 0x02,
+};
+struct ssam_cdev_request {
+  __u8 target_category;
+  __u8 target_id;
+  __u8 command_id;
+  __u8 instance_id;
+  __u16 flags;
+  __s16 status;
+  struct {
+    __u64 data;
+    __u16 length;
+    __u8 __pad[6];
+  } payload;
+  struct {
+    __u64 data;
+    __u16 length;
+    __u8 __pad[6];
+  } response;
+} __attribute__((__packed__));
+struct ssam_cdev_notifier_desc {
+  __s32 priority;
+  __u8 target_category;
+} __attribute__((__packed__));
+struct ssam_cdev_event_desc {
+  struct {
+    __u8 target_category;
+    __u8 target_id;
+    __u8 cid_enable;
+    __u8 cid_disable;
+  } reg;
+  struct {
+    __u8 target_category;
+    __u8 instance;
+  } id;
+  __u8 flags;
+} __attribute__((__packed__));
+struct ssam_cdev_event {
+  __u8 target_category;
+  __u8 target_id;
+  __u8 command_id;
+  __u8 instance_id;
+  __u16 length;
+  __u8 data[];
+} __attribute__((__packed__));
+#define SSAM_CDEV_REQUEST _IOWR(0xA5, 1, struct ssam_cdev_request)
+#define SSAM_CDEV_NOTIF_REGISTER _IOW(0xA5, 2, struct ssam_cdev_notifier_desc)
+#define SSAM_CDEV_NOTIF_UNREGISTER _IOW(0xA5, 3, struct ssam_cdev_notifier_desc)
+#define SSAM_CDEV_EVENT_ENABLE _IOW(0xA5, 4, struct ssam_cdev_event_desc)
+#define SSAM_CDEV_EVENT_DISABLE _IOW(0xA5, 5, struct ssam_cdev_event_desc)
+#endif
diff --git a/i686-linux-musl/include/linux/surface_aggregator/dtx.h b/i686-linux-musl/include/linux/surface_aggregator/dtx.h
new file mode 100644
index 0000000..dde5ad3
--- /dev/null
+++ b/i686-linux-musl/include/linux/surface_aggregator/dtx.h
@@ -0,0 +1,81 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SURFACE_AGGREGATOR_DTX_H
+#define _UAPI_LINUX_SURFACE_AGGREGATOR_DTX_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define SDTX_CATEGORY_STATUS 0x0000
+#define SDTX_CATEGORY_RUNTIME_ERROR 0x1000
+#define SDTX_CATEGORY_HARDWARE_ERROR 0x2000
+#define SDTX_CATEGORY_UNKNOWN 0xf000
+#define SDTX_CATEGORY_MASK 0xf000
+#define SDTX_CATEGORY(value) ((value) & SDTX_CATEGORY_MASK)
+#define SDTX_STATUS(code) ((code) | SDTX_CATEGORY_STATUS)
+#define SDTX_ERR_RT(code) ((code) | SDTX_CATEGORY_RUNTIME_ERROR)
+#define SDTX_ERR_HW(code) ((code) | SDTX_CATEGORY_HARDWARE_ERROR)
+#define SDTX_UNKNOWN(code) ((code) | SDTX_CATEGORY_UNKNOWN)
+#define SDTX_SUCCESS(value) (SDTX_CATEGORY(value) == SDTX_CATEGORY_STATUS)
+#define SDTX_LATCH_CLOSED SDTX_STATUS(0x00)
+#define SDTX_LATCH_OPENED SDTX_STATUS(0x01)
+#define SDTX_BASE_DETACHED SDTX_STATUS(0x00)
+#define SDTX_BASE_ATTACHED SDTX_STATUS(0x01)
+#define SDTX_DETACH_NOT_FEASIBLE SDTX_ERR_RT(0x01)
+#define SDTX_DETACH_TIMEDOUT SDTX_ERR_RT(0x02)
+#define SDTX_ERR_FAILED_TO_OPEN SDTX_ERR_HW(0x01)
+#define SDTX_ERR_FAILED_TO_REMAIN_OPEN SDTX_ERR_HW(0x02)
+#define SDTX_ERR_FAILED_TO_CLOSE SDTX_ERR_HW(0x03)
+#define SDTX_DEVICE_TYPE_HID 0x0100
+#define SDTX_DEVICE_TYPE_SSH 0x0200
+#define SDTX_DEVICE_TYPE_MASK 0x0f00
+#define SDTX_DEVICE_TYPE(value) ((value) & SDTX_DEVICE_TYPE_MASK)
+#define SDTX_BASE_TYPE_HID(id) ((id) | SDTX_DEVICE_TYPE_HID)
+#define SDTX_BASE_TYPE_SSH(id) ((id) | SDTX_DEVICE_TYPE_SSH)
+enum sdtx_device_mode {
+  SDTX_DEVICE_MODE_TABLET = 0x00,
+  SDTX_DEVICE_MODE_LAPTOP = 0x01,
+  SDTX_DEVICE_MODE_STUDIO = 0x02,
+};
+struct sdtx_event {
+  __u16 length;
+  __u16 code;
+  __u8 data[];
+} __attribute__((__packed__));
+enum sdtx_event_code {
+  SDTX_EVENT_REQUEST = 1,
+  SDTX_EVENT_CANCEL = 2,
+  SDTX_EVENT_BASE_CONNECTION = 3,
+  SDTX_EVENT_LATCH_STATUS = 4,
+  SDTX_EVENT_DEVICE_MODE = 5,
+};
+struct sdtx_base_info {
+  __u16 state;
+  __u16 base_id;
+} __attribute__((__packed__));
+#define SDTX_IOCTL_EVENTS_ENABLE _IO(0xa5, 0x21)
+#define SDTX_IOCTL_EVENTS_DISABLE _IO(0xa5, 0x22)
+#define SDTX_IOCTL_LATCH_LOCK _IO(0xa5, 0x23)
+#define SDTX_IOCTL_LATCH_UNLOCK _IO(0xa5, 0x24)
+#define SDTX_IOCTL_LATCH_REQUEST _IO(0xa5, 0x25)
+#define SDTX_IOCTL_LATCH_CONFIRM _IO(0xa5, 0x26)
+#define SDTX_IOCTL_LATCH_HEARTBEAT _IO(0xa5, 0x27)
+#define SDTX_IOCTL_LATCH_CANCEL _IO(0xa5, 0x28)
+#define SDTX_IOCTL_GET_BASE_INFO _IOR(0xa5, 0x29, struct sdtx_base_info)
+#define SDTX_IOCTL_GET_DEVICE_MODE _IOR(0xa5, 0x2a, __u16)
+#define SDTX_IOCTL_GET_LATCH_STATUS _IOR(0xa5, 0x2b, __u16)
+#endif
diff --git a/i686-linux-musl/include/linux/suspend_ioctls.h b/i686-linux-musl/include/linux/suspend_ioctls.h
new file mode 100644
index 0000000..b011d93
--- /dev/null
+++ b/i686-linux-musl/include/linux/suspend_ioctls.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_SUSPEND_IOCTLS_H
+#define _LINUX_SUSPEND_IOCTLS_H
+#include <linux/types.h>
+struct resume_swap_area {
+  __kernel_loff_t offset;
+  __u32 dev;
+} __attribute__((packed));
+#define SNAPSHOT_IOC_MAGIC '3'
+#define SNAPSHOT_FREEZE _IO(SNAPSHOT_IOC_MAGIC, 1)
+#define SNAPSHOT_UNFREEZE _IO(SNAPSHOT_IOC_MAGIC, 2)
+#define SNAPSHOT_ATOMIC_RESTORE _IO(SNAPSHOT_IOC_MAGIC, 4)
+#define SNAPSHOT_FREE _IO(SNAPSHOT_IOC_MAGIC, 5)
+#define SNAPSHOT_FREE_SWAP_PAGES _IO(SNAPSHOT_IOC_MAGIC, 9)
+#define SNAPSHOT_S2RAM _IO(SNAPSHOT_IOC_MAGIC, 11)
+#define SNAPSHOT_SET_SWAP_AREA _IOW(SNAPSHOT_IOC_MAGIC, 13, struct resume_swap_area)
+#define SNAPSHOT_GET_IMAGE_SIZE _IOR(SNAPSHOT_IOC_MAGIC, 14, __kernel_loff_t)
+#define SNAPSHOT_PLATFORM_SUPPORT _IO(SNAPSHOT_IOC_MAGIC, 15)
+#define SNAPSHOT_POWER_OFF _IO(SNAPSHOT_IOC_MAGIC, 16)
+#define SNAPSHOT_CREATE_IMAGE _IOW(SNAPSHOT_IOC_MAGIC, 17, int)
+#define SNAPSHOT_PREF_IMAGE_SIZE _IO(SNAPSHOT_IOC_MAGIC, 18)
+#define SNAPSHOT_AVAIL_SWAP_SIZE _IOR(SNAPSHOT_IOC_MAGIC, 19, __kernel_loff_t)
+#define SNAPSHOT_ALLOC_SWAP_PAGE _IOR(SNAPSHOT_IOC_MAGIC, 20, __kernel_loff_t)
+#define SNAPSHOT_IOC_MAXNR 20
+#endif
diff --git a/i686-linux-musl/include/linux/swab.h b/i686-linux-musl/include/linux/swab.h
new file mode 100644
index 0000000..e96085e
--- /dev/null
+++ b/i686-linux-musl/include/linux/swab.h
@@ -0,0 +1,132 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SWAB_H
+#define _UAPI_LINUX_SWAB_H
+#include <linux/types.h>
+#include <linux/compiler.h>
+#include <asm/bitsperlong.h>
+#include <asm/swab.h>
+#define ___constant_swab16(x) ((__u16) ((((__u16) (x) & (__u16) 0x00ffU) << 8) | (((__u16) (x) & (__u16) 0xff00U) >> 8)))
+#define ___constant_swab32(x) ((__u32) ((((__u32) (x) & (__u32) 0x000000ffUL) << 24) | (((__u32) (x) & (__u32) 0x0000ff00UL) << 8) | (((__u32) (x) & (__u32) 0x00ff0000UL) >> 8) | (((__u32) (x) & (__u32) 0xff000000UL) >> 24)))
+#define ___constant_swab64(x) ((__u64) ((((__u64) (x) & (__u64) 0x00000000000000ffULL) << 56) | (((__u64) (x) & (__u64) 0x000000000000ff00ULL) << 40) | (((__u64) (x) & (__u64) 0x0000000000ff0000ULL) << 24) | (((__u64) (x) & (__u64) 0x00000000ff000000ULL) << 8) | (((__u64) (x) & (__u64) 0x000000ff00000000ULL) >> 8) | (((__u64) (x) & (__u64) 0x0000ff0000000000ULL) >> 24) | (((__u64) (x) & (__u64) 0x00ff000000000000ULL) >> 40) | (((__u64) (x) & (__u64) 0xff00000000000000ULL) >> 56)))
+#define ___constant_swahw32(x) ((__u32) ((((__u32) (x) & (__u32) 0x0000ffffUL) << 16) | (((__u32) (x) & (__u32) 0xffff0000UL) >> 16)))
+#define ___constant_swahb32(x) ((__u32) ((((__u32) (x) & (__u32) 0x00ff00ffUL) << 8) | (((__u32) (x) & (__u32) 0xff00ff00UL) >> 8)))
+#ifdef __arch_swab16
+#else
+#endif
+#ifdef __arch_swab32
+#else
+#endif
+#ifdef __arch_swab64
+#elif defined(__SWAB_64_THRU_32__)
+#else
+#endif
+static inline __attribute__((__const__)) __u32 __fswahw32(__u32 val) {
+#ifdef __arch_swahw32
+  return __arch_swahw32(val);
+#else
+  return ___constant_swahw32(val);
+#endif
+}
+static inline __attribute__((__const__)) __u32 __fswahb32(__u32 val) {
+#ifdef __arch_swahb32
+  return __arch_swahb32(val);
+#else
+  return ___constant_swahb32(val);
+#endif
+}
+#define __swab16(x) (__u16) __builtin_bswap16((__u16) (x))
+#define __swab32(x) (__u32) __builtin_bswap32((__u32) (x))
+#define __swab64(x) (__u64) __builtin_bswap64((__u64) (x))
+#if __BITS_PER_LONG == 64
+#else
+#endif
+#define __swahw32(x) (__builtin_constant_p((__u32) (x)) ? ___constant_swahw32(x) : __fswahw32(x))
+#define __swahb32(x) (__builtin_constant_p((__u32) (x)) ? ___constant_swahb32(x) : __fswahb32(x))
+static __always_inline __u16 __swab16p(const __u16 * p) {
+#ifdef __arch_swab16p
+  return __arch_swab16p(p);
+#else
+  return __swab16(* p);
+#endif
+}
+static __always_inline __u32 __swab32p(const __u32 * p) {
+#ifdef __arch_swab32p
+  return __arch_swab32p(p);
+#else
+  return __swab32(* p);
+#endif
+}
+static __always_inline __u64 __swab64p(const __u64 * p) {
+#ifdef __arch_swab64p
+  return __arch_swab64p(p);
+#else
+  return __swab64(* p);
+#endif
+}
+static inline __u32 __swahw32p(const __u32 * p) {
+#ifdef __arch_swahw32p
+  return __arch_swahw32p(p);
+#else
+  return __swahw32(* p);
+#endif
+}
+static inline __u32 __swahb32p(const __u32 * p) {
+#ifdef __arch_swahb32p
+  return __arch_swahb32p(p);
+#else
+  return __swahb32(* p);
+#endif
+}
+static inline void __swab16s(__u16 * p) {
+#ifdef __arch_swab16s
+  __arch_swab16s(p);
+#else
+  * p = __swab16p(p);
+#endif
+}
+static __always_inline void __swab32s(__u32 * p) {
+#ifdef __arch_swab32s
+  __arch_swab32s(p);
+#else
+  * p = __swab32p(p);
+#endif
+}
+static __always_inline void __swab64s(__u64 * p) {
+#ifdef __arch_swab64s
+  __arch_swab64s(p);
+#else
+  * p = __swab64p(p);
+#endif
+}
+static inline void __swahw32s(__u32 * p) {
+#ifdef __arch_swahw32s
+  __arch_swahw32s(p);
+#else
+  * p = __swahw32p(p);
+#endif
+}
+static inline void __swahb32s(__u32 * p) {
+#ifdef __arch_swahb32s
+  __arch_swahb32s(p);
+#else
+  * p = __swahb32p(p);
+#endif
+}
+#endif
diff --git a/i686-linux-musl/include/linux/switchtec_ioctl.h b/i686-linux-musl/include/linux/switchtec_ioctl.h
new file mode 100644
index 0000000..204839d
--- /dev/null
+++ b/i686-linux-musl/include/linux/switchtec_ioctl.h
@@ -0,0 +1,139 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SWITCHTEC_IOCTL_H
+#define _UAPI_LINUX_SWITCHTEC_IOCTL_H
+#include <linux/types.h>
+#define SWITCHTEC_IOCTL_PART_CFG0 0
+#define SWITCHTEC_IOCTL_PART_CFG1 1
+#define SWITCHTEC_IOCTL_PART_IMG0 2
+#define SWITCHTEC_IOCTL_PART_IMG1 3
+#define SWITCHTEC_IOCTL_PART_NVLOG 4
+#define SWITCHTEC_IOCTL_PART_VENDOR0 5
+#define SWITCHTEC_IOCTL_PART_VENDOR1 6
+#define SWITCHTEC_IOCTL_PART_VENDOR2 7
+#define SWITCHTEC_IOCTL_PART_VENDOR3 8
+#define SWITCHTEC_IOCTL_PART_VENDOR4 9
+#define SWITCHTEC_IOCTL_PART_VENDOR5 10
+#define SWITCHTEC_IOCTL_PART_VENDOR6 11
+#define SWITCHTEC_IOCTL_PART_VENDOR7 12
+#define SWITCHTEC_IOCTL_PART_BL2_0 13
+#define SWITCHTEC_IOCTL_PART_BL2_1 14
+#define SWITCHTEC_IOCTL_PART_MAP_0 15
+#define SWITCHTEC_IOCTL_PART_MAP_1 16
+#define SWITCHTEC_IOCTL_PART_KEY_0 17
+#define SWITCHTEC_IOCTL_PART_KEY_1 18
+#define SWITCHTEC_NUM_PARTITIONS_GEN3 13
+#define SWITCHTEC_NUM_PARTITIONS_GEN4 19
+#define SWITCHTEC_IOCTL_NUM_PARTITIONS SWITCHTEC_NUM_PARTITIONS_GEN3
+struct switchtec_ioctl_flash_info {
+  __u64 flash_length;
+  __u32 num_partitions;
+  __u32 padding;
+};
+#define SWITCHTEC_IOCTL_PART_ACTIVE 1
+#define SWITCHTEC_IOCTL_PART_RUNNING 2
+struct switchtec_ioctl_flash_part_info {
+  __u32 flash_partition;
+  __u32 address;
+  __u32 length;
+  __u32 active;
+};
+struct switchtec_ioctl_event_summary_legacy {
+  __u64 global;
+  __u64 part_bitmap;
+  __u32 local_part;
+  __u32 padding;
+  __u32 part[48];
+  __u32 pff[48];
+};
+struct switchtec_ioctl_event_summary {
+  __u64 global;
+  __u64 part_bitmap;
+  __u32 local_part;
+  __u32 padding;
+  __u32 part[48];
+  __u32 pff[255];
+};
+#define SWITCHTEC_IOCTL_EVENT_STACK_ERROR 0
+#define SWITCHTEC_IOCTL_EVENT_PPU_ERROR 1
+#define SWITCHTEC_IOCTL_EVENT_ISP_ERROR 2
+#define SWITCHTEC_IOCTL_EVENT_SYS_RESET 3
+#define SWITCHTEC_IOCTL_EVENT_FW_EXC 4
+#define SWITCHTEC_IOCTL_EVENT_FW_NMI 5
+#define SWITCHTEC_IOCTL_EVENT_FW_NON_FATAL 6
+#define SWITCHTEC_IOCTL_EVENT_FW_FATAL 7
+#define SWITCHTEC_IOCTL_EVENT_TWI_MRPC_COMP 8
+#define SWITCHTEC_IOCTL_EVENT_TWI_MRPC_COMP_ASYNC 9
+#define SWITCHTEC_IOCTL_EVENT_CLI_MRPC_COMP 10
+#define SWITCHTEC_IOCTL_EVENT_CLI_MRPC_COMP_ASYNC 11
+#define SWITCHTEC_IOCTL_EVENT_GPIO_INT 12
+#define SWITCHTEC_IOCTL_EVENT_PART_RESET 13
+#define SWITCHTEC_IOCTL_EVENT_MRPC_COMP 14
+#define SWITCHTEC_IOCTL_EVENT_MRPC_COMP_ASYNC 15
+#define SWITCHTEC_IOCTL_EVENT_DYN_PART_BIND_COMP 16
+#define SWITCHTEC_IOCTL_EVENT_AER_IN_P2P 17
+#define SWITCHTEC_IOCTL_EVENT_AER_IN_VEP 18
+#define SWITCHTEC_IOCTL_EVENT_DPC 19
+#define SWITCHTEC_IOCTL_EVENT_CTS 20
+#define SWITCHTEC_IOCTL_EVENT_HOTPLUG 21
+#define SWITCHTEC_IOCTL_EVENT_IER 22
+#define SWITCHTEC_IOCTL_EVENT_THRESH 23
+#define SWITCHTEC_IOCTL_EVENT_POWER_MGMT 24
+#define SWITCHTEC_IOCTL_EVENT_TLP_THROTTLING 25
+#define SWITCHTEC_IOCTL_EVENT_FORCE_SPEED 26
+#define SWITCHTEC_IOCTL_EVENT_CREDIT_TIMEOUT 27
+#define SWITCHTEC_IOCTL_EVENT_LINK_STATE 28
+#define SWITCHTEC_IOCTL_EVENT_GFMS 29
+#define SWITCHTEC_IOCTL_EVENT_INTERCOMM_REQ_NOTIFY 30
+#define SWITCHTEC_IOCTL_EVENT_UEC 31
+#define SWITCHTEC_IOCTL_MAX_EVENTS 32
+#define SWITCHTEC_IOCTL_EVENT_LOCAL_PART_IDX - 1
+#define SWITCHTEC_IOCTL_EVENT_IDX_ALL - 2
+#define SWITCHTEC_IOCTL_EVENT_FLAG_CLEAR (1 << 0)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_EN_POLL (1 << 1)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_EN_LOG (1 << 2)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_EN_CLI (1 << 3)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_EN_FATAL (1 << 4)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_POLL (1 << 5)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_LOG (1 << 6)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_CLI (1 << 7)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_FATAL (1 << 8)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_UNUSED (~0x1ff)
+struct switchtec_ioctl_event_ctl {
+  __u32 event_id;
+  __s32 index;
+  __u32 flags;
+  __u32 occurred;
+  __u32 count;
+  __u32 data[5];
+};
+#define SWITCHTEC_IOCTL_PFF_VEP 100
+struct switchtec_ioctl_pff_port {
+  __u32 pff;
+  __u32 partition;
+  __u32 port;
+};
+#define SWITCHTEC_IOCTL_FLASH_INFO _IOR('W', 0x40, struct switchtec_ioctl_flash_info)
+#define SWITCHTEC_IOCTL_FLASH_PART_INFO _IOWR('W', 0x41, struct switchtec_ioctl_flash_part_info)
+#define SWITCHTEC_IOCTL_EVENT_SUMMARY _IOR('W', 0x42, struct switchtec_ioctl_event_summary)
+#define SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY _IOR('W', 0x42, struct switchtec_ioctl_event_summary_legacy)
+#define SWITCHTEC_IOCTL_EVENT_CTL _IOWR('W', 0x43, struct switchtec_ioctl_event_ctl)
+#define SWITCHTEC_IOCTL_PFF_TO_PORT _IOWR('W', 0x44, struct switchtec_ioctl_pff_port)
+#define SWITCHTEC_IOCTL_PORT_TO_PFF _IOWR('W', 0x45, struct switchtec_ioctl_pff_port)
+#endif
diff --git a/i686-linux-musl/include/linux/sync_file.h b/i686-linux-musl/include/linux/sync_file.h
new file mode 100644
index 0000000..497300e
--- /dev/null
+++ b/i686-linux-musl/include/linux/sync_file.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SYNC_H
+#define _UAPI_LINUX_SYNC_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+struct sync_merge_data {
+  char name[32];
+  __s32 fd2;
+  __s32 fence;
+  __u32 flags;
+  __u32 pad;
+};
+struct sync_fence_info {
+  char obj_name[32];
+  char driver_name[32];
+  __s32 status;
+  __u32 flags;
+  __u64 timestamp_ns;
+};
+struct sync_file_info {
+  char name[32];
+  __s32 status;
+  __u32 flags;
+  __u32 num_fences;
+  __u32 pad;
+  __u64 sync_fence_info;
+};
+#define SYNC_IOC_MAGIC '>'
+#define SYNC_IOC_MERGE _IOWR(SYNC_IOC_MAGIC, 3, struct sync_merge_data)
+#define SYNC_IOC_FILE_INFO _IOWR(SYNC_IOC_MAGIC, 4, struct sync_file_info)
+#endif
diff --git a/i686-linux-musl/include/linux/synclink.h b/i686-linux-musl/include/linux/synclink.h
new file mode 100644
index 0000000..ba8ecb9
--- /dev/null
+++ b/i686-linux-musl/include/linux/synclink.h
@@ -0,0 +1,244 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_SYNCLINK_H_
+#define _UAPI_SYNCLINK_H_
+#define SYNCLINK_H_VERSION 3.6
+#include <linux/types.h>
+#define BIT0 0x0001
+#define BIT1 0x0002
+#define BIT2 0x0004
+#define BIT3 0x0008
+#define BIT4 0x0010
+#define BIT5 0x0020
+#define BIT6 0x0040
+#define BIT7 0x0080
+#define BIT8 0x0100
+#define BIT9 0x0200
+#define BIT10 0x0400
+#define BIT11 0x0800
+#define BIT12 0x1000
+#define BIT13 0x2000
+#define BIT14 0x4000
+#define BIT15 0x8000
+#define BIT16 0x00010000
+#define BIT17 0x00020000
+#define BIT18 0x00040000
+#define BIT19 0x00080000
+#define BIT20 0x00100000
+#define BIT21 0x00200000
+#define BIT22 0x00400000
+#define BIT23 0x00800000
+#define BIT24 0x01000000
+#define BIT25 0x02000000
+#define BIT26 0x04000000
+#define BIT27 0x08000000
+#define BIT28 0x10000000
+#define BIT29 0x20000000
+#define BIT30 0x40000000
+#define BIT31 0x80000000
+#define HDLC_MAX_FRAME_SIZE 65535
+#define MAX_ASYNC_TRANSMIT 4096
+#define MAX_ASYNC_BUFFER_SIZE 4096
+#define ASYNC_PARITY_NONE 0
+#define ASYNC_PARITY_EVEN 1
+#define ASYNC_PARITY_ODD 2
+#define ASYNC_PARITY_SPACE 3
+#define HDLC_FLAG_UNDERRUN_ABORT7 0x0000
+#define HDLC_FLAG_UNDERRUN_ABORT15 0x0001
+#define HDLC_FLAG_UNDERRUN_FLAG 0x0002
+#define HDLC_FLAG_UNDERRUN_CRC 0x0004
+#define HDLC_FLAG_SHARE_ZERO 0x0010
+#define HDLC_FLAG_AUTO_CTS 0x0020
+#define HDLC_FLAG_AUTO_DCD 0x0040
+#define HDLC_FLAG_AUTO_RTS 0x0080
+#define HDLC_FLAG_RXC_DPLL 0x0100
+#define HDLC_FLAG_RXC_BRG 0x0200
+#define HDLC_FLAG_RXC_TXCPIN 0x8000
+#define HDLC_FLAG_RXC_RXCPIN 0x0000
+#define HDLC_FLAG_TXC_DPLL 0x0400
+#define HDLC_FLAG_TXC_BRG 0x0800
+#define HDLC_FLAG_TXC_TXCPIN 0x0000
+#define HDLC_FLAG_TXC_RXCPIN 0x0008
+#define HDLC_FLAG_DPLL_DIV8 0x1000
+#define HDLC_FLAG_DPLL_DIV16 0x2000
+#define HDLC_FLAG_DPLL_DIV32 0x0000
+#define HDLC_FLAG_HDLC_LOOPMODE 0x4000
+#define HDLC_CRC_NONE 0
+#define HDLC_CRC_16_CCITT 1
+#define HDLC_CRC_32_CCITT 2
+#define HDLC_CRC_MASK 0x00ff
+#define HDLC_CRC_RETURN_EX 0x8000
+#define RX_OK 0
+#define RX_CRC_ERROR 1
+#define HDLC_TXIDLE_FLAGS 0
+#define HDLC_TXIDLE_ALT_ZEROS_ONES 1
+#define HDLC_TXIDLE_ZEROS 2
+#define HDLC_TXIDLE_ONES 3
+#define HDLC_TXIDLE_ALT_MARK_SPACE 4
+#define HDLC_TXIDLE_SPACE 5
+#define HDLC_TXIDLE_MARK 6
+#define HDLC_TXIDLE_CUSTOM_8 0x10000000
+#define HDLC_TXIDLE_CUSTOM_16 0x20000000
+#define HDLC_ENCODING_NRZ 0
+#define HDLC_ENCODING_NRZB 1
+#define HDLC_ENCODING_NRZI_MARK 2
+#define HDLC_ENCODING_NRZI_SPACE 3
+#define HDLC_ENCODING_NRZI HDLC_ENCODING_NRZI_SPACE
+#define HDLC_ENCODING_BIPHASE_MARK 4
+#define HDLC_ENCODING_BIPHASE_SPACE 5
+#define HDLC_ENCODING_BIPHASE_LEVEL 6
+#define HDLC_ENCODING_DIFF_BIPHASE_LEVEL 7
+#define HDLC_PREAMBLE_LENGTH_8BITS 0
+#define HDLC_PREAMBLE_LENGTH_16BITS 1
+#define HDLC_PREAMBLE_LENGTH_32BITS 2
+#define HDLC_PREAMBLE_LENGTH_64BITS 3
+#define HDLC_PREAMBLE_PATTERN_NONE 0
+#define HDLC_PREAMBLE_PATTERN_ZEROS 1
+#define HDLC_PREAMBLE_PATTERN_FLAGS 2
+#define HDLC_PREAMBLE_PATTERN_10 3
+#define HDLC_PREAMBLE_PATTERN_01 4
+#define HDLC_PREAMBLE_PATTERN_ONES 5
+#define MGSL_MODE_ASYNC 1
+#define MGSL_MODE_HDLC 2
+#define MGSL_MODE_MONOSYNC 3
+#define MGSL_MODE_BISYNC 4
+#define MGSL_MODE_RAW 6
+#define MGSL_MODE_BASE_CLOCK 7
+#define MGSL_MODE_XSYNC 8
+#define MGSL_BUS_TYPE_ISA 1
+#define MGSL_BUS_TYPE_EISA 2
+#define MGSL_BUS_TYPE_PCI 5
+#define MGSL_INTERFACE_MASK 0xf
+#define MGSL_INTERFACE_DISABLE 0
+#define MGSL_INTERFACE_RS232 1
+#define MGSL_INTERFACE_V35 2
+#define MGSL_INTERFACE_RS422 3
+#define MGSL_INTERFACE_RTS_EN 0x10
+#define MGSL_INTERFACE_LL 0x20
+#define MGSL_INTERFACE_RL 0x40
+#define MGSL_INTERFACE_MSB_FIRST 0x80
+typedef struct _MGSL_PARAMS {
+  unsigned long mode;
+  unsigned char loopback;
+  unsigned short flags;
+  unsigned char encoding;
+  unsigned long clock_speed;
+  unsigned char addr_filter;
+  unsigned short crc_type;
+  unsigned char preamble_length;
+  unsigned char preamble;
+  unsigned long data_rate;
+  unsigned char data_bits;
+  unsigned char stop_bits;
+  unsigned char parity;
+} MGSL_PARAMS, * PMGSL_PARAMS;
+#define MICROGATE_VENDOR_ID 0x13c0
+#define SYNCLINK_DEVICE_ID 0x0010
+#define MGSCC_DEVICE_ID 0x0020
+#define SYNCLINK_SCA_DEVICE_ID 0x0030
+#define SYNCLINK_GT_DEVICE_ID 0x0070
+#define SYNCLINK_GT4_DEVICE_ID 0x0080
+#define SYNCLINK_AC_DEVICE_ID 0x0090
+#define SYNCLINK_GT2_DEVICE_ID 0x00A0
+#define MGSL_MAX_SERIAL_NUMBER 30
+#define DiagStatus_OK 0
+#define DiagStatus_AddressFailure 1
+#define DiagStatus_AddressConflict 2
+#define DiagStatus_IrqFailure 3
+#define DiagStatus_IrqConflict 4
+#define DiagStatus_DmaFailure 5
+#define DiagStatus_DmaConflict 6
+#define DiagStatus_PciAdapterNotFound 7
+#define DiagStatus_CantAssignPciResources 8
+#define DiagStatus_CantAssignPciMemAddr 9
+#define DiagStatus_CantAssignPciIoAddr 10
+#define DiagStatus_CantAssignPciIrq 11
+#define DiagStatus_MemoryError 12
+#define SerialSignal_DCD 0x01
+#define SerialSignal_TXD 0x02
+#define SerialSignal_RI 0x04
+#define SerialSignal_RXD 0x08
+#define SerialSignal_CTS 0x10
+#define SerialSignal_RTS 0x20
+#define SerialSignal_DSR 0x40
+#define SerialSignal_DTR 0x80
+struct mgsl_icount {
+  __u32 cts, dsr, rng, dcd, tx, rx;
+  __u32 frame, parity, overrun, brk;
+  __u32 buf_overrun;
+  __u32 txok;
+  __u32 txunder;
+  __u32 txabort;
+  __u32 txtimeout;
+  __u32 rxshort;
+  __u32 rxlong;
+  __u32 rxabort;
+  __u32 rxover;
+  __u32 rxcrc;
+  __u32 rxok;
+  __u32 exithunt;
+  __u32 rxidle;
+};
+struct gpio_desc {
+  __u32 state;
+  __u32 smask;
+  __u32 dir;
+  __u32 dmask;
+};
+#define DEBUG_LEVEL_DATA 1
+#define DEBUG_LEVEL_ERROR 2
+#define DEBUG_LEVEL_INFO 3
+#define DEBUG_LEVEL_BH 4
+#define DEBUG_LEVEL_ISR 5
+#define MgslEvent_DsrActive 0x0001
+#define MgslEvent_DsrInactive 0x0002
+#define MgslEvent_Dsr 0x0003
+#define MgslEvent_CtsActive 0x0004
+#define MgslEvent_CtsInactive 0x0008
+#define MgslEvent_Cts 0x000c
+#define MgslEvent_DcdActive 0x0010
+#define MgslEvent_DcdInactive 0x0020
+#define MgslEvent_Dcd 0x0030
+#define MgslEvent_RiActive 0x0040
+#define MgslEvent_RiInactive 0x0080
+#define MgslEvent_Ri 0x00c0
+#define MgslEvent_ExitHuntMode 0x0100
+#define MgslEvent_IdleReceived 0x0200
+#define MGSL_MAGIC_IOC 'm'
+#define MGSL_IOCSPARAMS _IOW(MGSL_MAGIC_IOC, 0, struct _MGSL_PARAMS)
+#define MGSL_IOCGPARAMS _IOR(MGSL_MAGIC_IOC, 1, struct _MGSL_PARAMS)
+#define MGSL_IOCSTXIDLE _IO(MGSL_MAGIC_IOC, 2)
+#define MGSL_IOCGTXIDLE _IO(MGSL_MAGIC_IOC, 3)
+#define MGSL_IOCTXENABLE _IO(MGSL_MAGIC_IOC, 4)
+#define MGSL_IOCRXENABLE _IO(MGSL_MAGIC_IOC, 5)
+#define MGSL_IOCTXABORT _IO(MGSL_MAGIC_IOC, 6)
+#define MGSL_IOCGSTATS _IO(MGSL_MAGIC_IOC, 7)
+#define MGSL_IOCWAITEVENT _IOWR(MGSL_MAGIC_IOC, 8, int)
+#define MGSL_IOCCLRMODCOUNT _IO(MGSL_MAGIC_IOC, 15)
+#define MGSL_IOCLOOPTXDONE _IO(MGSL_MAGIC_IOC, 9)
+#define MGSL_IOCSIF _IO(MGSL_MAGIC_IOC, 10)
+#define MGSL_IOCGIF _IO(MGSL_MAGIC_IOC, 11)
+#define MGSL_IOCSGPIO _IOW(MGSL_MAGIC_IOC, 16, struct gpio_desc)
+#define MGSL_IOCGGPIO _IOR(MGSL_MAGIC_IOC, 17, struct gpio_desc)
+#define MGSL_IOCWAITGPIO _IOWR(MGSL_MAGIC_IOC, 18, struct gpio_desc)
+#define MGSL_IOCSXSYNC _IO(MGSL_MAGIC_IOC, 19)
+#define MGSL_IOCGXSYNC _IO(MGSL_MAGIC_IOC, 20)
+#define MGSL_IOCSXCTRL _IO(MGSL_MAGIC_IOC, 21)
+#define MGSL_IOCGXCTRL _IO(MGSL_MAGIC_IOC, 22)
+#endif
diff --git a/i686-linux-musl/include/linux/sysctl.h b/i686-linux-musl/include/linux/sysctl.h
new file mode 100644
index 0000000..ae9c2ba
--- /dev/null
+++ b/i686-linux-musl/include/linux/sysctl.h
@@ -0,0 +1,761 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SYSCTL_H
+#define _UAPI_LINUX_SYSCTL_H
+#include <linux/const.h>
+#include <linux/types.h>
+#include <linux/compiler.h>
+#define CTL_MAXNAME 10
+struct __sysctl_args {
+  int __user * name;
+  int nlen;
+  void __user * oldval;
+  size_t __user * oldlenp;
+  void __user * newval;
+  size_t newlen;
+  unsigned long __linux_unused[4];
+};
+enum {
+  CTL_KERN = 1,
+  CTL_VM = 2,
+  CTL_NET = 3,
+  CTL_PROC = 4,
+  CTL_FS = 5,
+  CTL_DEBUG = 6,
+  CTL_DEV = 7,
+  CTL_BUS = 8,
+  CTL_ABI = 9,
+  CTL_CPU = 10,
+  CTL_ARLAN = 254,
+  CTL_S390DBF = 5677,
+  CTL_SUNRPC = 7249,
+  CTL_PM = 9899,
+  CTL_FRV = 9898,
+};
+enum {
+  CTL_BUS_ISA = 1
+};
+enum {
+  INOTIFY_MAX_USER_INSTANCES = 1,
+  INOTIFY_MAX_USER_WATCHES = 2,
+  INOTIFY_MAX_QUEUED_EVENTS = 3
+};
+enum {
+  KERN_OSTYPE = 1,
+  KERN_OSRELEASE = 2,
+  KERN_OSREV = 3,
+  KERN_VERSION = 4,
+  KERN_SECUREMASK = 5,
+  KERN_PROF = 6,
+  KERN_NODENAME = 7,
+  KERN_DOMAINNAME = 8,
+  KERN_PANIC = 15,
+  KERN_REALROOTDEV = 16,
+  KERN_SPARC_REBOOT = 21,
+  KERN_CTLALTDEL = 22,
+  KERN_PRINTK = 23,
+  KERN_NAMETRANS = 24,
+  KERN_PPC_HTABRECLAIM = 25,
+  KERN_PPC_ZEROPAGED = 26,
+  KERN_PPC_POWERSAVE_NAP = 27,
+  KERN_MODPROBE = 28,
+  KERN_SG_BIG_BUFF = 29,
+  KERN_ACCT = 30,
+  KERN_PPC_L2CR = 31,
+  KERN_RTSIGNR = 32,
+  KERN_RTSIGMAX = 33,
+  KERN_SHMMAX = 34,
+  KERN_MSGMAX = 35,
+  KERN_MSGMNB = 36,
+  KERN_MSGPOOL = 37,
+  KERN_SYSRQ = 38,
+  KERN_MAX_THREADS = 39,
+  KERN_RANDOM = 40,
+  KERN_SHMALL = 41,
+  KERN_MSGMNI = 42,
+  KERN_SEM = 43,
+  KERN_SPARC_STOP_A = 44,
+  KERN_SHMMNI = 45,
+  KERN_OVERFLOWUID = 46,
+  KERN_OVERFLOWGID = 47,
+  KERN_SHMPATH = 48,
+  KERN_HOTPLUG = 49,
+  KERN_IEEE_EMULATION_WARNINGS = 50,
+  KERN_S390_USER_DEBUG_LOGGING = 51,
+  KERN_CORE_USES_PID = 52,
+  KERN_TAINTED = 53,
+  KERN_CADPID = 54,
+  KERN_PIDMAX = 55,
+  KERN_CORE_PATTERN = 56,
+  KERN_PANIC_ON_OOPS = 57,
+  KERN_HPPA_PWRSW = 58,
+  KERN_HPPA_UNALIGNED = 59,
+  KERN_PRINTK_RATELIMIT = 60,
+  KERN_PRINTK_RATELIMIT_BURST = 61,
+  KERN_PTY = 62,
+  KERN_NGROUPS_MAX = 63,
+  KERN_SPARC_SCONS_PWROFF = 64,
+  KERN_HZ_TIMER = 65,
+  KERN_UNKNOWN_NMI_PANIC = 66,
+  KERN_BOOTLOADER_TYPE = 67,
+  KERN_RANDOMIZE = 68,
+  KERN_SETUID_DUMPABLE = 69,
+  KERN_SPIN_RETRY = 70,
+  KERN_ACPI_VIDEO_FLAGS = 71,
+  KERN_IA64_UNALIGNED = 72,
+  KERN_COMPAT_LOG = 73,
+  KERN_MAX_LOCK_DEPTH = 74,
+  KERN_NMI_WATCHDOG = 75,
+  KERN_PANIC_ON_NMI = 76,
+  KERN_PANIC_ON_WARN = 77,
+  KERN_PANIC_PRINT = 78,
+};
+enum {
+  VM_UNUSED1 = 1,
+  VM_UNUSED2 = 2,
+  VM_UNUSED3 = 3,
+  VM_UNUSED4 = 4,
+  VM_OVERCOMMIT_MEMORY = 5,
+  VM_UNUSED5 = 6,
+  VM_UNUSED7 = 7,
+  VM_UNUSED8 = 8,
+  VM_UNUSED9 = 9,
+  VM_PAGE_CLUSTER = 10,
+  VM_DIRTY_BACKGROUND = 11,
+  VM_DIRTY_RATIO = 12,
+  VM_DIRTY_WB_CS = 13,
+  VM_DIRTY_EXPIRE_CS = 14,
+  VM_NR_PDFLUSH_THREADS = 15,
+  VM_OVERCOMMIT_RATIO = 16,
+  VM_PAGEBUF = 17,
+  VM_HUGETLB_PAGES = 18,
+  VM_SWAPPINESS = 19,
+  VM_LOWMEM_RESERVE_RATIO = 20,
+  VM_MIN_FREE_KBYTES = 21,
+  VM_MAX_MAP_COUNT = 22,
+  VM_LAPTOP_MODE = 23,
+  VM_BLOCK_DUMP = 24,
+  VM_HUGETLB_GROUP = 25,
+  VM_VFS_CACHE_PRESSURE = 26,
+  VM_LEGACY_VA_LAYOUT = 27,
+  VM_SWAP_TOKEN_TIMEOUT = 28,
+  VM_DROP_PAGECACHE = 29,
+  VM_PERCPU_PAGELIST_FRACTION = 30,
+  VM_ZONE_RECLAIM_MODE = 31,
+  VM_MIN_UNMAPPED = 32,
+  VM_PANIC_ON_OOM = 33,
+  VM_VDSO_ENABLED = 34,
+  VM_MIN_SLAB = 35,
+};
+enum {
+  NET_CORE = 1,
+  NET_ETHER = 2,
+  NET_802 = 3,
+  NET_UNIX = 4,
+  NET_IPV4 = 5,
+  NET_IPX = 6,
+  NET_ATALK = 7,
+  NET_NETROM = 8,
+  NET_AX25 = 9,
+  NET_BRIDGE = 10,
+  NET_ROSE = 11,
+  NET_IPV6 = 12,
+  NET_X25 = 13,
+  NET_TR = 14,
+  NET_DECNET = 15,
+  NET_ECONET = 16,
+  NET_SCTP = 17,
+  NET_LLC = 18,
+  NET_NETFILTER = 19,
+  NET_DCCP = 20,
+  NET_IRDA = 412,
+};
+enum {
+  RANDOM_POOLSIZE = 1,
+  RANDOM_ENTROPY_COUNT = 2,
+  RANDOM_READ_THRESH = 3,
+  RANDOM_WRITE_THRESH = 4,
+  RANDOM_BOOT_ID = 5,
+  RANDOM_UUID = 6
+};
+enum {
+  PTY_MAX = 1,
+  PTY_NR = 2
+};
+enum {
+  BUS_ISA_MEM_BASE = 1,
+  BUS_ISA_PORT_BASE = 2,
+  BUS_ISA_PORT_SHIFT = 3
+};
+enum {
+  NET_CORE_WMEM_MAX = 1,
+  NET_CORE_RMEM_MAX = 2,
+  NET_CORE_WMEM_DEFAULT = 3,
+  NET_CORE_RMEM_DEFAULT = 4,
+  NET_CORE_MAX_BACKLOG = 6,
+  NET_CORE_FASTROUTE = 7,
+  NET_CORE_MSG_COST = 8,
+  NET_CORE_MSG_BURST = 9,
+  NET_CORE_OPTMEM_MAX = 10,
+  NET_CORE_HOT_LIST_LENGTH = 11,
+  NET_CORE_DIVERT_VERSION = 12,
+  NET_CORE_NO_CONG_THRESH = 13,
+  NET_CORE_NO_CONG = 14,
+  NET_CORE_LO_CONG = 15,
+  NET_CORE_MOD_CONG = 16,
+  NET_CORE_DEV_WEIGHT = 17,
+  NET_CORE_SOMAXCONN = 18,
+  NET_CORE_BUDGET = 19,
+  NET_CORE_AEVENT_ETIME = 20,
+  NET_CORE_AEVENT_RSEQTH = 21,
+  NET_CORE_WARNINGS = 22,
+};
+enum {
+  NET_UNIX_DESTROY_DELAY = 1,
+  NET_UNIX_DELETE_DELAY = 2,
+  NET_UNIX_MAX_DGRAM_QLEN = 3,
+};
+enum {
+  NET_NF_CONNTRACK_MAX = 1,
+  NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT = 2,
+  NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV = 3,
+  NET_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED = 4,
+  NET_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT = 5,
+  NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT = 6,
+  NET_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK = 7,
+  NET_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT = 8,
+  NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE = 9,
+  NET_NF_CONNTRACK_UDP_TIMEOUT = 10,
+  NET_NF_CONNTRACK_UDP_TIMEOUT_STREAM = 11,
+  NET_NF_CONNTRACK_ICMP_TIMEOUT = 12,
+  NET_NF_CONNTRACK_GENERIC_TIMEOUT = 13,
+  NET_NF_CONNTRACK_BUCKETS = 14,
+  NET_NF_CONNTRACK_LOG_INVALID = 15,
+  NET_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS = 16,
+  NET_NF_CONNTRACK_TCP_LOOSE = 17,
+  NET_NF_CONNTRACK_TCP_BE_LIBERAL = 18,
+  NET_NF_CONNTRACK_TCP_MAX_RETRANS = 19,
+  NET_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED = 20,
+  NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT = 21,
+  NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED = 22,
+  NET_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED = 23,
+  NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT = 24,
+  NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD = 25,
+  NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT = 26,
+  NET_NF_CONNTRACK_COUNT = 27,
+  NET_NF_CONNTRACK_ICMPV6_TIMEOUT = 28,
+  NET_NF_CONNTRACK_FRAG6_TIMEOUT = 29,
+  NET_NF_CONNTRACK_FRAG6_LOW_THRESH = 30,
+  NET_NF_CONNTRACK_FRAG6_HIGH_THRESH = 31,
+  NET_NF_CONNTRACK_CHECKSUM = 32,
+};
+enum {
+  NET_IPV4_FORWARD = 8,
+  NET_IPV4_DYNADDR = 9,
+  NET_IPV4_CONF = 16,
+  NET_IPV4_NEIGH = 17,
+  NET_IPV4_ROUTE = 18,
+  NET_IPV4_FIB_HASH = 19,
+  NET_IPV4_NETFILTER = 20,
+  NET_IPV4_TCP_TIMESTAMPS = 33,
+  NET_IPV4_TCP_WINDOW_SCALING = 34,
+  NET_IPV4_TCP_SACK = 35,
+  NET_IPV4_TCP_RETRANS_COLLAPSE = 36,
+  NET_IPV4_DEFAULT_TTL = 37,
+  NET_IPV4_AUTOCONFIG = 38,
+  NET_IPV4_NO_PMTU_DISC = 39,
+  NET_IPV4_TCP_SYN_RETRIES = 40,
+  NET_IPV4_IPFRAG_HIGH_THRESH = 41,
+  NET_IPV4_IPFRAG_LOW_THRESH = 42,
+  NET_IPV4_IPFRAG_TIME = 43,
+  NET_IPV4_TCP_MAX_KA_PROBES = 44,
+  NET_IPV4_TCP_KEEPALIVE_TIME = 45,
+  NET_IPV4_TCP_KEEPALIVE_PROBES = 46,
+  NET_IPV4_TCP_RETRIES1 = 47,
+  NET_IPV4_TCP_RETRIES2 = 48,
+  NET_IPV4_TCP_FIN_TIMEOUT = 49,
+  NET_IPV4_IP_MASQ_DEBUG = 50,
+  NET_TCP_SYNCOOKIES = 51,
+  NET_TCP_STDURG = 52,
+  NET_TCP_RFC1337 = 53,
+  NET_TCP_SYN_TAILDROP = 54,
+  NET_TCP_MAX_SYN_BACKLOG = 55,
+  NET_IPV4_LOCAL_PORT_RANGE = 56,
+  NET_IPV4_ICMP_ECHO_IGNORE_ALL = 57,
+  NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS = 58,
+  NET_IPV4_ICMP_SOURCEQUENCH_RATE = 59,
+  NET_IPV4_ICMP_DESTUNREACH_RATE = 60,
+  NET_IPV4_ICMP_TIMEEXCEED_RATE = 61,
+  NET_IPV4_ICMP_PARAMPROB_RATE = 62,
+  NET_IPV4_ICMP_ECHOREPLY_RATE = 63,
+  NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES = 64,
+  NET_IPV4_IGMP_MAX_MEMBERSHIPS = 65,
+  NET_TCP_TW_RECYCLE = 66,
+  NET_IPV4_ALWAYS_DEFRAG = 67,
+  NET_IPV4_TCP_KEEPALIVE_INTVL = 68,
+  NET_IPV4_INET_PEER_THRESHOLD = 69,
+  NET_IPV4_INET_PEER_MINTTL = 70,
+  NET_IPV4_INET_PEER_MAXTTL = 71,
+  NET_IPV4_INET_PEER_GC_MINTIME = 72,
+  NET_IPV4_INET_PEER_GC_MAXTIME = 73,
+  NET_TCP_ORPHAN_RETRIES = 74,
+  NET_TCP_ABORT_ON_OVERFLOW = 75,
+  NET_TCP_SYNACK_RETRIES = 76,
+  NET_TCP_MAX_ORPHANS = 77,
+  NET_TCP_MAX_TW_BUCKETS = 78,
+  NET_TCP_FACK = 79,
+  NET_TCP_REORDERING = 80,
+  NET_TCP_ECN = 81,
+  NET_TCP_DSACK = 82,
+  NET_TCP_MEM = 83,
+  NET_TCP_WMEM = 84,
+  NET_TCP_RMEM = 85,
+  NET_TCP_APP_WIN = 86,
+  NET_TCP_ADV_WIN_SCALE = 87,
+  NET_IPV4_NONLOCAL_BIND = 88,
+  NET_IPV4_ICMP_RATELIMIT = 89,
+  NET_IPV4_ICMP_RATEMASK = 90,
+  NET_TCP_TW_REUSE = 91,
+  NET_TCP_FRTO = 92,
+  NET_TCP_LOW_LATENCY = 93,
+  NET_IPV4_IPFRAG_SECRET_INTERVAL = 94,
+  NET_IPV4_IGMP_MAX_MSF = 96,
+  NET_TCP_NO_METRICS_SAVE = 97,
+  NET_TCP_DEFAULT_WIN_SCALE = 105,
+  NET_TCP_MODERATE_RCVBUF = 106,
+  NET_TCP_TSO_WIN_DIVISOR = 107,
+  NET_TCP_BIC_BETA = 108,
+  NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR = 109,
+  NET_TCP_CONG_CONTROL = 110,
+  NET_TCP_ABC = 111,
+  NET_IPV4_IPFRAG_MAX_DIST = 112,
+  NET_TCP_MTU_PROBING = 113,
+  NET_TCP_BASE_MSS = 114,
+  NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS = 115,
+  NET_TCP_DMA_COPYBREAK = 116,
+  NET_TCP_SLOW_START_AFTER_IDLE = 117,
+  NET_CIPSOV4_CACHE_ENABLE = 118,
+  NET_CIPSOV4_CACHE_BUCKET_SIZE = 119,
+  NET_CIPSOV4_RBM_OPTFMT = 120,
+  NET_CIPSOV4_RBM_STRICTVALID = 121,
+  NET_TCP_AVAIL_CONG_CONTROL = 122,
+  NET_TCP_ALLOWED_CONG_CONTROL = 123,
+  NET_TCP_MAX_SSTHRESH = 124,
+  NET_TCP_FRTO_RESPONSE = 125,
+};
+enum {
+  NET_IPV4_ROUTE_FLUSH = 1,
+  NET_IPV4_ROUTE_MIN_DELAY = 2,
+  NET_IPV4_ROUTE_MAX_DELAY = 3,
+  NET_IPV4_ROUTE_GC_THRESH = 4,
+  NET_IPV4_ROUTE_MAX_SIZE = 5,
+  NET_IPV4_ROUTE_GC_MIN_INTERVAL = 6,
+  NET_IPV4_ROUTE_GC_TIMEOUT = 7,
+  NET_IPV4_ROUTE_GC_INTERVAL = 8,
+  NET_IPV4_ROUTE_REDIRECT_LOAD = 9,
+  NET_IPV4_ROUTE_REDIRECT_NUMBER = 10,
+  NET_IPV4_ROUTE_REDIRECT_SILENCE = 11,
+  NET_IPV4_ROUTE_ERROR_COST = 12,
+  NET_IPV4_ROUTE_ERROR_BURST = 13,
+  NET_IPV4_ROUTE_GC_ELASTICITY = 14,
+  NET_IPV4_ROUTE_MTU_EXPIRES = 15,
+  NET_IPV4_ROUTE_MIN_PMTU = 16,
+  NET_IPV4_ROUTE_MIN_ADVMSS = 17,
+  NET_IPV4_ROUTE_SECRET_INTERVAL = 18,
+  NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS = 19,
+};
+enum {
+  NET_PROTO_CONF_ALL = - 2,
+  NET_PROTO_CONF_DEFAULT = - 3
+};
+enum {
+  NET_IPV4_CONF_FORWARDING = 1,
+  NET_IPV4_CONF_MC_FORWARDING = 2,
+  NET_IPV4_CONF_PROXY_ARP = 3,
+  NET_IPV4_CONF_ACCEPT_REDIRECTS = 4,
+  NET_IPV4_CONF_SECURE_REDIRECTS = 5,
+  NET_IPV4_CONF_SEND_REDIRECTS = 6,
+  NET_IPV4_CONF_SHARED_MEDIA = 7,
+  NET_IPV4_CONF_RP_FILTER = 8,
+  NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE = 9,
+  NET_IPV4_CONF_BOOTP_RELAY = 10,
+  NET_IPV4_CONF_LOG_MARTIANS = 11,
+  NET_IPV4_CONF_TAG = 12,
+  NET_IPV4_CONF_ARPFILTER = 13,
+  NET_IPV4_CONF_MEDIUM_ID = 14,
+  NET_IPV4_CONF_NOXFRM = 15,
+  NET_IPV4_CONF_NOPOLICY = 16,
+  NET_IPV4_CONF_FORCE_IGMP_VERSION = 17,
+  NET_IPV4_CONF_ARP_ANNOUNCE = 18,
+  NET_IPV4_CONF_ARP_IGNORE = 19,
+  NET_IPV4_CONF_PROMOTE_SECONDARIES = 20,
+  NET_IPV4_CONF_ARP_ACCEPT = 21,
+  NET_IPV4_CONF_ARP_NOTIFY = 22,
+  NET_IPV4_CONF_ARP_EVICT_NOCARRIER = 23,
+};
+enum {
+  NET_IPV4_NF_CONNTRACK_MAX = 1,
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT = 2,
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV = 3,
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED = 4,
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT = 5,
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT = 6,
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK = 7,
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT = 8,
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE = 9,
+  NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT = 10,
+  NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT_STREAM = 11,
+  NET_IPV4_NF_CONNTRACK_ICMP_TIMEOUT = 12,
+  NET_IPV4_NF_CONNTRACK_GENERIC_TIMEOUT = 13,
+  NET_IPV4_NF_CONNTRACK_BUCKETS = 14,
+  NET_IPV4_NF_CONNTRACK_LOG_INVALID = 15,
+  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS = 16,
+  NET_IPV4_NF_CONNTRACK_TCP_LOOSE = 17,
+  NET_IPV4_NF_CONNTRACK_TCP_BE_LIBERAL = 18,
+  NET_IPV4_NF_CONNTRACK_TCP_MAX_RETRANS = 19,
+  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED = 20,
+  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT = 21,
+  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED = 22,
+  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED = 23,
+  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT = 24,
+  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD = 25,
+  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT = 26,
+  NET_IPV4_NF_CONNTRACK_COUNT = 27,
+  NET_IPV4_NF_CONNTRACK_CHECKSUM = 28,
+};
+enum {
+  NET_IPV6_CONF = 16,
+  NET_IPV6_NEIGH = 17,
+  NET_IPV6_ROUTE = 18,
+  NET_IPV6_ICMP = 19,
+  NET_IPV6_BINDV6ONLY = 20,
+  NET_IPV6_IP6FRAG_HIGH_THRESH = 21,
+  NET_IPV6_IP6FRAG_LOW_THRESH = 22,
+  NET_IPV6_IP6FRAG_TIME = 23,
+  NET_IPV6_IP6FRAG_SECRET_INTERVAL = 24,
+  NET_IPV6_MLD_MAX_MSF = 25,
+};
+enum {
+  NET_IPV6_ROUTE_FLUSH = 1,
+  NET_IPV6_ROUTE_GC_THRESH = 2,
+  NET_IPV6_ROUTE_MAX_SIZE = 3,
+  NET_IPV6_ROUTE_GC_MIN_INTERVAL = 4,
+  NET_IPV6_ROUTE_GC_TIMEOUT = 5,
+  NET_IPV6_ROUTE_GC_INTERVAL = 6,
+  NET_IPV6_ROUTE_GC_ELASTICITY = 7,
+  NET_IPV6_ROUTE_MTU_EXPIRES = 8,
+  NET_IPV6_ROUTE_MIN_ADVMSS = 9,
+  NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS = 10
+};
+enum {
+  NET_IPV6_FORWARDING = 1,
+  NET_IPV6_HOP_LIMIT = 2,
+  NET_IPV6_MTU = 3,
+  NET_IPV6_ACCEPT_RA = 4,
+  NET_IPV6_ACCEPT_REDIRECTS = 5,
+  NET_IPV6_AUTOCONF = 6,
+  NET_IPV6_DAD_TRANSMITS = 7,
+  NET_IPV6_RTR_SOLICITS = 8,
+  NET_IPV6_RTR_SOLICIT_INTERVAL = 9,
+  NET_IPV6_RTR_SOLICIT_DELAY = 10,
+  NET_IPV6_USE_TEMPADDR = 11,
+  NET_IPV6_TEMP_VALID_LFT = 12,
+  NET_IPV6_TEMP_PREFERED_LFT = 13,
+  NET_IPV6_REGEN_MAX_RETRY = 14,
+  NET_IPV6_MAX_DESYNC_FACTOR = 15,
+  NET_IPV6_MAX_ADDRESSES = 16,
+  NET_IPV6_FORCE_MLD_VERSION = 17,
+  NET_IPV6_ACCEPT_RA_DEFRTR = 18,
+  NET_IPV6_ACCEPT_RA_PINFO = 19,
+  NET_IPV6_ACCEPT_RA_RTR_PREF = 20,
+  NET_IPV6_RTR_PROBE_INTERVAL = 21,
+  NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN = 22,
+  NET_IPV6_PROXY_NDP = 23,
+  NET_IPV6_ACCEPT_SOURCE_ROUTE = 25,
+  NET_IPV6_ACCEPT_RA_FROM_LOCAL = 26,
+  NET_IPV6_ACCEPT_RA_RT_INFO_MIN_PLEN = 27,
+  NET_IPV6_RA_DEFRTR_METRIC = 28,
+  __NET_IPV6_MAX
+};
+enum {
+  NET_IPV6_ICMP_RATELIMIT = 1,
+  NET_IPV6_ICMP_ECHO_IGNORE_ALL = 2
+};
+enum {
+  NET_NEIGH_MCAST_SOLICIT = 1,
+  NET_NEIGH_UCAST_SOLICIT = 2,
+  NET_NEIGH_APP_SOLICIT = 3,
+  NET_NEIGH_RETRANS_TIME = 4,
+  NET_NEIGH_REACHABLE_TIME = 5,
+  NET_NEIGH_DELAY_PROBE_TIME = 6,
+  NET_NEIGH_GC_STALE_TIME = 7,
+  NET_NEIGH_UNRES_QLEN = 8,
+  NET_NEIGH_PROXY_QLEN = 9,
+  NET_NEIGH_ANYCAST_DELAY = 10,
+  NET_NEIGH_PROXY_DELAY = 11,
+  NET_NEIGH_LOCKTIME = 12,
+  NET_NEIGH_GC_INTERVAL = 13,
+  NET_NEIGH_GC_THRESH1 = 14,
+  NET_NEIGH_GC_THRESH2 = 15,
+  NET_NEIGH_GC_THRESH3 = 16,
+  NET_NEIGH_RETRANS_TIME_MS = 17,
+  NET_NEIGH_REACHABLE_TIME_MS = 18,
+};
+enum {
+  NET_DCCP_DEFAULT = 1,
+};
+enum {
+  NET_IPX_PPROP_BROADCASTING = 1,
+  NET_IPX_FORWARDING = 2
+};
+enum {
+  NET_LLC2 = 1,
+  NET_LLC_STATION = 2,
+};
+enum {
+  NET_LLC2_TIMEOUT = 1,
+};
+enum {
+  NET_LLC_STATION_ACK_TIMEOUT = 1,
+};
+enum {
+  NET_LLC2_ACK_TIMEOUT = 1,
+  NET_LLC2_P_TIMEOUT = 2,
+  NET_LLC2_REJ_TIMEOUT = 3,
+  NET_LLC2_BUSY_TIMEOUT = 4,
+};
+enum {
+  NET_ATALK_AARP_EXPIRY_TIME = 1,
+  NET_ATALK_AARP_TICK_TIME = 2,
+  NET_ATALK_AARP_RETRANSMIT_LIMIT = 3,
+  NET_ATALK_AARP_RESOLVE_TIME = 4
+};
+enum {
+  NET_NETROM_DEFAULT_PATH_QUALITY = 1,
+  NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER = 2,
+  NET_NETROM_NETWORK_TTL_INITIALISER = 3,
+  NET_NETROM_TRANSPORT_TIMEOUT = 4,
+  NET_NETROM_TRANSPORT_MAXIMUM_TRIES = 5,
+  NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY = 6,
+  NET_NETROM_TRANSPORT_BUSY_DELAY = 7,
+  NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE = 8,
+  NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT = 9,
+  NET_NETROM_ROUTING_CONTROL = 10,
+  NET_NETROM_LINK_FAILS_COUNT = 11,
+  NET_NETROM_RESET = 12
+};
+enum {
+  NET_AX25_IP_DEFAULT_MODE = 1,
+  NET_AX25_DEFAULT_MODE = 2,
+  NET_AX25_BACKOFF_TYPE = 3,
+  NET_AX25_CONNECT_MODE = 4,
+  NET_AX25_STANDARD_WINDOW = 5,
+  NET_AX25_EXTENDED_WINDOW = 6,
+  NET_AX25_T1_TIMEOUT = 7,
+  NET_AX25_T2_TIMEOUT = 8,
+  NET_AX25_T3_TIMEOUT = 9,
+  NET_AX25_IDLE_TIMEOUT = 10,
+  NET_AX25_N2 = 11,
+  NET_AX25_PACLEN = 12,
+  NET_AX25_PROTOCOL = 13,
+  NET_AX25_DAMA_SLAVE_TIMEOUT = 14
+};
+enum {
+  NET_ROSE_RESTART_REQUEST_TIMEOUT = 1,
+  NET_ROSE_CALL_REQUEST_TIMEOUT = 2,
+  NET_ROSE_RESET_REQUEST_TIMEOUT = 3,
+  NET_ROSE_CLEAR_REQUEST_TIMEOUT = 4,
+  NET_ROSE_ACK_HOLD_BACK_TIMEOUT = 5,
+  NET_ROSE_ROUTING_CONTROL = 6,
+  NET_ROSE_LINK_FAIL_TIMEOUT = 7,
+  NET_ROSE_MAX_VCS = 8,
+  NET_ROSE_WINDOW_SIZE = 9,
+  NET_ROSE_NO_ACTIVITY_TIMEOUT = 10
+};
+enum {
+  NET_X25_RESTART_REQUEST_TIMEOUT = 1,
+  NET_X25_CALL_REQUEST_TIMEOUT = 2,
+  NET_X25_RESET_REQUEST_TIMEOUT = 3,
+  NET_X25_CLEAR_REQUEST_TIMEOUT = 4,
+  NET_X25_ACK_HOLD_BACK_TIMEOUT = 5,
+  NET_X25_FORWARD = 6
+};
+enum {
+  NET_TR_RIF_TIMEOUT = 1
+};
+enum {
+  NET_DECNET_NODE_TYPE = 1,
+  NET_DECNET_NODE_ADDRESS = 2,
+  NET_DECNET_NODE_NAME = 3,
+  NET_DECNET_DEFAULT_DEVICE = 4,
+  NET_DECNET_TIME_WAIT = 5,
+  NET_DECNET_DN_COUNT = 6,
+  NET_DECNET_DI_COUNT = 7,
+  NET_DECNET_DR_COUNT = 8,
+  NET_DECNET_DST_GC_INTERVAL = 9,
+  NET_DECNET_CONF = 10,
+  NET_DECNET_NO_FC_MAX_CWND = 11,
+  NET_DECNET_MEM = 12,
+  NET_DECNET_RMEM = 13,
+  NET_DECNET_WMEM = 14,
+  NET_DECNET_DEBUG_LEVEL = 255
+};
+enum {
+  NET_DECNET_CONF_LOOPBACK = - 2,
+  NET_DECNET_CONF_DDCMP = - 3,
+  NET_DECNET_CONF_PPP = - 4,
+  NET_DECNET_CONF_X25 = - 5,
+  NET_DECNET_CONF_GRE = - 6,
+  NET_DECNET_CONF_ETHER = - 7
+};
+enum {
+  NET_DECNET_CONF_DEV_PRIORITY = 1,
+  NET_DECNET_CONF_DEV_T1 = 2,
+  NET_DECNET_CONF_DEV_T2 = 3,
+  NET_DECNET_CONF_DEV_T3 = 4,
+  NET_DECNET_CONF_DEV_FORWARDING = 5,
+  NET_DECNET_CONF_DEV_BLKSIZE = 6,
+  NET_DECNET_CONF_DEV_STATE = 7
+};
+enum {
+  NET_SCTP_RTO_INITIAL = 1,
+  NET_SCTP_RTO_MIN = 2,
+  NET_SCTP_RTO_MAX = 3,
+  NET_SCTP_RTO_ALPHA = 4,
+  NET_SCTP_RTO_BETA = 5,
+  NET_SCTP_VALID_COOKIE_LIFE = 6,
+  NET_SCTP_ASSOCIATION_MAX_RETRANS = 7,
+  NET_SCTP_PATH_MAX_RETRANS = 8,
+  NET_SCTP_MAX_INIT_RETRANSMITS = 9,
+  NET_SCTP_HB_INTERVAL = 10,
+  NET_SCTP_PRESERVE_ENABLE = 11,
+  NET_SCTP_MAX_BURST = 12,
+  NET_SCTP_ADDIP_ENABLE = 13,
+  NET_SCTP_PRSCTP_ENABLE = 14,
+  NET_SCTP_SNDBUF_POLICY = 15,
+  NET_SCTP_SACK_TIMEOUT = 16,
+  NET_SCTP_RCVBUF_POLICY = 17,
+};
+enum {
+  NET_BRIDGE_NF_CALL_ARPTABLES = 1,
+  NET_BRIDGE_NF_CALL_IPTABLES = 2,
+  NET_BRIDGE_NF_CALL_IP6TABLES = 3,
+  NET_BRIDGE_NF_FILTER_VLAN_TAGGED = 4,
+  NET_BRIDGE_NF_FILTER_PPPOE_TAGGED = 5,
+};
+enum {
+  FS_NRINODE = 1,
+  FS_STATINODE = 2,
+  FS_MAXINODE = 3,
+  FS_NRDQUOT = 4,
+  FS_MAXDQUOT = 5,
+  FS_NRFILE = 6,
+  FS_MAXFILE = 7,
+  FS_DENTRY = 8,
+  FS_NRSUPER = 9,
+  FS_MAXSUPER = 10,
+  FS_OVERFLOWUID = 11,
+  FS_OVERFLOWGID = 12,
+  FS_LEASES = 13,
+  FS_DIR_NOTIFY = 14,
+  FS_LEASE_TIME = 15,
+  FS_DQSTATS = 16,
+  FS_XFS = 17,
+  FS_AIO_NR = 18,
+  FS_AIO_MAX_NR = 19,
+  FS_INOTIFY = 20,
+  FS_OCFS2 = 988,
+};
+enum {
+  FS_DQ_LOOKUPS = 1,
+  FS_DQ_DROPS = 2,
+  FS_DQ_READS = 3,
+  FS_DQ_WRITES = 4,
+  FS_DQ_CACHE_HITS = 5,
+  FS_DQ_ALLOCATED = 6,
+  FS_DQ_FREE = 7,
+  FS_DQ_SYNCS = 8,
+  FS_DQ_WARNINGS = 9,
+};
+enum {
+  DEV_CDROM = 1,
+  DEV_HWMON = 2,
+  DEV_PARPORT = 3,
+  DEV_RAID = 4,
+  DEV_MAC_HID = 5,
+  DEV_SCSI = 6,
+  DEV_IPMI = 7,
+};
+enum {
+  DEV_CDROM_INFO = 1,
+  DEV_CDROM_AUTOCLOSE = 2,
+  DEV_CDROM_AUTOEJECT = 3,
+  DEV_CDROM_DEBUG = 4,
+  DEV_CDROM_LOCK = 5,
+  DEV_CDROM_CHECK_MEDIA = 6
+};
+enum {
+  DEV_PARPORT_DEFAULT = - 3
+};
+enum {
+  DEV_RAID_SPEED_LIMIT_MIN = 1,
+  DEV_RAID_SPEED_LIMIT_MAX = 2
+};
+enum {
+  DEV_PARPORT_DEFAULT_TIMESLICE = 1,
+  DEV_PARPORT_DEFAULT_SPINTIME = 2
+};
+enum {
+  DEV_PARPORT_SPINTIME = 1,
+  DEV_PARPORT_BASE_ADDR = 2,
+  DEV_PARPORT_IRQ = 3,
+  DEV_PARPORT_DMA = 4,
+  DEV_PARPORT_MODES = 5,
+  DEV_PARPORT_DEVICES = 6,
+  DEV_PARPORT_AUTOPROBE = 16
+};
+enum {
+  DEV_PARPORT_DEVICES_ACTIVE = - 3,
+};
+enum {
+  DEV_PARPORT_DEVICE_TIMESLICE = 1,
+};
+enum {
+  DEV_MAC_HID_KEYBOARD_SENDS_LINUX_KEYCODES = 1,
+  DEV_MAC_HID_KEYBOARD_LOCK_KEYCODES = 2,
+  DEV_MAC_HID_MOUSE_BUTTON_EMULATION = 3,
+  DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE = 4,
+  DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE = 5,
+  DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES = 6
+};
+enum {
+  DEV_SCSI_LOGGING_LEVEL = 1,
+};
+enum {
+  DEV_IPMI_POWEROFF_POWERCYCLE = 1,
+};
+enum {
+  ABI_DEFHANDLER_COFF = 1,
+  ABI_DEFHANDLER_ELF = 2,
+  ABI_DEFHANDLER_LCALL7 = 3,
+  ABI_DEFHANDLER_LIBCSO = 4,
+  ABI_TRACE = 5,
+  ABI_FAKE_UTSNAME = 6,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/sysinfo.h b/i686-linux-musl/include/linux/sysinfo.h
new file mode 100644
index 0000000..6501a8c
--- /dev/null
+++ b/i686-linux-musl/include/linux/sysinfo.h
@@ -0,0 +1,39 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_SYSINFO_H
+#define _LINUX_SYSINFO_H
+#include <linux/types.h>
+#define SI_LOAD_SHIFT 16
+struct sysinfo {
+  __kernel_long_t uptime;
+  __kernel_ulong_t loads[3];
+  __kernel_ulong_t totalram;
+  __kernel_ulong_t freeram;
+  __kernel_ulong_t sharedram;
+  __kernel_ulong_t bufferram;
+  __kernel_ulong_t totalswap;
+  __kernel_ulong_t freeswap;
+  __u16 procs;
+  __u16 pad;
+  __kernel_ulong_t totalhigh;
+  __kernel_ulong_t freehigh;
+  __u32 mem_unit;
+  char _f[20 - 2 * sizeof(__kernel_ulong_t) - sizeof(__u32)];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/target_core_user.h b/i686-linux-musl/include/linux/target_core_user.h
new file mode 100644
index 0000000..dcba00e
--- /dev/null
+++ b/i686-linux-musl/include/linux/target_core_user.h
@@ -0,0 +1,121 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __TARGET_CORE_USER_H
+#define __TARGET_CORE_USER_H
+#include <linux/types.h>
+#include <linux/uio.h>
+#define TCMU_VERSION "2.0"
+#define TCMU_MAILBOX_VERSION 2
+#define ALIGN_SIZE 64
+#define TCMU_MAILBOX_FLAG_CAP_OOOC (1 << 0)
+#define TCMU_MAILBOX_FLAG_CAP_READ_LEN (1 << 1)
+#define TCMU_MAILBOX_FLAG_CAP_TMR (1 << 2)
+#define TCMU_MAILBOX_FLAG_CAP_KEEP_BUF (1 << 3)
+struct tcmu_mailbox {
+  __u16 version;
+  __u16 flags;
+  __u32 cmdr_off;
+  __u32 cmdr_size;
+  __u32 cmd_head;
+  __u32 cmd_tail __attribute__((__aligned__(ALIGN_SIZE)));
+} __packed;
+enum tcmu_opcode {
+  TCMU_OP_PAD = 0,
+  TCMU_OP_CMD,
+  TCMU_OP_TMR,
+};
+struct tcmu_cmd_entry_hdr {
+  __u32 len_op;
+  __u16 cmd_id;
+  __u8 kflags;
+#define TCMU_UFLAG_UNKNOWN_OP 0x1
+#define TCMU_UFLAG_READ_LEN 0x2
+#define TCMU_UFLAG_KEEP_BUF 0x4
+  __u8 uflags;
+} __packed;
+#define TCMU_OP_MASK 0x7
+#define TCMU_SENSE_BUFFERSIZE 96
+struct tcmu_cmd_entry {
+  struct tcmu_cmd_entry_hdr hdr;
+  union {
+    struct {
+      __u32 iov_cnt;
+      __u32 iov_bidi_cnt;
+      __u32 iov_dif_cnt;
+      __u64 cdb_off;
+      __u64 __pad1;
+      __u64 __pad2;
+      struct iovec iov[0];
+    } req;
+    struct {
+      __u8 scsi_status;
+      __u8 __pad1;
+      __u16 __pad2;
+      __u32 read_len;
+      char sense_buffer[TCMU_SENSE_BUFFERSIZE];
+    } rsp;
+  };
+} __packed;
+struct tcmu_tmr_entry {
+  struct tcmu_cmd_entry_hdr hdr;
+#define TCMU_TMR_UNKNOWN 0
+#define TCMU_TMR_ABORT_TASK 1
+#define TCMU_TMR_ABORT_TASK_SET 2
+#define TCMU_TMR_CLEAR_ACA 3
+#define TCMU_TMR_CLEAR_TASK_SET 4
+#define TCMU_TMR_LUN_RESET 5
+#define TCMU_TMR_TARGET_WARM_RESET 6
+#define TCMU_TMR_TARGET_COLD_RESET 7
+#define TCMU_TMR_LUN_RESET_PRO 128
+  __u8 tmr_type;
+  __u8 __pad1;
+  __u16 __pad2;
+  __u32 cmd_cnt;
+  __u64 __pad3;
+  __u64 __pad4;
+  __u16 cmd_ids[0];
+} __packed;
+#define TCMU_OP_ALIGN_SIZE sizeof(__u64)
+enum tcmu_genl_cmd {
+  TCMU_CMD_UNSPEC,
+  TCMU_CMD_ADDED_DEVICE,
+  TCMU_CMD_REMOVED_DEVICE,
+  TCMU_CMD_RECONFIG_DEVICE,
+  TCMU_CMD_ADDED_DEVICE_DONE,
+  TCMU_CMD_REMOVED_DEVICE_DONE,
+  TCMU_CMD_RECONFIG_DEVICE_DONE,
+  TCMU_CMD_SET_FEATURES,
+  __TCMU_CMD_MAX,
+};
+#define TCMU_CMD_MAX (__TCMU_CMD_MAX - 1)
+enum tcmu_genl_attr {
+  TCMU_ATTR_UNSPEC,
+  TCMU_ATTR_DEVICE,
+  TCMU_ATTR_MINOR,
+  TCMU_ATTR_PAD,
+  TCMU_ATTR_DEV_CFG,
+  TCMU_ATTR_DEV_SIZE,
+  TCMU_ATTR_WRITECACHE,
+  TCMU_ATTR_CMD_STATUS,
+  TCMU_ATTR_DEVICE_ID,
+  TCMU_ATTR_SUPP_KERN_CMD_REPLY,
+  __TCMU_ATTR_MAX,
+};
+#define TCMU_ATTR_MAX (__TCMU_ATTR_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/taskstats.h b/i686-linux-musl/include/linux/taskstats.h
new file mode 100644
index 0000000..5f9d0cc
--- /dev/null
+++ b/i686-linux-musl/include/linux/taskstats.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_TASKSTATS_H
+#define _LINUX_TASKSTATS_H
+#include <linux/types.h>
+#define TASKSTATS_VERSION 10
+#define TS_COMM_LEN 32
+struct taskstats {
+  __u16 version;
+  __u32 ac_exitcode;
+  __u8 ac_flag;
+  __u8 ac_nice;
+  __u64 cpu_count __attribute__((aligned(8)));
+  __u64 cpu_delay_total;
+  __u64 blkio_count;
+  __u64 blkio_delay_total;
+  __u64 swapin_count;
+  __u64 swapin_delay_total;
+  __u64 cpu_run_real_total;
+  __u64 cpu_run_virtual_total;
+  char ac_comm[TS_COMM_LEN];
+  __u8 ac_sched __attribute__((aligned(8)));
+  __u8 ac_pad[3];
+  __u32 ac_uid __attribute__((aligned(8)));
+  __u32 ac_gid;
+  __u32 ac_pid;
+  __u32 ac_ppid;
+  __u32 ac_btime;
+  __u64 ac_etime __attribute__((aligned(8)));
+  __u64 ac_utime;
+  __u64 ac_stime;
+  __u64 ac_minflt;
+  __u64 ac_majflt;
+  __u64 coremem;
+  __u64 virtmem;
+  __u64 hiwater_rss;
+  __u64 hiwater_vm;
+  __u64 read_char;
+  __u64 write_char;
+  __u64 read_syscalls;
+  __u64 write_syscalls;
+#define TASKSTATS_HAS_IO_ACCOUNTING
+  __u64 read_bytes;
+  __u64 write_bytes;
+  __u64 cancelled_write_bytes;
+  __u64 nvcsw;
+  __u64 nivcsw;
+  __u64 ac_utimescaled;
+  __u64 ac_stimescaled;
+  __u64 cpu_scaled_run_real_total;
+  __u64 freepages_count;
+  __u64 freepages_delay_total;
+  __u64 thrashing_count;
+  __u64 thrashing_delay_total;
+  __u64 ac_btime64;
+};
+enum {
+  TASKSTATS_CMD_UNSPEC = 0,
+  TASKSTATS_CMD_GET,
+  TASKSTATS_CMD_NEW,
+  __TASKSTATS_CMD_MAX,
+};
+#define TASKSTATS_CMD_MAX (__TASKSTATS_CMD_MAX - 1)
+enum {
+  TASKSTATS_TYPE_UNSPEC = 0,
+  TASKSTATS_TYPE_PID,
+  TASKSTATS_TYPE_TGID,
+  TASKSTATS_TYPE_STATS,
+  TASKSTATS_TYPE_AGGR_PID,
+  TASKSTATS_TYPE_AGGR_TGID,
+  TASKSTATS_TYPE_NULL,
+  __TASKSTATS_TYPE_MAX,
+};
+#define TASKSTATS_TYPE_MAX (__TASKSTATS_TYPE_MAX - 1)
+enum {
+  TASKSTATS_CMD_ATTR_UNSPEC = 0,
+  TASKSTATS_CMD_ATTR_PID,
+  TASKSTATS_CMD_ATTR_TGID,
+  TASKSTATS_CMD_ATTR_REGISTER_CPUMASK,
+  TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK,
+  __TASKSTATS_CMD_ATTR_MAX,
+};
+#define TASKSTATS_CMD_ATTR_MAX (__TASKSTATS_CMD_ATTR_MAX - 1)
+#define TASKSTATS_GENL_NAME "TASKSTATS"
+#define TASKSTATS_GENL_VERSION 0x1
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_bpf.h b/i686-linux-musl/include/linux/tc_act/tc_bpf.h
new file mode 100644
index 0000000..48094d4
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_bpf.h
@@ -0,0 +1,39 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_BPF_H
+#define __LINUX_TC_BPF_H
+#include <linux/pkt_cls.h>
+struct tc_act_bpf {
+  tc_gen;
+};
+enum {
+  TCA_ACT_BPF_UNSPEC,
+  TCA_ACT_BPF_TM,
+  TCA_ACT_BPF_PARMS,
+  TCA_ACT_BPF_OPS_LEN,
+  TCA_ACT_BPF_OPS,
+  TCA_ACT_BPF_FD,
+  TCA_ACT_BPF_NAME,
+  TCA_ACT_BPF_PAD,
+  TCA_ACT_BPF_TAG,
+  TCA_ACT_BPF_ID,
+  __TCA_ACT_BPF_MAX,
+};
+#define TCA_ACT_BPF_MAX (__TCA_ACT_BPF_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_connmark.h b/i686-linux-musl/include/linux/tc_act/tc_connmark.h
new file mode 100644
index 0000000..5fe979c
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_connmark.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_TC_CONNMARK_H
+#define __UAPI_TC_CONNMARK_H
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+struct tc_connmark {
+  tc_gen;
+  __u16 zone;
+};
+enum {
+  TCA_CONNMARK_UNSPEC,
+  TCA_CONNMARK_PARMS,
+  TCA_CONNMARK_TM,
+  TCA_CONNMARK_PAD,
+  __TCA_CONNMARK_MAX
+};
+#define TCA_CONNMARK_MAX (__TCA_CONNMARK_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_csum.h b/i686-linux-musl/include/linux/tc_act/tc_csum.h
new file mode 100644
index 0000000..1fcd00d
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_csum.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_CSUM_H
+#define __LINUX_TC_CSUM_H
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+enum {
+  TCA_CSUM_UNSPEC,
+  TCA_CSUM_PARMS,
+  TCA_CSUM_TM,
+  TCA_CSUM_PAD,
+  __TCA_CSUM_MAX
+};
+#define TCA_CSUM_MAX (__TCA_CSUM_MAX - 1)
+enum {
+  TCA_CSUM_UPDATE_FLAG_IPV4HDR = 1,
+  TCA_CSUM_UPDATE_FLAG_ICMP = 2,
+  TCA_CSUM_UPDATE_FLAG_IGMP = 4,
+  TCA_CSUM_UPDATE_FLAG_TCP = 8,
+  TCA_CSUM_UPDATE_FLAG_UDP = 16,
+  TCA_CSUM_UPDATE_FLAG_UDPLITE = 32,
+  TCA_CSUM_UPDATE_FLAG_SCTP = 64,
+};
+struct tc_csum {
+  tc_gen;
+  __u32 update_flags;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_ct.h b/i686-linux-musl/include/linux/tc_act/tc_ct.h
new file mode 100644
index 0000000..0443b95
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_ct.h
@@ -0,0 +1,52 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_TC_CT_H
+#define __UAPI_TC_CT_H
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+enum {
+  TCA_CT_UNSPEC,
+  TCA_CT_PARMS,
+  TCA_CT_TM,
+  TCA_CT_ACTION,
+  TCA_CT_ZONE,
+  TCA_CT_MARK,
+  TCA_CT_MARK_MASK,
+  TCA_CT_LABELS,
+  TCA_CT_LABELS_MASK,
+  TCA_CT_NAT_IPV4_MIN,
+  TCA_CT_NAT_IPV4_MAX,
+  TCA_CT_NAT_IPV6_MIN,
+  TCA_CT_NAT_IPV6_MAX,
+  TCA_CT_NAT_PORT_MIN,
+  TCA_CT_NAT_PORT_MAX,
+  TCA_CT_PAD,
+  __TCA_CT_MAX
+};
+#define TCA_CT_MAX (__TCA_CT_MAX - 1)
+#define TCA_CT_ACT_COMMIT (1 << 0)
+#define TCA_CT_ACT_FORCE (1 << 1)
+#define TCA_CT_ACT_CLEAR (1 << 2)
+#define TCA_CT_ACT_NAT (1 << 3)
+#define TCA_CT_ACT_NAT_SRC (1 << 4)
+#define TCA_CT_ACT_NAT_DST (1 << 5)
+struct tc_ct {
+  tc_gen;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_ctinfo.h b/i686-linux-musl/include/linux/tc_act/tc_ctinfo.h
new file mode 100644
index 0000000..18fdf60
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_ctinfo.h
@@ -0,0 +1,41 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_TC_CTINFO_H
+#define __UAPI_TC_CTINFO_H
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+struct tc_ctinfo {
+  tc_gen;
+};
+enum {
+  TCA_CTINFO_UNSPEC,
+  TCA_CTINFO_PAD,
+  TCA_CTINFO_TM,
+  TCA_CTINFO_ACT,
+  TCA_CTINFO_ZONE,
+  TCA_CTINFO_PARMS_DSCP_MASK,
+  TCA_CTINFO_PARMS_DSCP_STATEMASK,
+  TCA_CTINFO_PARMS_CPMARK_MASK,
+  TCA_CTINFO_STATS_DSCP_SET,
+  TCA_CTINFO_STATS_DSCP_ERROR,
+  TCA_CTINFO_STATS_CPMARK_SET,
+  __TCA_CTINFO_MAX
+};
+#define TCA_CTINFO_MAX (__TCA_CTINFO_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_defact.h b/i686-linux-musl/include/linux/tc_act/tc_defact.h
new file mode 100644
index 0000000..f3fb529
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_defact.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_DEF_H
+#define __LINUX_TC_DEF_H
+#include <linux/pkt_cls.h>
+struct tc_defact {
+  tc_gen;
+};
+enum {
+  TCA_DEF_UNSPEC,
+  TCA_DEF_TM,
+  TCA_DEF_PARMS,
+  TCA_DEF_DATA,
+  TCA_DEF_PAD,
+  __TCA_DEF_MAX
+};
+#define TCA_DEF_MAX (__TCA_DEF_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_gact.h b/i686-linux-musl/include/linux/tc_act/tc_gact.h
new file mode 100644
index 0000000..ac96dff
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_gact.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_GACT_H
+#define __LINUX_TC_GACT_H
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+struct tc_gact {
+  tc_gen;
+};
+struct tc_gact_p {
+#define PGACT_NONE 0
+#define PGACT_NETRAND 1
+#define PGACT_DETERM 2
+#define MAX_RAND (PGACT_DETERM + 1)
+  __u16 ptype;
+  __u16 pval;
+  int paction;
+};
+enum {
+  TCA_GACT_UNSPEC,
+  TCA_GACT_TM,
+  TCA_GACT_PARMS,
+  TCA_GACT_PROB,
+  TCA_GACT_PAD,
+  __TCA_GACT_MAX
+};
+#define TCA_GACT_MAX (__TCA_GACT_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_gate.h b/i686-linux-musl/include/linux/tc_act/tc_gate.h
new file mode 100644
index 0000000..f0a6412
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_gate.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_GATE_H
+#define __LINUX_TC_GATE_H
+#include <linux/pkt_cls.h>
+struct tc_gate {
+  tc_gen;
+};
+enum {
+  TCA_GATE_ENTRY_UNSPEC,
+  TCA_GATE_ENTRY_INDEX,
+  TCA_GATE_ENTRY_GATE,
+  TCA_GATE_ENTRY_INTERVAL,
+  TCA_GATE_ENTRY_IPV,
+  TCA_GATE_ENTRY_MAX_OCTETS,
+  __TCA_GATE_ENTRY_MAX,
+};
+#define TCA_GATE_ENTRY_MAX (__TCA_GATE_ENTRY_MAX - 1)
+enum {
+  TCA_GATE_ONE_ENTRY_UNSPEC,
+  TCA_GATE_ONE_ENTRY,
+  __TCA_GATE_ONE_ENTRY_MAX,
+};
+#define TCA_GATE_ONE_ENTRY_MAX (__TCA_GATE_ONE_ENTRY_MAX - 1)
+enum {
+  TCA_GATE_UNSPEC,
+  TCA_GATE_TM,
+  TCA_GATE_PARMS,
+  TCA_GATE_PAD,
+  TCA_GATE_PRIORITY,
+  TCA_GATE_ENTRY_LIST,
+  TCA_GATE_BASE_TIME,
+  TCA_GATE_CYCLE_TIME,
+  TCA_GATE_CYCLE_TIME_EXT,
+  TCA_GATE_FLAGS,
+  TCA_GATE_CLOCKID,
+  __TCA_GATE_MAX,
+};
+#define TCA_GATE_MAX (__TCA_GATE_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_ife.h b/i686-linux-musl/include/linux/tc_act/tc_ife.h
new file mode 100644
index 0000000..346ebac
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_ife.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_TC_IFE_H
+#define __UAPI_TC_IFE_H
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+#include <linux/ife.h>
+#define IFE_ENCODE 1
+#define IFE_DECODE 0
+struct tc_ife {
+  tc_gen;
+  __u16 flags;
+};
+enum {
+  TCA_IFE_UNSPEC,
+  TCA_IFE_PARMS,
+  TCA_IFE_TM,
+  TCA_IFE_DMAC,
+  TCA_IFE_SMAC,
+  TCA_IFE_TYPE,
+  TCA_IFE_METALST,
+  TCA_IFE_PAD,
+  __TCA_IFE_MAX
+};
+#define TCA_IFE_MAX (__TCA_IFE_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_ipt.h b/i686-linux-musl/include/linux/tc_act/tc_ipt.h
new file mode 100644
index 0000000..d578ce7
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_ipt.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_IPT_H
+#define __LINUX_TC_IPT_H
+#include <linux/pkt_cls.h>
+enum {
+  TCA_IPT_UNSPEC,
+  TCA_IPT_TABLE,
+  TCA_IPT_HOOK,
+  TCA_IPT_INDEX,
+  TCA_IPT_CNT,
+  TCA_IPT_TM,
+  TCA_IPT_TARG,
+  TCA_IPT_PAD,
+  __TCA_IPT_MAX
+};
+#define TCA_IPT_MAX (__TCA_IPT_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_mirred.h b/i686-linux-musl/include/linux/tc_act/tc_mirred.h
new file mode 100644
index 0000000..af04d03
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_mirred.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_MIR_H
+#define __LINUX_TC_MIR_H
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+#define TCA_EGRESS_REDIR 1
+#define TCA_EGRESS_MIRROR 2
+#define TCA_INGRESS_REDIR 3
+#define TCA_INGRESS_MIRROR 4
+struct tc_mirred {
+  tc_gen;
+  int eaction;
+  __u32 ifindex;
+};
+enum {
+  TCA_MIRRED_UNSPEC,
+  TCA_MIRRED_TM,
+  TCA_MIRRED_PARMS,
+  TCA_MIRRED_PAD,
+  __TCA_MIRRED_MAX
+};
+#define TCA_MIRRED_MAX (__TCA_MIRRED_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_mpls.h b/i686-linux-musl/include/linux/tc_act/tc_mpls.h
new file mode 100644
index 0000000..5e23fde
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_mpls.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_MPLS_H
+#define __LINUX_TC_MPLS_H
+#include <linux/pkt_cls.h>
+#define TCA_MPLS_ACT_POP 1
+#define TCA_MPLS_ACT_PUSH 2
+#define TCA_MPLS_ACT_MODIFY 3
+#define TCA_MPLS_ACT_DEC_TTL 4
+#define TCA_MPLS_ACT_MAC_PUSH 5
+struct tc_mpls {
+  tc_gen;
+  int m_action;
+};
+enum {
+  TCA_MPLS_UNSPEC,
+  TCA_MPLS_TM,
+  TCA_MPLS_PARMS,
+  TCA_MPLS_PAD,
+  TCA_MPLS_PROTO,
+  TCA_MPLS_LABEL,
+  TCA_MPLS_TC,
+  TCA_MPLS_TTL,
+  TCA_MPLS_BOS,
+  __TCA_MPLS_MAX,
+};
+#define TCA_MPLS_MAX (__TCA_MPLS_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_nat.h b/i686-linux-musl/include/linux/tc_act/tc_nat.h
new file mode 100644
index 0000000..14aeffb
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_nat.h
@@ -0,0 +1,39 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_NAT_H
+#define __LINUX_TC_NAT_H
+#include <linux/pkt_cls.h>
+#include <linux/types.h>
+enum {
+  TCA_NAT_UNSPEC,
+  TCA_NAT_PARMS,
+  TCA_NAT_TM,
+  TCA_NAT_PAD,
+  __TCA_NAT_MAX
+};
+#define TCA_NAT_MAX (__TCA_NAT_MAX - 1)
+#define TCA_NAT_FLAG_EGRESS 1
+struct tc_nat {
+  tc_gen;
+  __be32 old_addr;
+  __be32 new_addr;
+  __be32 mask;
+  __u32 flags;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_pedit.h b/i686-linux-musl/include/linux/tc_act/tc_pedit.h
new file mode 100644
index 0000000..cb8bd22
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_pedit.h
@@ -0,0 +1,71 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_PED_H
+#define __LINUX_TC_PED_H
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+enum {
+  TCA_PEDIT_UNSPEC,
+  TCA_PEDIT_TM,
+  TCA_PEDIT_PARMS,
+  TCA_PEDIT_PAD,
+  TCA_PEDIT_PARMS_EX,
+  TCA_PEDIT_KEYS_EX,
+  TCA_PEDIT_KEY_EX,
+  __TCA_PEDIT_MAX
+};
+#define TCA_PEDIT_MAX (__TCA_PEDIT_MAX - 1)
+enum {
+  TCA_PEDIT_KEY_EX_HTYPE = 1,
+  TCA_PEDIT_KEY_EX_CMD = 2,
+  __TCA_PEDIT_KEY_EX_MAX
+};
+#define TCA_PEDIT_KEY_EX_MAX (__TCA_PEDIT_KEY_EX_MAX - 1)
+enum pedit_header_type {
+  TCA_PEDIT_KEY_EX_HDR_TYPE_NETWORK = 0,
+  TCA_PEDIT_KEY_EX_HDR_TYPE_ETH = 1,
+  TCA_PEDIT_KEY_EX_HDR_TYPE_IP4 = 2,
+  TCA_PEDIT_KEY_EX_HDR_TYPE_IP6 = 3,
+  TCA_PEDIT_KEY_EX_HDR_TYPE_TCP = 4,
+  TCA_PEDIT_KEY_EX_HDR_TYPE_UDP = 5,
+  __PEDIT_HDR_TYPE_MAX,
+};
+#define TCA_PEDIT_HDR_TYPE_MAX (__PEDIT_HDR_TYPE_MAX - 1)
+enum pedit_cmd {
+  TCA_PEDIT_KEY_EX_CMD_SET = 0,
+  TCA_PEDIT_KEY_EX_CMD_ADD = 1,
+  __PEDIT_CMD_MAX,
+};
+#define TCA_PEDIT_CMD_MAX (__PEDIT_CMD_MAX - 1)
+struct tc_pedit_key {
+  __u32 mask;
+  __u32 val;
+  __u32 off;
+  __u32 at;
+  __u32 offmask;
+  __u32 shift;
+};
+struct tc_pedit_sel {
+  tc_gen;
+  unsigned char nkeys;
+  unsigned char flags;
+  struct tc_pedit_key keys[0];
+};
+#define tc_pedit tc_pedit_sel
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_sample.h b/i686-linux-musl/include/linux/tc_act/tc_sample.h
new file mode 100644
index 0000000..7d9a32e
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_sample.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_SAMPLE_H
+#define __LINUX_TC_SAMPLE_H
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+#include <linux/if_ether.h>
+struct tc_sample {
+  tc_gen;
+};
+enum {
+  TCA_SAMPLE_UNSPEC,
+  TCA_SAMPLE_TM,
+  TCA_SAMPLE_PARMS,
+  TCA_SAMPLE_RATE,
+  TCA_SAMPLE_TRUNC_SIZE,
+  TCA_SAMPLE_PSAMPLE_GROUP,
+  TCA_SAMPLE_PAD,
+  __TCA_SAMPLE_MAX
+};
+#define TCA_SAMPLE_MAX (__TCA_SAMPLE_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_skbedit.h b/i686-linux-musl/include/linux/tc_act/tc_skbedit.h
new file mode 100644
index 0000000..5706d4d
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_skbedit.h
@@ -0,0 +1,45 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_SKBEDIT_H
+#define __LINUX_TC_SKBEDIT_H
+#include <linux/pkt_cls.h>
+#define SKBEDIT_F_PRIORITY 0x1
+#define SKBEDIT_F_QUEUE_MAPPING 0x2
+#define SKBEDIT_F_MARK 0x4
+#define SKBEDIT_F_PTYPE 0x8
+#define SKBEDIT_F_MASK 0x10
+#define SKBEDIT_F_INHERITDSFIELD 0x20
+struct tc_skbedit {
+  tc_gen;
+};
+enum {
+  TCA_SKBEDIT_UNSPEC,
+  TCA_SKBEDIT_TM,
+  TCA_SKBEDIT_PARMS,
+  TCA_SKBEDIT_PRIORITY,
+  TCA_SKBEDIT_QUEUE_MAPPING,
+  TCA_SKBEDIT_MARK,
+  TCA_SKBEDIT_PAD,
+  TCA_SKBEDIT_PTYPE,
+  TCA_SKBEDIT_MASK,
+  TCA_SKBEDIT_FLAGS,
+  __TCA_SKBEDIT_MAX
+};
+#define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_skbmod.h b/i686-linux-musl/include/linux/tc_act/tc_skbmod.h
new file mode 100644
index 0000000..f0cd928
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_skbmod.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_SKBMOD_H
+#define __LINUX_TC_SKBMOD_H
+#include <linux/pkt_cls.h>
+#define SKBMOD_F_DMAC 0x1
+#define SKBMOD_F_SMAC 0x2
+#define SKBMOD_F_ETYPE 0x4
+#define SKBMOD_F_SWAPMAC 0x8
+#define SKBMOD_F_ECN 0x10
+struct tc_skbmod {
+  tc_gen;
+  __u64 flags;
+};
+enum {
+  TCA_SKBMOD_UNSPEC,
+  TCA_SKBMOD_TM,
+  TCA_SKBMOD_PARMS,
+  TCA_SKBMOD_DMAC,
+  TCA_SKBMOD_SMAC,
+  TCA_SKBMOD_ETYPE,
+  TCA_SKBMOD_PAD,
+  __TCA_SKBMOD_MAX
+};
+#define TCA_SKBMOD_MAX (__TCA_SKBMOD_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_tunnel_key.h b/i686-linux-musl/include/linux/tc_act/tc_tunnel_key.h
new file mode 100644
index 0000000..e137ae8
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_tunnel_key.h
@@ -0,0 +1,77 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_TUNNEL_KEY_H
+#define __LINUX_TC_TUNNEL_KEY_H
+#include <linux/pkt_cls.h>
+#define TCA_TUNNEL_KEY_ACT_SET 1
+#define TCA_TUNNEL_KEY_ACT_RELEASE 2
+struct tc_tunnel_key {
+  tc_gen;
+  int t_action;
+};
+enum {
+  TCA_TUNNEL_KEY_UNSPEC,
+  TCA_TUNNEL_KEY_TM,
+  TCA_TUNNEL_KEY_PARMS,
+  TCA_TUNNEL_KEY_ENC_IPV4_SRC,
+  TCA_TUNNEL_KEY_ENC_IPV4_DST,
+  TCA_TUNNEL_KEY_ENC_IPV6_SRC,
+  TCA_TUNNEL_KEY_ENC_IPV6_DST,
+  TCA_TUNNEL_KEY_ENC_KEY_ID,
+  TCA_TUNNEL_KEY_PAD,
+  TCA_TUNNEL_KEY_ENC_DST_PORT,
+  TCA_TUNNEL_KEY_NO_CSUM,
+  TCA_TUNNEL_KEY_ENC_OPTS,
+  TCA_TUNNEL_KEY_ENC_TOS,
+  TCA_TUNNEL_KEY_ENC_TTL,
+  __TCA_TUNNEL_KEY_MAX,
+};
+#define TCA_TUNNEL_KEY_MAX (__TCA_TUNNEL_KEY_MAX - 1)
+enum {
+  TCA_TUNNEL_KEY_ENC_OPTS_UNSPEC,
+  TCA_TUNNEL_KEY_ENC_OPTS_GENEVE,
+  TCA_TUNNEL_KEY_ENC_OPTS_VXLAN,
+  TCA_TUNNEL_KEY_ENC_OPTS_ERSPAN,
+  __TCA_TUNNEL_KEY_ENC_OPTS_MAX,
+};
+#define TCA_TUNNEL_KEY_ENC_OPTS_MAX (__TCA_TUNNEL_KEY_ENC_OPTS_MAX - 1)
+enum {
+  TCA_TUNNEL_KEY_ENC_OPT_GENEVE_UNSPEC,
+  TCA_TUNNEL_KEY_ENC_OPT_GENEVE_CLASS,
+  TCA_TUNNEL_KEY_ENC_OPT_GENEVE_TYPE,
+  TCA_TUNNEL_KEY_ENC_OPT_GENEVE_DATA,
+  __TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX,
+};
+#define TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX (__TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX - 1)
+enum {
+  TCA_TUNNEL_KEY_ENC_OPT_VXLAN_UNSPEC,
+  TCA_TUNNEL_KEY_ENC_OPT_VXLAN_GBP,
+  __TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX,
+};
+#define TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX (__TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX - 1)
+enum {
+  TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_UNSPEC,
+  TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_VER,
+  TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_INDEX,
+  TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_DIR,
+  TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_HWID,
+  __TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX,
+};
+#define TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX (__TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tc_act/tc_vlan.h b/i686-linux-musl/include/linux/tc_act/tc_vlan.h
new file mode 100644
index 0000000..004c7ae
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_act/tc_vlan.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_VLAN_H
+#define __LINUX_TC_VLAN_H
+#include <linux/pkt_cls.h>
+#define TCA_VLAN_ACT_POP 1
+#define TCA_VLAN_ACT_PUSH 2
+#define TCA_VLAN_ACT_MODIFY 3
+#define TCA_VLAN_ACT_POP_ETH 4
+#define TCA_VLAN_ACT_PUSH_ETH 5
+struct tc_vlan {
+  tc_gen;
+  int v_action;
+};
+enum {
+  TCA_VLAN_UNSPEC,
+  TCA_VLAN_TM,
+  TCA_VLAN_PARMS,
+  TCA_VLAN_PUSH_VLAN_ID,
+  TCA_VLAN_PUSH_VLAN_PROTOCOL,
+  TCA_VLAN_PAD,
+  TCA_VLAN_PUSH_VLAN_PRIORITY,
+  TCA_VLAN_PUSH_ETH_DST,
+  TCA_VLAN_PUSH_ETH_SRC,
+  __TCA_VLAN_MAX,
+};
+#define TCA_VLAN_MAX (__TCA_VLAN_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tc_ematch/tc_em_cmp.h b/i686-linux-musl/include/linux/tc_ematch/tc_em_cmp.h
new file mode 100644
index 0000000..4e01cf5
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_ematch/tc_em_cmp.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_EM_CMP_H
+#define __LINUX_TC_EM_CMP_H
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+struct tcf_em_cmp {
+  __u32 val;
+  __u32 mask;
+  __u16 off;
+  __u8 align : 4;
+  __u8 flags : 4;
+  __u8 layer : 4;
+  __u8 opnd : 4;
+};
+enum {
+  TCF_EM_ALIGN_U8 = 1,
+  TCF_EM_ALIGN_U16 = 2,
+  TCF_EM_ALIGN_U32 = 4
+};
+#define TCF_EM_CMP_TRANS 1
+#endif
diff --git a/i686-linux-musl/include/linux/tc_ematch/tc_em_ipt.h b/i686-linux-musl/include/linux/tc_ematch/tc_em_ipt.h
new file mode 100644
index 0000000..8cd06ee
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_ematch/tc_em_ipt.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_EM_IPT_H
+#define __LINUX_TC_EM_IPT_H
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+enum {
+  TCA_EM_IPT_UNSPEC,
+  TCA_EM_IPT_HOOK,
+  TCA_EM_IPT_MATCH_NAME,
+  TCA_EM_IPT_MATCH_REVISION,
+  TCA_EM_IPT_NFPROTO,
+  TCA_EM_IPT_MATCH_DATA,
+  __TCA_EM_IPT_MAX
+};
+#define TCA_EM_IPT_MAX (__TCA_EM_IPT_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tc_ematch/tc_em_meta.h b/i686-linux-musl/include/linux/tc_ematch/tc_em_meta.h
new file mode 100644
index 0000000..1b91cd1
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_ematch/tc_em_meta.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_EM_META_H
+#define __LINUX_TC_EM_META_H
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+enum {
+  TCA_EM_META_UNSPEC,
+  TCA_EM_META_HDR,
+  TCA_EM_META_LVALUE,
+  TCA_EM_META_RVALUE,
+  __TCA_EM_META_MAX
+};
+#define TCA_EM_META_MAX (__TCA_EM_META_MAX - 1)
+struct tcf_meta_val {
+  __u16 kind;
+  __u8 shift;
+  __u8 op;
+};
+#define TCF_META_TYPE_MASK (0xf << 12)
+#define TCF_META_TYPE(kind) (((kind) & TCF_META_TYPE_MASK) >> 12)
+#define TCF_META_ID_MASK 0x7ff
+#define TCF_META_ID(kind) ((kind) & TCF_META_ID_MASK)
+enum {
+  TCF_META_TYPE_VAR,
+  TCF_META_TYPE_INT,
+  __TCF_META_TYPE_MAX
+};
+#define TCF_META_TYPE_MAX (__TCF_META_TYPE_MAX - 1)
+enum {
+  TCF_META_ID_VALUE,
+  TCF_META_ID_RANDOM,
+  TCF_META_ID_LOADAVG_0,
+  TCF_META_ID_LOADAVG_1,
+  TCF_META_ID_LOADAVG_2,
+  TCF_META_ID_DEV,
+  TCF_META_ID_PRIORITY,
+  TCF_META_ID_PROTOCOL,
+  TCF_META_ID_PKTTYPE,
+  TCF_META_ID_PKTLEN,
+  TCF_META_ID_DATALEN,
+  TCF_META_ID_MACLEN,
+  TCF_META_ID_NFMARK,
+  TCF_META_ID_TCINDEX,
+  TCF_META_ID_RTCLASSID,
+  TCF_META_ID_RTIIF,
+  TCF_META_ID_SK_FAMILY,
+  TCF_META_ID_SK_STATE,
+  TCF_META_ID_SK_REUSE,
+  TCF_META_ID_SK_BOUND_IF,
+  TCF_META_ID_SK_REFCNT,
+  TCF_META_ID_SK_SHUTDOWN,
+  TCF_META_ID_SK_PROTO,
+  TCF_META_ID_SK_TYPE,
+  TCF_META_ID_SK_RCVBUF,
+  TCF_META_ID_SK_RMEM_ALLOC,
+  TCF_META_ID_SK_WMEM_ALLOC,
+  TCF_META_ID_SK_OMEM_ALLOC,
+  TCF_META_ID_SK_WMEM_QUEUED,
+  TCF_META_ID_SK_RCV_QLEN,
+  TCF_META_ID_SK_SND_QLEN,
+  TCF_META_ID_SK_ERR_QLEN,
+  TCF_META_ID_SK_FORWARD_ALLOCS,
+  TCF_META_ID_SK_SNDBUF,
+  TCF_META_ID_SK_ALLOCS,
+  __TCF_META_ID_SK_ROUTE_CAPS,
+  TCF_META_ID_SK_HASH,
+  TCF_META_ID_SK_LINGERTIME,
+  TCF_META_ID_SK_ACK_BACKLOG,
+  TCF_META_ID_SK_MAX_ACK_BACKLOG,
+  TCF_META_ID_SK_PRIO,
+  TCF_META_ID_SK_RCVLOWAT,
+  TCF_META_ID_SK_RCVTIMEO,
+  TCF_META_ID_SK_SNDTIMEO,
+  TCF_META_ID_SK_SENDMSG_OFF,
+  TCF_META_ID_SK_WRITE_PENDING,
+  TCF_META_ID_VLAN_TAG,
+  TCF_META_ID_RXHASH,
+  __TCF_META_ID_MAX
+};
+#define TCF_META_ID_MAX (__TCF_META_ID_MAX - 1)
+struct tcf_meta_hdr {
+  struct tcf_meta_val left;
+  struct tcf_meta_val right;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/tc_ematch/tc_em_nbyte.h b/i686-linux-musl/include/linux/tc_ematch/tc_em_nbyte.h
new file mode 100644
index 0000000..cce2d2c
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_ematch/tc_em_nbyte.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_EM_NBYTE_H
+#define __LINUX_TC_EM_NBYTE_H
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+struct tcf_em_nbyte {
+  __u16 off;
+  __u16 len : 12;
+  __u8 layer : 4;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/tc_ematch/tc_em_text.h b/i686-linux-musl/include/linux/tc_ematch/tc_em_text.h
new file mode 100644
index 0000000..9d0ab65
--- /dev/null
+++ b/i686-linux-musl/include/linux/tc_ematch/tc_em_text.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_TC_EM_TEXT_H
+#define __LINUX_TC_EM_TEXT_H
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+#define TC_EM_TEXT_ALGOSIZ 16
+struct tcf_em_text {
+  char algo[TC_EM_TEXT_ALGOSIZ];
+  __u16 from_offset;
+  __u16 to_offset;
+  __u16 pattern_len;
+  __u8 from_layer : 4;
+  __u8 to_layer : 4;
+  __u8 pad;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/tcp.h b/i686-linux-musl/include/linux/tcp.h
new file mode 100644
index 0000000..c96d695
--- /dev/null
+++ b/i686-linux-musl/include/linux/tcp.h
@@ -0,0 +1,258 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_TCP_H
+#define _UAPI_LINUX_TCP_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+#include <linux/socket.h>
+struct tcphdr {
+  __be16 source;
+  __be16 dest;
+  __be32 seq;
+  __be32 ack_seq;
+#ifdef __LITTLE_ENDIAN_BITFIELD
+  __u16 res1 : 4, doff : 4, fin : 1, syn : 1, rst : 1, psh : 1, ack : 1, urg : 1, ece : 1, cwr : 1;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+  __u16 doff : 4, res1 : 4, cwr : 1, ece : 1, urg : 1, ack : 1, psh : 1, rst : 1, syn : 1, fin : 1;
+#else
+#error "Adjust your <asm/byteorder.h> defines"
+#endif
+  __be16 window;
+  __sum16 check;
+  __be16 urg_ptr;
+};
+union tcp_word_hdr {
+  struct tcphdr hdr;
+  __be32 words[5];
+};
+#define tcp_flag_word(tp) (((union tcp_word_hdr *) (tp))->words[3])
+enum {
+  TCP_FLAG_CWR = __constant_cpu_to_be32(0x00800000),
+  TCP_FLAG_ECE = __constant_cpu_to_be32(0x00400000),
+  TCP_FLAG_URG = __constant_cpu_to_be32(0x00200000),
+  TCP_FLAG_ACK = __constant_cpu_to_be32(0x00100000),
+  TCP_FLAG_PSH = __constant_cpu_to_be32(0x00080000),
+  TCP_FLAG_RST = __constant_cpu_to_be32(0x00040000),
+  TCP_FLAG_SYN = __constant_cpu_to_be32(0x00020000),
+  TCP_FLAG_FIN = __constant_cpu_to_be32(0x00010000),
+  TCP_RESERVED_BITS = __constant_cpu_to_be32(0x0F000000),
+  TCP_DATA_OFFSET = __constant_cpu_to_be32(0xF0000000)
+};
+#define TCP_MSS_DEFAULT 536U
+#define TCP_MSS_DESIRED 1220U
+#define TCP_NODELAY 1
+#define TCP_MAXSEG 2
+#define TCP_CORK 3
+#define TCP_KEEPIDLE 4
+#define TCP_KEEPINTVL 5
+#define TCP_KEEPCNT 6
+#define TCP_SYNCNT 7
+#define TCP_LINGER2 8
+#define TCP_DEFER_ACCEPT 9
+#define TCP_WINDOW_CLAMP 10
+#define TCP_INFO 11
+#define TCP_QUICKACK 12
+#define TCP_CONGESTION 13
+#define TCP_MD5SIG 14
+#define TCP_THIN_LINEAR_TIMEOUTS 16
+#define TCP_THIN_DUPACK 17
+#define TCP_USER_TIMEOUT 18
+#define TCP_REPAIR 19
+#define TCP_REPAIR_QUEUE 20
+#define TCP_QUEUE_SEQ 21
+#define TCP_REPAIR_OPTIONS 22
+#define TCP_FASTOPEN 23
+#define TCP_TIMESTAMP 24
+#define TCP_NOTSENT_LOWAT 25
+#define TCP_CC_INFO 26
+#define TCP_SAVE_SYN 27
+#define TCP_SAVED_SYN 28
+#define TCP_REPAIR_WINDOW 29
+#define TCP_FASTOPEN_CONNECT 30
+#define TCP_ULP 31
+#define TCP_MD5SIG_EXT 32
+#define TCP_FASTOPEN_KEY 33
+#define TCP_FASTOPEN_NO_COOKIE 34
+#define TCP_ZEROCOPY_RECEIVE 35
+#define TCP_INQ 36
+#define TCP_CM_INQ TCP_INQ
+#define TCP_TX_DELAY 37
+#define TCP_REPAIR_ON 1
+#define TCP_REPAIR_OFF 0
+#define TCP_REPAIR_OFF_NO_WP - 1
+struct tcp_repair_opt {
+  __u32 opt_code;
+  __u32 opt_val;
+};
+struct tcp_repair_window {
+  __u32 snd_wl1;
+  __u32 snd_wnd;
+  __u32 max_window;
+  __u32 rcv_wnd;
+  __u32 rcv_wup;
+};
+enum {
+  TCP_NO_QUEUE,
+  TCP_RECV_QUEUE,
+  TCP_SEND_QUEUE,
+  TCP_QUEUES_NR,
+};
+enum tcp_fastopen_client_fail {
+  TFO_STATUS_UNSPEC,
+  TFO_COOKIE_UNAVAILABLE,
+  TFO_DATA_NOT_ACKED,
+  TFO_SYN_RETRANSMITTED,
+};
+#define TCPI_OPT_TIMESTAMPS 1
+#define TCPI_OPT_SACK 2
+#define TCPI_OPT_WSCALE 4
+#define TCPI_OPT_ECN 8
+#define TCPI_OPT_ECN_SEEN 16
+#define TCPI_OPT_SYN_DATA 32
+enum tcp_ca_state {
+  TCP_CA_Open = 0,
+#define TCPF_CA_Open (1 << TCP_CA_Open)
+  TCP_CA_Disorder = 1,
+#define TCPF_CA_Disorder (1 << TCP_CA_Disorder)
+  TCP_CA_CWR = 2,
+#define TCPF_CA_CWR (1 << TCP_CA_CWR)
+  TCP_CA_Recovery = 3,
+#define TCPF_CA_Recovery (1 << TCP_CA_Recovery)
+  TCP_CA_Loss = 4
+#define TCPF_CA_Loss (1 << TCP_CA_Loss)
+};
+struct tcp_info {
+  __u8 tcpi_state;
+  __u8 tcpi_ca_state;
+  __u8 tcpi_retransmits;
+  __u8 tcpi_probes;
+  __u8 tcpi_backoff;
+  __u8 tcpi_options;
+  __u8 tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
+  __u8 tcpi_delivery_rate_app_limited : 1, tcpi_fastopen_client_fail : 2;
+  __u32 tcpi_rto;
+  __u32 tcpi_ato;
+  __u32 tcpi_snd_mss;
+  __u32 tcpi_rcv_mss;
+  __u32 tcpi_unacked;
+  __u32 tcpi_sacked;
+  __u32 tcpi_lost;
+  __u32 tcpi_retrans;
+  __u32 tcpi_fackets;
+  __u32 tcpi_last_data_sent;
+  __u32 tcpi_last_ack_sent;
+  __u32 tcpi_last_data_recv;
+  __u32 tcpi_last_ack_recv;
+  __u32 tcpi_pmtu;
+  __u32 tcpi_rcv_ssthresh;
+  __u32 tcpi_rtt;
+  __u32 tcpi_rttvar;
+  __u32 tcpi_snd_ssthresh;
+  __u32 tcpi_snd_cwnd;
+  __u32 tcpi_advmss;
+  __u32 tcpi_reordering;
+  __u32 tcpi_rcv_rtt;
+  __u32 tcpi_rcv_space;
+  __u32 tcpi_total_retrans;
+  __u64 tcpi_pacing_rate;
+  __u64 tcpi_max_pacing_rate;
+  __u64 tcpi_bytes_acked;
+  __u64 tcpi_bytes_received;
+  __u32 tcpi_segs_out;
+  __u32 tcpi_segs_in;
+  __u32 tcpi_notsent_bytes;
+  __u32 tcpi_min_rtt;
+  __u32 tcpi_data_segs_in;
+  __u32 tcpi_data_segs_out;
+  __u64 tcpi_delivery_rate;
+  __u64 tcpi_busy_time;
+  __u64 tcpi_rwnd_limited;
+  __u64 tcpi_sndbuf_limited;
+  __u32 tcpi_delivered;
+  __u32 tcpi_delivered_ce;
+  __u64 tcpi_bytes_sent;
+  __u64 tcpi_bytes_retrans;
+  __u32 tcpi_dsack_dups;
+  __u32 tcpi_reord_seen;
+  __u32 tcpi_rcv_ooopack;
+  __u32 tcpi_snd_wnd;
+};
+enum {
+  TCP_NLA_PAD,
+  TCP_NLA_BUSY,
+  TCP_NLA_RWND_LIMITED,
+  TCP_NLA_SNDBUF_LIMITED,
+  TCP_NLA_DATA_SEGS_OUT,
+  TCP_NLA_TOTAL_RETRANS,
+  TCP_NLA_PACING_RATE,
+  TCP_NLA_DELIVERY_RATE,
+  TCP_NLA_SND_CWND,
+  TCP_NLA_REORDERING,
+  TCP_NLA_MIN_RTT,
+  TCP_NLA_RECUR_RETRANS,
+  TCP_NLA_DELIVERY_RATE_APP_LMT,
+  TCP_NLA_SNDQ_SIZE,
+  TCP_NLA_CA_STATE,
+  TCP_NLA_SND_SSTHRESH,
+  TCP_NLA_DELIVERED,
+  TCP_NLA_DELIVERED_CE,
+  TCP_NLA_BYTES_SENT,
+  TCP_NLA_BYTES_RETRANS,
+  TCP_NLA_DSACK_DUPS,
+  TCP_NLA_REORD_SEEN,
+  TCP_NLA_SRTT,
+  TCP_NLA_TIMEOUT_REHASH,
+  TCP_NLA_BYTES_NOTSENT,
+  TCP_NLA_EDT,
+  TCP_NLA_TTL,
+};
+#define TCP_MD5SIG_MAXKEYLEN 80
+#define TCP_MD5SIG_FLAG_PREFIX 0x1
+#define TCP_MD5SIG_FLAG_IFINDEX 0x2
+struct tcp_md5sig {
+  struct __kernel_sockaddr_storage tcpm_addr;
+  __u8 tcpm_flags;
+  __u8 tcpm_prefixlen;
+  __u16 tcpm_keylen;
+  int tcpm_ifindex;
+  __u8 tcpm_key[TCP_MD5SIG_MAXKEYLEN];
+};
+struct tcp_diag_md5sig {
+  __u8 tcpm_family;
+  __u8 tcpm_prefixlen;
+  __u16 tcpm_keylen;
+  __be32 tcpm_addr[4];
+  __u8 tcpm_key[TCP_MD5SIG_MAXKEYLEN];
+};
+#define TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT 0x1
+struct tcp_zerocopy_receive {
+  __u64 address;
+  __u32 length;
+  __u32 recv_skip_hint;
+  __u32 inq;
+  __s32 err;
+  __u64 copybuf_address;
+  __s32 copybuf_len;
+  __u32 flags;
+  __u64 msg_control;
+  __u64 msg_controllen;
+  __u32 msg_flags;
+  __u32 reserved;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/tcp_metrics.h b/i686-linux-musl/include/linux/tcp_metrics.h
new file mode 100644
index 0000000..b9eb141
--- /dev/null
+++ b/i686-linux-musl/include/linux/tcp_metrics.h
@@ -0,0 +1,60 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_TCP_METRICS_H
+#define _LINUX_TCP_METRICS_H
+#include <linux/types.h>
+#define TCP_METRICS_GENL_NAME "tcp_metrics"
+#define TCP_METRICS_GENL_VERSION 0x1
+enum tcp_metric_index {
+  TCP_METRIC_RTT,
+  TCP_METRIC_RTTVAR,
+  TCP_METRIC_SSTHRESH,
+  TCP_METRIC_CWND,
+  TCP_METRIC_REORDERING,
+  TCP_METRIC_RTT_US,
+  TCP_METRIC_RTTVAR_US,
+  __TCP_METRIC_MAX,
+};
+#define TCP_METRIC_MAX (__TCP_METRIC_MAX - 1)
+enum {
+  TCP_METRICS_ATTR_UNSPEC,
+  TCP_METRICS_ATTR_ADDR_IPV4,
+  TCP_METRICS_ATTR_ADDR_IPV6,
+  TCP_METRICS_ATTR_AGE,
+  TCP_METRICS_ATTR_TW_TSVAL,
+  TCP_METRICS_ATTR_TW_TS_STAMP,
+  TCP_METRICS_ATTR_VALS,
+  TCP_METRICS_ATTR_FOPEN_MSS,
+  TCP_METRICS_ATTR_FOPEN_SYN_DROPS,
+  TCP_METRICS_ATTR_FOPEN_SYN_DROP_TS,
+  TCP_METRICS_ATTR_FOPEN_COOKIE,
+  TCP_METRICS_ATTR_SADDR_IPV4,
+  TCP_METRICS_ATTR_SADDR_IPV6,
+  TCP_METRICS_ATTR_PAD,
+  __TCP_METRICS_ATTR_MAX,
+};
+#define TCP_METRICS_ATTR_MAX (__TCP_METRICS_ATTR_MAX - 1)
+enum {
+  TCP_METRICS_CMD_UNSPEC,
+  TCP_METRICS_CMD_GET,
+  TCP_METRICS_CMD_DEL,
+  __TCP_METRICS_CMD_MAX,
+};
+#define TCP_METRICS_CMD_MAX (__TCP_METRICS_CMD_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/tee.h b/i686-linux-musl/include/linux/tee.h
new file mode 100644
index 0000000..5cfe713
--- /dev/null
+++ b/i686-linux-musl/include/linux/tee.h
@@ -0,0 +1,128 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __TEE_H
+#define __TEE_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define TEE_IOC_MAGIC 0xa4
+#define TEE_IOC_BASE 0
+#define TEE_IOCTL_SHM_MAPPED 0x1
+#define TEE_IOCTL_SHM_DMA_BUF 0x2
+#define TEE_MAX_ARG_SIZE 1024
+#define TEE_GEN_CAP_GP (1 << 0)
+#define TEE_GEN_CAP_PRIVILEGED (1 << 1)
+#define TEE_GEN_CAP_REG_MEM (1 << 2)
+#define TEE_GEN_CAP_MEMREF_NULL (1 << 3)
+#define TEE_MEMREF_NULL (__u64) (- 1)
+#define TEE_IMPL_ID_OPTEE 1
+#define TEE_IMPL_ID_AMDTEE 2
+#define TEE_OPTEE_CAP_TZ (1 << 0)
+struct tee_ioctl_version_data {
+  __u32 impl_id;
+  __u32 impl_caps;
+  __u32 gen_caps;
+};
+#define TEE_IOC_VERSION _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 0, struct tee_ioctl_version_data)
+struct tee_ioctl_shm_alloc_data {
+  __u64 size;
+  __u32 flags;
+  __s32 id;
+};
+#define TEE_IOC_SHM_ALLOC _IOWR(TEE_IOC_MAGIC, TEE_IOC_BASE + 1, struct tee_ioctl_shm_alloc_data)
+struct tee_ioctl_buf_data {
+  __u64 buf_ptr;
+  __u64 buf_len;
+};
+#define TEE_IOCTL_PARAM_ATTR_TYPE_NONE 0
+#define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT 1
+#define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT 2
+#define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT 3
+#define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT 5
+#define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT 6
+#define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT 7
+#define TEE_IOCTL_PARAM_ATTR_TYPE_MASK 0xff
+#define TEE_IOCTL_PARAM_ATTR_META 0x100
+#define TEE_IOCTL_PARAM_ATTR_MASK (TEE_IOCTL_PARAM_ATTR_TYPE_MASK | TEE_IOCTL_PARAM_ATTR_META)
+#define TEE_IOCTL_LOGIN_PUBLIC 0
+#define TEE_IOCTL_LOGIN_USER 1
+#define TEE_IOCTL_LOGIN_GROUP 2
+#define TEE_IOCTL_LOGIN_APPLICATION 4
+#define TEE_IOCTL_LOGIN_USER_APPLICATION 5
+#define TEE_IOCTL_LOGIN_GROUP_APPLICATION 6
+#define TEE_IOCTL_LOGIN_REE_KERNEL_MIN 0x80000000
+#define TEE_IOCTL_LOGIN_REE_KERNEL_MAX 0xBFFFFFFF
+#define TEE_IOCTL_LOGIN_REE_KERNEL 0x80000000
+struct tee_ioctl_param {
+  __u64 attr;
+  __u64 a;
+  __u64 b;
+  __u64 c;
+};
+#define TEE_IOCTL_UUID_LEN 16
+struct tee_ioctl_open_session_arg {
+  __u8 uuid[TEE_IOCTL_UUID_LEN];
+  __u8 clnt_uuid[TEE_IOCTL_UUID_LEN];
+  __u32 clnt_login;
+  __u32 cancel_id;
+  __u32 session;
+  __u32 ret;
+  __u32 ret_origin;
+  __u32 num_params;
+  struct tee_ioctl_param params[];
+};
+#define TEE_IOC_OPEN_SESSION _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 2, struct tee_ioctl_buf_data)
+struct tee_ioctl_invoke_arg {
+  __u32 func;
+  __u32 session;
+  __u32 cancel_id;
+  __u32 ret;
+  __u32 ret_origin;
+  __u32 num_params;
+  struct tee_ioctl_param params[];
+};
+#define TEE_IOC_INVOKE _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 3, struct tee_ioctl_buf_data)
+struct tee_ioctl_cancel_arg {
+  __u32 cancel_id;
+  __u32 session;
+};
+#define TEE_IOC_CANCEL _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 4, struct tee_ioctl_cancel_arg)
+struct tee_ioctl_close_session_arg {
+  __u32 session;
+};
+#define TEE_IOC_CLOSE_SESSION _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 5, struct tee_ioctl_close_session_arg)
+struct tee_iocl_supp_recv_arg {
+  __u32 func;
+  __u32 num_params;
+  struct tee_ioctl_param params[];
+};
+#define TEE_IOC_SUPPL_RECV _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 6, struct tee_ioctl_buf_data)
+struct tee_iocl_supp_send_arg {
+  __u32 ret;
+  __u32 num_params;
+  struct tee_ioctl_param params[];
+};
+#define TEE_IOC_SUPPL_SEND _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 7, struct tee_ioctl_buf_data)
+struct tee_ioctl_shm_register_data {
+  __u64 addr;
+  __u64 length;
+  __u32 flags;
+  __s32 id;
+};
+#define TEE_IOC_SHM_REGISTER _IOWR(TEE_IOC_MAGIC, TEE_IOC_BASE + 9, struct tee_ioctl_shm_register_data)
+#endif
diff --git a/i686-linux-musl/include/linux/termios.h b/i686-linux-musl/include/linux/termios.h
new file mode 100644
index 0000000..cde4099
--- /dev/null
+++ b/i686-linux-musl/include/linux/termios.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_TERMIOS_H
+#define _LINUX_TERMIOS_H
+#include <linux/types.h>
+#include <asm/termios.h>
+#endif
diff --git a/i686-linux-musl/include/linux/thermal.h b/i686-linux-musl/include/linux/thermal.h
new file mode 100644
index 0000000..72ea378
--- /dev/null
+++ b/i686-linux-musl/include/linux/thermal.h
@@ -0,0 +1,94 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_THERMAL_H
+#define _UAPI_LINUX_THERMAL_H
+#define THERMAL_NAME_LENGTH 20
+enum thermal_device_mode {
+  THERMAL_DEVICE_DISABLED = 0,
+  THERMAL_DEVICE_ENABLED,
+};
+enum thermal_trip_type {
+  THERMAL_TRIP_ACTIVE = 0,
+  THERMAL_TRIP_PASSIVE,
+  THERMAL_TRIP_HOT,
+  THERMAL_TRIP_CRITICAL,
+};
+#define THERMAL_GENL_FAMILY_NAME "thermal"
+#define THERMAL_GENL_VERSION 0x01
+#define THERMAL_GENL_SAMPLING_GROUP_NAME "sampling"
+#define THERMAL_GENL_EVENT_GROUP_NAME "event"
+enum thermal_genl_attr {
+  THERMAL_GENL_ATTR_UNSPEC,
+  THERMAL_GENL_ATTR_TZ,
+  THERMAL_GENL_ATTR_TZ_ID,
+  THERMAL_GENL_ATTR_TZ_TEMP,
+  THERMAL_GENL_ATTR_TZ_TRIP,
+  THERMAL_GENL_ATTR_TZ_TRIP_ID,
+  THERMAL_GENL_ATTR_TZ_TRIP_TYPE,
+  THERMAL_GENL_ATTR_TZ_TRIP_TEMP,
+  THERMAL_GENL_ATTR_TZ_TRIP_HYST,
+  THERMAL_GENL_ATTR_TZ_MODE,
+  THERMAL_GENL_ATTR_TZ_NAME,
+  THERMAL_GENL_ATTR_TZ_CDEV_WEIGHT,
+  THERMAL_GENL_ATTR_TZ_GOV,
+  THERMAL_GENL_ATTR_TZ_GOV_NAME,
+  THERMAL_GENL_ATTR_CDEV,
+  THERMAL_GENL_ATTR_CDEV_ID,
+  THERMAL_GENL_ATTR_CDEV_CUR_STATE,
+  THERMAL_GENL_ATTR_CDEV_MAX_STATE,
+  THERMAL_GENL_ATTR_CDEV_NAME,
+  THERMAL_GENL_ATTR_GOV_NAME,
+  __THERMAL_GENL_ATTR_MAX,
+};
+#define THERMAL_GENL_ATTR_MAX (__THERMAL_GENL_ATTR_MAX - 1)
+enum thermal_genl_sampling {
+  THERMAL_GENL_SAMPLING_TEMP,
+  __THERMAL_GENL_SAMPLING_MAX,
+};
+#define THERMAL_GENL_SAMPLING_MAX (__THERMAL_GENL_SAMPLING_MAX - 1)
+enum thermal_genl_event {
+  THERMAL_GENL_EVENT_UNSPEC,
+  THERMAL_GENL_EVENT_TZ_CREATE,
+  THERMAL_GENL_EVENT_TZ_DELETE,
+  THERMAL_GENL_EVENT_TZ_DISABLE,
+  THERMAL_GENL_EVENT_TZ_ENABLE,
+  THERMAL_GENL_EVENT_TZ_TRIP_UP,
+  THERMAL_GENL_EVENT_TZ_TRIP_DOWN,
+  THERMAL_GENL_EVENT_TZ_TRIP_CHANGE,
+  THERMAL_GENL_EVENT_TZ_TRIP_ADD,
+  THERMAL_GENL_EVENT_TZ_TRIP_DELETE,
+  THERMAL_GENL_EVENT_CDEV_ADD,
+  THERMAL_GENL_EVENT_CDEV_DELETE,
+  THERMAL_GENL_EVENT_CDEV_STATE_UPDATE,
+  THERMAL_GENL_EVENT_TZ_GOV_CHANGE,
+  __THERMAL_GENL_EVENT_MAX,
+};
+#define THERMAL_GENL_EVENT_MAX (__THERMAL_GENL_EVENT_MAX - 1)
+enum thermal_genl_cmd {
+  THERMAL_GENL_CMD_UNSPEC,
+  THERMAL_GENL_CMD_TZ_GET_ID,
+  THERMAL_GENL_CMD_TZ_GET_TRIP,
+  THERMAL_GENL_CMD_TZ_GET_TEMP,
+  THERMAL_GENL_CMD_TZ_GET_GOV,
+  THERMAL_GENL_CMD_TZ_GET_MODE,
+  THERMAL_GENL_CMD_CDEV_GET,
+  __THERMAL_GENL_CMD_MAX,
+};
+#define THERMAL_GENL_CMD_MAX (__THERMAL_GENL_CMD_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/time.h b/i686-linux-musl/include/linux/time.h
new file mode 100644
index 0000000..df52295
--- /dev/null
+++ b/i686-linux-musl/include/linux/time.h
@@ -0,0 +1,65 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_TIME_H
+#define _UAPI_LINUX_TIME_H
+#include <linux/types.h>
+#include <linux/time_types.h>
+#ifndef _STRUCT_TIMESPEC
+#define _STRUCT_TIMESPEC
+struct timespec {
+  __kernel_old_time_t tv_sec;
+  long tv_nsec;
+};
+#endif
+struct timeval {
+  __kernel_old_time_t tv_sec;
+  __kernel_suseconds_t tv_usec;
+};
+struct itimerspec {
+  struct timespec it_interval;
+  struct timespec it_value;
+};
+struct itimerval {
+  struct timeval it_interval;
+  struct timeval it_value;
+};
+struct timezone {
+  int tz_minuteswest;
+  int tz_dsttime;
+};
+#define ITIMER_REAL 0
+#define ITIMER_VIRTUAL 1
+#define ITIMER_PROF 2
+#define CLOCK_REALTIME 0
+#define CLOCK_MONOTONIC 1
+#define CLOCK_PROCESS_CPUTIME_ID 2
+#define CLOCK_THREAD_CPUTIME_ID 3
+#define CLOCK_MONOTONIC_RAW 4
+#define CLOCK_REALTIME_COARSE 5
+#define CLOCK_MONOTONIC_COARSE 6
+#define CLOCK_BOOTTIME 7
+#define CLOCK_REALTIME_ALARM 8
+#define CLOCK_BOOTTIME_ALARM 9
+#define CLOCK_SGI_CYCLE 10
+#define CLOCK_TAI 11
+#define MAX_CLOCKS 16
+#define CLOCKS_MASK (CLOCK_REALTIME | CLOCK_MONOTONIC)
+#define CLOCKS_MONO CLOCK_MONOTONIC
+#define TIMER_ABSTIME 0x01
+#endif
diff --git a/i686-linux-musl/include/linux/time_types.h b/i686-linux-musl/include/linux/time_types.h
new file mode 100644
index 0000000..8c70a56
--- /dev/null
+++ b/i686-linux-musl/include/linux/time_types.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_TIME_TYPES_H
+#define _UAPI_LINUX_TIME_TYPES_H
+#include <linux/types.h>
+struct __kernel_timespec {
+  __kernel_time64_t tv_sec;
+  long long tv_nsec;
+};
+struct __kernel_itimerspec {
+  struct __kernel_timespec it_interval;
+  struct __kernel_timespec it_value;
+};
+struct __kernel_old_timespec {
+  __kernel_old_time_t tv_sec;
+  long tv_nsec;
+};
+struct __kernel_sock_timeval {
+  __s64 tv_sec;
+  __s64 tv_usec;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/timerfd.h b/i686-linux-musl/include/linux/timerfd.h
new file mode 100644
index 0000000..eaa415a
--- /dev/null
+++ b/i686-linux-musl/include/linux/timerfd.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_TIMERFD_H
+#define _UAPI_LINUX_TIMERFD_H
+#include <linux/types.h>
+#include <linux/fcntl.h>
+#include <linux/ioctl.h>
+#define TFD_TIMER_ABSTIME (1 << 0)
+#define TFD_TIMER_CANCEL_ON_SET (1 << 1)
+#define TFD_CLOEXEC O_CLOEXEC
+#define TFD_NONBLOCK O_NONBLOCK
+#define TFD_IOC_SET_TICKS _IOW('T', 0, __u64)
+#endif
diff --git a/i686-linux-musl/include/linux/times.h b/i686-linux-musl/include/linux/times.h
new file mode 100644
index 0000000..b204b78
--- /dev/null
+++ b/i686-linux-musl/include/linux/times.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_TIMES_H
+#define _LINUX_TIMES_H
+#include <linux/types.h>
+struct tms {
+  __kernel_clock_t tms_utime;
+  __kernel_clock_t tms_stime;
+  __kernel_clock_t tms_cutime;
+  __kernel_clock_t tms_cstime;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/timex.h b/i686-linux-musl/include/linux/timex.h
new file mode 100644
index 0000000..803eaec
--- /dev/null
+++ b/i686-linux-musl/include/linux/timex.h
@@ -0,0 +1,142 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_TIMEX_H
+#define _UAPI_LINUX_TIMEX_H
+#include <linux/time.h>
+#define NTP_API 4
+struct timex {
+  unsigned int modes;
+  __kernel_long_t offset;
+  __kernel_long_t freq;
+  __kernel_long_t maxerror;
+  __kernel_long_t esterror;
+  int status;
+  __kernel_long_t constant;
+  __kernel_long_t precision;
+  __kernel_long_t tolerance;
+  struct timeval time;
+  __kernel_long_t tick;
+  __kernel_long_t ppsfreq;
+  __kernel_long_t jitter;
+  int shift;
+  __kernel_long_t stabil;
+  __kernel_long_t jitcnt;
+  __kernel_long_t calcnt;
+  __kernel_long_t errcnt;
+  __kernel_long_t stbcnt;
+  int tai;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+};
+struct __kernel_timex_timeval {
+  __kernel_time64_t tv_sec;
+  long long tv_usec;
+};
+struct __kernel_timex {
+  unsigned int modes;
+  int : 32;
+  long long offset;
+  long long freq;
+  long long maxerror;
+  long long esterror;
+  int status;
+  int : 32;
+  long long constant;
+  long long precision;
+  long long tolerance;
+  struct __kernel_timex_timeval time;
+  long long tick;
+  long long ppsfreq;
+  long long jitter;
+  int shift;
+  int : 32;
+  long long stabil;
+  long long jitcnt;
+  long long calcnt;
+  long long errcnt;
+  long long stbcnt;
+  int tai;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+};
+#define ADJ_OFFSET 0x0001
+#define ADJ_FREQUENCY 0x0002
+#define ADJ_MAXERROR 0x0004
+#define ADJ_ESTERROR 0x0008
+#define ADJ_STATUS 0x0010
+#define ADJ_TIMECONST 0x0020
+#define ADJ_TAI 0x0080
+#define ADJ_SETOFFSET 0x0100
+#define ADJ_MICRO 0x1000
+#define ADJ_NANO 0x2000
+#define ADJ_TICK 0x4000
+#define ADJ_OFFSET_SINGLESHOT 0x8001
+#define ADJ_OFFSET_SS_READ 0xa001
+#define MOD_OFFSET ADJ_OFFSET
+#define MOD_FREQUENCY ADJ_FREQUENCY
+#define MOD_MAXERROR ADJ_MAXERROR
+#define MOD_ESTERROR ADJ_ESTERROR
+#define MOD_STATUS ADJ_STATUS
+#define MOD_TIMECONST ADJ_TIMECONST
+#define MOD_TAI ADJ_TAI
+#define MOD_MICRO ADJ_MICRO
+#define MOD_NANO ADJ_NANO
+#define STA_PLL 0x0001
+#define STA_PPSFREQ 0x0002
+#define STA_PPSTIME 0x0004
+#define STA_FLL 0x0008
+#define STA_INS 0x0010
+#define STA_DEL 0x0020
+#define STA_UNSYNC 0x0040
+#define STA_FREQHOLD 0x0080
+#define STA_PPSSIGNAL 0x0100
+#define STA_PPSJITTER 0x0200
+#define STA_PPSWANDER 0x0400
+#define STA_PPSERROR 0x0800
+#define STA_CLOCKERR 0x1000
+#define STA_NANO 0x2000
+#define STA_MODE 0x4000
+#define STA_CLK 0x8000
+#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
+#define TIME_OK 0
+#define TIME_INS 1
+#define TIME_DEL 2
+#define TIME_OOP 3
+#define TIME_WAIT 4
+#define TIME_ERROR 5
+#define TIME_BAD TIME_ERROR
+#endif
diff --git a/i686-linux-musl/include/linux/tiocl.h b/i686-linux-musl/include/linux/tiocl.h
new file mode 100644
index 0000000..4649607
--- /dev/null
+++ b/i686-linux-musl/include/linux/tiocl.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_TIOCL_H
+#define _LINUX_TIOCL_H
+#define TIOCL_SETSEL 2
+#define TIOCL_SELCHAR 0
+#define TIOCL_SELWORD 1
+#define TIOCL_SELLINE 2
+#define TIOCL_SELPOINTER 3
+#define TIOCL_SELCLEAR 4
+#define TIOCL_SELMOUSEREPORT 16
+#define TIOCL_SELBUTTONMASK 15
+struct tiocl_selection {
+  unsigned short xs;
+  unsigned short ys;
+  unsigned short xe;
+  unsigned short ye;
+  unsigned short sel_mode;
+};
+#define TIOCL_PASTESEL 3
+#define TIOCL_UNBLANKSCREEN 4
+#define TIOCL_SELLOADLUT 5
+#define TIOCL_GETSHIFTSTATE 6
+#define TIOCL_GETMOUSEREPORTING 7
+#define TIOCL_SETVESABLANK 10
+#define TIOCL_SETKMSGREDIRECT 11
+#define TIOCL_GETFGCONSOLE 12
+#define TIOCL_SCROLLCONSOLE 13
+#define TIOCL_BLANKSCREEN 14
+#define TIOCL_BLANKEDSCREEN 15
+#define TIOCL_GETKMSGREDIRECT 17
+#endif
diff --git a/i686-linux-musl/include/linux/tipc.h b/i686-linux-musl/include/linux/tipc.h
new file mode 100644
index 0000000..c66754c
--- /dev/null
+++ b/i686-linux-musl/include/linux/tipc.h
@@ -0,0 +1,171 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_TIPC_H_
+#define _LINUX_TIPC_H_
+#include <linux/types.h>
+#include <linux/sockios.h>
+struct tipc_socket_addr {
+  __u32 ref;
+  __u32 node;
+};
+struct tipc_service_addr {
+  __u32 type;
+  __u32 instance;
+};
+struct tipc_service_range {
+  __u32 type;
+  __u32 lower;
+  __u32 upper;
+};
+#define TIPC_NODE_STATE 0
+#define TIPC_TOP_SRV 1
+#define TIPC_LINK_STATE 2
+#define TIPC_RESERVED_TYPES 64
+enum tipc_scope {
+  TIPC_CLUSTER_SCOPE = 2,
+  TIPC_NODE_SCOPE = 3
+};
+#define TIPC_MAX_USER_MSG_SIZE 66000U
+#define TIPC_LOW_IMPORTANCE 0
+#define TIPC_MEDIUM_IMPORTANCE 1
+#define TIPC_HIGH_IMPORTANCE 2
+#define TIPC_CRITICAL_IMPORTANCE 3
+#define TIPC_OK 0
+#define TIPC_ERR_NO_NAME 1
+#define TIPC_ERR_NO_PORT 2
+#define TIPC_ERR_NO_NODE 3
+#define TIPC_ERR_OVERLOAD 4
+#define TIPC_CONN_SHUTDOWN 5
+#define TIPC_SUB_PORTS 0x01
+#define TIPC_SUB_SERVICE 0x02
+#define TIPC_SUB_CANCEL 0x04
+#define TIPC_WAIT_FOREVER (~0)
+struct tipc_subscr {
+  struct tipc_service_range seq;
+  __u32 timeout;
+  __u32 filter;
+  char usr_handle[8];
+};
+#define TIPC_PUBLISHED 1
+#define TIPC_WITHDRAWN 2
+#define TIPC_SUBSCR_TIMEOUT 3
+struct tipc_event {
+  __u32 event;
+  __u32 found_lower;
+  __u32 found_upper;
+  struct tipc_socket_addr port;
+  struct tipc_subscr s;
+};
+#ifndef AF_TIPC
+#define AF_TIPC 30
+#endif
+#ifndef PF_TIPC
+#define PF_TIPC AF_TIPC
+#endif
+#ifndef SOL_TIPC
+#define SOL_TIPC 271
+#endif
+#define TIPC_ADDR_MCAST 1
+#define TIPC_SERVICE_RANGE 1
+#define TIPC_SERVICE_ADDR 2
+#define TIPC_SOCKET_ADDR 3
+struct sockaddr_tipc {
+  unsigned short family;
+  unsigned char addrtype;
+  signed char scope;
+  union {
+    struct tipc_socket_addr id;
+    struct tipc_service_range nameseq;
+    struct {
+      struct tipc_service_addr name;
+      __u32 domain;
+    } name;
+  } addr;
+};
+#define TIPC_ERRINFO 1
+#define TIPC_RETDATA 2
+#define TIPC_DESTNAME 3
+#define TIPC_IMPORTANCE 127
+#define TIPC_SRC_DROPPABLE 128
+#define TIPC_DEST_DROPPABLE 129
+#define TIPC_CONN_TIMEOUT 130
+#define TIPC_NODE_RECVQ_DEPTH 131
+#define TIPC_SOCK_RECVQ_DEPTH 132
+#define TIPC_MCAST_BROADCAST 133
+#define TIPC_MCAST_REPLICAST 134
+#define TIPC_GROUP_JOIN 135
+#define TIPC_GROUP_LEAVE 136
+#define TIPC_SOCK_RECVQ_USED 137
+#define TIPC_NODELAY 138
+#define TIPC_GROUP_LOOPBACK 0x1
+#define TIPC_GROUP_MEMBER_EVTS 0x2
+struct tipc_group_req {
+  __u32 type;
+  __u32 instance;
+  __u32 scope;
+  __u32 flags;
+};
+#define TIPC_NODEID_LEN 16
+#define TIPC_MAX_MEDIA_NAME 16
+#define TIPC_MAX_IF_NAME 16
+#define TIPC_MAX_BEARER_NAME 32
+#define TIPC_MAX_LINK_NAME 68
+#define SIOCGETLINKNAME SIOCPROTOPRIVATE
+#define SIOCGETNODEID (SIOCPROTOPRIVATE + 1)
+struct tipc_sioc_ln_req {
+  __u32 peer;
+  __u32 bearer_id;
+  char linkname[TIPC_MAX_LINK_NAME];
+};
+struct tipc_sioc_nodeid_req {
+  __u32 peer;
+  char node_id[TIPC_NODEID_LEN];
+};
+#define TIPC_AEAD_ALG_NAME (32)
+struct tipc_aead_key {
+  char alg_name[TIPC_AEAD_ALG_NAME];
+  unsigned int keylen;
+  char key[];
+};
+#define TIPC_AEAD_KEYLEN_MIN (16 + 4)
+#define TIPC_AEAD_KEYLEN_MAX (32 + 4)
+#define TIPC_AEAD_KEY_SIZE_MAX (sizeof(struct tipc_aead_key) + TIPC_AEAD_KEYLEN_MAX)
+#define TIPC_REKEYING_NOW (~0U)
+#define TIPC_CFG_SRV 0
+#define TIPC_ZONE_SCOPE 1
+#define TIPC_ADDR_NAMESEQ 1
+#define TIPC_ADDR_NAME 2
+#define TIPC_ADDR_ID 3
+#define TIPC_NODE_BITS 12
+#define TIPC_CLUSTER_BITS 12
+#define TIPC_ZONE_BITS 8
+#define TIPC_NODE_OFFSET 0
+#define TIPC_CLUSTER_OFFSET TIPC_NODE_BITS
+#define TIPC_ZONE_OFFSET (TIPC_CLUSTER_OFFSET + TIPC_CLUSTER_BITS)
+#define TIPC_NODE_SIZE ((1UL << TIPC_NODE_BITS) - 1)
+#define TIPC_CLUSTER_SIZE ((1UL << TIPC_CLUSTER_BITS) - 1)
+#define TIPC_ZONE_SIZE ((1UL << TIPC_ZONE_BITS) - 1)
+#define TIPC_NODE_MASK (TIPC_NODE_SIZE << TIPC_NODE_OFFSET)
+#define TIPC_CLUSTER_MASK (TIPC_CLUSTER_SIZE << TIPC_CLUSTER_OFFSET)
+#define TIPC_ZONE_MASK (TIPC_ZONE_SIZE << TIPC_ZONE_OFFSET)
+#define TIPC_ZONE_CLUSTER_MASK (TIPC_ZONE_MASK | TIPC_CLUSTER_MASK)
+#define tipc_portid tipc_socket_addr
+#define tipc_name tipc_service_addr
+#define tipc_name_seq tipc_service_range
+#endif
diff --git a/i686-linux-musl/include/linux/tipc_config.h b/i686-linux-musl/include/linux/tipc_config.h
new file mode 100644
index 0000000..a371e37
--- /dev/null
+++ b/i686-linux-musl/include/linux/tipc_config.h
@@ -0,0 +1,159 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_TIPC_CONFIG_H_
+#define _LINUX_TIPC_CONFIG_H_
+#include <linux/types.h>
+#include <linux/string.h>
+#include <linux/tipc.h>
+#include <asm/byteorder.h>
+#include <arpa/inet.h>
+#define TIPC_CMD_NOOP 0x0000
+#define TIPC_CMD_GET_NODES 0x0001
+#define TIPC_CMD_GET_MEDIA_NAMES 0x0002
+#define TIPC_CMD_GET_BEARER_NAMES 0x0003
+#define TIPC_CMD_GET_LINKS 0x0004
+#define TIPC_CMD_SHOW_NAME_TABLE 0x0005
+#define TIPC_CMD_SHOW_PORTS 0x0006
+#define TIPC_CMD_SHOW_LINK_STATS 0x000B
+#define TIPC_CMD_SHOW_STATS 0x000F
+#define TIPC_CMD_GET_REMOTE_MNG 0x4003
+#define TIPC_CMD_GET_MAX_PORTS 0x4004
+#define TIPC_CMD_GET_MAX_PUBL 0x4005
+#define TIPC_CMD_GET_MAX_SUBSCR 0x4006
+#define TIPC_CMD_GET_MAX_ZONES 0x4007
+#define TIPC_CMD_GET_MAX_CLUSTERS 0x4008
+#define TIPC_CMD_GET_MAX_NODES 0x4009
+#define TIPC_CMD_GET_MAX_SLAVES 0x400A
+#define TIPC_CMD_GET_NETID 0x400B
+#define TIPC_CMD_ENABLE_BEARER 0x4101
+#define TIPC_CMD_DISABLE_BEARER 0x4102
+#define TIPC_CMD_SET_LINK_TOL 0x4107
+#define TIPC_CMD_SET_LINK_PRI 0x4108
+#define TIPC_CMD_SET_LINK_WINDOW 0x4109
+#define TIPC_CMD_SET_LOG_SIZE 0x410A
+#define TIPC_CMD_DUMP_LOG 0x410B
+#define TIPC_CMD_RESET_LINK_STATS 0x410C
+#define TIPC_CMD_SET_NODE_ADDR 0x8001
+#define TIPC_CMD_SET_REMOTE_MNG 0x8003
+#define TIPC_CMD_SET_MAX_PORTS 0x8004
+#define TIPC_CMD_SET_MAX_PUBL 0x8005
+#define TIPC_CMD_SET_MAX_SUBSCR 0x8006
+#define TIPC_CMD_SET_MAX_ZONES 0x8007
+#define TIPC_CMD_SET_MAX_CLUSTERS 0x8008
+#define TIPC_CMD_SET_MAX_NODES 0x8009
+#define TIPC_CMD_SET_MAX_SLAVES 0x800A
+#define TIPC_CMD_SET_NETID 0x800B
+#define TIPC_CMD_NOT_NET_ADMIN 0xC001
+#define TIPC_TLV_NONE 0
+#define TIPC_TLV_VOID 1
+#define TIPC_TLV_UNSIGNED 2
+#define TIPC_TLV_STRING 3
+#define TIPC_TLV_LARGE_STRING 4
+#define TIPC_TLV_ULTRA_STRING 5
+#define TIPC_TLV_ERROR_STRING 16
+#define TIPC_TLV_NET_ADDR 17
+#define TIPC_TLV_MEDIA_NAME 18
+#define TIPC_TLV_BEARER_NAME 19
+#define TIPC_TLV_LINK_NAME 20
+#define TIPC_TLV_NODE_INFO 21
+#define TIPC_TLV_LINK_INFO 22
+#define TIPC_TLV_BEARER_CONFIG 23
+#define TIPC_TLV_LINK_CONFIG 24
+#define TIPC_TLV_NAME_TBL_QUERY 25
+#define TIPC_TLV_PORT_REF 26
+#define TIPC_MIN_LINK_PRI 0
+#define TIPC_DEF_LINK_PRI 10
+#define TIPC_MAX_LINK_PRI 31
+#define TIPC_MEDIA_LINK_PRI (TIPC_MAX_LINK_PRI + 1)
+#define TIPC_MIN_LINK_TOL 50
+#define TIPC_DEF_LINK_TOL 1500
+#define TIPC_MAX_LINK_TOL 30000
+#if TIPC_MIN_LINK_TOL < 16
+#error "TIPC_MIN_LINK_TOL is too small (abort limit may be NaN)"
+#endif
+#define TIPC_MIN_LINK_WIN 16
+#define TIPC_DEF_LINK_WIN 50
+#define TIPC_MAX_LINK_WIN 8191
+#define TIPC_DEF_LINK_UDP_MTU 14000
+struct tipc_node_info {
+  __be32 addr;
+  __be32 up;
+};
+struct tipc_link_info {
+  __be32 dest;
+  __be32 up;
+  char str[TIPC_MAX_LINK_NAME];
+};
+struct tipc_bearer_config {
+  __be32 priority;
+  __be32 disc_domain;
+  char name[TIPC_MAX_BEARER_NAME];
+};
+struct tipc_link_config {
+  __be32 value;
+  char name[TIPC_MAX_LINK_NAME];
+};
+#define TIPC_NTQ_ALLTYPES 0x80000000
+struct tipc_name_table_query {
+  __be32 depth;
+  __be32 type;
+  __be32 lowbound;
+  __be32 upbound;
+};
+#define TIPC_CFG_TLV_ERROR "\x80"
+#define TIPC_CFG_NOT_NET_ADMIN "\x81"
+#define TIPC_CFG_NOT_ZONE_MSTR "\x82"
+#define TIPC_CFG_NO_REMOTE "\x83"
+#define TIPC_CFG_NOT_SUPPORTED "\x84"
+#define TIPC_CFG_INVALID_VALUE "\x85"
+struct tlv_desc {
+  __be16 tlv_len;
+  __be16 tlv_type;
+};
+#define TLV_ALIGNTO 4
+#define TLV_ALIGN(datalen) (((datalen) + (TLV_ALIGNTO - 1)) & ~(TLV_ALIGNTO - 1))
+#define TLV_LENGTH(datalen) (sizeof(struct tlv_desc) + (datalen))
+#define TLV_SPACE(datalen) (TLV_ALIGN(TLV_LENGTH(datalen)))
+#define TLV_DATA(tlv) ((void *) ((char *) (tlv) + TLV_LENGTH(0)))
+struct tlv_list_desc {
+  struct tlv_desc * tlv_ptr;
+  __u32 tlv_space;
+};
+#define TIPC_GENL_NAME "TIPC"
+#define TIPC_GENL_VERSION 0x1
+#define TIPC_GENL_CMD 0x1
+struct tipc_genlmsghdr {
+  __u32 dest;
+  __u16 cmd;
+  __u16 reserved;
+};
+#define TIPC_GENL_HDRLEN NLMSG_ALIGN(sizeof(struct tipc_genlmsghdr))
+struct tipc_cfg_msg_hdr {
+  __be32 tcm_len;
+  __be16 tcm_type;
+  __be16 tcm_flags;
+  char tcm_reserved[8];
+};
+#define TCM_F_REQUEST 0x1
+#define TCM_F_MORE 0x2
+#define TCM_ALIGN(datalen) (((datalen) + 3) & ~3)
+#define TCM_LENGTH(datalen) (sizeof(struct tipc_cfg_msg_hdr) + datalen)
+#define TCM_SPACE(datalen) (TCM_ALIGN(TCM_LENGTH(datalen)))
+#define TCM_DATA(tcm_hdr) ((void *) ((char *) (tcm_hdr) + TCM_LENGTH(0)))
+#endif
diff --git a/i686-linux-musl/include/linux/tipc_netlink.h b/i686-linux-musl/include/linux/tipc_netlink.h
new file mode 100644
index 0000000..39be948
--- /dev/null
+++ b/i686-linux-musl/include/linux/tipc_netlink.h
@@ -0,0 +1,266 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_TIPC_NETLINK_H_
+#define _LINUX_TIPC_NETLINK_H_
+#define TIPC_GENL_V2_NAME "TIPCv2"
+#define TIPC_GENL_V2_VERSION 0x1
+enum {
+  TIPC_NL_UNSPEC,
+  TIPC_NL_LEGACY,
+  TIPC_NL_BEARER_DISABLE,
+  TIPC_NL_BEARER_ENABLE,
+  TIPC_NL_BEARER_GET,
+  TIPC_NL_BEARER_SET,
+  TIPC_NL_SOCK_GET,
+  TIPC_NL_PUBL_GET,
+  TIPC_NL_LINK_GET,
+  TIPC_NL_LINK_SET,
+  TIPC_NL_LINK_RESET_STATS,
+  TIPC_NL_MEDIA_GET,
+  TIPC_NL_MEDIA_SET,
+  TIPC_NL_NODE_GET,
+  TIPC_NL_NET_GET,
+  TIPC_NL_NET_SET,
+  TIPC_NL_NAME_TABLE_GET,
+  TIPC_NL_MON_SET,
+  TIPC_NL_MON_GET,
+  TIPC_NL_MON_PEER_GET,
+  TIPC_NL_PEER_REMOVE,
+  TIPC_NL_BEARER_ADD,
+  TIPC_NL_UDP_GET_REMOTEIP,
+  TIPC_NL_KEY_SET,
+  TIPC_NL_KEY_FLUSH,
+  TIPC_NL_ADDR_LEGACY_GET,
+  __TIPC_NL_CMD_MAX,
+  TIPC_NL_CMD_MAX = __TIPC_NL_CMD_MAX - 1
+};
+enum {
+  TIPC_NLA_UNSPEC,
+  TIPC_NLA_BEARER,
+  TIPC_NLA_SOCK,
+  TIPC_NLA_PUBL,
+  TIPC_NLA_LINK,
+  TIPC_NLA_MEDIA,
+  TIPC_NLA_NODE,
+  TIPC_NLA_NET,
+  TIPC_NLA_NAME_TABLE,
+  TIPC_NLA_MON,
+  TIPC_NLA_MON_PEER,
+  __TIPC_NLA_MAX,
+  TIPC_NLA_MAX = __TIPC_NLA_MAX - 1
+};
+enum {
+  TIPC_NLA_BEARER_UNSPEC,
+  TIPC_NLA_BEARER_NAME,
+  TIPC_NLA_BEARER_PROP,
+  TIPC_NLA_BEARER_DOMAIN,
+  TIPC_NLA_BEARER_UDP_OPTS,
+  __TIPC_NLA_BEARER_MAX,
+  TIPC_NLA_BEARER_MAX = __TIPC_NLA_BEARER_MAX - 1
+};
+enum {
+  TIPC_NLA_UDP_UNSPEC,
+  TIPC_NLA_UDP_LOCAL,
+  TIPC_NLA_UDP_REMOTE,
+  TIPC_NLA_UDP_MULTI_REMOTEIP,
+  __TIPC_NLA_UDP_MAX,
+  TIPC_NLA_UDP_MAX = __TIPC_NLA_UDP_MAX - 1
+};
+enum {
+  TIPC_NLA_SOCK_UNSPEC,
+  TIPC_NLA_SOCK_ADDR,
+  TIPC_NLA_SOCK_REF,
+  TIPC_NLA_SOCK_CON,
+  TIPC_NLA_SOCK_HAS_PUBL,
+  TIPC_NLA_SOCK_STAT,
+  TIPC_NLA_SOCK_TYPE,
+  TIPC_NLA_SOCK_INO,
+  TIPC_NLA_SOCK_UID,
+  TIPC_NLA_SOCK_TIPC_STATE,
+  TIPC_NLA_SOCK_COOKIE,
+  TIPC_NLA_SOCK_PAD,
+  TIPC_NLA_SOCK_GROUP,
+  __TIPC_NLA_SOCK_MAX,
+  TIPC_NLA_SOCK_MAX = __TIPC_NLA_SOCK_MAX - 1
+};
+enum {
+  TIPC_NLA_LINK_UNSPEC,
+  TIPC_NLA_LINK_NAME,
+  TIPC_NLA_LINK_DEST,
+  TIPC_NLA_LINK_MTU,
+  TIPC_NLA_LINK_BROADCAST,
+  TIPC_NLA_LINK_UP,
+  TIPC_NLA_LINK_ACTIVE,
+  TIPC_NLA_LINK_PROP,
+  TIPC_NLA_LINK_STATS,
+  TIPC_NLA_LINK_RX,
+  TIPC_NLA_LINK_TX,
+  __TIPC_NLA_LINK_MAX,
+  TIPC_NLA_LINK_MAX = __TIPC_NLA_LINK_MAX - 1
+};
+enum {
+  TIPC_NLA_MEDIA_UNSPEC,
+  TIPC_NLA_MEDIA_NAME,
+  TIPC_NLA_MEDIA_PROP,
+  __TIPC_NLA_MEDIA_MAX,
+  TIPC_NLA_MEDIA_MAX = __TIPC_NLA_MEDIA_MAX - 1
+};
+enum {
+  TIPC_NLA_NODE_UNSPEC,
+  TIPC_NLA_NODE_ADDR,
+  TIPC_NLA_NODE_UP,
+  TIPC_NLA_NODE_ID,
+  TIPC_NLA_NODE_KEY,
+  TIPC_NLA_NODE_KEY_MASTER,
+  TIPC_NLA_NODE_REKEYING,
+  __TIPC_NLA_NODE_MAX,
+  TIPC_NLA_NODE_MAX = __TIPC_NLA_NODE_MAX - 1
+};
+enum {
+  TIPC_NLA_NET_UNSPEC,
+  TIPC_NLA_NET_ID,
+  TIPC_NLA_NET_ADDR,
+  TIPC_NLA_NET_NODEID,
+  TIPC_NLA_NET_NODEID_W1,
+  TIPC_NLA_NET_ADDR_LEGACY,
+  __TIPC_NLA_NET_MAX,
+  TIPC_NLA_NET_MAX = __TIPC_NLA_NET_MAX - 1
+};
+enum {
+  TIPC_NLA_NAME_TABLE_UNSPEC,
+  TIPC_NLA_NAME_TABLE_PUBL,
+  __TIPC_NLA_NAME_TABLE_MAX,
+  TIPC_NLA_NAME_TABLE_MAX = __TIPC_NLA_NAME_TABLE_MAX - 1
+};
+enum {
+  TIPC_NLA_MON_UNSPEC,
+  TIPC_NLA_MON_ACTIVATION_THRESHOLD,
+  TIPC_NLA_MON_REF,
+  TIPC_NLA_MON_ACTIVE,
+  TIPC_NLA_MON_BEARER_NAME,
+  TIPC_NLA_MON_PEERCNT,
+  TIPC_NLA_MON_LISTGEN,
+  __TIPC_NLA_MON_MAX,
+  TIPC_NLA_MON_MAX = __TIPC_NLA_MON_MAX - 1
+};
+enum {
+  TIPC_NLA_PUBL_UNSPEC,
+  TIPC_NLA_PUBL_TYPE,
+  TIPC_NLA_PUBL_LOWER,
+  TIPC_NLA_PUBL_UPPER,
+  TIPC_NLA_PUBL_SCOPE,
+  TIPC_NLA_PUBL_NODE,
+  TIPC_NLA_PUBL_REF,
+  TIPC_NLA_PUBL_KEY,
+  __TIPC_NLA_PUBL_MAX,
+  TIPC_NLA_PUBL_MAX = __TIPC_NLA_PUBL_MAX - 1
+};
+enum {
+  TIPC_NLA_MON_PEER_UNSPEC,
+  TIPC_NLA_MON_PEER_ADDR,
+  TIPC_NLA_MON_PEER_DOMGEN,
+  TIPC_NLA_MON_PEER_APPLIED,
+  TIPC_NLA_MON_PEER_UPMAP,
+  TIPC_NLA_MON_PEER_MEMBERS,
+  TIPC_NLA_MON_PEER_UP,
+  TIPC_NLA_MON_PEER_HEAD,
+  TIPC_NLA_MON_PEER_LOCAL,
+  TIPC_NLA_MON_PEER_PAD,
+  __TIPC_NLA_MON_PEER_MAX,
+  TIPC_NLA_MON_PEER_MAX = __TIPC_NLA_MON_PEER_MAX - 1
+};
+enum {
+  TIPC_NLA_SOCK_GROUP_ID,
+  TIPC_NLA_SOCK_GROUP_OPEN,
+  TIPC_NLA_SOCK_GROUP_NODE_SCOPE,
+  TIPC_NLA_SOCK_GROUP_CLUSTER_SCOPE,
+  TIPC_NLA_SOCK_GROUP_INSTANCE,
+  TIPC_NLA_SOCK_GROUP_BC_SEND_NEXT,
+  __TIPC_NLA_SOCK_GROUP_MAX,
+  TIPC_NLA_SOCK_GROUP_MAX = __TIPC_NLA_SOCK_GROUP_MAX - 1
+};
+enum {
+  TIPC_NLA_CON_UNSPEC,
+  TIPC_NLA_CON_FLAG,
+  TIPC_NLA_CON_NODE,
+  TIPC_NLA_CON_SOCK,
+  TIPC_NLA_CON_TYPE,
+  TIPC_NLA_CON_INST,
+  __TIPC_NLA_CON_MAX,
+  TIPC_NLA_CON_MAX = __TIPC_NLA_CON_MAX - 1
+};
+enum {
+  TIPC_NLA_SOCK_STAT_RCVQ,
+  TIPC_NLA_SOCK_STAT_SENDQ,
+  TIPC_NLA_SOCK_STAT_LINK_CONG,
+  TIPC_NLA_SOCK_STAT_CONN_CONG,
+  TIPC_NLA_SOCK_STAT_DROP,
+  __TIPC_NLA_SOCK_STAT_MAX,
+  TIPC_NLA_SOCK_STAT_MAX = __TIPC_NLA_SOCK_STAT_MAX - 1
+};
+enum {
+  TIPC_NLA_PROP_UNSPEC,
+  TIPC_NLA_PROP_PRIO,
+  TIPC_NLA_PROP_TOL,
+  TIPC_NLA_PROP_WIN,
+  TIPC_NLA_PROP_MTU,
+  TIPC_NLA_PROP_BROADCAST,
+  TIPC_NLA_PROP_BROADCAST_RATIO,
+  __TIPC_NLA_PROP_MAX,
+  TIPC_NLA_PROP_MAX = __TIPC_NLA_PROP_MAX - 1
+};
+enum {
+  TIPC_NLA_STATS_UNSPEC,
+  TIPC_NLA_STATS_RX_INFO,
+  TIPC_NLA_STATS_RX_FRAGMENTS,
+  TIPC_NLA_STATS_RX_FRAGMENTED,
+  TIPC_NLA_STATS_RX_BUNDLES,
+  TIPC_NLA_STATS_RX_BUNDLED,
+  TIPC_NLA_STATS_TX_INFO,
+  TIPC_NLA_STATS_TX_FRAGMENTS,
+  TIPC_NLA_STATS_TX_FRAGMENTED,
+  TIPC_NLA_STATS_TX_BUNDLES,
+  TIPC_NLA_STATS_TX_BUNDLED,
+  TIPC_NLA_STATS_MSG_PROF_TOT,
+  TIPC_NLA_STATS_MSG_LEN_CNT,
+  TIPC_NLA_STATS_MSG_LEN_TOT,
+  TIPC_NLA_STATS_MSG_LEN_P0,
+  TIPC_NLA_STATS_MSG_LEN_P1,
+  TIPC_NLA_STATS_MSG_LEN_P2,
+  TIPC_NLA_STATS_MSG_LEN_P3,
+  TIPC_NLA_STATS_MSG_LEN_P4,
+  TIPC_NLA_STATS_MSG_LEN_P5,
+  TIPC_NLA_STATS_MSG_LEN_P6,
+  TIPC_NLA_STATS_RX_STATES,
+  TIPC_NLA_STATS_RX_PROBES,
+  TIPC_NLA_STATS_RX_NACKS,
+  TIPC_NLA_STATS_RX_DEFERRED,
+  TIPC_NLA_STATS_TX_STATES,
+  TIPC_NLA_STATS_TX_PROBES,
+  TIPC_NLA_STATS_TX_NACKS,
+  TIPC_NLA_STATS_TX_ACKS,
+  TIPC_NLA_STATS_RETRANSMITTED,
+  TIPC_NLA_STATS_DUPLICATES,
+  TIPC_NLA_STATS_LINK_CONGS,
+  TIPC_NLA_STATS_MAX_QUEUE,
+  TIPC_NLA_STATS_AVG_QUEUE,
+  __TIPC_NLA_STATS_MAX,
+  TIPC_NLA_STATS_MAX = __TIPC_NLA_STATS_MAX - 1
+};
+#endif
diff --git a/i686-linux-musl/include/linux/tipc_sockets_diag.h b/i686-linux-musl/include/linux/tipc_sockets_diag.h
new file mode 100644
index 0000000..7d7d016
--- /dev/null
+++ b/i686-linux-musl/include/linux/tipc_sockets_diag.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__TIPC_SOCKETS_DIAG_H__
+#define _UAPI__TIPC_SOCKETS_DIAG_H__
+#include <linux/types.h>
+#include <linux/sock_diag.h>
+struct tipc_sock_diag_req {
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
+  __u16 pad;
+  __u32 tidiag_states;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/tls.h b/i686-linux-musl/include/linux/tls.h
new file mode 100644
index 0000000..c98ea0b
--- /dev/null
+++ b/i686-linux-musl/include/linux/tls.h
@@ -0,0 +1,130 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_TLS_H
+#define _UAPI_LINUX_TLS_H
+#include <linux/types.h>
+#define TLS_TX 1
+#define TLS_RX 2
+#define TLS_VERSION_MINOR(ver) ((ver) & 0xFF)
+#define TLS_VERSION_MAJOR(ver) (((ver) >> 8) & 0xFF)
+#define TLS_VERSION_NUMBER(id) ((((id ##_VERSION_MAJOR) & 0xFF) << 8) | ((id ##_VERSION_MINOR) & 0xFF))
+#define TLS_1_2_VERSION_MAJOR 0x3
+#define TLS_1_2_VERSION_MINOR 0x3
+#define TLS_1_2_VERSION TLS_VERSION_NUMBER(TLS_1_2)
+#define TLS_1_3_VERSION_MAJOR 0x3
+#define TLS_1_3_VERSION_MINOR 0x4
+#define TLS_1_3_VERSION TLS_VERSION_NUMBER(TLS_1_3)
+#define TLS_CIPHER_AES_GCM_128 51
+#define TLS_CIPHER_AES_GCM_128_IV_SIZE 8
+#define TLS_CIPHER_AES_GCM_128_KEY_SIZE 16
+#define TLS_CIPHER_AES_GCM_128_SALT_SIZE 4
+#define TLS_CIPHER_AES_GCM_128_TAG_SIZE 16
+#define TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE 8
+#define TLS_CIPHER_AES_GCM_256 52
+#define TLS_CIPHER_AES_GCM_256_IV_SIZE 8
+#define TLS_CIPHER_AES_GCM_256_KEY_SIZE 32
+#define TLS_CIPHER_AES_GCM_256_SALT_SIZE 4
+#define TLS_CIPHER_AES_GCM_256_TAG_SIZE 16
+#define TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE 8
+#define TLS_CIPHER_AES_CCM_128 53
+#define TLS_CIPHER_AES_CCM_128_IV_SIZE 8
+#define TLS_CIPHER_AES_CCM_128_KEY_SIZE 16
+#define TLS_CIPHER_AES_CCM_128_SALT_SIZE 4
+#define TLS_CIPHER_AES_CCM_128_TAG_SIZE 16
+#define TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE 8
+#define TLS_CIPHER_CHACHA20_POLY1305 54
+#define TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE 12
+#define TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE 32
+#define TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE 0
+#define TLS_CIPHER_CHACHA20_POLY1305_TAG_SIZE 16
+#define TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE 8
+#define TLS_CIPHER_SM4_GCM 55
+#define TLS_CIPHER_SM4_GCM_IV_SIZE 8
+#define TLS_CIPHER_SM4_GCM_KEY_SIZE 16
+#define TLS_CIPHER_SM4_GCM_SALT_SIZE 4
+#define TLS_CIPHER_SM4_GCM_TAG_SIZE 16
+#define TLS_CIPHER_SM4_GCM_REC_SEQ_SIZE 8
+#define TLS_CIPHER_SM4_CCM 56
+#define TLS_CIPHER_SM4_CCM_IV_SIZE 8
+#define TLS_CIPHER_SM4_CCM_KEY_SIZE 16
+#define TLS_CIPHER_SM4_CCM_SALT_SIZE 4
+#define TLS_CIPHER_SM4_CCM_TAG_SIZE 16
+#define TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE 8
+#define TLS_SET_RECORD_TYPE 1
+#define TLS_GET_RECORD_TYPE 2
+struct tls_crypto_info {
+  __u16 version;
+  __u16 cipher_type;
+};
+struct tls12_crypto_info_aes_gcm_128 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_AES_GCM_128_IV_SIZE];
+  unsigned char key[TLS_CIPHER_AES_GCM_128_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_AES_GCM_128_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE];
+};
+struct tls12_crypto_info_aes_gcm_256 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_AES_GCM_256_IV_SIZE];
+  unsigned char key[TLS_CIPHER_AES_GCM_256_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_AES_GCM_256_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE];
+};
+struct tls12_crypto_info_aes_ccm_128 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_AES_CCM_128_IV_SIZE];
+  unsigned char key[TLS_CIPHER_AES_CCM_128_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_AES_CCM_128_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE];
+};
+struct tls12_crypto_info_chacha20_poly1305 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE];
+  unsigned char key[TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE];
+};
+struct tls12_crypto_info_sm4_gcm {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_SM4_GCM_IV_SIZE];
+  unsigned char key[TLS_CIPHER_SM4_GCM_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_SM4_GCM_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_SM4_GCM_REC_SEQ_SIZE];
+};
+struct tls12_crypto_info_sm4_ccm {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_SM4_CCM_IV_SIZE];
+  unsigned char key[TLS_CIPHER_SM4_CCM_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_SM4_CCM_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE];
+};
+enum {
+  TLS_INFO_UNSPEC,
+  TLS_INFO_VERSION,
+  TLS_INFO_CIPHER,
+  TLS_INFO_TXCONF,
+  TLS_INFO_RXCONF,
+  __TLS_INFO_MAX,
+};
+#define TLS_INFO_MAX (__TLS_INFO_MAX - 1)
+#define TLS_CONF_BASE 1
+#define TLS_CONF_SW 2
+#define TLS_CONF_HW 3
+#define TLS_CONF_HW_RECORD 4
+#endif
diff --git a/i686-linux-musl/include/linux/toshiba.h b/i686-linux-musl/include/linux/toshiba.h
new file mode 100644
index 0000000..5b59d69
--- /dev/null
+++ b/i686-linux-musl/include/linux/toshiba.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_TOSHIBA_H
+#define _UAPI_LINUX_TOSHIBA_H
+#define TOSH_PROC "/proc/toshiba"
+#define TOSH_DEVICE "/dev/toshiba"
+#define TOSHIBA_ACPI_PROC "/proc/acpi/toshiba"
+#define TOSHIBA_ACPI_DEVICE "/dev/toshiba_acpi"
+typedef struct {
+  unsigned int eax;
+  unsigned int ebx __attribute__((packed));
+  unsigned int ecx __attribute__((packed));
+  unsigned int edx __attribute__((packed));
+  unsigned int esi __attribute__((packed));
+  unsigned int edi __attribute__((packed));
+} SMMRegisters;
+#define TOSH_SMM _IOWR('t', 0x90, SMMRegisters)
+#define TOSHIBA_ACPI_SCI _IOWR('t', 0x91, SMMRegisters)
+#endif
diff --git a/i686-linux-musl/include/linux/tty.h b/i686-linux-musl/include/linux/tty.h
new file mode 100644
index 0000000..48fa908
--- /dev/null
+++ b/i686-linux-musl/include/linux/tty.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_TTY_H
+#define _UAPI_LINUX_TTY_H
+#define NR_LDISCS 30
+#define N_TTY 0
+#define N_SLIP 1
+#define N_MOUSE 2
+#define N_PPP 3
+#define N_STRIP 4
+#define N_AX25 5
+#define N_X25 6
+#define N_6PACK 7
+#define N_MASC 8
+#define N_R3964 9
+#define N_PROFIBUS_FDL 10
+#define N_IRDA 11
+#define N_SMSBLOCK 12
+#define N_HDLC 13
+#define N_SYNC_PPP 14
+#define N_HCI 15
+#define N_GIGASET_M101 16
+#define N_SLCAN 17
+#define N_PPS 18
+#define N_V253 19
+#define N_CAIF 20
+#define N_GSM0710 21
+#define N_TI_WL 22
+#define N_TRACESINK 23
+#define N_TRACEROUTER 24
+#define N_NCI 25
+#define N_SPEAKUP 26
+#define N_NULL 27
+#endif
diff --git a/i686-linux-musl/include/linux/tty_flags.h b/i686-linux-musl/include/linux/tty_flags.h
new file mode 100644
index 0000000..b8354cf
--- /dev/null
+++ b/i686-linux-musl/include/linux/tty_flags.h
@@ -0,0 +1,82 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_TTY_FLAGS_H
+#define _LINUX_TTY_FLAGS_H
+#define ASYNCB_HUP_NOTIFY 0
+#define ASYNCB_FOURPORT 1
+#define ASYNCB_SAK 2
+#define ASYNCB_SPLIT_TERMIOS 3
+#define ASYNCB_SPD_HI 4
+#define ASYNCB_SPD_VHI 5
+#define ASYNCB_SKIP_TEST 6
+#define ASYNCB_AUTO_IRQ 7
+#define ASYNCB_SESSION_LOCKOUT 8
+#define ASYNCB_PGRP_LOCKOUT 9
+#define ASYNCB_CALLOUT_NOHUP 10
+#define ASYNCB_HARDPPS_CD 11
+#define ASYNCB_SPD_SHI 12
+#define ASYNCB_LOW_LATENCY 13
+#define ASYNCB_BUGGY_UART 14
+#define ASYNCB_AUTOPROBE 15
+#define ASYNCB_MAGIC_MULTIPLIER 16
+#define ASYNCB_LAST_USER 16
+#define ASYNCB_INITIALIZED 31
+#define ASYNCB_SUSPENDED 30
+#define ASYNCB_NORMAL_ACTIVE 29
+#define ASYNCB_BOOT_AUTOCONF 28
+#define ASYNCB_CLOSING 27
+#define ASYNCB_CTS_FLOW 26
+#define ASYNCB_CHECK_CD 25
+#define ASYNCB_SHARE_IRQ 24
+#define ASYNCB_CONS_FLOW 23
+#define ASYNCB_FIRST_KERNEL 22
+#define ASYNC_HUP_NOTIFY (1U << ASYNCB_HUP_NOTIFY)
+#define ASYNC_SUSPENDED (1U << ASYNCB_SUSPENDED)
+#define ASYNC_FOURPORT (1U << ASYNCB_FOURPORT)
+#define ASYNC_SAK (1U << ASYNCB_SAK)
+#define ASYNC_SPLIT_TERMIOS (1U << ASYNCB_SPLIT_TERMIOS)
+#define ASYNC_SPD_HI (1U << ASYNCB_SPD_HI)
+#define ASYNC_SPD_VHI (1U << ASYNCB_SPD_VHI)
+#define ASYNC_SKIP_TEST (1U << ASYNCB_SKIP_TEST)
+#define ASYNC_AUTO_IRQ (1U << ASYNCB_AUTO_IRQ)
+#define ASYNC_SESSION_LOCKOUT (1U << ASYNCB_SESSION_LOCKOUT)
+#define ASYNC_PGRP_LOCKOUT (1U << ASYNCB_PGRP_LOCKOUT)
+#define ASYNC_CALLOUT_NOHUP (1U << ASYNCB_CALLOUT_NOHUP)
+#define ASYNC_HARDPPS_CD (1U << ASYNCB_HARDPPS_CD)
+#define ASYNC_SPD_SHI (1U << ASYNCB_SPD_SHI)
+#define ASYNC_LOW_LATENCY (1U << ASYNCB_LOW_LATENCY)
+#define ASYNC_BUGGY_UART (1U << ASYNCB_BUGGY_UART)
+#define ASYNC_AUTOPROBE (1U << ASYNCB_AUTOPROBE)
+#define ASYNC_MAGIC_MULTIPLIER (1U << ASYNCB_MAGIC_MULTIPLIER)
+#define ASYNC_FLAGS ((1U << (ASYNCB_LAST_USER + 1)) - 1)
+#define ASYNC_DEPRECATED (ASYNC_SPLIT_TERMIOS | ASYNC_SESSION_LOCKOUT | ASYNC_PGRP_LOCKOUT | ASYNC_CALLOUT_NOHUP | ASYNC_AUTOPROBE)
+#define ASYNC_USR_MASK (ASYNC_SPD_MASK | ASYNC_CALLOUT_NOHUP | ASYNC_LOW_LATENCY)
+#define ASYNC_SPD_CUST (ASYNC_SPD_HI | ASYNC_SPD_VHI)
+#define ASYNC_SPD_WARP (ASYNC_SPD_HI | ASYNC_SPD_SHI)
+#define ASYNC_SPD_MASK (ASYNC_SPD_HI | ASYNC_SPD_VHI | ASYNC_SPD_SHI)
+#define ASYNC_INITIALIZED (1U << ASYNCB_INITIALIZED)
+#define ASYNC_NORMAL_ACTIVE (1U << ASYNCB_NORMAL_ACTIVE)
+#define ASYNC_BOOT_AUTOCONF (1U << ASYNCB_BOOT_AUTOCONF)
+#define ASYNC_CLOSING (1U << ASYNCB_CLOSING)
+#define ASYNC_CTS_FLOW (1U << ASYNCB_CTS_FLOW)
+#define ASYNC_CHECK_CD (1U << ASYNCB_CHECK_CD)
+#define ASYNC_SHARE_IRQ (1U << ASYNCB_SHARE_IRQ)
+#define ASYNC_CONS_FLOW (1U << ASYNCB_CONS_FLOW)
+#define ASYNC_INTERNAL_FLAGS (~((1U << ASYNCB_FIRST_KERNEL) - 1))
+#endif
diff --git a/i686-linux-musl/include/linux/types.h b/i686-linux-musl/include/linux/types.h
new file mode 100644
index 0000000..9145e66
--- /dev/null
+++ b/i686-linux-musl/include/linux/types.h
@@ -0,0 +1,39 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_TYPES_H
+#define _UAPI_LINUX_TYPES_H
+#include <asm/types.h>
+#ifndef __ASSEMBLY__
+#include <linux/posix_types.h>
+#define __bitwise__
+#define __bitwise __bitwise__
+typedef __u16 __bitwise __le16;
+typedef __u16 __bitwise __be16;
+typedef __u32 __bitwise __le32;
+typedef __u32 __bitwise __be32;
+typedef __u64 __bitwise __le64;
+typedef __u64 __bitwise __be64;
+typedef __u16 __bitwise __sum16;
+typedef __u32 __bitwise __wsum;
+#define __aligned_u64 __u64 __attribute__((aligned(8)))
+#define __aligned_be64 __be64 __attribute__((aligned(8)))
+#define __aligned_le64 __le64 __attribute__((aligned(8)))
+typedef unsigned __bitwise __poll_t;
+#endif
+#endif
diff --git a/i686-linux-musl/include/linux/udf_fs_i.h b/i686-linux-musl/include/linux/udf_fs_i.h
new file mode 100644
index 0000000..e175034
--- /dev/null
+++ b/i686-linux-musl/include/linux/udf_fs_i.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UDF_FS_I_H
+#define _UDF_FS_I_H 1
+#define UDF_GETEASIZE _IOR('l', 0x40, int)
+#define UDF_GETEABLOCK _IOR('l', 0x41, void *)
+#define UDF_GETVOLIDENT _IOR('l', 0x42, void *)
+#define UDF_RELOCATE_BLOCKS _IOWR('l', 0x43, long)
+#endif
diff --git a/i686-linux-musl/include/linux/udmabuf.h b/i686-linux-musl/include/linux/udmabuf.h
new file mode 100644
index 0000000..70cf49f
--- /dev/null
+++ b/i686-linux-musl/include/linux/udmabuf.h
@@ -0,0 +1,43 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_UDMABUF_H
+#define _UAPI_LINUX_UDMABUF_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define UDMABUF_FLAGS_CLOEXEC 0x01
+struct udmabuf_create {
+  __u32 memfd;
+  __u32 flags;
+  __u64 offset;
+  __u64 size;
+};
+struct udmabuf_create_item {
+  __u32 memfd;
+  __u32 __pad;
+  __u64 offset;
+  __u64 size;
+};
+struct udmabuf_create_list {
+  __u32 flags;
+  __u32 count;
+  struct udmabuf_create_item list[];
+};
+#define UDMABUF_CREATE _IOW('u', 0x42, struct udmabuf_create)
+#define UDMABUF_CREATE_LIST _IOW('u', 0x43, struct udmabuf_create_list)
+#endif
diff --git a/i686-linux-musl/include/linux/udp.h b/i686-linux-musl/include/linux/udp.h
new file mode 100644
index 0000000..802c686
--- /dev/null
+++ b/i686-linux-musl/include/linux/udp.h
@@ -0,0 +1,41 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_UDP_H
+#define _UAPI_LINUX_UDP_H
+#include <linux/types.h>
+struct __kernel_udphdr {
+  __be16 source;
+  __be16 dest;
+  __be16 len;
+  __sum16 check;
+};
+#define UDP_CORK 1
+#define UDP_ENCAP 100
+#define UDP_NO_CHECK6_TX 101
+#define UDP_NO_CHECK6_RX 102
+#define UDP_SEGMENT 103
+#define UDP_GRO 104
+#define UDP_ENCAP_ESPINUDP_NON_IKE 1
+#define UDP_ENCAP_ESPINUDP 2
+#define UDP_ENCAP_L2TPINUDP 3
+#define UDP_ENCAP_GTP0 4
+#define UDP_ENCAP_GTP1U 5
+#define UDP_ENCAP_RXRPC 6
+#define TCP_ENCAP_ESPINTCP 7
+#endif
diff --git a/i686-linux-musl/include/linux/uhid.h b/i686-linux-musl/include/linux/uhid.h
new file mode 100644
index 0000000..228ee50
--- /dev/null
+++ b/i686-linux-musl/include/linux/uhid.h
@@ -0,0 +1,155 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UHID_H_
+#define __UHID_H_
+#include <linux/input.h>
+#include <linux/types.h>
+#include <linux/hid.h>
+enum uhid_event_type {
+  __UHID_LEGACY_CREATE,
+  UHID_DESTROY,
+  UHID_START,
+  UHID_STOP,
+  UHID_OPEN,
+  UHID_CLOSE,
+  UHID_OUTPUT,
+  __UHID_LEGACY_OUTPUT_EV,
+  __UHID_LEGACY_INPUT,
+  UHID_GET_REPORT,
+  UHID_GET_REPORT_REPLY,
+  UHID_CREATE2,
+  UHID_INPUT2,
+  UHID_SET_REPORT,
+  UHID_SET_REPORT_REPLY,
+};
+struct uhid_create2_req {
+  __u8 name[128];
+  __u8 phys[64];
+  __u8 uniq[64];
+  __u16 rd_size;
+  __u16 bus;
+  __u32 vendor;
+  __u32 product;
+  __u32 version;
+  __u32 country;
+  __u8 rd_data[HID_MAX_DESCRIPTOR_SIZE];
+} __attribute__((__packed__));
+enum uhid_dev_flag {
+  UHID_DEV_NUMBERED_FEATURE_REPORTS = (1ULL << 0),
+  UHID_DEV_NUMBERED_OUTPUT_REPORTS = (1ULL << 1),
+  UHID_DEV_NUMBERED_INPUT_REPORTS = (1ULL << 2),
+};
+struct uhid_start_req {
+  __u64 dev_flags;
+};
+#define UHID_DATA_MAX 4096
+enum uhid_report_type {
+  UHID_FEATURE_REPORT,
+  UHID_OUTPUT_REPORT,
+  UHID_INPUT_REPORT,
+};
+struct uhid_input2_req {
+  __u16 size;
+  __u8 data[UHID_DATA_MAX];
+} __attribute__((__packed__));
+struct uhid_output_req {
+  __u8 data[UHID_DATA_MAX];
+  __u16 size;
+  __u8 rtype;
+} __attribute__((__packed__));
+struct uhid_get_report_req {
+  __u32 id;
+  __u8 rnum;
+  __u8 rtype;
+} __attribute__((__packed__));
+struct uhid_get_report_reply_req {
+  __u32 id;
+  __u16 err;
+  __u16 size;
+  __u8 data[UHID_DATA_MAX];
+} __attribute__((__packed__));
+struct uhid_set_report_req {
+  __u32 id;
+  __u8 rnum;
+  __u8 rtype;
+  __u16 size;
+  __u8 data[UHID_DATA_MAX];
+} __attribute__((__packed__));
+struct uhid_set_report_reply_req {
+  __u32 id;
+  __u16 err;
+} __attribute__((__packed__));
+enum uhid_legacy_event_type {
+  UHID_CREATE = __UHID_LEGACY_CREATE,
+  UHID_OUTPUT_EV = __UHID_LEGACY_OUTPUT_EV,
+  UHID_INPUT = __UHID_LEGACY_INPUT,
+  UHID_FEATURE = UHID_GET_REPORT,
+  UHID_FEATURE_ANSWER = UHID_GET_REPORT_REPLY,
+};
+struct uhid_create_req {
+  __u8 name[128];
+  __u8 phys[64];
+  __u8 uniq[64];
+  __u8 __user * rd_data;
+  __u16 rd_size;
+  __u16 bus;
+  __u32 vendor;
+  __u32 product;
+  __u32 version;
+  __u32 country;
+} __attribute__((__packed__));
+struct uhid_input_req {
+  __u8 data[UHID_DATA_MAX];
+  __u16 size;
+} __attribute__((__packed__));
+struct uhid_output_ev_req {
+  __u16 type;
+  __u16 code;
+  __s32 value;
+} __attribute__((__packed__));
+struct uhid_feature_req {
+  __u32 id;
+  __u8 rnum;
+  __u8 rtype;
+} __attribute__((__packed__));
+struct uhid_feature_answer_req {
+  __u32 id;
+  __u16 err;
+  __u16 size;
+  __u8 data[UHID_DATA_MAX];
+} __attribute__((__packed__));
+struct uhid_event {
+  __u32 type;
+  union {
+    struct uhid_create_req create;
+    struct uhid_input_req input;
+    struct uhid_output_req output;
+    struct uhid_output_ev_req output_ev;
+    struct uhid_feature_req feature;
+    struct uhid_get_report_req get_report;
+    struct uhid_feature_answer_req feature_answer;
+    struct uhid_get_report_reply_req get_report_reply;
+    struct uhid_create2_req create2;
+    struct uhid_input2_req input2;
+    struct uhid_set_report_req set_report;
+    struct uhid_set_report_reply_req set_report_reply;
+    struct uhid_start_req start;
+  } u;
+} __attribute__((__packed__));
+#endif
diff --git a/i686-linux-musl/include/linux/uinput.h b/i686-linux-musl/include/linux/uinput.h
new file mode 100644
index 0000000..806f962
--- /dev/null
+++ b/i686-linux-musl/include/linux/uinput.h
@@ -0,0 +1,79 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__UINPUT_H_
+#define _UAPI__UINPUT_H_
+#include <linux/types.h>
+#include <linux/input.h>
+#define UINPUT_VERSION 5
+#define UINPUT_MAX_NAME_SIZE 80
+struct uinput_ff_upload {
+  __u32 request_id;
+  __s32 retval;
+  struct ff_effect effect;
+  struct ff_effect old;
+};
+struct uinput_ff_erase {
+  __u32 request_id;
+  __s32 retval;
+  __u32 effect_id;
+};
+#define UINPUT_IOCTL_BASE 'U'
+#define UI_DEV_CREATE _IO(UINPUT_IOCTL_BASE, 1)
+#define UI_DEV_DESTROY _IO(UINPUT_IOCTL_BASE, 2)
+struct uinput_setup {
+  struct input_id id;
+  char name[UINPUT_MAX_NAME_SIZE];
+  __u32 ff_effects_max;
+};
+#define UI_DEV_SETUP _IOW(UINPUT_IOCTL_BASE, 3, struct uinput_setup)
+struct uinput_abs_setup {
+  __u16 code;
+  struct input_absinfo absinfo;
+};
+#define UI_ABS_SETUP _IOW(UINPUT_IOCTL_BASE, 4, struct uinput_abs_setup)
+#define UI_SET_EVBIT _IOW(UINPUT_IOCTL_BASE, 100, int)
+#define UI_SET_KEYBIT _IOW(UINPUT_IOCTL_BASE, 101, int)
+#define UI_SET_RELBIT _IOW(UINPUT_IOCTL_BASE, 102, int)
+#define UI_SET_ABSBIT _IOW(UINPUT_IOCTL_BASE, 103, int)
+#define UI_SET_MSCBIT _IOW(UINPUT_IOCTL_BASE, 104, int)
+#define UI_SET_LEDBIT _IOW(UINPUT_IOCTL_BASE, 105, int)
+#define UI_SET_SNDBIT _IOW(UINPUT_IOCTL_BASE, 106, int)
+#define UI_SET_FFBIT _IOW(UINPUT_IOCTL_BASE, 107, int)
+#define UI_SET_PHYS _IOW(UINPUT_IOCTL_BASE, 108, char *)
+#define UI_SET_SWBIT _IOW(UINPUT_IOCTL_BASE, 109, int)
+#define UI_SET_PROPBIT _IOW(UINPUT_IOCTL_BASE, 110, int)
+#define UI_BEGIN_FF_UPLOAD _IOWR(UINPUT_IOCTL_BASE, 200, struct uinput_ff_upload)
+#define UI_END_FF_UPLOAD _IOW(UINPUT_IOCTL_BASE, 201, struct uinput_ff_upload)
+#define UI_BEGIN_FF_ERASE _IOWR(UINPUT_IOCTL_BASE, 202, struct uinput_ff_erase)
+#define UI_END_FF_ERASE _IOW(UINPUT_IOCTL_BASE, 203, struct uinput_ff_erase)
+#define UI_GET_SYSNAME(len) _IOC(_IOC_READ, UINPUT_IOCTL_BASE, 44, len)
+#define UI_GET_VERSION _IOR(UINPUT_IOCTL_BASE, 45, unsigned int)
+#define EV_UINPUT 0x0101
+#define UI_FF_UPLOAD 1
+#define UI_FF_ERASE 2
+struct uinput_user_dev {
+  char name[UINPUT_MAX_NAME_SIZE];
+  struct input_id id;
+  __u32 ff_effects_max;
+  __s32 absmax[ABS_CNT];
+  __s32 absmin[ABS_CNT];
+  __s32 absfuzz[ABS_CNT];
+  __s32 absflat[ABS_CNT];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/uio.h b/i686-linux-musl/include/linux/uio.h
new file mode 100644
index 0000000..fa955cd
--- /dev/null
+++ b/i686-linux-musl/include/linux/uio.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_UIO_H
+#define _UAPI__LINUX_UIO_H
+#include <linux/compiler.h>
+#include <linux/types.h>
+struct iovec {
+  void __user * iov_base;
+  __kernel_size_t iov_len;
+};
+#define UIO_FASTIOV 8
+#define UIO_MAXIOV 1024
+#endif
diff --git a/i686-linux-musl/include/linux/uleds.h b/i686-linux-musl/include/linux/uleds.h
new file mode 100644
index 0000000..5605b78
--- /dev/null
+++ b/i686-linux-musl/include/linux/uleds.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__ULEDS_H_
+#define _UAPI__ULEDS_H_
+#define LED_MAX_NAME_SIZE 64
+struct uleds_user_dev {
+  char name[LED_MAX_NAME_SIZE];
+  int max_brightness;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/ultrasound.h b/i686-linux-musl/include/linux/ultrasound.h
new file mode 100644
index 0000000..1111891
--- /dev/null
+++ b/i686-linux-musl/include/linux/ultrasound.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ULTRASOUND_H_
+#define _ULTRASOUND_H_
+#define _GUS_NUMVOICES 0x00
+#define _GUS_VOICESAMPLE 0x01
+#define _GUS_VOICEON 0x02
+#define _GUS_VOICEOFF 0x03
+#define _GUS_VOICEMODE 0x04
+#define _GUS_VOICEBALA 0x05
+#define _GUS_VOICEFREQ 0x06
+#define _GUS_VOICEVOL 0x07
+#define _GUS_RAMPRANGE 0x08
+#define _GUS_RAMPRATE 0x09
+#define _GUS_RAMPMODE 0x0a
+#define _GUS_RAMPON 0x0b
+#define _GUS_RAMPOFF 0x0c
+#define _GUS_VOICEFADE 0x0d
+#define _GUS_VOLUME_SCALE 0x0e
+#define _GUS_VOICEVOL2 0x0f
+#define _GUS_VOICE_POS 0x10
+#define _GUS_CMD(chn,voice,cmd,p1,p2) { _SEQ_NEEDBUF(8); _seqbuf[_seqbufptr] = SEQ_PRIVATE; _seqbuf[_seqbufptr + 1] = (chn); _seqbuf[_seqbufptr + 2] = cmd; _seqbuf[_seqbufptr + 3] = voice; * (unsigned short *) & _seqbuf[_seqbufptr + 4] = p1; * (unsigned short *) & _seqbuf[_seqbufptr + 6] = p2; _SEQ_ADVBUF(8); }
+#define GUS_NUMVOICES(chn,p1) _GUS_CMD(chn, 0, _GUS_NUMVOICES, (p1), 0)
+#define GUS_VOICESAMPLE(chn,voice,p1) _GUS_CMD(chn, voice, _GUS_VOICESAMPLE, (p1), 0)
+#define GUS_VOICEON(chn,voice,p1) _GUS_CMD(chn, voice, _GUS_VOICEON, (p1), 0)
+#define GUS_VOICEOFF(chn,voice) _GUS_CMD(chn, voice, _GUS_VOICEOFF, 0, 0)
+#define GUS_VOICEFADE(chn,voice) _GUS_CMD(chn, voice, _GUS_VOICEFADE, 0, 0)
+#define GUS_VOICEMODE(chn,voice,p1) _GUS_CMD(chn, voice, _GUS_VOICEMODE, (p1), 0)
+#define GUS_VOICEBALA(chn,voice,p1) _GUS_CMD(chn, voice, _GUS_VOICEBALA, (p1), 0)
+#define GUS_VOICEFREQ(chn,voice,p) _GUS_CMD(chn, voice, _GUS_VOICEFREQ, (p) & 0xffff, ((p) >> 16) & 0xffff)
+#define GUS_VOICEVOL(chn,voice,p1) _GUS_CMD(chn, voice, _GUS_VOICEVOL, (p1), 0)
+#define GUS_VOICEVOL2(chn,voice,p1) _GUS_CMD(chn, voice, _GUS_VOICEVOL2, (p1), 0)
+#define GUS_RAMPRANGE(chn,voice,low,high) _GUS_CMD(chn, voice, _GUS_RAMPRANGE, (low), (high))
+#define GUS_RAMPRATE(chn,voice,p1,p2) _GUS_CMD(chn, voice, _GUS_RAMPRATE, (p1), (p2))
+#define GUS_RAMPMODE(chn,voice,p1) _GUS_CMD(chn, voice, _GUS_RAMPMODE, (p1), 0)
+#define GUS_RAMPON(chn,voice,p1) _GUS_CMD(chn, voice, _GUS_RAMPON, (p1), 0)
+#define GUS_RAMPOFF(chn,voice) _GUS_CMD(chn, voice, _GUS_RAMPOFF, 0, 0)
+#define GUS_VOLUME_SCALE(chn,voice,p1,p2) _GUS_CMD(chn, voice, _GUS_VOLUME_SCALE, (p1), (p2))
+#define GUS_VOICE_POS(chn,voice,p) _GUS_CMD(chn, voice, _GUS_VOICE_POS, (p) & 0xffff, ((p) >> 16) & 0xffff)
+#endif
diff --git a/i686-linux-musl/include/linux/um_timetravel.h b/i686-linux-musl/include/linux/um_timetravel.h
new file mode 100644
index 0000000..220324f
--- /dev/null
+++ b/i686-linux-musl/include/linux/um_timetravel.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_UM_TIMETRAVEL_H
+#define _UAPI_LINUX_UM_TIMETRAVEL_H
+#include <linux/types.h>
+struct um_timetravel_msg {
+  __u32 op;
+  __u32 seq;
+  __u64 time;
+};
+enum um_timetravel_ops {
+  UM_TIMETRAVEL_ACK = 0,
+  UM_TIMETRAVEL_START = 1,
+  UM_TIMETRAVEL_REQUEST = 2,
+  UM_TIMETRAVEL_WAIT = 3,
+  UM_TIMETRAVEL_GET = 4,
+  UM_TIMETRAVEL_UPDATE = 5,
+  UM_TIMETRAVEL_RUN = 6,
+  UM_TIMETRAVEL_FREE_UNTIL = 7,
+  UM_TIMETRAVEL_GET_TOD = 8,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/un.h b/i686-linux-musl/include/linux/un.h
new file mode 100644
index 0000000..fefbf5b
--- /dev/null
+++ b/i686-linux-musl/include/linux/un.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_UN_H
+#define _LINUX_UN_H
+#include <linux/socket.h>
+#define UNIX_PATH_MAX 108
+struct sockaddr_un {
+  __kernel_sa_family_t sun_family;
+  char sun_path[UNIX_PATH_MAX];
+};
+#define SIOCUNIXFILE (SIOCPROTOPRIVATE + 0)
+#endif
diff --git a/i686-linux-musl/include/linux/unistd.h b/i686-linux-musl/include/linux/unistd.h
new file mode 100644
index 0000000..0ed4a0f
--- /dev/null
+++ b/i686-linux-musl/include/linux/unistd.h
@@ -0,0 +1,22 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_UNISTD_H_
+#define _LINUX_UNISTD_H_
+#include <asm/unistd.h>
+#endif
diff --git a/i686-linux-musl/include/linux/unix_diag.h b/i686-linux-musl/include/linux/unix_diag.h
new file mode 100644
index 0000000..4bcc47a
--- /dev/null
+++ b/i686-linux-musl/include/linux/unix_diag.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UNIX_DIAG_H__
+#define __UNIX_DIAG_H__
+#include <linux/types.h>
+struct unix_diag_req {
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
+  __u16 pad;
+  __u32 udiag_states;
+  __u32 udiag_ino;
+  __u32 udiag_show;
+  __u32 udiag_cookie[2];
+};
+#define UDIAG_SHOW_NAME 0x00000001
+#define UDIAG_SHOW_VFS 0x00000002
+#define UDIAG_SHOW_PEER 0x00000004
+#define UDIAG_SHOW_ICONS 0x00000008
+#define UDIAG_SHOW_RQLEN 0x00000010
+#define UDIAG_SHOW_MEMINFO 0x00000020
+#define UDIAG_SHOW_UID 0x00000040
+struct unix_diag_msg {
+  __u8 udiag_family;
+  __u8 udiag_type;
+  __u8 udiag_state;
+  __u8 pad;
+  __u32 udiag_ino;
+  __u32 udiag_cookie[2];
+};
+enum {
+  UNIX_DIAG_NAME,
+  UNIX_DIAG_VFS,
+  UNIX_DIAG_PEER,
+  UNIX_DIAG_ICONS,
+  UNIX_DIAG_RQLEN,
+  UNIX_DIAG_MEMINFO,
+  UNIX_DIAG_SHUTDOWN,
+  UNIX_DIAG_UID,
+  __UNIX_DIAG_MAX,
+};
+#define UNIX_DIAG_MAX (__UNIX_DIAG_MAX - 1)
+struct unix_diag_vfs {
+  __u32 udiag_vfs_ino;
+  __u32 udiag_vfs_dev;
+};
+struct unix_diag_rqlen {
+  __u32 udiag_rqueue;
+  __u32 udiag_wqueue;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/usb/audio.h b/i686-linux-musl/include/linux/usb/audio.h
new file mode 100644
index 0000000..7d36157
--- /dev/null
+++ b/i686-linux-musl/include/linux/usb/audio.h
@@ -0,0 +1,310 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_USB_AUDIO_H
+#define _UAPI__LINUX_USB_AUDIO_H
+#include <linux/types.h>
+#define UAC_VERSION_1 0x00
+#define UAC_VERSION_2 0x20
+#define UAC_VERSION_3 0x30
+#define USB_SUBCLASS_AUDIOCONTROL 0x01
+#define USB_SUBCLASS_AUDIOSTREAMING 0x02
+#define USB_SUBCLASS_MIDISTREAMING 0x03
+#define UAC_HEADER 0x01
+#define UAC_INPUT_TERMINAL 0x02
+#define UAC_OUTPUT_TERMINAL 0x03
+#define UAC_MIXER_UNIT 0x04
+#define UAC_SELECTOR_UNIT 0x05
+#define UAC_FEATURE_UNIT 0x06
+#define UAC1_PROCESSING_UNIT 0x07
+#define UAC1_EXTENSION_UNIT 0x08
+#define UAC_AS_GENERAL 0x01
+#define UAC_FORMAT_TYPE 0x02
+#define UAC_FORMAT_SPECIFIC 0x03
+#define UAC_PROCESS_UNDEFINED 0x00
+#define UAC_PROCESS_UP_DOWNMIX 0x01
+#define UAC_PROCESS_DOLBY_PROLOGIC 0x02
+#define UAC_PROCESS_STEREO_EXTENDER 0x03
+#define UAC_PROCESS_REVERB 0x04
+#define UAC_PROCESS_CHORUS 0x05
+#define UAC_PROCESS_DYN_RANGE_COMP 0x06
+#define UAC_EP_GENERAL 0x01
+#define UAC_SET_ 0x00
+#define UAC_GET_ 0x80
+#define UAC__CUR 0x1
+#define UAC__MIN 0x2
+#define UAC__MAX 0x3
+#define UAC__RES 0x4
+#define UAC__MEM 0x5
+#define UAC_SET_CUR (UAC_SET_ | UAC__CUR)
+#define UAC_GET_CUR (UAC_GET_ | UAC__CUR)
+#define UAC_SET_MIN (UAC_SET_ | UAC__MIN)
+#define UAC_GET_MIN (UAC_GET_ | UAC__MIN)
+#define UAC_SET_MAX (UAC_SET_ | UAC__MAX)
+#define UAC_GET_MAX (UAC_GET_ | UAC__MAX)
+#define UAC_SET_RES (UAC_SET_ | UAC__RES)
+#define UAC_GET_RES (UAC_GET_ | UAC__RES)
+#define UAC_SET_MEM (UAC_SET_ | UAC__MEM)
+#define UAC_GET_MEM (UAC_GET_ | UAC__MEM)
+#define UAC_GET_STAT 0xff
+#define UAC_TERM_COPY_PROTECT 0x01
+#define UAC_FU_MUTE 0x01
+#define UAC_FU_VOLUME 0x02
+#define UAC_FU_BASS 0x03
+#define UAC_FU_MID 0x04
+#define UAC_FU_TREBLE 0x05
+#define UAC_FU_GRAPHIC_EQUALIZER 0x06
+#define UAC_FU_AUTOMATIC_GAIN 0x07
+#define UAC_FU_DELAY 0x08
+#define UAC_FU_BASS_BOOST 0x09
+#define UAC_FU_LOUDNESS 0x0a
+#define UAC_CONTROL_BIT(CS) (1 << ((CS) - 1))
+#define UAC_UD_ENABLE 0x01
+#define UAC_UD_MODE_SELECT 0x02
+#define UAC_DP_ENABLE 0x01
+#define UAC_DP_MODE_SELECT 0x02
+#define UAC_3D_ENABLE 0x01
+#define UAC_3D_SPACE 0x02
+#define UAC_REVERB_ENABLE 0x01
+#define UAC_REVERB_LEVEL 0x02
+#define UAC_REVERB_TIME 0x03
+#define UAC_REVERB_FEEDBACK 0x04
+#define UAC_CHORUS_ENABLE 0x01
+#define UAC_CHORUS_LEVEL 0x02
+#define UAC_CHORUS_RATE 0x03
+#define UAC_CHORUS_DEPTH 0x04
+#define UAC_DCR_ENABLE 0x01
+#define UAC_DCR_RATE 0x02
+#define UAC_DCR_MAXAMPL 0x03
+#define UAC_DCR_THRESHOLD 0x04
+#define UAC_DCR_ATTACK_TIME 0x05
+#define UAC_DCR_RELEASE_TIME 0x06
+#define UAC_XU_ENABLE 0x01
+#define UAC_MS_HEADER 0x01
+#define UAC_MIDI_IN_JACK 0x02
+#define UAC_MIDI_OUT_JACK 0x03
+#define UAC_MS_GENERAL 0x01
+#define UAC_TERMINAL_UNDEFINED 0x100
+#define UAC_TERMINAL_STREAMING 0x101
+#define UAC_TERMINAL_VENDOR_SPEC 0x1FF
+struct uac1_ac_header_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __le16 bcdADC;
+  __le16 wTotalLength;
+  __u8 bInCollection;
+  __u8 baInterfaceNr[];
+} __attribute__((packed));
+#define UAC_DT_AC_HEADER_SIZE(n) (8 + (n))
+#define DECLARE_UAC_AC_HEADER_DESCRIPTOR(n) struct uac1_ac_header_descriptor_ ##n { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubtype; __le16 bcdADC; __le16 wTotalLength; __u8 bInCollection; __u8 baInterfaceNr[n]; \
+} __attribute__((packed))
+struct uac_input_terminal_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bTerminalID;
+  __le16 wTerminalType;
+  __u8 bAssocTerminal;
+  __u8 bNrChannels;
+  __le16 wChannelConfig;
+  __u8 iChannelNames;
+  __u8 iTerminal;
+} __attribute__((packed));
+#define UAC_DT_INPUT_TERMINAL_SIZE 12
+#define UAC_INPUT_TERMINAL_UNDEFINED 0x200
+#define UAC_INPUT_TERMINAL_MICROPHONE 0x201
+#define UAC_INPUT_TERMINAL_DESKTOP_MICROPHONE 0x202
+#define UAC_INPUT_TERMINAL_PERSONAL_MICROPHONE 0x203
+#define UAC_INPUT_TERMINAL_OMNI_DIR_MICROPHONE 0x204
+#define UAC_INPUT_TERMINAL_MICROPHONE_ARRAY 0x205
+#define UAC_INPUT_TERMINAL_PROC_MICROPHONE_ARRAY 0x206
+#define UAC_TERMINAL_CS_COPY_PROTECT_CONTROL 0x01
+struct uac1_output_terminal_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bTerminalID;
+  __le16 wTerminalType;
+  __u8 bAssocTerminal;
+  __u8 bSourceID;
+  __u8 iTerminal;
+} __attribute__((packed));
+#define UAC_DT_OUTPUT_TERMINAL_SIZE 9
+#define UAC_OUTPUT_TERMINAL_UNDEFINED 0x300
+#define UAC_OUTPUT_TERMINAL_SPEAKER 0x301
+#define UAC_OUTPUT_TERMINAL_HEADPHONES 0x302
+#define UAC_OUTPUT_TERMINAL_HEAD_MOUNTED_DISPLAY_AUDIO 0x303
+#define UAC_OUTPUT_TERMINAL_DESKTOP_SPEAKER 0x304
+#define UAC_OUTPUT_TERMINAL_ROOM_SPEAKER 0x305
+#define UAC_OUTPUT_TERMINAL_COMMUNICATION_SPEAKER 0x306
+#define UAC_OUTPUT_TERMINAL_LOW_FREQ_EFFECTS_SPEAKER 0x307
+#define UAC_BIDIR_TERMINAL_UNDEFINED 0x400
+#define UAC_BIDIR_TERMINAL_HANDSET 0x401
+#define UAC_BIDIR_TERMINAL_HEADSET 0x402
+#define UAC_BIDIR_TERMINAL_SPEAKER_PHONE 0x403
+#define UAC_BIDIR_TERMINAL_ECHO_SUPPRESSING 0x404
+#define UAC_BIDIR_TERMINAL_ECHO_CANCELING 0x405
+#define UAC_DT_FEATURE_UNIT_SIZE(ch) (7 + ((ch) + 1) * 2)
+#define DECLARE_UAC_FEATURE_UNIT_DESCRIPTOR(ch) struct uac_feature_unit_descriptor_ ##ch { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubtype; __u8 bUnitID; __u8 bSourceID; __u8 bControlSize; __le16 bmaControls[ch + 1]; __u8 iFeature; \
+} __attribute__((packed))
+struct uac_mixer_unit_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bUnitID;
+  __u8 bNrInPins;
+  __u8 baSourceID[];
+} __attribute__((packed));
+struct uac_selector_unit_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bUintID;
+  __u8 bNrInPins;
+  __u8 baSourceID[];
+} __attribute__((packed));
+struct uac_feature_unit_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bUnitID;
+  __u8 bSourceID;
+  __u8 bControlSize;
+  __u8 bmaControls[0];
+} __attribute__((packed));
+struct uac_processing_unit_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bUnitID;
+  __le16 wProcessType;
+  __u8 bNrInPins;
+  __u8 baSourceID[];
+} __attribute__((packed));
+struct uac1_as_header_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bTerminalLink;
+  __u8 bDelay;
+  __le16 wFormatTag;
+} __attribute__((packed));
+#define UAC_DT_AS_HEADER_SIZE 7
+#define UAC_FORMAT_TYPE_I_UNDEFINED 0x0
+#define UAC_FORMAT_TYPE_I_PCM 0x1
+#define UAC_FORMAT_TYPE_I_PCM8 0x2
+#define UAC_FORMAT_TYPE_I_IEEE_FLOAT 0x3
+#define UAC_FORMAT_TYPE_I_ALAW 0x4
+#define UAC_FORMAT_TYPE_I_MULAW 0x5
+struct uac_format_type_i_continuous_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bFormatType;
+  __u8 bNrChannels;
+  __u8 bSubframeSize;
+  __u8 bBitResolution;
+  __u8 bSamFreqType;
+  __u8 tLowerSamFreq[3];
+  __u8 tUpperSamFreq[3];
+} __attribute__((packed));
+#define UAC_FORMAT_TYPE_I_CONTINUOUS_DESC_SIZE 14
+struct uac_format_type_i_discrete_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bFormatType;
+  __u8 bNrChannels;
+  __u8 bSubframeSize;
+  __u8 bBitResolution;
+  __u8 bSamFreqType;
+  __u8 tSamFreq[][3];
+} __attribute__((packed));
+#define DECLARE_UAC_FORMAT_TYPE_I_DISCRETE_DESC(n) struct uac_format_type_i_discrete_descriptor_ ##n { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubtype; __u8 bFormatType; __u8 bNrChannels; __u8 bSubframeSize; __u8 bBitResolution; __u8 bSamFreqType; __u8 tSamFreq[n][3]; \
+} __attribute__((packed))
+#define UAC_FORMAT_TYPE_I_DISCRETE_DESC_SIZE(n) (8 + (n * 3))
+struct uac_format_type_i_ext_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bFormatType;
+  __u8 bSubslotSize;
+  __u8 bBitResolution;
+  __u8 bHeaderLength;
+  __u8 bControlSize;
+  __u8 bSideBandProtocol;
+} __attribute__((packed));
+#define UAC_FORMAT_TYPE_II_MPEG 0x1001
+#define UAC_FORMAT_TYPE_II_AC3 0x1002
+struct uac_format_type_ii_discrete_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bFormatType;
+  __le16 wMaxBitRate;
+  __le16 wSamplesPerFrame;
+  __u8 bSamFreqType;
+  __u8 tSamFreq[][3];
+} __attribute__((packed));
+struct uac_format_type_ii_ext_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bFormatType;
+  __le16 wMaxBitRate;
+  __le16 wSamplesPerFrame;
+  __u8 bHeaderLength;
+  __u8 bSideBandProtocol;
+} __attribute__((packed));
+#define UAC_FORMAT_TYPE_III_IEC1937_AC3 0x2001
+#define UAC_FORMAT_TYPE_III_IEC1937_MPEG1_LAYER1 0x2002
+#define UAC_FORMAT_TYPE_III_IEC1937_MPEG2_NOEXT 0x2003
+#define UAC_FORMAT_TYPE_III_IEC1937_MPEG2_EXT 0x2004
+#define UAC_FORMAT_TYPE_III_IEC1937_MPEG2_LAYER1_LS 0x2005
+#define UAC_FORMAT_TYPE_III_IEC1937_MPEG2_LAYER23_LS 0x2006
+#define UAC_FORMAT_TYPE_UNDEFINED 0x0
+#define UAC_FORMAT_TYPE_I 0x1
+#define UAC_FORMAT_TYPE_II 0x2
+#define UAC_FORMAT_TYPE_III 0x3
+#define UAC_EXT_FORMAT_TYPE_I 0x81
+#define UAC_EXT_FORMAT_TYPE_II 0x82
+#define UAC_EXT_FORMAT_TYPE_III 0x83
+struct uac_iso_endpoint_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bmAttributes;
+  __u8 bLockDelayUnits;
+  __le16 wLockDelay;
+} __attribute__((packed));
+#define UAC_ISO_ENDPOINT_DESC_SIZE 7
+#define UAC_EP_CS_ATTR_SAMPLE_RATE 0x01
+#define UAC_EP_CS_ATTR_PITCH_CONTROL 0x02
+#define UAC_EP_CS_ATTR_FILL_MAX 0x80
+#define UAC1_STATUS_TYPE_ORIG_MASK 0x0f
+#define UAC1_STATUS_TYPE_ORIG_AUDIO_CONTROL_IF 0x0
+#define UAC1_STATUS_TYPE_ORIG_AUDIO_STREAM_IF 0x1
+#define UAC1_STATUS_TYPE_ORIG_AUDIO_STREAM_EP 0x2
+#define UAC1_STATUS_TYPE_IRQ_PENDING (1 << 7)
+#define UAC1_STATUS_TYPE_MEM_CHANGED (1 << 6)
+struct uac1_status_word {
+  __u8 bStatusType;
+  __u8 bOriginator;
+} __attribute__((packed));
+#endif
diff --git a/i686-linux-musl/include/linux/usb/cdc-wdm.h b/i686-linux-musl/include/linux/usb/cdc-wdm.h
new file mode 100644
index 0000000..5a86268
--- /dev/null
+++ b/i686-linux-musl/include/linux/usb/cdc-wdm.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_USB_CDC_WDM_H
+#define _UAPI__LINUX_USB_CDC_WDM_H
+#include <linux/types.h>
+#define IOCTL_WDM_MAX_COMMAND _IOR('H', 0xA0, __u16)
+#endif
diff --git a/i686-linux-musl/include/linux/usb/cdc.h b/i686-linux-musl/include/linux/usb/cdc.h
new file mode 100644
index 0000000..59c9488
--- /dev/null
+++ b/i686-linux-musl/include/linux/usb/cdc.h
@@ -0,0 +1,311 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_LINUX_USB_CDC_H
+#define __UAPI_LINUX_USB_CDC_H
+#include <linux/types.h>
+#define USB_CDC_SUBCLASS_ACM 0x02
+#define USB_CDC_SUBCLASS_ETHERNET 0x06
+#define USB_CDC_SUBCLASS_WHCM 0x08
+#define USB_CDC_SUBCLASS_DMM 0x09
+#define USB_CDC_SUBCLASS_MDLM 0x0a
+#define USB_CDC_SUBCLASS_OBEX 0x0b
+#define USB_CDC_SUBCLASS_EEM 0x0c
+#define USB_CDC_SUBCLASS_NCM 0x0d
+#define USB_CDC_SUBCLASS_MBIM 0x0e
+#define USB_CDC_PROTO_NONE 0
+#define USB_CDC_ACM_PROTO_AT_V25TER 1
+#define USB_CDC_ACM_PROTO_AT_PCCA101 2
+#define USB_CDC_ACM_PROTO_AT_PCCA101_WAKE 3
+#define USB_CDC_ACM_PROTO_AT_GSM 4
+#define USB_CDC_ACM_PROTO_AT_3G 5
+#define USB_CDC_ACM_PROTO_AT_CDMA 6
+#define USB_CDC_ACM_PROTO_VENDOR 0xff
+#define USB_CDC_PROTO_EEM 7
+#define USB_CDC_NCM_PROTO_NTB 1
+#define USB_CDC_MBIM_PROTO_NTB 2
+#define USB_CDC_HEADER_TYPE 0x00
+#define USB_CDC_CALL_MANAGEMENT_TYPE 0x01
+#define USB_CDC_ACM_TYPE 0x02
+#define USB_CDC_UNION_TYPE 0x06
+#define USB_CDC_COUNTRY_TYPE 0x07
+#define USB_CDC_NETWORK_TERMINAL_TYPE 0x0a
+#define USB_CDC_ETHERNET_TYPE 0x0f
+#define USB_CDC_WHCM_TYPE 0x11
+#define USB_CDC_MDLM_TYPE 0x12
+#define USB_CDC_MDLM_DETAIL_TYPE 0x13
+#define USB_CDC_DMM_TYPE 0x14
+#define USB_CDC_OBEX_TYPE 0x15
+#define USB_CDC_NCM_TYPE 0x1a
+#define USB_CDC_MBIM_TYPE 0x1b
+#define USB_CDC_MBIM_EXTENDED_TYPE 0x1c
+struct usb_cdc_header_desc {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __le16 bcdCDC;
+} __attribute__((packed));
+struct usb_cdc_call_mgmt_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bmCapabilities;
+#define USB_CDC_CALL_MGMT_CAP_CALL_MGMT 0x01
+#define USB_CDC_CALL_MGMT_CAP_DATA_INTF 0x02
+  __u8 bDataInterface;
+} __attribute__((packed));
+struct usb_cdc_acm_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bmCapabilities;
+} __attribute__((packed));
+#define USB_CDC_COMM_FEATURE 0x01
+#define USB_CDC_CAP_LINE 0x02
+#define USB_CDC_CAP_BRK 0x04
+#define USB_CDC_CAP_NOTIFY 0x08
+struct usb_cdc_union_desc {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bMasterInterface0;
+  __u8 bSlaveInterface0;
+} __attribute__((packed));
+struct usb_cdc_country_functional_desc {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 iCountryCodeRelDate;
+  __le16 wCountyCode0;
+} __attribute__((packed));
+struct usb_cdc_network_terminal_desc {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bEntityId;
+  __u8 iName;
+  __u8 bChannelIndex;
+  __u8 bPhysicalInterface;
+} __attribute__((packed));
+struct usb_cdc_ether_desc {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 iMACAddress;
+  __le32 bmEthernetStatistics;
+  __le16 wMaxSegmentSize;
+  __le16 wNumberMCFilters;
+  __u8 bNumberPowerFilters;
+} __attribute__((packed));
+struct usb_cdc_dmm_desc {
+  __u8 bFunctionLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u16 bcdVersion;
+  __le16 wMaxCommand;
+} __attribute__((packed));
+struct usb_cdc_mdlm_desc {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __le16 bcdVersion;
+  __u8 bGUID[16];
+} __attribute__((packed));
+struct usb_cdc_mdlm_detail_desc {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bGuidDescriptorType;
+  __u8 bDetailData[0];
+} __attribute__((packed));
+struct usb_cdc_obex_desc {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __le16 bcdVersion;
+} __attribute__((packed));
+struct usb_cdc_ncm_desc {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __le16 bcdNcmVersion;
+  __u8 bmNetworkCapabilities;
+} __attribute__((packed));
+struct usb_cdc_mbim_desc {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __le16 bcdMBIMVersion;
+  __le16 wMaxControlMessage;
+  __u8 bNumberFilters;
+  __u8 bMaxFilterSize;
+  __le16 wMaxSegmentSize;
+  __u8 bmNetworkCapabilities;
+} __attribute__((packed));
+struct usb_cdc_mbim_extended_desc {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __le16 bcdMBIMExtendedVersion;
+  __u8 bMaxOutstandingCommandMessages;
+  __le16 wMTU;
+} __attribute__((packed));
+#define USB_CDC_SEND_ENCAPSULATED_COMMAND 0x00
+#define USB_CDC_GET_ENCAPSULATED_RESPONSE 0x01
+#define USB_CDC_REQ_SET_LINE_CODING 0x20
+#define USB_CDC_REQ_GET_LINE_CODING 0x21
+#define USB_CDC_REQ_SET_CONTROL_LINE_STATE 0x22
+#define USB_CDC_REQ_SEND_BREAK 0x23
+#define USB_CDC_SET_ETHERNET_MULTICAST_FILTERS 0x40
+#define USB_CDC_SET_ETHERNET_PM_PATTERN_FILTER 0x41
+#define USB_CDC_GET_ETHERNET_PM_PATTERN_FILTER 0x42
+#define USB_CDC_SET_ETHERNET_PACKET_FILTER 0x43
+#define USB_CDC_GET_ETHERNET_STATISTIC 0x44
+#define USB_CDC_GET_NTB_PARAMETERS 0x80
+#define USB_CDC_GET_NET_ADDRESS 0x81
+#define USB_CDC_SET_NET_ADDRESS 0x82
+#define USB_CDC_GET_NTB_FORMAT 0x83
+#define USB_CDC_SET_NTB_FORMAT 0x84
+#define USB_CDC_GET_NTB_INPUT_SIZE 0x85
+#define USB_CDC_SET_NTB_INPUT_SIZE 0x86
+#define USB_CDC_GET_MAX_DATAGRAM_SIZE 0x87
+#define USB_CDC_SET_MAX_DATAGRAM_SIZE 0x88
+#define USB_CDC_GET_CRC_MODE 0x89
+#define USB_CDC_SET_CRC_MODE 0x8a
+struct usb_cdc_line_coding {
+  __le32 dwDTERate;
+  __u8 bCharFormat;
+#define USB_CDC_1_STOP_BITS 0
+#define USB_CDC_1_5_STOP_BITS 1
+#define USB_CDC_2_STOP_BITS 2
+  __u8 bParityType;
+#define USB_CDC_NO_PARITY 0
+#define USB_CDC_ODD_PARITY 1
+#define USB_CDC_EVEN_PARITY 2
+#define USB_CDC_MARK_PARITY 3
+#define USB_CDC_SPACE_PARITY 4
+  __u8 bDataBits;
+} __attribute__((packed));
+#define USB_CDC_PACKET_TYPE_PROMISCUOUS (1 << 0)
+#define USB_CDC_PACKET_TYPE_ALL_MULTICAST (1 << 1)
+#define USB_CDC_PACKET_TYPE_DIRECTED (1 << 2)
+#define USB_CDC_PACKET_TYPE_BROADCAST (1 << 3)
+#define USB_CDC_PACKET_TYPE_MULTICAST (1 << 4)
+#define USB_CDC_NOTIFY_NETWORK_CONNECTION 0x00
+#define USB_CDC_NOTIFY_RESPONSE_AVAILABLE 0x01
+#define USB_CDC_NOTIFY_SERIAL_STATE 0x20
+#define USB_CDC_NOTIFY_SPEED_CHANGE 0x2a
+struct usb_cdc_notification {
+  __u8 bmRequestType;
+  __u8 bNotificationType;
+  __le16 wValue;
+  __le16 wIndex;
+  __le16 wLength;
+} __attribute__((packed));
+struct usb_cdc_speed_change {
+  __le32 DLBitRRate;
+  __le32 ULBitRate;
+} __attribute__((packed));
+struct usb_cdc_ncm_ntb_parameters {
+  __le16 wLength;
+  __le16 bmNtbFormatsSupported;
+  __le32 dwNtbInMaxSize;
+  __le16 wNdpInDivisor;
+  __le16 wNdpInPayloadRemainder;
+  __le16 wNdpInAlignment;
+  __le16 wPadding1;
+  __le32 dwNtbOutMaxSize;
+  __le16 wNdpOutDivisor;
+  __le16 wNdpOutPayloadRemainder;
+  __le16 wNdpOutAlignment;
+  __le16 wNtbOutMaxDatagrams;
+} __attribute__((packed));
+#define USB_CDC_NCM_NTH16_SIGN 0x484D434E
+#define USB_CDC_NCM_NTH32_SIGN 0x686D636E
+struct usb_cdc_ncm_nth16 {
+  __le32 dwSignature;
+  __le16 wHeaderLength;
+  __le16 wSequence;
+  __le16 wBlockLength;
+  __le16 wNdpIndex;
+} __attribute__((packed));
+struct usb_cdc_ncm_nth32 {
+  __le32 dwSignature;
+  __le16 wHeaderLength;
+  __le16 wSequence;
+  __le32 dwBlockLength;
+  __le32 dwNdpIndex;
+} __attribute__((packed));
+#define USB_CDC_NCM_NDP16_CRC_SIGN 0x314D434E
+#define USB_CDC_NCM_NDP16_NOCRC_SIGN 0x304D434E
+#define USB_CDC_NCM_NDP32_CRC_SIGN 0x316D636E
+#define USB_CDC_NCM_NDP32_NOCRC_SIGN 0x306D636E
+#define USB_CDC_MBIM_NDP16_IPS_SIGN 0x00535049
+#define USB_CDC_MBIM_NDP32_IPS_SIGN 0x00737069
+#define USB_CDC_MBIM_NDP16_DSS_SIGN 0x00535344
+#define USB_CDC_MBIM_NDP32_DSS_SIGN 0x00737364
+struct usb_cdc_ncm_dpe16 {
+  __le16 wDatagramIndex;
+  __le16 wDatagramLength;
+} __attribute__((__packed__));
+struct usb_cdc_ncm_ndp16 {
+  __le32 dwSignature;
+  __le16 wLength;
+  __le16 wNextNdpIndex;
+  struct usb_cdc_ncm_dpe16 dpe16[0];
+} __attribute__((packed));
+struct usb_cdc_ncm_dpe32 {
+  __le32 dwDatagramIndex;
+  __le32 dwDatagramLength;
+} __attribute__((__packed__));
+struct usb_cdc_ncm_ndp32 {
+  __le32 dwSignature;
+  __le16 wLength;
+  __le16 wReserved6;
+  __le32 dwNextNdpIndex;
+  __le32 dwReserved12;
+  struct usb_cdc_ncm_dpe32 dpe32[0];
+} __attribute__((packed));
+#define USB_CDC_NCM_NDP16_INDEX_MIN 0x000C
+#define USB_CDC_NCM_NDP32_INDEX_MIN 0x0010
+#define USB_CDC_NCM_DATAGRAM_FORMAT_CRC 0x30
+#define USB_CDC_NCM_DATAGRAM_FORMAT_NOCRC 0X31
+#define USB_CDC_NCM_PROTO_CODE_NO_ENCAP_COMMANDS 0x00
+#define USB_CDC_NCM_PROTO_CODE_EXTERN_PROTO 0xFE
+#define USB_CDC_NCM_NCAP_ETH_FILTER (1 << 0)
+#define USB_CDC_NCM_NCAP_NET_ADDRESS (1 << 1)
+#define USB_CDC_NCM_NCAP_ENCAP_COMMAND (1 << 2)
+#define USB_CDC_NCM_NCAP_MAX_DATAGRAM_SIZE (1 << 3)
+#define USB_CDC_NCM_NCAP_CRC_MODE (1 << 4)
+#define USB_CDC_NCM_NCAP_NTB_INPUT_SIZE (1 << 5)
+#define USB_CDC_NCM_NTB16_SUPPORTED (1 << 0)
+#define USB_CDC_NCM_NTB32_SUPPORTED (1 << 1)
+#define USB_CDC_NCM_NDP_ALIGN_MIN_SIZE 0x04
+#define USB_CDC_NCM_NTB_MAX_LENGTH 0x1C
+#define USB_CDC_NCM_NTB16_FORMAT 0x00
+#define USB_CDC_NCM_NTB32_FORMAT 0x01
+#define USB_CDC_NCM_NTB_MIN_IN_SIZE 2048
+#define USB_CDC_NCM_NTB_MIN_OUT_SIZE 2048
+struct usb_cdc_ncm_ndp_input_size {
+  __le32 dwNtbInMaxSize;
+  __le16 wNtbInMaxDatagrams;
+  __le16 wReserved;
+} __attribute__((packed));
+#define USB_CDC_NCM_CRC_NOT_APPENDED 0x00
+#define USB_CDC_NCM_CRC_APPENDED 0x01
+#endif
diff --git a/i686-linux-musl/include/linux/usb/ch11.h b/i686-linux-musl/include/linux/usb/ch11.h
new file mode 100644
index 0000000..55387fe
--- /dev/null
+++ b/i686-linux-musl/include/linux/usb/ch11.h
@@ -0,0 +1,179 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_CH11_H
+#define __LINUX_CH11_H
+#include <linux/types.h>
+#define USB_MAXCHILDREN 31
+#define USB_SS_MAXPORTS 15
+#define USB_RT_HUB (USB_TYPE_CLASS | USB_RECIP_DEVICE)
+#define USB_RT_PORT (USB_TYPE_CLASS | USB_RECIP_OTHER)
+#define HUB_PORT_STATUS 0
+#define HUB_PORT_PD_STATUS 1
+#define HUB_EXT_PORT_STATUS 2
+#define HUB_CLEAR_TT_BUFFER 8
+#define HUB_RESET_TT 9
+#define HUB_GET_TT_STATE 10
+#define HUB_STOP_TT 11
+#define HUB_SET_DEPTH 12
+#define HUB_GET_PORT_ERR_COUNT 13
+#define C_HUB_LOCAL_POWER 0
+#define C_HUB_OVER_CURRENT 1
+#define USB_PORT_FEAT_CONNECTION 0
+#define USB_PORT_FEAT_ENABLE 1
+#define USB_PORT_FEAT_SUSPEND 2
+#define USB_PORT_FEAT_OVER_CURRENT 3
+#define USB_PORT_FEAT_RESET 4
+#define USB_PORT_FEAT_L1 5
+#define USB_PORT_FEAT_POWER 8
+#define USB_PORT_FEAT_LOWSPEED 9
+#define USB_PORT_FEAT_C_CONNECTION 16
+#define USB_PORT_FEAT_C_ENABLE 17
+#define USB_PORT_FEAT_C_SUSPEND 18
+#define USB_PORT_FEAT_C_OVER_CURRENT 19
+#define USB_PORT_FEAT_C_RESET 20
+#define USB_PORT_FEAT_TEST 21
+#define USB_PORT_FEAT_INDICATOR 22
+#define USB_PORT_FEAT_C_PORT_L1 23
+#define USB_PORT_FEAT_LINK_STATE 5
+#define USB_PORT_FEAT_U1_TIMEOUT 23
+#define USB_PORT_FEAT_U2_TIMEOUT 24
+#define USB_PORT_FEAT_C_PORT_LINK_STATE 25
+#define USB_PORT_FEAT_C_PORT_CONFIG_ERROR 26
+#define USB_PORT_FEAT_REMOTE_WAKE_MASK 27
+#define USB_PORT_FEAT_BH_PORT_RESET 28
+#define USB_PORT_FEAT_C_BH_PORT_RESET 29
+#define USB_PORT_FEAT_FORCE_LINKPM_ACCEPT 30
+#define USB_PORT_LPM_TIMEOUT(p) (((p) & 0xff) << 8)
+#define USB_PORT_FEAT_REMOTE_WAKE_CONNECT (1 << 8)
+#define USB_PORT_FEAT_REMOTE_WAKE_DISCONNECT (1 << 9)
+#define USB_PORT_FEAT_REMOTE_WAKE_OVER_CURRENT (1 << 10)
+struct usb_port_status {
+  __le16 wPortStatus;
+  __le16 wPortChange;
+  __le32 dwExtPortStatus;
+} __attribute__((packed));
+#define USB_PORT_STAT_CONNECTION 0x0001
+#define USB_PORT_STAT_ENABLE 0x0002
+#define USB_PORT_STAT_SUSPEND 0x0004
+#define USB_PORT_STAT_OVERCURRENT 0x0008
+#define USB_PORT_STAT_RESET 0x0010
+#define USB_PORT_STAT_L1 0x0020
+#define USB_PORT_STAT_POWER 0x0100
+#define USB_PORT_STAT_LOW_SPEED 0x0200
+#define USB_PORT_STAT_HIGH_SPEED 0x0400
+#define USB_PORT_STAT_TEST 0x0800
+#define USB_PORT_STAT_INDICATOR 0x1000
+#define USB_PORT_STAT_LINK_STATE 0x01e0
+#define USB_SS_PORT_STAT_POWER 0x0200
+#define USB_SS_PORT_STAT_SPEED 0x1c00
+#define USB_PORT_STAT_SPEED_5GBPS 0x0000
+#define USB_SS_PORT_STAT_MASK (USB_PORT_STAT_CONNECTION | USB_PORT_STAT_ENABLE | USB_PORT_STAT_OVERCURRENT | USB_PORT_STAT_RESET)
+#define USB_SS_PORT_LS_U0 0x0000
+#define USB_SS_PORT_LS_U1 0x0020
+#define USB_SS_PORT_LS_U2 0x0040
+#define USB_SS_PORT_LS_U3 0x0060
+#define USB_SS_PORT_LS_SS_DISABLED 0x0080
+#define USB_SS_PORT_LS_RX_DETECT 0x00a0
+#define USB_SS_PORT_LS_SS_INACTIVE 0x00c0
+#define USB_SS_PORT_LS_POLLING 0x00e0
+#define USB_SS_PORT_LS_RECOVERY 0x0100
+#define USB_SS_PORT_LS_HOT_RESET 0x0120
+#define USB_SS_PORT_LS_COMP_MOD 0x0140
+#define USB_SS_PORT_LS_LOOPBACK 0x0160
+#define USB_PORT_STAT_C_CONNECTION 0x0001
+#define USB_PORT_STAT_C_ENABLE 0x0002
+#define USB_PORT_STAT_C_SUSPEND 0x0004
+#define USB_PORT_STAT_C_OVERCURRENT 0x0008
+#define USB_PORT_STAT_C_RESET 0x0010
+#define USB_PORT_STAT_C_L1 0x0020
+#define USB_PORT_STAT_C_BH_RESET 0x0020
+#define USB_PORT_STAT_C_LINK_STATE 0x0040
+#define USB_PORT_STAT_C_CONFIG_ERROR 0x0080
+#define USB_EXT_PORT_STAT_RX_SPEED_ID 0x0000000f
+#define USB_EXT_PORT_STAT_TX_SPEED_ID 0x000000f0
+#define USB_EXT_PORT_STAT_RX_LANES 0x00000f00
+#define USB_EXT_PORT_STAT_TX_LANES 0x0000f000
+#define USB_EXT_PORT_RX_LANES(p) (((p) & USB_EXT_PORT_STAT_RX_LANES) >> 8)
+#define USB_EXT_PORT_TX_LANES(p) (((p) & USB_EXT_PORT_STAT_TX_LANES) >> 12)
+#define HUB_CHAR_LPSM 0x0003
+#define HUB_CHAR_COMMON_LPSM 0x0000
+#define HUB_CHAR_INDV_PORT_LPSM 0x0001
+#define HUB_CHAR_NO_LPSM 0x0002
+#define HUB_CHAR_COMPOUND 0x0004
+#define HUB_CHAR_OCPM 0x0018
+#define HUB_CHAR_COMMON_OCPM 0x0000
+#define HUB_CHAR_INDV_PORT_OCPM 0x0008
+#define HUB_CHAR_NO_OCPM 0x0010
+#define HUB_CHAR_TTTT 0x0060
+#define HUB_CHAR_PORTIND 0x0080
+struct usb_hub_status {
+  __le16 wHubStatus;
+  __le16 wHubChange;
+} __attribute__((packed));
+#define HUB_STATUS_LOCAL_POWER 0x0001
+#define HUB_STATUS_OVERCURRENT 0x0002
+#define HUB_CHANGE_LOCAL_POWER 0x0001
+#define HUB_CHANGE_OVERCURRENT 0x0002
+#define USB_DT_HUB (USB_TYPE_CLASS | 0x09)
+#define USB_DT_SS_HUB (USB_TYPE_CLASS | 0x0a)
+#define USB_DT_HUB_NONVAR_SIZE 7
+#define USB_DT_SS_HUB_SIZE 12
+#define USB_HUB_PR_FS 0
+#define USB_HUB_PR_HS_NO_TT 0
+#define USB_HUB_PR_HS_SINGLE_TT 1
+#define USB_HUB_PR_HS_MULTI_TT 2
+#define USB_HUB_PR_SS 3
+struct usb_hub_descriptor {
+  __u8 bDescLength;
+  __u8 bDescriptorType;
+  __u8 bNbrPorts;
+  __le16 wHubCharacteristics;
+  __u8 bPwrOn2PwrGood;
+  __u8 bHubContrCurrent;
+  union {
+    struct {
+      __u8 DeviceRemovable[(USB_MAXCHILDREN + 1 + 7) / 8];
+      __u8 PortPwrCtrlMask[(USB_MAXCHILDREN + 1 + 7) / 8];
+    } __attribute__((packed)) hs;
+    struct {
+      __u8 bHubHdrDecLat;
+      __le16 wHubDelay;
+      __le16 DeviceRemovable;
+    } __attribute__((packed)) ss;
+  } u;
+} __attribute__((packed));
+#define HUB_LED_AUTO 0
+#define HUB_LED_AMBER 1
+#define HUB_LED_GREEN 2
+#define HUB_LED_OFF 3
+enum hub_led_mode {
+  INDICATOR_AUTO = 0,
+  INDICATOR_CYCLE,
+  INDICATOR_GREEN_BLINK,
+  INDICATOR_GREEN_BLINK_OFF,
+  INDICATOR_AMBER_BLINK,
+  INDICATOR_AMBER_BLINK_OFF,
+  INDICATOR_ALT_BLINK,
+  INDICATOR_ALT_BLINK_OFF
+} __attribute__((packed));
+#define HUB_TTTT_8_BITS 0x00
+#define HUB_TTTT_16_BITS 0x20
+#define HUB_TTTT_24_BITS 0x40
+#define HUB_TTTT_32_BITS 0x60
+#endif
diff --git a/i686-linux-musl/include/linux/usb/ch9.h b/i686-linux-musl/include/linux/usb/ch9.h
new file mode 100644
index 0000000..f1dade9
--- /dev/null
+++ b/i686-linux-musl/include/linux/usb/ch9.h
@@ -0,0 +1,596 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_USB_CH9_H
+#define _UAPI__LINUX_USB_CH9_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+#define USB_DIR_OUT 0
+#define USB_DIR_IN 0x80
+#define USB_TYPE_MASK (0x03 << 5)
+#define USB_TYPE_STANDARD (0x00 << 5)
+#define USB_TYPE_CLASS (0x01 << 5)
+#define USB_TYPE_VENDOR (0x02 << 5)
+#define USB_TYPE_RESERVED (0x03 << 5)
+#define USB_RECIP_MASK 0x1f
+#define USB_RECIP_DEVICE 0x00
+#define USB_RECIP_INTERFACE 0x01
+#define USB_RECIP_ENDPOINT 0x02
+#define USB_RECIP_OTHER 0x03
+#define USB_RECIP_PORT 0x04
+#define USB_RECIP_RPIPE 0x05
+#define USB_REQ_GET_STATUS 0x00
+#define USB_REQ_CLEAR_FEATURE 0x01
+#define USB_REQ_SET_FEATURE 0x03
+#define USB_REQ_SET_ADDRESS 0x05
+#define USB_REQ_GET_DESCRIPTOR 0x06
+#define USB_REQ_SET_DESCRIPTOR 0x07
+#define USB_REQ_GET_CONFIGURATION 0x08
+#define USB_REQ_SET_CONFIGURATION 0x09
+#define USB_REQ_GET_INTERFACE 0x0A
+#define USB_REQ_SET_INTERFACE 0x0B
+#define USB_REQ_SYNCH_FRAME 0x0C
+#define USB_REQ_SET_SEL 0x30
+#define USB_REQ_SET_ISOCH_DELAY 0x31
+#define USB_REQ_SET_ENCRYPTION 0x0D
+#define USB_REQ_GET_ENCRYPTION 0x0E
+#define USB_REQ_RPIPE_ABORT 0x0E
+#define USB_REQ_SET_HANDSHAKE 0x0F
+#define USB_REQ_RPIPE_RESET 0x0F
+#define USB_REQ_GET_HANDSHAKE 0x10
+#define USB_REQ_SET_CONNECTION 0x11
+#define USB_REQ_SET_SECURITY_DATA 0x12
+#define USB_REQ_GET_SECURITY_DATA 0x13
+#define USB_REQ_SET_WUSB_DATA 0x14
+#define USB_REQ_LOOPBACK_DATA_WRITE 0x15
+#define USB_REQ_LOOPBACK_DATA_READ 0x16
+#define USB_REQ_SET_INTERFACE_DS 0x17
+#define USB_REQ_GET_PARTNER_PDO 20
+#define USB_REQ_GET_BATTERY_STATUS 21
+#define USB_REQ_SET_PDO 22
+#define USB_REQ_GET_VDM 23
+#define USB_REQ_SEND_VDM 24
+#define USB_DEVICE_SELF_POWERED 0
+#define USB_DEVICE_REMOTE_WAKEUP 1
+#define USB_DEVICE_TEST_MODE 2
+#define USB_DEVICE_BATTERY 2
+#define USB_DEVICE_B_HNP_ENABLE 3
+#define USB_DEVICE_WUSB_DEVICE 3
+#define USB_DEVICE_A_HNP_SUPPORT 4
+#define USB_DEVICE_A_ALT_HNP_SUPPORT 5
+#define USB_DEVICE_DEBUG_MODE 6
+#define USB_TEST_J 1
+#define USB_TEST_K 2
+#define USB_TEST_SE0_NAK 3
+#define USB_TEST_PACKET 4
+#define USB_TEST_FORCE_ENABLE 5
+#define USB_STATUS_TYPE_STANDARD 0
+#define USB_STATUS_TYPE_PTM 1
+#define USB_DEVICE_U1_ENABLE 48
+#define USB_DEVICE_U2_ENABLE 49
+#define USB_DEVICE_LTM_ENABLE 50
+#define USB_INTRF_FUNC_SUSPEND 0
+#define USB_INTR_FUNC_SUSPEND_OPT_MASK 0xFF00
+#define USB_INTRF_FUNC_SUSPEND_LP (1 << (8 + 0))
+#define USB_INTRF_FUNC_SUSPEND_RW (1 << (8 + 1))
+#define USB_INTRF_STAT_FUNC_RW_CAP 1
+#define USB_INTRF_STAT_FUNC_RW 2
+#define USB_ENDPOINT_HALT 0
+#define USB_DEV_STAT_U1_ENABLED 2
+#define USB_DEV_STAT_U2_ENABLED 3
+#define USB_DEV_STAT_LTM_ENABLED 4
+#define USB_DEVICE_BATTERY_WAKE_MASK 40
+#define USB_DEVICE_OS_IS_PD_AWARE 41
+#define USB_DEVICE_POLICY_MODE 42
+#define USB_PORT_PR_SWAP 43
+#define USB_PORT_GOTO_MIN 44
+#define USB_PORT_RETURN_POWER 45
+#define USB_PORT_ACCEPT_PD_REQUEST 46
+#define USB_PORT_REJECT_PD_REQUEST 47
+#define USB_PORT_PORT_PD_RESET 48
+#define USB_PORT_C_PORT_PD_CHANGE 49
+#define USB_PORT_CABLE_PD_RESET 50
+#define USB_DEVICE_CHARGING_POLICY 54
+struct usb_ctrlrequest {
+  __u8 bRequestType;
+  __u8 bRequest;
+  __le16 wValue;
+  __le16 wIndex;
+  __le16 wLength;
+} __attribute__((packed));
+#define USB_DT_DEVICE 0x01
+#define USB_DT_CONFIG 0x02
+#define USB_DT_STRING 0x03
+#define USB_DT_INTERFACE 0x04
+#define USB_DT_ENDPOINT 0x05
+#define USB_DT_DEVICE_QUALIFIER 0x06
+#define USB_DT_OTHER_SPEED_CONFIG 0x07
+#define USB_DT_INTERFACE_POWER 0x08
+#define USB_DT_OTG 0x09
+#define USB_DT_DEBUG 0x0a
+#define USB_DT_INTERFACE_ASSOCIATION 0x0b
+#define USB_DT_SECURITY 0x0c
+#define USB_DT_KEY 0x0d
+#define USB_DT_ENCRYPTION_TYPE 0x0e
+#define USB_DT_BOS 0x0f
+#define USB_DT_DEVICE_CAPABILITY 0x10
+#define USB_DT_WIRELESS_ENDPOINT_COMP 0x11
+#define USB_DT_WIRE_ADAPTER 0x21
+#define USB_DT_RPIPE 0x22
+#define USB_DT_CS_RADIO_CONTROL 0x23
+#define USB_DT_PIPE_USAGE 0x24
+#define USB_DT_SS_ENDPOINT_COMP 0x30
+#define USB_DT_SSP_ISOC_ENDPOINT_COMP 0x31
+#define USB_DT_CS_DEVICE (USB_TYPE_CLASS | USB_DT_DEVICE)
+#define USB_DT_CS_CONFIG (USB_TYPE_CLASS | USB_DT_CONFIG)
+#define USB_DT_CS_STRING (USB_TYPE_CLASS | USB_DT_STRING)
+#define USB_DT_CS_INTERFACE (USB_TYPE_CLASS | USB_DT_INTERFACE)
+#define USB_DT_CS_ENDPOINT (USB_TYPE_CLASS | USB_DT_ENDPOINT)
+struct usb_descriptor_header {
+  __u8 bLength;
+  __u8 bDescriptorType;
+} __attribute__((packed));
+struct usb_device_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __le16 bcdUSB;
+  __u8 bDeviceClass;
+  __u8 bDeviceSubClass;
+  __u8 bDeviceProtocol;
+  __u8 bMaxPacketSize0;
+  __le16 idVendor;
+  __le16 idProduct;
+  __le16 bcdDevice;
+  __u8 iManufacturer;
+  __u8 iProduct;
+  __u8 iSerialNumber;
+  __u8 bNumConfigurations;
+} __attribute__((packed));
+#define USB_DT_DEVICE_SIZE 18
+#define USB_CLASS_PER_INTERFACE 0
+#define USB_CLASS_AUDIO 1
+#define USB_CLASS_COMM 2
+#define USB_CLASS_HID 3
+#define USB_CLASS_PHYSICAL 5
+#define USB_CLASS_STILL_IMAGE 6
+#define USB_CLASS_PRINTER 7
+#define USB_CLASS_MASS_STORAGE 8
+#define USB_CLASS_HUB 9
+#define USB_CLASS_CDC_DATA 0x0a
+#define USB_CLASS_CSCID 0x0b
+#define USB_CLASS_CONTENT_SEC 0x0d
+#define USB_CLASS_VIDEO 0x0e
+#define USB_CLASS_WIRELESS_CONTROLLER 0xe0
+#define USB_CLASS_PERSONAL_HEALTHCARE 0x0f
+#define USB_CLASS_AUDIO_VIDEO 0x10
+#define USB_CLASS_BILLBOARD 0x11
+#define USB_CLASS_USB_TYPE_C_BRIDGE 0x12
+#define USB_CLASS_MISC 0xef
+#define USB_CLASS_APP_SPEC 0xfe
+#define USB_CLASS_VENDOR_SPEC 0xff
+#define USB_SUBCLASS_VENDOR_SPEC 0xff
+struct usb_config_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __le16 wTotalLength;
+  __u8 bNumInterfaces;
+  __u8 bConfigurationValue;
+  __u8 iConfiguration;
+  __u8 bmAttributes;
+  __u8 bMaxPower;
+} __attribute__((packed));
+#define USB_DT_CONFIG_SIZE 9
+#define USB_CONFIG_ATT_ONE (1 << 7)
+#define USB_CONFIG_ATT_SELFPOWER (1 << 6)
+#define USB_CONFIG_ATT_WAKEUP (1 << 5)
+#define USB_CONFIG_ATT_BATTERY (1 << 4)
+#define USB_MAX_STRING_LEN 126
+struct usb_string_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __le16 wData[1];
+} __attribute__((packed));
+struct usb_interface_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bInterfaceNumber;
+  __u8 bAlternateSetting;
+  __u8 bNumEndpoints;
+  __u8 bInterfaceClass;
+  __u8 bInterfaceSubClass;
+  __u8 bInterfaceProtocol;
+  __u8 iInterface;
+} __attribute__((packed));
+#define USB_DT_INTERFACE_SIZE 9
+struct usb_endpoint_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bEndpointAddress;
+  __u8 bmAttributes;
+  __le16 wMaxPacketSize;
+  __u8 bInterval;
+  __u8 bRefresh;
+  __u8 bSynchAddress;
+} __attribute__((packed));
+#define USB_DT_ENDPOINT_SIZE 7
+#define USB_DT_ENDPOINT_AUDIO_SIZE 9
+#define USB_ENDPOINT_NUMBER_MASK 0x0f
+#define USB_ENDPOINT_DIR_MASK 0x80
+#define USB_ENDPOINT_XFERTYPE_MASK 0x03
+#define USB_ENDPOINT_XFER_CONTROL 0
+#define USB_ENDPOINT_XFER_ISOC 1
+#define USB_ENDPOINT_XFER_BULK 2
+#define USB_ENDPOINT_XFER_INT 3
+#define USB_ENDPOINT_MAX_ADJUSTABLE 0x80
+#define USB_ENDPOINT_MAXP_MASK 0x07ff
+#define USB_EP_MAXP_MULT_SHIFT 11
+#define USB_EP_MAXP_MULT_MASK (3 << USB_EP_MAXP_MULT_SHIFT)
+#define USB_EP_MAXP_MULT(m) (((m) & USB_EP_MAXP_MULT_MASK) >> USB_EP_MAXP_MULT_SHIFT)
+#define USB_ENDPOINT_INTRTYPE 0x30
+#define USB_ENDPOINT_INTR_PERIODIC (0 << 4)
+#define USB_ENDPOINT_INTR_NOTIFICATION (1 << 4)
+#define USB_ENDPOINT_SYNCTYPE 0x0c
+#define USB_ENDPOINT_SYNC_NONE (0 << 2)
+#define USB_ENDPOINT_SYNC_ASYNC (1 << 2)
+#define USB_ENDPOINT_SYNC_ADAPTIVE (2 << 2)
+#define USB_ENDPOINT_SYNC_SYNC (3 << 2)
+#define USB_ENDPOINT_USAGE_MASK 0x30
+#define USB_ENDPOINT_USAGE_DATA 0x00
+#define USB_ENDPOINT_USAGE_FEEDBACK 0x10
+#define USB_ENDPOINT_USAGE_IMPLICIT_FB 0x20
+struct usb_ssp_isoc_ep_comp_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __le16 wReseved;
+  __le32 dwBytesPerInterval;
+} __attribute__((packed));
+#define USB_DT_SSP_ISOC_EP_COMP_SIZE 8
+struct usb_ss_ep_comp_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bMaxBurst;
+  __u8 bmAttributes;
+  __le16 wBytesPerInterval;
+} __attribute__((packed));
+#define USB_DT_SS_EP_COMP_SIZE 6
+#define USB_SS_MULT(p) (1 + ((p) & 0x3))
+#define USB_SS_SSP_ISOC_COMP(p) ((p) & (1 << 7))
+struct usb_qualifier_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __le16 bcdUSB;
+  __u8 bDeviceClass;
+  __u8 bDeviceSubClass;
+  __u8 bDeviceProtocol;
+  __u8 bMaxPacketSize0;
+  __u8 bNumConfigurations;
+  __u8 bRESERVED;
+} __attribute__((packed));
+struct usb_otg_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bmAttributes;
+} __attribute__((packed));
+struct usb_otg20_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bmAttributes;
+  __le16 bcdOTG;
+} __attribute__((packed));
+#define USB_OTG_SRP (1 << 0)
+#define USB_OTG_HNP (1 << 1)
+#define USB_OTG_ADP (1 << 2)
+#define OTG_STS_SELECTOR 0xF000
+struct usb_debug_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDebugInEndpoint;
+  __u8 bDebugOutEndpoint;
+} __attribute__((packed));
+struct usb_interface_assoc_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bFirstInterface;
+  __u8 bInterfaceCount;
+  __u8 bFunctionClass;
+  __u8 bFunctionSubClass;
+  __u8 bFunctionProtocol;
+  __u8 iFunction;
+} __attribute__((packed));
+#define USB_DT_INTERFACE_ASSOCIATION_SIZE 8
+struct usb_security_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __le16 wTotalLength;
+  __u8 bNumEncryptionTypes;
+} __attribute__((packed));
+struct usb_key_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 tTKID[3];
+  __u8 bReserved;
+  __u8 bKeyData[0];
+} __attribute__((packed));
+struct usb_encryption_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bEncryptionType;
+#define USB_ENC_TYPE_UNSECURE 0
+#define USB_ENC_TYPE_WIRED 1
+#define USB_ENC_TYPE_CCM_1 2
+#define USB_ENC_TYPE_RSA_1 3
+  __u8 bEncryptionValue;
+  __u8 bAuthKeyIndex;
+} __attribute__((packed));
+struct usb_bos_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __le16 wTotalLength;
+  __u8 bNumDeviceCaps;
+} __attribute__((packed));
+#define USB_DT_BOS_SIZE 5
+struct usb_dev_cap_header {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDevCapabilityType;
+} __attribute__((packed));
+#define USB_CAP_TYPE_WIRELESS_USB 1
+struct usb_wireless_cap_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDevCapabilityType;
+  __u8 bmAttributes;
+#define USB_WIRELESS_P2P_DRD (1 << 1)
+#define USB_WIRELESS_BEACON_MASK (3 << 2)
+#define USB_WIRELESS_BEACON_SELF (1 << 2)
+#define USB_WIRELESS_BEACON_DIRECTED (2 << 2)
+#define USB_WIRELESS_BEACON_NONE (3 << 2)
+  __le16 wPHYRates;
+#define USB_WIRELESS_PHY_53 (1 << 0)
+#define USB_WIRELESS_PHY_80 (1 << 1)
+#define USB_WIRELESS_PHY_107 (1 << 2)
+#define USB_WIRELESS_PHY_160 (1 << 3)
+#define USB_WIRELESS_PHY_200 (1 << 4)
+#define USB_WIRELESS_PHY_320 (1 << 5)
+#define USB_WIRELESS_PHY_400 (1 << 6)
+#define USB_WIRELESS_PHY_480 (1 << 7)
+  __u8 bmTFITXPowerInfo;
+  __u8 bmFFITXPowerInfo;
+  __le16 bmBandGroup;
+  __u8 bReserved;
+} __attribute__((packed));
+#define USB_DT_USB_WIRELESS_CAP_SIZE 11
+#define USB_CAP_TYPE_EXT 2
+struct usb_ext_cap_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDevCapabilityType;
+  __le32 bmAttributes;
+#define USB_LPM_SUPPORT (1 << 1)
+#define USB_BESL_SUPPORT (1 << 2)
+#define USB_BESL_BASELINE_VALID (1 << 3)
+#define USB_BESL_DEEP_VALID (1 << 4)
+#define USB_SET_BESL_BASELINE(p) (((p) & 0xf) << 8)
+#define USB_SET_BESL_DEEP(p) (((p) & 0xf) << 12)
+#define USB_GET_BESL_BASELINE(p) (((p) & (0xf << 8)) >> 8)
+#define USB_GET_BESL_DEEP(p) (((p) & (0xf << 12)) >> 12)
+} __attribute__((packed));
+#define USB_DT_USB_EXT_CAP_SIZE 7
+#define USB_SS_CAP_TYPE 3
+struct usb_ss_cap_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDevCapabilityType;
+  __u8 bmAttributes;
+#define USB_LTM_SUPPORT (1 << 1)
+  __le16 wSpeedSupported;
+#define USB_LOW_SPEED_OPERATION (1)
+#define USB_FULL_SPEED_OPERATION (1 << 1)
+#define USB_HIGH_SPEED_OPERATION (1 << 2)
+#define USB_5GBPS_OPERATION (1 << 3)
+  __u8 bFunctionalitySupport;
+  __u8 bU1devExitLat;
+  __le16 bU2DevExitLat;
+} __attribute__((packed));
+#define USB_DT_USB_SS_CAP_SIZE 10
+#define CONTAINER_ID_TYPE 4
+struct usb_ss_container_id_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDevCapabilityType;
+  __u8 bReserved;
+  __u8 ContainerID[16];
+} __attribute__((packed));
+#define USB_DT_USB_SS_CONTN_ID_SIZE 20
+#define USB_SSP_CAP_TYPE 0xa
+struct usb_ssp_cap_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDevCapabilityType;
+  __u8 bReserved;
+  __le32 bmAttributes;
+#define USB_SSP_SUBLINK_SPEED_ATTRIBS (0x1f << 0)
+#define USB_SSP_SUBLINK_SPEED_IDS (0xf << 5)
+  __le16 wFunctionalitySupport;
+#define USB_SSP_MIN_SUBLINK_SPEED_ATTRIBUTE_ID (0xf)
+#define USB_SSP_MIN_RX_LANE_COUNT (0xf << 8)
+#define USB_SSP_MIN_TX_LANE_COUNT (0xf << 12)
+  __le16 wReserved;
+  __le32 bmSublinkSpeedAttr[1];
+#define USB_SSP_SUBLINK_SPEED_SSID (0xf)
+#define USB_SSP_SUBLINK_SPEED_LSE (0x3 << 4)
+#define USB_SSP_SUBLINK_SPEED_LSE_BPS 0
+#define USB_SSP_SUBLINK_SPEED_LSE_KBPS 1
+#define USB_SSP_SUBLINK_SPEED_LSE_MBPS 2
+#define USB_SSP_SUBLINK_SPEED_LSE_GBPS 3
+#define USB_SSP_SUBLINK_SPEED_ST (0x3 << 6)
+#define USB_SSP_SUBLINK_SPEED_ST_SYM_RX 0
+#define USB_SSP_SUBLINK_SPEED_ST_ASYM_RX 1
+#define USB_SSP_SUBLINK_SPEED_ST_SYM_TX 2
+#define USB_SSP_SUBLINK_SPEED_ST_ASYM_TX 3
+#define USB_SSP_SUBLINK_SPEED_RSVD (0x3f << 8)
+#define USB_SSP_SUBLINK_SPEED_LP (0x3 << 14)
+#define USB_SSP_SUBLINK_SPEED_LP_SS 0
+#define USB_SSP_SUBLINK_SPEED_LP_SSP 1
+#define USB_SSP_SUBLINK_SPEED_LSM (0xff << 16)
+} __attribute__((packed));
+#define USB_PD_POWER_DELIVERY_CAPABILITY 0x06
+#define USB_PD_BATTERY_INFO_CAPABILITY 0x07
+#define USB_PD_PD_CONSUMER_PORT_CAPABILITY 0x08
+#define USB_PD_PD_PROVIDER_PORT_CAPABILITY 0x09
+struct usb_pd_cap_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDevCapabilityType;
+  __u8 bReserved;
+  __le32 bmAttributes;
+#define USB_PD_CAP_BATTERY_CHARGING (1 << 1)
+#define USB_PD_CAP_USB_PD (1 << 2)
+#define USB_PD_CAP_PROVIDER (1 << 3)
+#define USB_PD_CAP_CONSUMER (1 << 4)
+#define USB_PD_CAP_CHARGING_POLICY (1 << 5)
+#define USB_PD_CAP_TYPE_C_CURRENT (1 << 6)
+#define USB_PD_CAP_PWR_AC (1 << 8)
+#define USB_PD_CAP_PWR_BAT (1 << 9)
+#define USB_PD_CAP_PWR_USE_V_BUS (1 << 14)
+  __le16 bmProviderPorts;
+  __le16 bmConsumerPorts;
+  __le16 bcdBCVersion;
+  __le16 bcdPDVersion;
+  __le16 bcdUSBTypeCVersion;
+} __attribute__((packed));
+struct usb_pd_cap_battery_info_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDevCapabilityType;
+  __u8 iBattery;
+  __u8 iSerial;
+  __u8 iManufacturer;
+  __u8 bBatteryId;
+  __u8 bReserved;
+  __le32 dwChargedThreshold;
+  __le32 dwWeakThreshold;
+  __le32 dwBatteryDesignCapacity;
+  __le32 dwBatteryLastFullchargeCapacity;
+} __attribute__((packed));
+struct usb_pd_cap_consumer_port_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDevCapabilityType;
+  __u8 bReserved;
+  __u8 bmCapabilities;
+#define USB_PD_CAP_CONSUMER_BC (1 << 0)
+#define USB_PD_CAP_CONSUMER_PD (1 << 1)
+#define USB_PD_CAP_CONSUMER_TYPE_C (1 << 2)
+  __le16 wMinVoltage;
+  __le16 wMaxVoltage;
+  __u16 wReserved;
+  __le32 dwMaxOperatingPower;
+  __le32 dwMaxPeakPower;
+  __le32 dwMaxPeakPowerTime;
+#define USB_PD_CAP_CONSUMER_UNKNOWN_PEAK_POWER_TIME 0xffff
+} __attribute__((packed));
+struct usb_pd_cap_provider_port_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDevCapabilityType;
+  __u8 bReserved1;
+  __u8 bmCapabilities;
+#define USB_PD_CAP_PROVIDER_BC (1 << 0)
+#define USB_PD_CAP_PROVIDER_PD (1 << 1)
+#define USB_PD_CAP_PROVIDER_TYPE_C (1 << 2)
+  __u8 bNumOfPDObjects;
+  __u8 bReserved2;
+  __le32 wPowerDataObject[];
+} __attribute__((packed));
+#define USB_PTM_CAP_TYPE 0xb
+struct usb_ptm_cap_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDevCapabilityType;
+} __attribute__((packed));
+#define USB_DT_USB_PTM_ID_SIZE 3
+#define USB_DT_USB_SSP_CAP_SIZE(ssac) (12 + (ssac + 1) * 4)
+struct usb_wireless_ep_comp_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bMaxBurst;
+  __u8 bMaxSequence;
+  __le16 wMaxStreamDelay;
+  __le16 wOverTheAirPacketSize;
+  __u8 bOverTheAirInterval;
+  __u8 bmCompAttributes;
+#define USB_ENDPOINT_SWITCH_MASK 0x03
+#define USB_ENDPOINT_SWITCH_NO 0
+#define USB_ENDPOINT_SWITCH_SWITCH 1
+#define USB_ENDPOINT_SWITCH_SCALE 2
+} __attribute__((packed));
+struct usb_handshake {
+  __u8 bMessageNumber;
+  __u8 bStatus;
+  __u8 tTKID[3];
+  __u8 bReserved;
+  __u8 CDID[16];
+  __u8 nonce[16];
+  __u8 MIC[8];
+} __attribute__((packed));
+struct usb_connection_context {
+  __u8 CHID[16];
+  __u8 CDID[16];
+  __u8 CK[16];
+} __attribute__((packed));
+enum usb_device_speed {
+  USB_SPEED_UNKNOWN = 0,
+  USB_SPEED_LOW,
+  USB_SPEED_FULL,
+  USB_SPEED_HIGH,
+  USB_SPEED_WIRELESS,
+  USB_SPEED_SUPER,
+  USB_SPEED_SUPER_PLUS,
+};
+enum usb_device_state {
+  USB_STATE_NOTATTACHED = 0,
+  USB_STATE_ATTACHED,
+  USB_STATE_POWERED,
+  USB_STATE_RECONNECTING,
+  USB_STATE_UNAUTHENTICATED,
+  USB_STATE_DEFAULT,
+  USB_STATE_ADDRESS,
+  USB_STATE_CONFIGURED,
+  USB_STATE_SUSPENDED
+};
+enum usb3_link_state {
+  USB3_LPM_U0 = 0,
+  USB3_LPM_U1,
+  USB3_LPM_U2,
+  USB3_LPM_U3
+};
+#define USB3_LPM_DISABLED 0x0
+#define USB3_LPM_U1_MAX_TIMEOUT 0x7F
+#define USB3_LPM_U2_MAX_TIMEOUT 0xFE
+#define USB3_LPM_DEVICE_INITIATED 0xFF
+struct usb_set_sel_req {
+  __u8 u1_sel;
+  __u8 u1_pel;
+  __le16 u2_sel;
+  __le16 u2_pel;
+} __attribute__((packed));
+#define USB3_LPM_MAX_U1_SEL_PEL 0xFF
+#define USB3_LPM_MAX_U2_SEL_PEL 0xFFFF
+#define USB_SELF_POWER_VBUS_MAX_DRAW 100
+#endif
diff --git a/i686-linux-musl/include/linux/usb/charger.h b/i686-linux-musl/include/linux/usb/charger.h
new file mode 100644
index 0000000..e53f7d6
--- /dev/null
+++ b/i686-linux-musl/include/linux/usb/charger.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_USB_CHARGER_H
+#define _UAPI__LINUX_USB_CHARGER_H
+enum usb_charger_type {
+  UNKNOWN_TYPE = 0,
+  SDP_TYPE = 1,
+  DCP_TYPE = 2,
+  CDP_TYPE = 3,
+  ACA_TYPE = 4,
+};
+enum usb_charger_state {
+  USB_CHARGER_DEFAULT = 0,
+  USB_CHARGER_PRESENT = 1,
+  USB_CHARGER_ABSENT = 2,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/usb/f_accessory.h b/i686-linux-musl/include/linux/usb/f_accessory.h
new file mode 100644
index 0000000..d4c5efe
--- /dev/null
+++ b/i686-linux-musl/include/linux/usb/f_accessory.h
@@ -0,0 +1,46 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_USB_F_ACCESSORY_H
+#define _UAPI_LINUX_USB_F_ACCESSORY_H
+#define USB_ACCESSORY_VENDOR_ID 0x18D1
+#define USB_ACCESSORY_PRODUCT_ID 0x2D00
+#define USB_ACCESSORY_ADB_PRODUCT_ID 0x2D01
+#define ACCESSORY_STRING_MANUFACTURER 0
+#define ACCESSORY_STRING_MODEL 1
+#define ACCESSORY_STRING_DESCRIPTION 2
+#define ACCESSORY_STRING_VERSION 3
+#define ACCESSORY_STRING_URI 4
+#define ACCESSORY_STRING_SERIAL 5
+#define ACCESSORY_GET_PROTOCOL 51
+#define ACCESSORY_SEND_STRING 52
+#define ACCESSORY_START 53
+#define ACCESSORY_REGISTER_HID 54
+#define ACCESSORY_UNREGISTER_HID 55
+#define ACCESSORY_SET_HID_REPORT_DESC 56
+#define ACCESSORY_SEND_HID_EVENT 57
+#define ACCESSORY_SET_AUDIO_MODE 58
+#define ACCESSORY_GET_STRING_MANUFACTURER _IOW('M', 1, char[256])
+#define ACCESSORY_GET_STRING_MODEL _IOW('M', 2, char[256])
+#define ACCESSORY_GET_STRING_DESCRIPTION _IOW('M', 3, char[256])
+#define ACCESSORY_GET_STRING_VERSION _IOW('M', 4, char[256])
+#define ACCESSORY_GET_STRING_URI _IOW('M', 5, char[256])
+#define ACCESSORY_GET_STRING_SERIAL _IOW('M', 6, char[256])
+#define ACCESSORY_IS_START_REQUESTED _IO('M', 7)
+#define ACCESSORY_GET_AUDIO_MODE _IO('M', 8)
+#endif
diff --git a/i686-linux-musl/include/linux/usb/functionfs.h b/i686-linux-musl/include/linux/usb/functionfs.h
new file mode 100644
index 0000000..7a5d1a2
--- /dev/null
+++ b/i686-linux-musl/include/linux/usb/functionfs.h
@@ -0,0 +1,111 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_FUNCTIONFS_H__
+#define _UAPI__LINUX_FUNCTIONFS_H__
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#include <linux/usb/ch9.h>
+enum {
+  FUNCTIONFS_DESCRIPTORS_MAGIC = 1,
+  FUNCTIONFS_STRINGS_MAGIC = 2,
+  FUNCTIONFS_DESCRIPTORS_MAGIC_V2 = 3,
+};
+enum functionfs_flags {
+  FUNCTIONFS_HAS_FS_DESC = 1,
+  FUNCTIONFS_HAS_HS_DESC = 2,
+  FUNCTIONFS_HAS_SS_DESC = 4,
+  FUNCTIONFS_HAS_MS_OS_DESC = 8,
+  FUNCTIONFS_VIRTUAL_ADDR = 16,
+  FUNCTIONFS_EVENTFD = 32,
+  FUNCTIONFS_ALL_CTRL_RECIP = 64,
+  FUNCTIONFS_CONFIG0_SETUP = 128,
+};
+struct usb_endpoint_descriptor_no_audio {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bEndpointAddress;
+  __u8 bmAttributes;
+  __le16 wMaxPacketSize;
+  __u8 bInterval;
+} __attribute__((packed));
+struct usb_functionfs_descs_head_v2 {
+  __le32 magic;
+  __le32 length;
+  __le32 flags;
+} __attribute__((packed));
+struct usb_functionfs_descs_head {
+  __le32 magic;
+  __le32 length;
+  __le32 fs_count;
+  __le32 hs_count;
+} __attribute__((packed, deprecated));
+struct usb_os_desc_header {
+  __u8 interface;
+  __le32 dwLength;
+  __le16 bcdVersion;
+  __le16 wIndex;
+  union {
+    struct {
+      __u8 bCount;
+      __u8 Reserved;
+    };
+    __le16 wCount;
+  };
+} __attribute__((packed));
+struct usb_ext_compat_desc {
+  __u8 bFirstInterfaceNumber;
+  __u8 Reserved1;
+  __u8 CompatibleID[8];
+  __u8 SubCompatibleID[8];
+  __u8 Reserved2[6];
+};
+struct usb_ext_prop_desc {
+  __le32 dwSize;
+  __le32 dwPropertyDataType;
+  __le16 wPropertyNameLength;
+} __attribute__((packed));
+struct usb_functionfs_strings_head {
+  __le32 magic;
+  __le32 length;
+  __le32 str_count;
+  __le32 lang_count;
+} __attribute__((packed));
+enum usb_functionfs_event_type {
+  FUNCTIONFS_BIND,
+  FUNCTIONFS_UNBIND,
+  FUNCTIONFS_ENABLE,
+  FUNCTIONFS_DISABLE,
+  FUNCTIONFS_SETUP,
+  FUNCTIONFS_SUSPEND,
+  FUNCTIONFS_RESUME
+};
+struct usb_functionfs_event {
+  union {
+    struct usb_ctrlrequest setup;
+  } __attribute__((packed)) u;
+  __u8 type;
+  __u8 _pad[3];
+} __attribute__((packed));
+#define FUNCTIONFS_FIFO_STATUS _IO('g', 1)
+#define FUNCTIONFS_FIFO_FLUSH _IO('g', 2)
+#define FUNCTIONFS_CLEAR_HALT _IO('g', 3)
+#define FUNCTIONFS_INTERFACE_REVMAP _IO('g', 128)
+#define FUNCTIONFS_ENDPOINT_REVMAP _IO('g', 129)
+#define FUNCTIONFS_ENDPOINT_DESC _IOR('g', 130, struct usb_endpoint_descriptor)
+#endif
diff --git a/i686-linux-musl/include/linux/usb/g_printer.h b/i686-linux-musl/include/linux/usb/g_printer.h
new file mode 100644
index 0000000..71200ed
--- /dev/null
+++ b/i686-linux-musl/include/linux/usb/g_printer.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_USB_G_PRINTER_H
+#define __LINUX_USB_G_PRINTER_H
+#define PRINTER_NOT_ERROR 0x08
+#define PRINTER_SELECTED 0x10
+#define PRINTER_PAPER_EMPTY 0x20
+#define GADGET_GET_PRINTER_STATUS _IOR('g', 0x21, unsigned char)
+#define GADGET_SET_PRINTER_STATUS _IOWR('g', 0x22, unsigned char)
+#endif
diff --git a/i686-linux-musl/include/linux/usb/g_uvc.h b/i686-linux-musl/include/linux/usb/g_uvc.h
new file mode 100644
index 0000000..0aeba3d
--- /dev/null
+++ b/i686-linux-musl/include/linux/usb/g_uvc.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_USB_G_UVC_H
+#define __LINUX_USB_G_UVC_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/usb/ch9.h>
+#define UVC_EVENT_FIRST (V4L2_EVENT_PRIVATE_START + 0)
+#define UVC_EVENT_CONNECT (V4L2_EVENT_PRIVATE_START + 0)
+#define UVC_EVENT_DISCONNECT (V4L2_EVENT_PRIVATE_START + 1)
+#define UVC_EVENT_STREAMON (V4L2_EVENT_PRIVATE_START + 2)
+#define UVC_EVENT_STREAMOFF (V4L2_EVENT_PRIVATE_START + 3)
+#define UVC_EVENT_SETUP (V4L2_EVENT_PRIVATE_START + 4)
+#define UVC_EVENT_DATA (V4L2_EVENT_PRIVATE_START + 5)
+#define UVC_EVENT_LAST (V4L2_EVENT_PRIVATE_START + 5)
+struct uvc_request_data {
+  __s32 length;
+  __u8 data[60];
+};
+struct uvc_event {
+  union {
+    enum usb_device_speed speed;
+    struct usb_ctrlrequest req;
+    struct uvc_request_data data;
+  };
+};
+#define UVCIOC_SEND_RESPONSE _IOW('U', 1, struct uvc_request_data)
+#endif
diff --git a/i686-linux-musl/include/linux/usb/gadgetfs.h b/i686-linux-musl/include/linux/usb/gadgetfs.h
new file mode 100644
index 0000000..7f45889
--- /dev/null
+++ b/i686-linux-musl/include/linux/usb/gadgetfs.h
@@ -0,0 +1,41 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_USB_GADGETFS_H
+#define __LINUX_USB_GADGETFS_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#include <linux/usb/ch9.h>
+enum usb_gadgetfs_event_type {
+  GADGETFS_NOP = 0,
+  GADGETFS_CONNECT,
+  GADGETFS_DISCONNECT,
+  GADGETFS_SETUP,
+  GADGETFS_SUSPEND,
+};
+struct usb_gadgetfs_event {
+  union {
+    enum usb_device_speed speed;
+    struct usb_ctrlrequest setup;
+  } u;
+  enum usb_gadgetfs_event_type type;
+};
+#define GADGETFS_FIFO_STATUS _IO('g', 1)
+#define GADGETFS_FIFO_FLUSH _IO('g', 2)
+#define GADGETFS_CLEAR_HALT _IO('g', 3)
+#endif
diff --git a/i686-linux-musl/include/linux/usb/midi.h b/i686-linux-musl/include/linux/usb/midi.h
new file mode 100644
index 0000000..0431e65
--- /dev/null
+++ b/i686-linux-musl/include/linux/usb/midi.h
@@ -0,0 +1,72 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_USB_MIDI_H
+#define __LINUX_USB_MIDI_H
+#include <linux/types.h>
+#define USB_MS_HEADER 0x01
+#define USB_MS_MIDI_IN_JACK 0x02
+#define USB_MS_MIDI_OUT_JACK 0x03
+#define USB_MS_ELEMENT 0x04
+#define USB_MS_GENERAL 0x01
+#define USB_MS_EMBEDDED 0x01
+#define USB_MS_EXTERNAL 0x02
+struct usb_ms_header_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __le16 bcdMSC;
+  __le16 wTotalLength;
+} __attribute__((packed));
+#define USB_DT_MS_HEADER_SIZE 7
+struct usb_midi_in_jack_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bJackType;
+  __u8 bJackID;
+  __u8 iJack;
+} __attribute__((packed));
+#define USB_DT_MIDI_IN_SIZE 6
+struct usb_midi_source_pin {
+  __u8 baSourceID;
+  __u8 baSourcePin;
+} __attribute__((packed));
+struct usb_midi_out_jack_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bJackType;
+  __u8 bJackID;
+  __u8 bNrInputPins;
+  struct usb_midi_source_pin pins[];
+} __attribute__((packed));
+#define USB_DT_MIDI_OUT_SIZE(p) (7 + 2 * (p))
+#define DECLARE_USB_MIDI_OUT_JACK_DESCRIPTOR(p) struct usb_midi_out_jack_descriptor_ ##p { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubtype; __u8 bJackType; __u8 bJackID; __u8 bNrInputPins; struct usb_midi_source_pin pins[p]; __u8 iJack; \
+} __attribute__((packed))
+struct usb_ms_endpoint_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubtype;
+  __u8 bNumEmbMIDIJack;
+  __u8 baAssocJackID[];
+} __attribute__((packed));
+#define USB_DT_MS_ENDPOINT_SIZE(n) (4 + (n))
+#define DECLARE_USB_MS_ENDPOINT_DESCRIPTOR(n) struct usb_ms_endpoint_descriptor_ ##n { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubtype; __u8 bNumEmbMIDIJack; __u8 baAssocJackID[n]; \
+} __attribute__((packed))
+#endif
diff --git a/i686-linux-musl/include/linux/usb/raw_gadget.h b/i686-linux-musl/include/linux/usb/raw_gadget.h
new file mode 100644
index 0000000..70d5a26
--- /dev/null
+++ b/i686-linux-musl/include/linux/usb/raw_gadget.h
@@ -0,0 +1,89 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_USB_RAW_GADGET_H
+#define _UAPI__LINUX_USB_RAW_GADGET_H
+#include <asm/ioctl.h>
+#include <linux/types.h>
+#include <linux/usb/ch9.h>
+#define UDC_NAME_LENGTH_MAX 128
+struct usb_raw_init {
+  __u8 driver_name[UDC_NAME_LENGTH_MAX];
+  __u8 device_name[UDC_NAME_LENGTH_MAX];
+  __u8 speed;
+};
+enum usb_raw_event_type {
+  USB_RAW_EVENT_INVALID = 0,
+  USB_RAW_EVENT_CONNECT = 1,
+  USB_RAW_EVENT_CONTROL = 2,
+};
+struct usb_raw_event {
+  __u32 type;
+  __u32 length;
+  __u8 data[0];
+};
+#define USB_RAW_IO_FLAGS_ZERO 0x0001
+#define USB_RAW_IO_FLAGS_MASK 0x0001
+struct usb_raw_ep_io {
+  __u16 ep;
+  __u16 flags;
+  __u32 length;
+  __u8 data[0];
+};
+#define USB_RAW_EPS_NUM_MAX 30
+#define USB_RAW_EP_NAME_MAX 16
+#define USB_RAW_EP_ADDR_ANY 0xff
+struct usb_raw_ep_caps {
+  __u32 type_control : 1;
+  __u32 type_iso : 1;
+  __u32 type_bulk : 1;
+  __u32 type_int : 1;
+  __u32 dir_in : 1;
+  __u32 dir_out : 1;
+};
+struct usb_raw_ep_limits {
+  __u16 maxpacket_limit;
+  __u16 max_streams;
+  __u32 reserved;
+};
+struct usb_raw_ep_info {
+  __u8 name[USB_RAW_EP_NAME_MAX];
+  __u32 addr;
+  struct usb_raw_ep_caps caps;
+  struct usb_raw_ep_limits limits;
+};
+struct usb_raw_eps_info {
+  struct usb_raw_ep_info eps[USB_RAW_EPS_NUM_MAX];
+};
+#define USB_RAW_IOCTL_INIT _IOW('U', 0, struct usb_raw_init)
+#define USB_RAW_IOCTL_RUN _IO('U', 1)
+#define USB_RAW_IOCTL_EVENT_FETCH _IOR('U', 2, struct usb_raw_event)
+#define USB_RAW_IOCTL_EP0_WRITE _IOW('U', 3, struct usb_raw_ep_io)
+#define USB_RAW_IOCTL_EP0_READ _IOWR('U', 4, struct usb_raw_ep_io)
+#define USB_RAW_IOCTL_EP_ENABLE _IOW('U', 5, struct usb_endpoint_descriptor)
+#define USB_RAW_IOCTL_EP_DISABLE _IOW('U', 6, __u32)
+#define USB_RAW_IOCTL_EP_WRITE _IOW('U', 7, struct usb_raw_ep_io)
+#define USB_RAW_IOCTL_EP_READ _IOWR('U', 8, struct usb_raw_ep_io)
+#define USB_RAW_IOCTL_CONFIGURE _IO('U', 9)
+#define USB_RAW_IOCTL_VBUS_DRAW _IOW('U', 10, __u32)
+#define USB_RAW_IOCTL_EPS_INFO _IOR('U', 11, struct usb_raw_eps_info)
+#define USB_RAW_IOCTL_EP0_STALL _IO('U', 12)
+#define USB_RAW_IOCTL_EP_SET_HALT _IOW('U', 13, __u32)
+#define USB_RAW_IOCTL_EP_CLEAR_HALT _IOW('U', 14, __u32)
+#define USB_RAW_IOCTL_EP_SET_WEDGE _IOW('U', 15, __u32)
+#endif
diff --git a/i686-linux-musl/include/linux/usb/tmc.h b/i686-linux-musl/include/linux/usb/tmc.h
new file mode 100644
index 0000000..6d0add1
--- /dev/null
+++ b/i686-linux-musl/include/linux/usb/tmc.h
@@ -0,0 +1,103 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_USB_TMC_H
+#define __LINUX_USB_TMC_H
+#include <linux/types.h>
+#define USBTMC_STATUS_SUCCESS 0x01
+#define USBTMC_STATUS_PENDING 0x02
+#define USBTMC_STATUS_FAILED 0x80
+#define USBTMC_STATUS_TRANSFER_NOT_IN_PROGRESS 0x81
+#define USBTMC_STATUS_SPLIT_NOT_IN_PROGRESS 0x82
+#define USBTMC_STATUS_SPLIT_IN_PROGRESS 0x83
+#define USBTMC_REQUEST_INITIATE_ABORT_BULK_OUT 1
+#define USBTMC_REQUEST_CHECK_ABORT_BULK_OUT_STATUS 2
+#define USBTMC_REQUEST_INITIATE_ABORT_BULK_IN 3
+#define USBTMC_REQUEST_CHECK_ABORT_BULK_IN_STATUS 4
+#define USBTMC_REQUEST_INITIATE_CLEAR 5
+#define USBTMC_REQUEST_CHECK_CLEAR_STATUS 6
+#define USBTMC_REQUEST_GET_CAPABILITIES 7
+#define USBTMC_REQUEST_INDICATOR_PULSE 64
+#define USBTMC488_REQUEST_READ_STATUS_BYTE 128
+#define USBTMC488_REQUEST_REN_CONTROL 160
+#define USBTMC488_REQUEST_GOTO_LOCAL 161
+#define USBTMC488_REQUEST_LOCAL_LOCKOUT 162
+struct usbtmc_request {
+  __u8 bRequestType;
+  __u8 bRequest;
+  __u16 wValue;
+  __u16 wIndex;
+  __u16 wLength;
+} __attribute__((packed));
+struct usbtmc_ctrlrequest {
+  struct usbtmc_request req;
+  void __user * data;
+} __attribute__((packed));
+struct usbtmc_termchar {
+  __u8 term_char;
+  __u8 term_char_enabled;
+} __attribute__((packed));
+#define USBTMC_FLAG_ASYNC 0x0001
+#define USBTMC_FLAG_APPEND 0x0002
+#define USBTMC_FLAG_IGNORE_TRAILER 0x0004
+struct usbtmc_message {
+  __u32 transfer_size;
+  __u32 transferred;
+  __u32 flags;
+  void __user * message;
+} __attribute__((packed));
+#define USBTMC_IOC_NR 91
+#define USBTMC_IOCTL_INDICATOR_PULSE _IO(USBTMC_IOC_NR, 1)
+#define USBTMC_IOCTL_CLEAR _IO(USBTMC_IOC_NR, 2)
+#define USBTMC_IOCTL_ABORT_BULK_OUT _IO(USBTMC_IOC_NR, 3)
+#define USBTMC_IOCTL_ABORT_BULK_IN _IO(USBTMC_IOC_NR, 4)
+#define USBTMC_IOCTL_CLEAR_OUT_HALT _IO(USBTMC_IOC_NR, 6)
+#define USBTMC_IOCTL_CLEAR_IN_HALT _IO(USBTMC_IOC_NR, 7)
+#define USBTMC_IOCTL_CTRL_REQUEST _IOWR(USBTMC_IOC_NR, 8, struct usbtmc_ctrlrequest)
+#define USBTMC_IOCTL_GET_TIMEOUT _IOR(USBTMC_IOC_NR, 9, __u32)
+#define USBTMC_IOCTL_SET_TIMEOUT _IOW(USBTMC_IOC_NR, 10, __u32)
+#define USBTMC_IOCTL_EOM_ENABLE _IOW(USBTMC_IOC_NR, 11, __u8)
+#define USBTMC_IOCTL_CONFIG_TERMCHAR _IOW(USBTMC_IOC_NR, 12, struct usbtmc_termchar)
+#define USBTMC_IOCTL_WRITE _IOWR(USBTMC_IOC_NR, 13, struct usbtmc_message)
+#define USBTMC_IOCTL_READ _IOWR(USBTMC_IOC_NR, 14, struct usbtmc_message)
+#define USBTMC_IOCTL_WRITE_RESULT _IOWR(USBTMC_IOC_NR, 15, __u32)
+#define USBTMC_IOCTL_API_VERSION _IOR(USBTMC_IOC_NR, 16, __u32)
+#define USBTMC488_IOCTL_GET_CAPS _IOR(USBTMC_IOC_NR, 17, unsigned char)
+#define USBTMC488_IOCTL_READ_STB _IOR(USBTMC_IOC_NR, 18, unsigned char)
+#define USBTMC488_IOCTL_REN_CONTROL _IOW(USBTMC_IOC_NR, 19, unsigned char)
+#define USBTMC488_IOCTL_GOTO_LOCAL _IO(USBTMC_IOC_NR, 20)
+#define USBTMC488_IOCTL_LOCAL_LOCKOUT _IO(USBTMC_IOC_NR, 21)
+#define USBTMC488_IOCTL_TRIGGER _IO(USBTMC_IOC_NR, 22)
+#define USBTMC488_IOCTL_WAIT_SRQ _IOW(USBTMC_IOC_NR, 23, __u32)
+#define USBTMC_IOCTL_MSG_IN_ATTR _IOR(USBTMC_IOC_NR, 24, __u8)
+#define USBTMC_IOCTL_AUTO_ABORT _IOW(USBTMC_IOC_NR, 25, __u8)
+#define USBTMC_IOCTL_GET_STB _IOR(USBTMC_IOC_NR, 26, __u8)
+#define USBTMC_IOCTL_GET_SRQ_STB _IOR(USBTMC_IOC_NR, 27, __u8)
+#define USBTMC_IOCTL_CANCEL_IO _IO(USBTMC_IOC_NR, 35)
+#define USBTMC_IOCTL_CLEANUP_IO _IO(USBTMC_IOC_NR, 36)
+#define USBTMC488_CAPABILITY_TRIGGER 1
+#define USBTMC488_CAPABILITY_SIMPLE 2
+#define USBTMC488_CAPABILITY_REN_CONTROL 2
+#define USBTMC488_CAPABILITY_GOTO_LOCAL 2
+#define USBTMC488_CAPABILITY_LOCAL_LOCKOUT 2
+#define USBTMC488_CAPABILITY_488_DOT_2 4
+#define USBTMC488_CAPABILITY_DT1 16
+#define USBTMC488_CAPABILITY_RL1 32
+#define USBTMC488_CAPABILITY_SR1 64
+#define USBTMC488_CAPABILITY_FULL_SCPI 128
+#endif
diff --git a/i686-linux-musl/include/linux/usb/video.h b/i686-linux-musl/include/linux/usb/video.h
new file mode 100644
index 0000000..b45bada
--- /dev/null
+++ b/i686-linux-musl/include/linux/usb/video.h
@@ -0,0 +1,375 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_USB_VIDEO_H
+#define __LINUX_USB_VIDEO_H
+#include <linux/types.h>
+#define UVC_SC_UNDEFINED 0x00
+#define UVC_SC_VIDEOCONTROL 0x01
+#define UVC_SC_VIDEOSTREAMING 0x02
+#define UVC_SC_VIDEO_INTERFACE_COLLECTION 0x03
+#define UVC_PC_PROTOCOL_UNDEFINED 0x00
+#define UVC_PC_PROTOCOL_15 0x01
+#define UVC_VC_DESCRIPTOR_UNDEFINED 0x00
+#define UVC_VC_HEADER 0x01
+#define UVC_VC_INPUT_TERMINAL 0x02
+#define UVC_VC_OUTPUT_TERMINAL 0x03
+#define UVC_VC_SELECTOR_UNIT 0x04
+#define UVC_VC_PROCESSING_UNIT 0x05
+#define UVC_VC_EXTENSION_UNIT 0x06
+#define UVC_VS_UNDEFINED 0x00
+#define UVC_VS_INPUT_HEADER 0x01
+#define UVC_VS_OUTPUT_HEADER 0x02
+#define UVC_VS_STILL_IMAGE_FRAME 0x03
+#define UVC_VS_FORMAT_UNCOMPRESSED 0x04
+#define UVC_VS_FRAME_UNCOMPRESSED 0x05
+#define UVC_VS_FORMAT_MJPEG 0x06
+#define UVC_VS_FRAME_MJPEG 0x07
+#define UVC_VS_FORMAT_MPEG2TS 0x0a
+#define UVC_VS_FORMAT_DV 0x0c
+#define UVC_VS_COLORFORMAT 0x0d
+#define UVC_VS_FORMAT_FRAME_BASED 0x10
+#define UVC_VS_FRAME_FRAME_BASED 0x11
+#define UVC_VS_FORMAT_STREAM_BASED 0x12
+#define UVC_EP_UNDEFINED 0x00
+#define UVC_EP_GENERAL 0x01
+#define UVC_EP_ENDPOINT 0x02
+#define UVC_EP_INTERRUPT 0x03
+#define UVC_RC_UNDEFINED 0x00
+#define UVC_SET_CUR 0x01
+#define UVC_GET_CUR 0x81
+#define UVC_GET_MIN 0x82
+#define UVC_GET_MAX 0x83
+#define UVC_GET_RES 0x84
+#define UVC_GET_LEN 0x85
+#define UVC_GET_INFO 0x86
+#define UVC_GET_DEF 0x87
+#define UVC_VC_CONTROL_UNDEFINED 0x00
+#define UVC_VC_VIDEO_POWER_MODE_CONTROL 0x01
+#define UVC_VC_REQUEST_ERROR_CODE_CONTROL 0x02
+#define UVC_TE_CONTROL_UNDEFINED 0x00
+#define UVC_SU_CONTROL_UNDEFINED 0x00
+#define UVC_SU_INPUT_SELECT_CONTROL 0x01
+#define UVC_CT_CONTROL_UNDEFINED 0x00
+#define UVC_CT_SCANNING_MODE_CONTROL 0x01
+#define UVC_CT_AE_MODE_CONTROL 0x02
+#define UVC_CT_AE_PRIORITY_CONTROL 0x03
+#define UVC_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x04
+#define UVC_CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x05
+#define UVC_CT_FOCUS_ABSOLUTE_CONTROL 0x06
+#define UVC_CT_FOCUS_RELATIVE_CONTROL 0x07
+#define UVC_CT_FOCUS_AUTO_CONTROL 0x08
+#define UVC_CT_IRIS_ABSOLUTE_CONTROL 0x09
+#define UVC_CT_IRIS_RELATIVE_CONTROL 0x0a
+#define UVC_CT_ZOOM_ABSOLUTE_CONTROL 0x0b
+#define UVC_CT_ZOOM_RELATIVE_CONTROL 0x0c
+#define UVC_CT_PANTILT_ABSOLUTE_CONTROL 0x0d
+#define UVC_CT_PANTILT_RELATIVE_CONTROL 0x0e
+#define UVC_CT_ROLL_ABSOLUTE_CONTROL 0x0f
+#define UVC_CT_ROLL_RELATIVE_CONTROL 0x10
+#define UVC_CT_PRIVACY_CONTROL 0x11
+#define UVC_PU_CONTROL_UNDEFINED 0x00
+#define UVC_PU_BACKLIGHT_COMPENSATION_CONTROL 0x01
+#define UVC_PU_BRIGHTNESS_CONTROL 0x02
+#define UVC_PU_CONTRAST_CONTROL 0x03
+#define UVC_PU_GAIN_CONTROL 0x04
+#define UVC_PU_POWER_LINE_FREQUENCY_CONTROL 0x05
+#define UVC_PU_HUE_CONTROL 0x06
+#define UVC_PU_SATURATION_CONTROL 0x07
+#define UVC_PU_SHARPNESS_CONTROL 0x08
+#define UVC_PU_GAMMA_CONTROL 0x09
+#define UVC_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0a
+#define UVC_PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0b
+#define UVC_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x0c
+#define UVC_PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0d
+#define UVC_PU_DIGITAL_MULTIPLIER_CONTROL 0x0e
+#define UVC_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x0f
+#define UVC_PU_HUE_AUTO_CONTROL 0x10
+#define UVC_PU_ANALOG_VIDEO_STANDARD_CONTROL 0x11
+#define UVC_PU_ANALOG_LOCK_STATUS_CONTROL 0x12
+#define UVC_VS_CONTROL_UNDEFINED 0x00
+#define UVC_VS_PROBE_CONTROL 0x01
+#define UVC_VS_COMMIT_CONTROL 0x02
+#define UVC_VS_STILL_PROBE_CONTROL 0x03
+#define UVC_VS_STILL_COMMIT_CONTROL 0x04
+#define UVC_VS_STILL_IMAGE_TRIGGER_CONTROL 0x05
+#define UVC_VS_STREAM_ERROR_CODE_CONTROL 0x06
+#define UVC_VS_GENERATE_KEY_FRAME_CONTROL 0x07
+#define UVC_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x08
+#define UVC_VS_SYNC_DELAY_CONTROL 0x09
+#define UVC_TT_VENDOR_SPECIFIC 0x0100
+#define UVC_TT_STREAMING 0x0101
+#define UVC_ITT_VENDOR_SPECIFIC 0x0200
+#define UVC_ITT_CAMERA 0x0201
+#define UVC_ITT_MEDIA_TRANSPORT_INPUT 0x0202
+#define UVC_OTT_VENDOR_SPECIFIC 0x0300
+#define UVC_OTT_DISPLAY 0x0301
+#define UVC_OTT_MEDIA_TRANSPORT_OUTPUT 0x0302
+#define UVC_EXTERNAL_VENDOR_SPECIFIC 0x0400
+#define UVC_COMPOSITE_CONNECTOR 0x0401
+#define UVC_SVIDEO_CONNECTOR 0x0402
+#define UVC_COMPONENT_CONNECTOR 0x0403
+#define UVC_STATUS_TYPE_CONTROL 1
+#define UVC_STATUS_TYPE_STREAMING 2
+#define UVC_STREAM_EOH (1 << 7)
+#define UVC_STREAM_ERR (1 << 6)
+#define UVC_STREAM_STI (1 << 5)
+#define UVC_STREAM_RES (1 << 4)
+#define UVC_STREAM_SCR (1 << 3)
+#define UVC_STREAM_PTS (1 << 2)
+#define UVC_STREAM_EOF (1 << 1)
+#define UVC_STREAM_FID (1 << 0)
+#define UVC_CONTROL_CAP_GET (1 << 0)
+#define UVC_CONTROL_CAP_SET (1 << 1)
+#define UVC_CONTROL_CAP_DISABLED (1 << 2)
+#define UVC_CONTROL_CAP_AUTOUPDATE (1 << 3)
+#define UVC_CONTROL_CAP_ASYNCHRONOUS (1 << 4)
+struct uvc_descriptor_header {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+} __attribute__((packed));
+struct uvc_header_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __le16 bcdUVC;
+  __le16 wTotalLength;
+  __le32 dwClockFrequency;
+  __u8 bInCollection;
+  __u8 baInterfaceNr[];
+} __attribute__((__packed__));
+#define UVC_DT_HEADER_SIZE(n) (12 + (n))
+#define UVC_HEADER_DESCRIPTOR(n) uvc_header_descriptor_ ##n
+#define DECLARE_UVC_HEADER_DESCRIPTOR(n) struct UVC_HEADER_DESCRIPTOR(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __le16 bcdUVC; __le16 wTotalLength; __le32 dwClockFrequency; __u8 bInCollection; __u8 baInterfaceNr[n]; \
+} __attribute__((packed))
+struct uvc_input_terminal_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bTerminalID;
+  __le16 wTerminalType;
+  __u8 bAssocTerminal;
+  __u8 iTerminal;
+} __attribute__((__packed__));
+#define UVC_DT_INPUT_TERMINAL_SIZE 8
+struct uvc_output_terminal_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bTerminalID;
+  __le16 wTerminalType;
+  __u8 bAssocTerminal;
+  __u8 bSourceID;
+  __u8 iTerminal;
+} __attribute__((__packed__));
+#define UVC_DT_OUTPUT_TERMINAL_SIZE 9
+struct uvc_camera_terminal_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bTerminalID;
+  __le16 wTerminalType;
+  __u8 bAssocTerminal;
+  __u8 iTerminal;
+  __le16 wObjectiveFocalLengthMin;
+  __le16 wObjectiveFocalLengthMax;
+  __le16 wOcularFocalLength;
+  __u8 bControlSize;
+  __u8 bmControls[3];
+} __attribute__((__packed__));
+#define UVC_DT_CAMERA_TERMINAL_SIZE(n) (15 + (n))
+struct uvc_selector_unit_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bUnitID;
+  __u8 bNrInPins;
+  __u8 baSourceID[0];
+  __u8 iSelector;
+} __attribute__((__packed__));
+#define UVC_DT_SELECTOR_UNIT_SIZE(n) (6 + (n))
+#define UVC_SELECTOR_UNIT_DESCRIPTOR(n) uvc_selector_unit_descriptor_ ##n
+#define DECLARE_UVC_SELECTOR_UNIT_DESCRIPTOR(n) struct UVC_SELECTOR_UNIT_DESCRIPTOR(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bUnitID; __u8 bNrInPins; __u8 baSourceID[n]; __u8 iSelector; \
+} __attribute__((packed))
+struct uvc_processing_unit_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bUnitID;
+  __u8 bSourceID;
+  __le16 wMaxMultiplier;
+  __u8 bControlSize;
+  __u8 bmControls[2];
+  __u8 iProcessing;
+  __u8 bmVideoStandards;
+} __attribute__((__packed__));
+#define UVC_DT_PROCESSING_UNIT_SIZE(n) (10 + (n))
+struct uvc_extension_unit_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bUnitID;
+  __u8 guidExtensionCode[16];
+  __u8 bNumControls;
+  __u8 bNrInPins;
+  __u8 baSourceID[0];
+  __u8 bControlSize;
+  __u8 bmControls[0];
+  __u8 iExtension;
+} __attribute__((__packed__));
+#define UVC_DT_EXTENSION_UNIT_SIZE(p,n) (24 + (p) + (n))
+#define UVC_EXTENSION_UNIT_DESCRIPTOR(p,n) uvc_extension_unit_descriptor_ ##p_ ##n
+#define DECLARE_UVC_EXTENSION_UNIT_DESCRIPTOR(p,n) struct UVC_EXTENSION_UNIT_DESCRIPTOR(p, n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bUnitID; __u8 guidExtensionCode[16]; __u8 bNumControls; __u8 bNrInPins; __u8 baSourceID[p]; __u8 bControlSize; __u8 bmControls[n]; __u8 iExtension; \
+} __attribute__((packed))
+struct uvc_control_endpoint_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __le16 wMaxTransferSize;
+} __attribute__((__packed__));
+#define UVC_DT_CONTROL_ENDPOINT_SIZE 5
+struct uvc_input_header_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bNumFormats;
+  __le16 wTotalLength;
+  __u8 bEndpointAddress;
+  __u8 bmInfo;
+  __u8 bTerminalLink;
+  __u8 bStillCaptureMethod;
+  __u8 bTriggerSupport;
+  __u8 bTriggerUsage;
+  __u8 bControlSize;
+  __u8 bmaControls[];
+} __attribute__((__packed__));
+#define UVC_DT_INPUT_HEADER_SIZE(n,p) (13 + (n * p))
+#define UVC_INPUT_HEADER_DESCRIPTOR(n,p) uvc_input_header_descriptor_ ##n_ ##p
+#define DECLARE_UVC_INPUT_HEADER_DESCRIPTOR(n,p) struct UVC_INPUT_HEADER_DESCRIPTOR(n, p) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bNumFormats; __le16 wTotalLength; __u8 bEndpointAddress; __u8 bmInfo; __u8 bTerminalLink; __u8 bStillCaptureMethod; __u8 bTriggerSupport; __u8 bTriggerUsage; __u8 bControlSize; __u8 bmaControls[p][n]; \
+} __attribute__((packed))
+struct uvc_output_header_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bNumFormats;
+  __le16 wTotalLength;
+  __u8 bEndpointAddress;
+  __u8 bTerminalLink;
+  __u8 bControlSize;
+  __u8 bmaControls[];
+} __attribute__((__packed__));
+#define UVC_DT_OUTPUT_HEADER_SIZE(n,p) (9 + (n * p))
+#define UVC_OUTPUT_HEADER_DESCRIPTOR(n,p) uvc_output_header_descriptor_ ##n_ ##p
+#define DECLARE_UVC_OUTPUT_HEADER_DESCRIPTOR(n,p) struct UVC_OUTPUT_HEADER_DESCRIPTOR(n, p) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bNumFormats; __le16 wTotalLength; __u8 bEndpointAddress; __u8 bTerminalLink; __u8 bControlSize; __u8 bmaControls[p][n]; \
+} __attribute__((packed))
+struct uvc_color_matching_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bColorPrimaries;
+  __u8 bTransferCharacteristics;
+  __u8 bMatrixCoefficients;
+} __attribute__((__packed__));
+#define UVC_DT_COLOR_MATCHING_SIZE 6
+struct uvc_streaming_control {
+  __u16 bmHint;
+  __u8 bFormatIndex;
+  __u8 bFrameIndex;
+  __u32 dwFrameInterval;
+  __u16 wKeyFrameRate;
+  __u16 wPFrameRate;
+  __u16 wCompQuality;
+  __u16 wCompWindowSize;
+  __u16 wDelay;
+  __u32 dwMaxVideoFrameSize;
+  __u32 dwMaxPayloadTransferSize;
+  __u32 dwClockFrequency;
+  __u8 bmFramingInfo;
+  __u8 bPreferedVersion;
+  __u8 bMinVersion;
+  __u8 bMaxVersion;
+} __attribute__((__packed__));
+struct uvc_format_uncompressed {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bFormatIndex;
+  __u8 bNumFrameDescriptors;
+  __u8 guidFormat[16];
+  __u8 bBitsPerPixel;
+  __u8 bDefaultFrameIndex;
+  __u8 bAspectRatioX;
+  __u8 bAspectRatioY;
+  __u8 bmInterfaceFlags;
+  __u8 bCopyProtect;
+} __attribute__((__packed__));
+#define UVC_DT_FORMAT_UNCOMPRESSED_SIZE 27
+struct uvc_frame_uncompressed {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bFrameIndex;
+  __u8 bmCapabilities;
+  __le16 wWidth;
+  __le16 wHeight;
+  __le32 dwMinBitRate;
+  __le32 dwMaxBitRate;
+  __le32 dwMaxVideoFrameBufferSize;
+  __le32 dwDefaultFrameInterval;
+  __u8 bFrameIntervalType;
+  __le32 dwFrameInterval[];
+} __attribute__((__packed__));
+#define UVC_DT_FRAME_UNCOMPRESSED_SIZE(n) (26 + 4 * (n))
+#define UVC_FRAME_UNCOMPRESSED(n) uvc_frame_uncompressed_ ##n
+#define DECLARE_UVC_FRAME_UNCOMPRESSED(n) struct UVC_FRAME_UNCOMPRESSED(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bFrameIndex; __u8 bmCapabilities; __le16 wWidth; __le16 wHeight; __le32 dwMinBitRate; __le32 dwMaxBitRate; __le32 dwMaxVideoFrameBufferSize; __le32 dwDefaultFrameInterval; __u8 bFrameIntervalType; __le32 dwFrameInterval[n]; \
+} __attribute__((packed))
+struct uvc_format_mjpeg {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bFormatIndex;
+  __u8 bNumFrameDescriptors;
+  __u8 bmFlags;
+  __u8 bDefaultFrameIndex;
+  __u8 bAspectRatioX;
+  __u8 bAspectRatioY;
+  __u8 bmInterfaceFlags;
+  __u8 bCopyProtect;
+} __attribute__((__packed__));
+#define UVC_DT_FORMAT_MJPEG_SIZE 11
+struct uvc_frame_mjpeg {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __u8 bDescriptorSubType;
+  __u8 bFrameIndex;
+  __u8 bmCapabilities;
+  __le16 wWidth;
+  __le16 wHeight;
+  __le32 dwMinBitRate;
+  __le32 dwMaxBitRate;
+  __le32 dwMaxVideoFrameBufferSize;
+  __le32 dwDefaultFrameInterval;
+  __u8 bFrameIntervalType;
+  __le32 dwFrameInterval[];
+} __attribute__((__packed__));
+#define UVC_DT_FRAME_MJPEG_SIZE(n) (26 + 4 * (n))
+#define UVC_FRAME_MJPEG(n) uvc_frame_mjpeg_ ##n
+#define DECLARE_UVC_FRAME_MJPEG(n) struct UVC_FRAME_MJPEG(n) { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubType; __u8 bFrameIndex; __u8 bmCapabilities; __le16 wWidth; __le16 wHeight; __le32 dwMinBitRate; __le32 dwMaxBitRate; __le32 dwMaxVideoFrameBufferSize; __le32 dwDefaultFrameInterval; __u8 bFrameIntervalType; __le32 dwFrameInterval[n]; \
+} __attribute__((packed))
+#endif
diff --git a/i686-linux-musl/include/linux/usbdevice_fs.h b/i686-linux-musl/include/linux/usbdevice_fs.h
new file mode 100644
index 0000000..7936ad9
--- /dev/null
+++ b/i686-linux-musl/include/linux/usbdevice_fs.h
@@ -0,0 +1,165 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_USBDEVICE_FS_H
+#define _UAPI_LINUX_USBDEVICE_FS_H
+#include <linux/types.h>
+#include <linux/magic.h>
+struct usbdevfs_ctrltransfer {
+  __u8 bRequestType;
+  __u8 bRequest;
+  __u16 wValue;
+  __u16 wIndex;
+  __u16 wLength;
+  __u32 timeout;
+  void __user * data;
+};
+struct usbdevfs_bulktransfer {
+  unsigned int ep;
+  unsigned int len;
+  unsigned int timeout;
+  void __user * data;
+};
+struct usbdevfs_setinterface {
+  unsigned int interface;
+  unsigned int altsetting;
+};
+struct usbdevfs_disconnectsignal {
+  unsigned int signr;
+  void __user * context;
+};
+#define USBDEVFS_MAXDRIVERNAME 255
+struct usbdevfs_getdriver {
+  unsigned int interface;
+  char driver[USBDEVFS_MAXDRIVERNAME + 1];
+};
+struct usbdevfs_connectinfo {
+  unsigned int devnum;
+  unsigned char slow;
+};
+struct usbdevfs_conninfo_ex {
+  __u32 size;
+  __u32 busnum;
+  __u32 devnum;
+  __u32 speed;
+  __u8 num_ports;
+  __u8 ports[7];
+};
+#define USBDEVFS_URB_SHORT_NOT_OK 0x01
+#define USBDEVFS_URB_ISO_ASAP 0x02
+#define USBDEVFS_URB_BULK_CONTINUATION 0x04
+#define USBDEVFS_URB_NO_FSBR 0x20
+#define USBDEVFS_URB_ZERO_PACKET 0x40
+#define USBDEVFS_URB_NO_INTERRUPT 0x80
+#define USBDEVFS_URB_TYPE_ISO 0
+#define USBDEVFS_URB_TYPE_INTERRUPT 1
+#define USBDEVFS_URB_TYPE_CONTROL 2
+#define USBDEVFS_URB_TYPE_BULK 3
+struct usbdevfs_iso_packet_desc {
+  unsigned int length;
+  unsigned int actual_length;
+  unsigned int status;
+};
+struct usbdevfs_urb {
+  unsigned char type;
+  unsigned char endpoint;
+  int status;
+  unsigned int flags;
+  void __user * buffer;
+  int buffer_length;
+  int actual_length;
+  int start_frame;
+  union {
+    int number_of_packets;
+    unsigned int stream_id;
+  };
+  int error_count;
+  unsigned int signr;
+  void __user * usercontext;
+  struct usbdevfs_iso_packet_desc iso_frame_desc[0];
+};
+struct usbdevfs_ioctl {
+  int ifno;
+  int ioctl_code;
+  void __user * data;
+};
+struct usbdevfs_hub_portinfo {
+  char nports;
+  char port[127];
+};
+#define USBDEVFS_CAP_ZERO_PACKET 0x01
+#define USBDEVFS_CAP_BULK_CONTINUATION 0x02
+#define USBDEVFS_CAP_NO_PACKET_SIZE_LIM 0x04
+#define USBDEVFS_CAP_BULK_SCATTER_GATHER 0x08
+#define USBDEVFS_CAP_REAP_AFTER_DISCONNECT 0x10
+#define USBDEVFS_CAP_MMAP 0x20
+#define USBDEVFS_CAP_DROP_PRIVILEGES 0x40
+#define USBDEVFS_CAP_CONNINFO_EX 0x80
+#define USBDEVFS_CAP_SUSPEND 0x100
+#define USBDEVFS_DISCONNECT_CLAIM_IF_DRIVER 0x01
+#define USBDEVFS_DISCONNECT_CLAIM_EXCEPT_DRIVER 0x02
+struct usbdevfs_disconnect_claim {
+  unsigned int interface;
+  unsigned int flags;
+  char driver[USBDEVFS_MAXDRIVERNAME + 1];
+};
+struct usbdevfs_streams {
+  unsigned int num_streams;
+  unsigned int num_eps;
+  unsigned char eps[0];
+};
+#define USBDEVFS_CONTROL _IOWR('U', 0, struct usbdevfs_ctrltransfer)
+#define USBDEVFS_CONTROL32 _IOWR('U', 0, struct usbdevfs_ctrltransfer32)
+#define USBDEVFS_BULK _IOWR('U', 2, struct usbdevfs_bulktransfer)
+#define USBDEVFS_BULK32 _IOWR('U', 2, struct usbdevfs_bulktransfer32)
+#define USBDEVFS_RESETEP _IOR('U', 3, unsigned int)
+#define USBDEVFS_SETINTERFACE _IOR('U', 4, struct usbdevfs_setinterface)
+#define USBDEVFS_SETCONFIGURATION _IOR('U', 5, unsigned int)
+#define USBDEVFS_GETDRIVER _IOW('U', 8, struct usbdevfs_getdriver)
+#define USBDEVFS_SUBMITURB _IOR('U', 10, struct usbdevfs_urb)
+#define USBDEVFS_SUBMITURB32 _IOR('U', 10, struct usbdevfs_urb32)
+#define USBDEVFS_DISCARDURB _IO('U', 11)
+#define USBDEVFS_REAPURB _IOW('U', 12, void *)
+#define USBDEVFS_REAPURB32 _IOW('U', 12, __u32)
+#define USBDEVFS_REAPURBNDELAY _IOW('U', 13, void *)
+#define USBDEVFS_REAPURBNDELAY32 _IOW('U', 13, __u32)
+#define USBDEVFS_DISCSIGNAL _IOR('U', 14, struct usbdevfs_disconnectsignal)
+#define USBDEVFS_DISCSIGNAL32 _IOR('U', 14, struct usbdevfs_disconnectsignal32)
+#define USBDEVFS_CLAIMINTERFACE _IOR('U', 15, unsigned int)
+#define USBDEVFS_RELEASEINTERFACE _IOR('U', 16, unsigned int)
+#define USBDEVFS_CONNECTINFO _IOW('U', 17, struct usbdevfs_connectinfo)
+#define USBDEVFS_IOCTL _IOWR('U', 18, struct usbdevfs_ioctl)
+#define USBDEVFS_IOCTL32 _IOWR('U', 18, struct usbdevfs_ioctl32)
+#define USBDEVFS_HUB_PORTINFO _IOR('U', 19, struct usbdevfs_hub_portinfo)
+#define USBDEVFS_RESET _IO('U', 20)
+#define USBDEVFS_CLEAR_HALT _IOR('U', 21, unsigned int)
+#define USBDEVFS_DISCONNECT _IO('U', 22)
+#define USBDEVFS_CONNECT _IO('U', 23)
+#define USBDEVFS_CLAIM_PORT _IOR('U', 24, unsigned int)
+#define USBDEVFS_RELEASE_PORT _IOR('U', 25, unsigned int)
+#define USBDEVFS_GET_CAPABILITIES _IOR('U', 26, __u32)
+#define USBDEVFS_DISCONNECT_CLAIM _IOR('U', 27, struct usbdevfs_disconnect_claim)
+#define USBDEVFS_ALLOC_STREAMS _IOR('U', 28, struct usbdevfs_streams)
+#define USBDEVFS_FREE_STREAMS _IOR('U', 29, struct usbdevfs_streams)
+#define USBDEVFS_DROP_PRIVILEGES _IOW('U', 30, __u32)
+#define USBDEVFS_GET_SPEED _IO('U', 31)
+#define USBDEVFS_CONNINFO_EX(len) _IOC(_IOC_READ, 'U', 32, len)
+#define USBDEVFS_FORBID_SUSPEND _IO('U', 33)
+#define USBDEVFS_ALLOW_SUSPEND _IO('U', 34)
+#define USBDEVFS_WAIT_FOR_RESUME _IO('U', 35)
+#endif
diff --git a/i686-linux-musl/include/linux/usbip.h b/i686-linux-musl/include/linux/usbip.h
new file mode 100644
index 0000000..ae18347
--- /dev/null
+++ b/i686-linux-musl/include/linux/usbip.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_USBIP_H
+#define _UAPI_LINUX_USBIP_H
+enum usbip_device_status {
+  SDEV_ST_AVAILABLE = 0x01,
+  SDEV_ST_USED,
+  SDEV_ST_ERROR,
+  VDEV_ST_NULL,
+  VDEV_ST_NOTASSIGNED,
+  VDEV_ST_USED,
+  VDEV_ST_ERROR
+};
+#endif
diff --git a/i686-linux-musl/include/linux/userfaultfd.h b/i686-linux-musl/include/linux/userfaultfd.h
new file mode 100644
index 0000000..ca7b7a5
--- /dev/null
+++ b/i686-linux-musl/include/linux/userfaultfd.h
@@ -0,0 +1,141 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_USERFAULTFD_H
+#define _LINUX_USERFAULTFD_H
+#include <linux/types.h>
+#define UFFD_API ((__u64) 0xAA)
+#define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR)
+#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM)
+#define UFFD_API_IOCTLS ((__u64) 1 << _UFFDIO_REGISTER | (__u64) 1 << _UFFDIO_UNREGISTER | (__u64) 1 << _UFFDIO_API)
+#define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE)
+#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE)
+#define _UFFDIO_REGISTER (0x00)
+#define _UFFDIO_UNREGISTER (0x01)
+#define _UFFDIO_WAKE (0x02)
+#define _UFFDIO_COPY (0x03)
+#define _UFFDIO_ZEROPAGE (0x04)
+#define _UFFDIO_WRITEPROTECT (0x06)
+#define _UFFDIO_CONTINUE (0x07)
+#define _UFFDIO_API (0x3F)
+#define UFFDIO 0xAA
+#define UFFDIO_API _IOWR(UFFDIO, _UFFDIO_API, struct uffdio_api)
+#define UFFDIO_REGISTER _IOWR(UFFDIO, _UFFDIO_REGISTER, struct uffdio_register)
+#define UFFDIO_UNREGISTER _IOR(UFFDIO, _UFFDIO_UNREGISTER, struct uffdio_range)
+#define UFFDIO_WAKE _IOR(UFFDIO, _UFFDIO_WAKE, struct uffdio_range)
+#define UFFDIO_COPY _IOWR(UFFDIO, _UFFDIO_COPY, struct uffdio_copy)
+#define UFFDIO_ZEROPAGE _IOWR(UFFDIO, _UFFDIO_ZEROPAGE, struct uffdio_zeropage)
+#define UFFDIO_WRITEPROTECT _IOWR(UFFDIO, _UFFDIO_WRITEPROTECT, struct uffdio_writeprotect)
+#define UFFDIO_CONTINUE _IOWR(UFFDIO, _UFFDIO_CONTINUE, struct uffdio_continue)
+struct uffd_msg {
+  __u8 event;
+  __u8 reserved1;
+  __u16 reserved2;
+  __u32 reserved3;
+  union {
+    struct {
+      __u64 flags;
+      __u64 address;
+      union {
+        __u32 ptid;
+      } feat;
+    } pagefault;
+    struct {
+      __u32 ufd;
+    } fork;
+    struct {
+      __u64 from;
+      __u64 to;
+      __u64 len;
+    } remap;
+    struct {
+      __u64 start;
+      __u64 end;
+    } remove;
+    struct {
+      __u64 reserved1;
+      __u64 reserved2;
+      __u64 reserved3;
+    } reserved;
+  } arg;
+} __packed;
+#define UFFD_EVENT_PAGEFAULT 0x12
+#define UFFD_EVENT_FORK 0x13
+#define UFFD_EVENT_REMAP 0x14
+#define UFFD_EVENT_REMOVE 0x15
+#define UFFD_EVENT_UNMAP 0x16
+#define UFFD_PAGEFAULT_FLAG_WRITE (1 << 0)
+#define UFFD_PAGEFAULT_FLAG_WP (1 << 1)
+#define UFFD_PAGEFAULT_FLAG_MINOR (1 << 2)
+struct uffdio_api {
+  __u64 api;
+#define UFFD_FEATURE_PAGEFAULT_FLAG_WP (1 << 0)
+#define UFFD_FEATURE_EVENT_FORK (1 << 1)
+#define UFFD_FEATURE_EVENT_REMAP (1 << 2)
+#define UFFD_FEATURE_EVENT_REMOVE (1 << 3)
+#define UFFD_FEATURE_MISSING_HUGETLBFS (1 << 4)
+#define UFFD_FEATURE_MISSING_SHMEM (1 << 5)
+#define UFFD_FEATURE_EVENT_UNMAP (1 << 6)
+#define UFFD_FEATURE_SIGBUS (1 << 7)
+#define UFFD_FEATURE_THREAD_ID (1 << 8)
+#define UFFD_FEATURE_MINOR_HUGETLBFS (1 << 9)
+#define UFFD_FEATURE_MINOR_SHMEM (1 << 10)
+  __u64 features;
+  __u64 ioctls;
+};
+struct uffdio_range {
+  __u64 start;
+  __u64 len;
+};
+struct uffdio_register {
+  struct uffdio_range range;
+#define UFFDIO_REGISTER_MODE_MISSING ((__u64) 1 << 0)
+#define UFFDIO_REGISTER_MODE_WP ((__u64) 1 << 1)
+#define UFFDIO_REGISTER_MODE_MINOR ((__u64) 1 << 2)
+  __u64 mode;
+  __u64 ioctls;
+};
+struct uffdio_copy {
+  __u64 dst;
+  __u64 src;
+  __u64 len;
+#define UFFDIO_COPY_MODE_DONTWAKE ((__u64) 1 << 0)
+#define UFFDIO_COPY_MODE_WP ((__u64) 1 << 1)
+  __u64 mode;
+  __s64 copy;
+};
+struct uffdio_zeropage {
+  struct uffdio_range range;
+#define UFFDIO_ZEROPAGE_MODE_DONTWAKE ((__u64) 1 << 0)
+  __u64 mode;
+  __s64 zeropage;
+};
+struct uffdio_writeprotect {
+  struct uffdio_range range;
+#define UFFDIO_WRITEPROTECT_MODE_WP ((__u64) 1 << 0)
+#define UFFDIO_WRITEPROTECT_MODE_DONTWAKE ((__u64) 1 << 1)
+  __u64 mode;
+};
+struct uffdio_continue {
+  struct uffdio_range range;
+#define UFFDIO_CONTINUE_MODE_DONTWAKE ((__u64) 1 << 0)
+  __u64 mode;
+  __s64 mapped;
+};
+#define UFFD_USER_MODE_ONLY 1
+#endif
diff --git a/i686-linux-musl/include/linux/userio.h b/i686-linux-musl/include/linux/userio.h
new file mode 100644
index 0000000..c1040f8
--- /dev/null
+++ b/i686-linux-musl/include/linux/userio.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _USERIO_H
+#define _USERIO_H
+#include <linux/types.h>
+enum userio_cmd_type {
+  USERIO_CMD_REGISTER = 0,
+  USERIO_CMD_SET_PORT_TYPE = 1,
+  USERIO_CMD_SEND_INTERRUPT = 2
+};
+struct userio_cmd {
+  __u8 type;
+  __u8 data;
+} __attribute__((__packed__));
+#endif
diff --git a/i686-linux-musl/include/linux/utime.h b/i686-linux-musl/include/linux/utime.h
new file mode 100644
index 0000000..8ed98b9
--- /dev/null
+++ b/i686-linux-musl/include/linux/utime.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_UTIME_H
+#define _LINUX_UTIME_H
+#include <linux/types.h>
+struct utimbuf {
+  __kernel_old_time_t actime;
+  __kernel_old_time_t modtime;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/utsname.h b/i686-linux-musl/include/linux/utsname.h
new file mode 100644
index 0000000..f4356d3
--- /dev/null
+++ b/i686-linux-musl/include/linux/utsname.h
@@ -0,0 +1,45 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_UTSNAME_H
+#define _UAPI_LINUX_UTSNAME_H
+#define __OLD_UTS_LEN 8
+struct oldold_utsname {
+  char sysname[9];
+  char nodename[9];
+  char release[9];
+  char version[9];
+  char machine[9];
+};
+#define __NEW_UTS_LEN 64
+struct old_utsname {
+  char sysname[65];
+  char nodename[65];
+  char release[65];
+  char version[65];
+  char machine[65];
+};
+struct new_utsname {
+  char sysname[__NEW_UTS_LEN + 1];
+  char nodename[__NEW_UTS_LEN + 1];
+  char release[__NEW_UTS_LEN + 1];
+  char version[__NEW_UTS_LEN + 1];
+  char machine[__NEW_UTS_LEN + 1];
+  char domainname[__NEW_UTS_LEN + 1];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/uuid.h b/i686-linux-musl/include/linux/uuid.h
new file mode 100644
index 0000000..d0f82c1
--- /dev/null
+++ b/i686-linux-musl/include/linux/uuid.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_UUID_H_
+#define _UAPI_LINUX_UUID_H_
+#include <linux/types.h>
+typedef struct {
+  __u8 b[16];
+} guid_t;
+#define GUID_INIT(a,b,c,d0,d1,d2,d3,d4,d5,d6,d7) \
+((guid_t) \
+{ { (a) & 0xff, ((a) >> 8) & 0xff, ((a) >> 16) & 0xff, ((a) >> 24) & 0xff, (b) & 0xff, ((b) >> 8) & 0xff, (c) & 0xff, ((c) >> 8) & 0xff, (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) } })
+typedef guid_t uuid_le;
+#define UUID_LE(a,b,c,d0,d1,d2,d3,d4,d5,d6,d7) GUID_INIT(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7)
+#define NULL_UUID_LE UUID_LE(0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
+#endif
diff --git a/i686-linux-musl/include/linux/uvcvideo.h b/i686-linux-musl/include/linux/uvcvideo.h
new file mode 100644
index 0000000..719147a
--- /dev/null
+++ b/i686-linux-musl/include/linux/uvcvideo.h
@@ -0,0 +1,72 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_UVCVIDEO_H_
+#define __LINUX_UVCVIDEO_H_
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define UVC_CTRL_DATA_TYPE_RAW 0
+#define UVC_CTRL_DATA_TYPE_SIGNED 1
+#define UVC_CTRL_DATA_TYPE_UNSIGNED 2
+#define UVC_CTRL_DATA_TYPE_BOOLEAN 3
+#define UVC_CTRL_DATA_TYPE_ENUM 4
+#define UVC_CTRL_DATA_TYPE_BITMASK 5
+#define UVC_CTRL_FLAG_SET_CUR (1 << 0)
+#define UVC_CTRL_FLAG_GET_CUR (1 << 1)
+#define UVC_CTRL_FLAG_GET_MIN (1 << 2)
+#define UVC_CTRL_FLAG_GET_MAX (1 << 3)
+#define UVC_CTRL_FLAG_GET_RES (1 << 4)
+#define UVC_CTRL_FLAG_GET_DEF (1 << 5)
+#define UVC_CTRL_FLAG_RESTORE (1 << 6)
+#define UVC_CTRL_FLAG_AUTO_UPDATE (1 << 7)
+#define UVC_CTRL_FLAG_ASYNCHRONOUS (1 << 8)
+#define UVC_CTRL_FLAG_GET_RANGE (UVC_CTRL_FLAG_GET_CUR | UVC_CTRL_FLAG_GET_MIN | UVC_CTRL_FLAG_GET_MAX | UVC_CTRL_FLAG_GET_RES | UVC_CTRL_FLAG_GET_DEF)
+struct uvc_menu_info {
+  __u32 value;
+  __u8 name[32];
+};
+struct uvc_xu_control_mapping {
+  __u32 id;
+  __u8 name[32];
+  __u8 entity[16];
+  __u8 selector;
+  __u8 size;
+  __u8 offset;
+  __u32 v4l2_type;
+  __u32 data_type;
+  struct uvc_menu_info __user * menu_info;
+  __u32 menu_count;
+  __u32 reserved[4];
+};
+struct uvc_xu_control_query {
+  __u8 unit;
+  __u8 selector;
+  __u8 query;
+  __u16 size;
+  __u8 __user * data;
+};
+#define UVCIOC_CTRL_MAP _IOWR('u', 0x20, struct uvc_xu_control_mapping)
+#define UVCIOC_CTRL_QUERY _IOWR('u', 0x21, struct uvc_xu_control_query)
+struct uvc_meta_buf {
+  __u64 ns;
+  __u16 sof;
+  __u8 length;
+  __u8 flags;
+  __u8 buf[];
+} __packed;
+#endif
diff --git a/i686-linux-musl/include/linux/v4l2-common.h b/i686-linux-musl/include/linux/v4l2-common.h
new file mode 100644
index 0000000..021be85
--- /dev/null
+++ b/i686-linux-musl/include/linux/v4l2-common.h
@@ -0,0 +1,49 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __V4L2_COMMON__
+#define __V4L2_COMMON__
+#include <linux/types.h>
+#define V4L2_SEL_TGT_CROP 0x0000
+#define V4L2_SEL_TGT_CROP_DEFAULT 0x0001
+#define V4L2_SEL_TGT_CROP_BOUNDS 0x0002
+#define V4L2_SEL_TGT_NATIVE_SIZE 0x0003
+#define V4L2_SEL_TGT_COMPOSE 0x0100
+#define V4L2_SEL_TGT_COMPOSE_DEFAULT 0x0101
+#define V4L2_SEL_TGT_COMPOSE_BOUNDS 0x0102
+#define V4L2_SEL_TGT_COMPOSE_PADDED 0x0103
+#define V4L2_SEL_FLAG_GE (1 << 0)
+#define V4L2_SEL_FLAG_LE (1 << 1)
+#define V4L2_SEL_FLAG_KEEP_CONFIG (1 << 2)
+struct v4l2_edid {
+  __u32 pad;
+  __u32 start_block;
+  __u32 blocks;
+  __u32 reserved[5];
+  __u8 * edid;
+};
+#define V4L2_SEL_TGT_CROP_ACTIVE V4L2_SEL_TGT_CROP
+#define V4L2_SEL_TGT_COMPOSE_ACTIVE V4L2_SEL_TGT_COMPOSE
+#define V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL V4L2_SEL_TGT_CROP
+#define V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL V4L2_SEL_TGT_COMPOSE
+#define V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS V4L2_SEL_TGT_CROP_BOUNDS
+#define V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS V4L2_SEL_TGT_COMPOSE_BOUNDS
+#define V4L2_SUBDEV_SEL_FLAG_SIZE_GE V4L2_SEL_FLAG_GE
+#define V4L2_SUBDEV_SEL_FLAG_SIZE_LE V4L2_SEL_FLAG_LE
+#define V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG V4L2_SEL_FLAG_KEEP_CONFIG
+#endif
diff --git a/i686-linux-musl/include/linux/v4l2-controls.h b/i686-linux-musl/include/linux/v4l2-controls.h
new file mode 100644
index 0000000..5233c85
--- /dev/null
+++ b/i686-linux-musl/include/linux/v4l2-controls.h
@@ -0,0 +1,1357 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_V4L2_CONTROLS_H
+#define __LINUX_V4L2_CONTROLS_H
+#include <linux/const.h>
+#include <linux/types.h>
+#define V4L2_CTRL_CLASS_USER 0x00980000
+#define V4L2_CTRL_CLASS_CODEC 0x00990000
+#define V4L2_CTRL_CLASS_CAMERA 0x009a0000
+#define V4L2_CTRL_CLASS_FM_TX 0x009b0000
+#define V4L2_CTRL_CLASS_FLASH 0x009c0000
+#define V4L2_CTRL_CLASS_JPEG 0x009d0000
+#define V4L2_CTRL_CLASS_IMAGE_SOURCE 0x009e0000
+#define V4L2_CTRL_CLASS_IMAGE_PROC 0x009f0000
+#define V4L2_CTRL_CLASS_DV 0x00a00000
+#define V4L2_CTRL_CLASS_FM_RX 0x00a10000
+#define V4L2_CTRL_CLASS_RF_TUNER 0x00a20000
+#define V4L2_CTRL_CLASS_DETECT 0x00a30000
+#define V4L2_CTRL_CLASS_CODEC_STATELESS 0x00a40000
+#define V4L2_CTRL_CLASS_COLORIMETRY 0x00a50000
+#define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
+#define V4L2_CID_USER_BASE V4L2_CID_BASE
+#define V4L2_CID_USER_CLASS (V4L2_CTRL_CLASS_USER | 1)
+#define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE + 0)
+#define V4L2_CID_CONTRAST (V4L2_CID_BASE + 1)
+#define V4L2_CID_SATURATION (V4L2_CID_BASE + 2)
+#define V4L2_CID_HUE (V4L2_CID_BASE + 3)
+#define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE + 5)
+#define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE + 6)
+#define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE + 7)
+#define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE + 8)
+#define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE + 9)
+#define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE + 10)
+#define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE + 11)
+#define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE + 12)
+#define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE + 13)
+#define V4L2_CID_RED_BALANCE (V4L2_CID_BASE + 14)
+#define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE + 15)
+#define V4L2_CID_GAMMA (V4L2_CID_BASE + 16)
+#define V4L2_CID_WHITENESS (V4L2_CID_GAMMA)
+#define V4L2_CID_EXPOSURE (V4L2_CID_BASE + 17)
+#define V4L2_CID_AUTOGAIN (V4L2_CID_BASE + 18)
+#define V4L2_CID_GAIN (V4L2_CID_BASE + 19)
+#define V4L2_CID_HFLIP (V4L2_CID_BASE + 20)
+#define V4L2_CID_VFLIP (V4L2_CID_BASE + 21)
+#define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE + 24)
+enum v4l2_power_line_frequency {
+  V4L2_CID_POWER_LINE_FREQUENCY_DISABLED = 0,
+  V4L2_CID_POWER_LINE_FREQUENCY_50HZ = 1,
+  V4L2_CID_POWER_LINE_FREQUENCY_60HZ = 2,
+  V4L2_CID_POWER_LINE_FREQUENCY_AUTO = 3,
+};
+#define V4L2_CID_HUE_AUTO (V4L2_CID_BASE + 25)
+#define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE + 26)
+#define V4L2_CID_SHARPNESS (V4L2_CID_BASE + 27)
+#define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE + 28)
+#define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE + 29)
+#define V4L2_CID_COLOR_KILLER (V4L2_CID_BASE + 30)
+#define V4L2_CID_COLORFX (V4L2_CID_BASE + 31)
+enum v4l2_colorfx {
+  V4L2_COLORFX_NONE = 0,
+  V4L2_COLORFX_BW = 1,
+  V4L2_COLORFX_SEPIA = 2,
+  V4L2_COLORFX_NEGATIVE = 3,
+  V4L2_COLORFX_EMBOSS = 4,
+  V4L2_COLORFX_SKETCH = 5,
+  V4L2_COLORFX_SKY_BLUE = 6,
+  V4L2_COLORFX_GRASS_GREEN = 7,
+  V4L2_COLORFX_SKIN_WHITEN = 8,
+  V4L2_COLORFX_VIVID = 9,
+  V4L2_COLORFX_AQUA = 10,
+  V4L2_COLORFX_ART_FREEZE = 11,
+  V4L2_COLORFX_SILHOUETTE = 12,
+  V4L2_COLORFX_SOLARIZATION = 13,
+  V4L2_COLORFX_ANTIQUE = 14,
+  V4L2_COLORFX_SET_CBCR = 15,
+};
+#define V4L2_CID_AUTOBRIGHTNESS (V4L2_CID_BASE + 32)
+#define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE + 33)
+#define V4L2_CID_ROTATE (V4L2_CID_BASE + 34)
+#define V4L2_CID_BG_COLOR (V4L2_CID_BASE + 35)
+#define V4L2_CID_CHROMA_GAIN (V4L2_CID_BASE + 36)
+#define V4L2_CID_ILLUMINATORS_1 (V4L2_CID_BASE + 37)
+#define V4L2_CID_ILLUMINATORS_2 (V4L2_CID_BASE + 38)
+#define V4L2_CID_MIN_BUFFERS_FOR_CAPTURE (V4L2_CID_BASE + 39)
+#define V4L2_CID_MIN_BUFFERS_FOR_OUTPUT (V4L2_CID_BASE + 40)
+#define V4L2_CID_ALPHA_COMPONENT (V4L2_CID_BASE + 41)
+#define V4L2_CID_COLORFX_CBCR (V4L2_CID_BASE + 42)
+#define V4L2_CID_LASTP1 (V4L2_CID_BASE + 43)
+#define V4L2_CID_USER_MEYE_BASE (V4L2_CID_USER_BASE + 0x1000)
+#define V4L2_CID_USER_BTTV_BASE (V4L2_CID_USER_BASE + 0x1010)
+#define V4L2_CID_USER_S2255_BASE (V4L2_CID_USER_BASE + 0x1030)
+#define V4L2_CID_USER_SI476X_BASE (V4L2_CID_USER_BASE + 0x1040)
+#define V4L2_CID_USER_TI_VPE_BASE (V4L2_CID_USER_BASE + 0x1050)
+#define V4L2_CID_USER_SAA7134_BASE (V4L2_CID_USER_BASE + 0x1060)
+#define V4L2_CID_USER_ADV7180_BASE (V4L2_CID_USER_BASE + 0x1070)
+#define V4L2_CID_USER_TC358743_BASE (V4L2_CID_USER_BASE + 0x1080)
+#define V4L2_CID_USER_MAX217X_BASE (V4L2_CID_USER_BASE + 0x1090)
+#define V4L2_CID_USER_IMX_BASE (V4L2_CID_USER_BASE + 0x10b0)
+#define V4L2_CID_USER_ATMEL_ISC_BASE (V4L2_CID_USER_BASE + 0x10c0)
+#define V4L2_CID_USER_CODA_BASE (V4L2_CID_USER_BASE + 0x10e0)
+#define V4L2_CID_USER_CCS_BASE (V4L2_CID_USER_BASE + 0x10f0)
+#define V4L2_CID_USER_ALLEGRO_BASE (V4L2_CID_USER_BASE + 0x1170)
+#define V4L2_CID_CODEC_BASE (V4L2_CTRL_CLASS_CODEC | 0x900)
+#define V4L2_CID_CODEC_CLASS (V4L2_CTRL_CLASS_CODEC | 1)
+#define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_CODEC_BASE + 0)
+enum v4l2_mpeg_stream_type {
+  V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0,
+  V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1,
+  V4L2_MPEG_STREAM_TYPE_MPEG1_SS = 2,
+  V4L2_MPEG_STREAM_TYPE_MPEG2_DVD = 3,
+  V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4,
+  V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5,
+};
+#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_CODEC_BASE + 1)
+#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_CODEC_BASE + 2)
+#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_CODEC_BASE + 3)
+#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_CODEC_BASE + 4)
+#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_CODEC_BASE + 5)
+#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_CODEC_BASE + 6)
+#define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_CODEC_BASE + 7)
+enum v4l2_mpeg_stream_vbi_fmt {
+  V4L2_MPEG_STREAM_VBI_FMT_NONE = 0,
+  V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1,
+};
+#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_CODEC_BASE + 100)
+enum v4l2_mpeg_audio_sampling_freq {
+  V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
+  V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
+  V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,
+};
+#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_CODEC_BASE + 101)
+enum v4l2_mpeg_audio_encoding {
+  V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
+  V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
+  V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2,
+  V4L2_MPEG_AUDIO_ENCODING_AAC = 3,
+  V4L2_MPEG_AUDIO_ENCODING_AC3 = 4,
+};
+#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_CODEC_BASE + 102)
+enum v4l2_mpeg_audio_l1_bitrate {
+  V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0,
+  V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1,
+  V4L2_MPEG_AUDIO_L1_BITRATE_96K = 2,
+  V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3,
+  V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4,
+  V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5,
+  V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6,
+  V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7,
+  V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8,
+  V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9,
+  V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10,
+  V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11,
+  V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
+  V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,
+};
+#define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_CODEC_BASE + 103)
+enum v4l2_mpeg_audio_l2_bitrate {
+  V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0,
+  V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1,
+  V4L2_MPEG_AUDIO_L2_BITRATE_56K = 2,
+  V4L2_MPEG_AUDIO_L2_BITRATE_64K = 3,
+  V4L2_MPEG_AUDIO_L2_BITRATE_80K = 4,
+  V4L2_MPEG_AUDIO_L2_BITRATE_96K = 5,
+  V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6,
+  V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7,
+  V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8,
+  V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9,
+  V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10,
+  V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11,
+  V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
+  V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,
+};
+#define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_CODEC_BASE + 104)
+enum v4l2_mpeg_audio_l3_bitrate {
+  V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0,
+  V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1,
+  V4L2_MPEG_AUDIO_L3_BITRATE_48K = 2,
+  V4L2_MPEG_AUDIO_L3_BITRATE_56K = 3,
+  V4L2_MPEG_AUDIO_L3_BITRATE_64K = 4,
+  V4L2_MPEG_AUDIO_L3_BITRATE_80K = 5,
+  V4L2_MPEG_AUDIO_L3_BITRATE_96K = 6,
+  V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7,
+  V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8,
+  V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9,
+  V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10,
+  V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11,
+  V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
+  V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,
+};
+#define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_CODEC_BASE + 105)
+enum v4l2_mpeg_audio_mode {
+  V4L2_MPEG_AUDIO_MODE_STEREO = 0,
+  V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,
+  V4L2_MPEG_AUDIO_MODE_DUAL = 2,
+  V4L2_MPEG_AUDIO_MODE_MONO = 3,
+};
+#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_CODEC_BASE + 106)
+enum v4l2_mpeg_audio_mode_extension {
+  V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0,
+  V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1,
+  V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
+  V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,
+};
+#define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_CODEC_BASE + 107)
+enum v4l2_mpeg_audio_emphasis {
+  V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0,
+  V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
+  V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2,
+};
+#define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_CODEC_BASE + 108)
+enum v4l2_mpeg_audio_crc {
+  V4L2_MPEG_AUDIO_CRC_NONE = 0,
+  V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
+};
+#define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_CODEC_BASE + 109)
+#define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_CODEC_BASE + 110)
+#define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_CODEC_BASE + 111)
+enum v4l2_mpeg_audio_ac3_bitrate {
+  V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_48K = 2,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_56K = 3,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_64K = 4,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_80K = 5,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_96K = 6,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_112K = 7,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_128K = 8,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_160K = 9,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_192K = 10,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_224K = 11,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_256K = 12,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_320K = 13,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_384K = 14,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_448K = 15,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_512K = 16,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17,
+  V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
+};
+#define V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK (V4L2_CID_CODEC_BASE + 112)
+enum v4l2_mpeg_audio_dec_playback {
+  V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO = 0,
+  V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO = 1,
+  V4L2_MPEG_AUDIO_DEC_PLAYBACK_LEFT = 2,
+  V4L2_MPEG_AUDIO_DEC_PLAYBACK_RIGHT = 3,
+  V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO = 4,
+  V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO = 5,
+};
+#define V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK (V4L2_CID_CODEC_BASE + 113)
+#define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_CODEC_BASE + 200)
+enum v4l2_mpeg_video_encoding {
+  V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0,
+  V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1,
+  V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,
+};
+#define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_CODEC_BASE + 201)
+enum v4l2_mpeg_video_aspect {
+  V4L2_MPEG_VIDEO_ASPECT_1x1 = 0,
+  V4L2_MPEG_VIDEO_ASPECT_4x3 = 1,
+  V4L2_MPEG_VIDEO_ASPECT_16x9 = 2,
+  V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,
+};
+#define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_CODEC_BASE + 202)
+#define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_CODEC_BASE + 203)
+#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_CODEC_BASE + 204)
+#define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_CODEC_BASE + 205)
+#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_CODEC_BASE + 206)
+enum v4l2_mpeg_video_bitrate_mode {
+  V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
+  V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
+  V4L2_MPEG_VIDEO_BITRATE_MODE_CQ = 2,
+};
+#define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_CODEC_BASE + 207)
+#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_CODEC_BASE + 208)
+#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_CODEC_BASE + 209)
+#define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_CODEC_BASE + 210)
+#define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_CODEC_BASE + 211)
+#define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE (V4L2_CID_CODEC_BASE + 212)
+#define V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER (V4L2_CID_CODEC_BASE + 213)
+#define V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB (V4L2_CID_CODEC_BASE + 214)
+#define V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE (V4L2_CID_CODEC_BASE + 215)
+#define V4L2_CID_MPEG_VIDEO_HEADER_MODE (V4L2_CID_CODEC_BASE + 216)
+enum v4l2_mpeg_video_header_mode {
+  V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE = 0,
+  V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME = 1,
+};
+#define V4L2_CID_MPEG_VIDEO_MAX_REF_PIC (V4L2_CID_CODEC_BASE + 217)
+#define V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE (V4L2_CID_CODEC_BASE + 218)
+#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES (V4L2_CID_CODEC_BASE + 219)
+#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB (V4L2_CID_CODEC_BASE + 220)
+#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (V4L2_CID_CODEC_BASE + 221)
+enum v4l2_mpeg_video_multi_slice_mode {
+  V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE = 0,
+  V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB = 1,
+  V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES = 2,
+  V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_MB = 1,
+  V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES = 2,
+};
+#define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_CODEC_BASE + 222)
+#define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_CODEC_BASE + 223)
+#define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_CODEC_BASE + 224)
+#define V4L2_CID_MPEG_VIDEO_VBV_DELAY (V4L2_CID_CODEC_BASE + 225)
+#define V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER (V4L2_CID_CODEC_BASE + 226)
+#define V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE (V4L2_CID_CODEC_BASE + 227)
+#define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE (V4L2_CID_CODEC_BASE + 228)
+#define V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME (V4L2_CID_CODEC_BASE + 229)
+#define V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID (V4L2_CID_CODEC_BASE + 230)
+#define V4L2_CID_MPEG_VIDEO_AU_DELIMITER (V4L2_CID_CODEC_BASE + 231)
+#define V4L2_CID_MPEG_VIDEO_LTR_COUNT (V4L2_CID_CODEC_BASE + 232)
+#define V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX (V4L2_CID_CODEC_BASE + 233)
+#define V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (V4L2_CID_CODEC_BASE + 234)
+#define V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR (V4L2_CID_CODEC_BASE + 235)
+#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (V4L2_CID_CODEC_BASE + 236)
+#define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE + 270)
+enum v4l2_mpeg_video_mpeg2_level {
+  V4L2_MPEG_VIDEO_MPEG2_LEVEL_LOW = 0,
+  V4L2_MPEG_VIDEO_MPEG2_LEVEL_MAIN = 1,
+  V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH_1440 = 2,
+  V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH = 3,
+};
+#define V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE (V4L2_CID_CODEC_BASE + 271)
+enum v4l2_mpeg_video_mpeg2_profile {
+  V4L2_MPEG_VIDEO_MPEG2_PROFILE_SIMPLE = 0,
+  V4L2_MPEG_VIDEO_MPEG2_PROFILE_MAIN = 1,
+  V4L2_MPEG_VIDEO_MPEG2_PROFILE_SNR_SCALABLE = 2,
+  V4L2_MPEG_VIDEO_MPEG2_PROFILE_SPATIALLY_SCALABLE = 3,
+  V4L2_MPEG_VIDEO_MPEG2_PROFILE_HIGH = 4,
+  V4L2_MPEG_VIDEO_MPEG2_PROFILE_MULTIVIEW = 5,
+};
+#define V4L2_CID_FWHT_I_FRAME_QP (V4L2_CID_CODEC_BASE + 290)
+#define V4L2_CID_FWHT_P_FRAME_QP (V4L2_CID_CODEC_BASE + 291)
+#define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_CODEC_BASE + 300)
+#define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_CODEC_BASE + 301)
+#define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP (V4L2_CID_CODEC_BASE + 302)
+#define V4L2_CID_MPEG_VIDEO_H263_MIN_QP (V4L2_CID_CODEC_BASE + 303)
+#define V4L2_CID_MPEG_VIDEO_H263_MAX_QP (V4L2_CID_CODEC_BASE + 304)
+#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP (V4L2_CID_CODEC_BASE + 350)
+#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP (V4L2_CID_CODEC_BASE + 351)
+#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP (V4L2_CID_CODEC_BASE + 352)
+#define V4L2_CID_MPEG_VIDEO_H264_MIN_QP (V4L2_CID_CODEC_BASE + 353)
+#define V4L2_CID_MPEG_VIDEO_H264_MAX_QP (V4L2_CID_CODEC_BASE + 354)
+#define V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM (V4L2_CID_CODEC_BASE + 355)
+#define V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE (V4L2_CID_CODEC_BASE + 356)
+#define V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE (V4L2_CID_CODEC_BASE + 357)
+enum v4l2_mpeg_video_h264_entropy_mode {
+  V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC = 0,
+  V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC = 1,
+};
+#define V4L2_CID_MPEG_VIDEO_H264_I_PERIOD (V4L2_CID_CODEC_BASE + 358)
+#define V4L2_CID_MPEG_VIDEO_H264_LEVEL (V4L2_CID_CODEC_BASE + 359)
+enum v4l2_mpeg_video_h264_level {
+  V4L2_MPEG_VIDEO_H264_LEVEL_1_0 = 0,
+  V4L2_MPEG_VIDEO_H264_LEVEL_1B = 1,
+  V4L2_MPEG_VIDEO_H264_LEVEL_1_1 = 2,
+  V4L2_MPEG_VIDEO_H264_LEVEL_1_2 = 3,
+  V4L2_MPEG_VIDEO_H264_LEVEL_1_3 = 4,
+  V4L2_MPEG_VIDEO_H264_LEVEL_2_0 = 5,
+  V4L2_MPEG_VIDEO_H264_LEVEL_2_1 = 6,
+  V4L2_MPEG_VIDEO_H264_LEVEL_2_2 = 7,
+  V4L2_MPEG_VIDEO_H264_LEVEL_3_0 = 8,
+  V4L2_MPEG_VIDEO_H264_LEVEL_3_1 = 9,
+  V4L2_MPEG_VIDEO_H264_LEVEL_3_2 = 10,
+  V4L2_MPEG_VIDEO_H264_LEVEL_4_0 = 11,
+  V4L2_MPEG_VIDEO_H264_LEVEL_4_1 = 12,
+  V4L2_MPEG_VIDEO_H264_LEVEL_4_2 = 13,
+  V4L2_MPEG_VIDEO_H264_LEVEL_5_0 = 14,
+  V4L2_MPEG_VIDEO_H264_LEVEL_5_1 = 15,
+  V4L2_MPEG_VIDEO_H264_LEVEL_5_2 = 16,
+  V4L2_MPEG_VIDEO_H264_LEVEL_6_0 = 17,
+  V4L2_MPEG_VIDEO_H264_LEVEL_6_1 = 18,
+  V4L2_MPEG_VIDEO_H264_LEVEL_6_2 = 19,
+};
+#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA (V4L2_CID_CODEC_BASE + 360)
+#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA (V4L2_CID_CODEC_BASE + 361)
+#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE (V4L2_CID_CODEC_BASE + 362)
+enum v4l2_mpeg_video_h264_loop_filter_mode {
+  V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED = 0,
+  V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED = 1,
+  V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
+};
+#define V4L2_CID_MPEG_VIDEO_H264_PROFILE (V4L2_CID_CODEC_BASE + 363)
+enum v4l2_mpeg_video_h264_profile {
+  V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE = 0,
+  V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE = 1,
+  V4L2_MPEG_VIDEO_H264_PROFILE_MAIN = 2,
+  V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED = 3,
+  V4L2_MPEG_VIDEO_H264_PROFILE_HIGH = 4,
+  V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10 = 5,
+  V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422 = 6,
+  V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE = 7,
+  V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA = 8,
+  V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA = 9,
+  V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA = 10,
+  V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA = 11,
+  V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE = 12,
+  V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH = 13,
+  V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA = 14,
+  V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH = 15,
+  V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH = 16,
+  V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH = 17,
+};
+#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT (V4L2_CID_CODEC_BASE + 364)
+#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH (V4L2_CID_CODEC_BASE + 365)
+#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE (V4L2_CID_CODEC_BASE + 366)
+#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC (V4L2_CID_CODEC_BASE + 367)
+enum v4l2_mpeg_video_h264_vui_sar_idc {
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED = 0,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1 = 1,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_12x11 = 2,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_10x11 = 3,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_16x11 = 4,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_40x33 = 5,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_24x11 = 6,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_20x11 = 7,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_32x11 = 8,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_80x33 = 9,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_18x11 = 10,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_15x11 = 11,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_64x33 = 12,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_160x99 = 13,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_4x3 = 14,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_3x2 = 15,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1 = 16,
+  V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED = 17,
+};
+#define V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING (V4L2_CID_CODEC_BASE + 368)
+#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0 (V4L2_CID_CODEC_BASE + 369)
+#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE (V4L2_CID_CODEC_BASE + 370)
+enum v4l2_mpeg_video_h264_sei_fp_arrangement_type {
+  V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHECKERBOARD = 0,
+  V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN = 1,
+  V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_ROW = 2,
+  V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_SIDE_BY_SIDE = 3,
+  V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM = 4,
+  V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL = 5,
+};
+#define V4L2_CID_MPEG_VIDEO_H264_FMO (V4L2_CID_CODEC_BASE + 371)
+#define V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE (V4L2_CID_CODEC_BASE + 372)
+enum v4l2_mpeg_video_h264_fmo_map_type {
+  V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES = 0,
+  V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES = 1,
+  V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_FOREGROUND_WITH_LEFT_OVER = 2,
+  V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_BOX_OUT = 3,
+  V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_RASTER_SCAN = 4,
+  V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN = 5,
+  V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT = 6,
+};
+#define V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP (V4L2_CID_CODEC_BASE + 373)
+#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION (V4L2_CID_CODEC_BASE + 374)
+enum v4l2_mpeg_video_h264_fmo_change_dir {
+  V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT = 0,
+  V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT = 1,
+};
+#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE (V4L2_CID_CODEC_BASE + 375)
+#define V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH (V4L2_CID_CODEC_BASE + 376)
+#define V4L2_CID_MPEG_VIDEO_H264_ASO (V4L2_CID_CODEC_BASE + 377)
+#define V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER (V4L2_CID_CODEC_BASE + 378)
+#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING (V4L2_CID_CODEC_BASE + 379)
+#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE (V4L2_CID_CODEC_BASE + 380)
+enum v4l2_mpeg_video_h264_hierarchical_coding_type {
+  V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B = 0,
+  V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P = 1,
+};
+#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER (V4L2_CID_CODEC_BASE + 381)
+#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (V4L2_CID_CODEC_BASE + 382)
+#define V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION (V4L2_CID_CODEC_BASE + 383)
+#define V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET (V4L2_CID_CODEC_BASE + 384)
+#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP (V4L2_CID_CODEC_BASE + 385)
+#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP (V4L2_CID_CODEC_BASE + 386)
+#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP (V4L2_CID_CODEC_BASE + 387)
+#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP (V4L2_CID_CODEC_BASE + 388)
+#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MIN_QP (V4L2_CID_CODEC_BASE + 389)
+#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MAX_QP (V4L2_CID_CODEC_BASE + 390)
+#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L0_BR (V4L2_CID_CODEC_BASE + 391)
+#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L1_BR (V4L2_CID_CODEC_BASE + 392)
+#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L2_BR (V4L2_CID_CODEC_BASE + 393)
+#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L3_BR (V4L2_CID_CODEC_BASE + 394)
+#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L4_BR (V4L2_CID_CODEC_BASE + 395)
+#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L5_BR (V4L2_CID_CODEC_BASE + 396)
+#define V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L6_BR (V4L2_CID_CODEC_BASE + 397)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_CODEC_BASE + 400)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_CODEC_BASE + 401)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_CODEC_BASE + 402)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP (V4L2_CID_CODEC_BASE + 403)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP (V4L2_CID_CODEC_BASE + 404)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL (V4L2_CID_CODEC_BASE + 405)
+enum v4l2_mpeg_video_mpeg4_level {
+  V4L2_MPEG_VIDEO_MPEG4_LEVEL_0 = 0,
+  V4L2_MPEG_VIDEO_MPEG4_LEVEL_0B = 1,
+  V4L2_MPEG_VIDEO_MPEG4_LEVEL_1 = 2,
+  V4L2_MPEG_VIDEO_MPEG4_LEVEL_2 = 3,
+  V4L2_MPEG_VIDEO_MPEG4_LEVEL_3 = 4,
+  V4L2_MPEG_VIDEO_MPEG4_LEVEL_3B = 5,
+  V4L2_MPEG_VIDEO_MPEG4_LEVEL_4 = 6,
+  V4L2_MPEG_VIDEO_MPEG4_LEVEL_5 = 7,
+};
+#define V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE (V4L2_CID_CODEC_BASE + 406)
+enum v4l2_mpeg_video_mpeg4_profile {
+  V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE = 0,
+  V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_SIMPLE = 1,
+  V4L2_MPEG_VIDEO_MPEG4_PROFILE_CORE = 2,
+  V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE_SCALABLE = 3,
+  V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY = 4,
+};
+#define V4L2_CID_MPEG_VIDEO_MPEG4_QPEL (V4L2_CID_CODEC_BASE + 407)
+#define V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS (V4L2_CID_CODEC_BASE + 500)
+enum v4l2_vp8_num_partitions {
+  V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION = 0,
+  V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS = 1,
+  V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS = 2,
+  V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS = 3,
+};
+#define V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4 (V4L2_CID_CODEC_BASE + 501)
+#define V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES (V4L2_CID_CODEC_BASE + 502)
+enum v4l2_vp8_num_ref_frames {
+  V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME = 0,
+  V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME = 1,
+  V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME = 2,
+};
+#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL (V4L2_CID_CODEC_BASE + 503)
+#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS (V4L2_CID_CODEC_BASE + 504)
+#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD (V4L2_CID_CODEC_BASE + 505)
+#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL (V4L2_CID_CODEC_BASE + 506)
+enum v4l2_vp8_golden_frame_sel {
+  V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV = 0,
+  V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD = 1,
+};
+#define V4L2_CID_MPEG_VIDEO_VPX_MIN_QP (V4L2_CID_CODEC_BASE + 507)
+#define V4L2_CID_MPEG_VIDEO_VPX_MAX_QP (V4L2_CID_CODEC_BASE + 508)
+#define V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP (V4L2_CID_CODEC_BASE + 509)
+#define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (V4L2_CID_CODEC_BASE + 510)
+#define V4L2_CID_MPEG_VIDEO_VP8_PROFILE (V4L2_CID_CODEC_BASE + 511)
+enum v4l2_mpeg_video_vp8_profile {
+  V4L2_MPEG_VIDEO_VP8_PROFILE_0 = 0,
+  V4L2_MPEG_VIDEO_VP8_PROFILE_1 = 1,
+  V4L2_MPEG_VIDEO_VP8_PROFILE_2 = 2,
+  V4L2_MPEG_VIDEO_VP8_PROFILE_3 = 3,
+};
+#define V4L2_CID_MPEG_VIDEO_VPX_PROFILE V4L2_CID_MPEG_VIDEO_VP8_PROFILE
+#define V4L2_CID_MPEG_VIDEO_VP9_PROFILE (V4L2_CID_CODEC_BASE + 512)
+enum v4l2_mpeg_video_vp9_profile {
+  V4L2_MPEG_VIDEO_VP9_PROFILE_0 = 0,
+  V4L2_MPEG_VIDEO_VP9_PROFILE_1 = 1,
+  V4L2_MPEG_VIDEO_VP9_PROFILE_2 = 2,
+  V4L2_MPEG_VIDEO_VP9_PROFILE_3 = 3,
+};
+#define V4L2_CID_MPEG_VIDEO_VP9_LEVEL (V4L2_CID_CODEC_BASE + 513)
+enum v4l2_mpeg_video_vp9_level {
+  V4L2_MPEG_VIDEO_VP9_LEVEL_1_0 = 0,
+  V4L2_MPEG_VIDEO_VP9_LEVEL_1_1 = 1,
+  V4L2_MPEG_VIDEO_VP9_LEVEL_2_0 = 2,
+  V4L2_MPEG_VIDEO_VP9_LEVEL_2_1 = 3,
+  V4L2_MPEG_VIDEO_VP9_LEVEL_3_0 = 4,
+  V4L2_MPEG_VIDEO_VP9_LEVEL_3_1 = 5,
+  V4L2_MPEG_VIDEO_VP9_LEVEL_4_0 = 6,
+  V4L2_MPEG_VIDEO_VP9_LEVEL_4_1 = 7,
+  V4L2_MPEG_VIDEO_VP9_LEVEL_5_0 = 8,
+  V4L2_MPEG_VIDEO_VP9_LEVEL_5_1 = 9,
+  V4L2_MPEG_VIDEO_VP9_LEVEL_5_2 = 10,
+  V4L2_MPEG_VIDEO_VP9_LEVEL_6_0 = 11,
+  V4L2_MPEG_VIDEO_VP9_LEVEL_6_1 = 12,
+  V4L2_MPEG_VIDEO_VP9_LEVEL_6_2 = 13,
+};
+#define V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP (V4L2_CID_CODEC_BASE + 600)
+#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP (V4L2_CID_CODEC_BASE + 601)
+#define V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP (V4L2_CID_CODEC_BASE + 602)
+#define V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP (V4L2_CID_CODEC_BASE + 603)
+#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP (V4L2_CID_CODEC_BASE + 604)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP (V4L2_CID_CODEC_BASE + 605)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE (V4L2_CID_CODEC_BASE + 606)
+enum v4l2_mpeg_video_hevc_hier_coding_type {
+  V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B = 0,
+  V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P = 1,
+};
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER (V4L2_CID_CODEC_BASE + 607)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP (V4L2_CID_CODEC_BASE + 608)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP (V4L2_CID_CODEC_BASE + 609)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP (V4L2_CID_CODEC_BASE + 610)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP (V4L2_CID_CODEC_BASE + 611)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP (V4L2_CID_CODEC_BASE + 612)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP (V4L2_CID_CODEC_BASE + 613)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_QP (V4L2_CID_CODEC_BASE + 614)
+#define V4L2_CID_MPEG_VIDEO_HEVC_PROFILE (V4L2_CID_CODEC_BASE + 615)
+enum v4l2_mpeg_video_hevc_profile {
+  V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN = 0,
+  V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE = 1,
+  V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10 = 2,
+};
+#define V4L2_CID_MPEG_VIDEO_HEVC_LEVEL (V4L2_CID_CODEC_BASE + 616)
+enum v4l2_mpeg_video_hevc_level {
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_1 = 0,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_2 = 1,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1 = 2,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_3 = 3,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1 = 4,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_4 = 5,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1 = 6,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_5 = 7,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1 = 8,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2 = 9,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_6 = 10,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1 = 11,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2 = 12,
+};
+#define V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION (V4L2_CID_CODEC_BASE + 617)
+#define V4L2_CID_MPEG_VIDEO_HEVC_TIER (V4L2_CID_CODEC_BASE + 618)
+enum v4l2_mpeg_video_hevc_tier {
+  V4L2_MPEG_VIDEO_HEVC_TIER_MAIN = 0,
+  V4L2_MPEG_VIDEO_HEVC_TIER_HIGH = 1,
+};
+#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH (V4L2_CID_CODEC_BASE + 619)
+#define V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE (V4L2_CID_CODEC_BASE + 620)
+enum v4l2_cid_mpeg_video_hevc_loop_filter_mode {
+  V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED = 0,
+  V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED = 1,
+  V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
+};
+#define V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2 (V4L2_CID_CODEC_BASE + 621)
+#define V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2 (V4L2_CID_CODEC_BASE + 622)
+#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE (V4L2_CID_CODEC_BASE + 623)
+enum v4l2_cid_mpeg_video_hevc_refresh_type {
+  V4L2_MPEG_VIDEO_HEVC_REFRESH_NONE = 0,
+  V4L2_MPEG_VIDEO_HEVC_REFRESH_CRA = 1,
+  V4L2_MPEG_VIDEO_HEVC_REFRESH_IDR = 2,
+};
+#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD (V4L2_CID_CODEC_BASE + 624)
+#define V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU (V4L2_CID_CODEC_BASE + 625)
+#define V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED (V4L2_CID_CODEC_BASE + 626)
+#define V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT (V4L2_CID_CODEC_BASE + 627)
+#define V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB (V4L2_CID_CODEC_BASE + 628)
+#define V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID (V4L2_CID_CODEC_BASE + 629)
+#define V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING (V4L2_CID_CODEC_BASE + 630)
+#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1 (V4L2_CID_CODEC_BASE + 631)
+#define V4L2_CID_MPEG_VIDEO_HEVC_INTRA_PU_SPLIT (V4L2_CID_CODEC_BASE + 632)
+#define V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION (V4L2_CID_CODEC_BASE + 633)
+#define V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE (V4L2_CID_CODEC_BASE + 634)
+#define V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD (V4L2_CID_CODEC_BASE + 635)
+enum v4l2_cid_mpeg_video_hevc_size_of_length_field {
+  V4L2_MPEG_VIDEO_HEVC_SIZE_0 = 0,
+  V4L2_MPEG_VIDEO_HEVC_SIZE_1 = 1,
+  V4L2_MPEG_VIDEO_HEVC_SIZE_2 = 2,
+  V4L2_MPEG_VIDEO_HEVC_SIZE_4 = 3,
+};
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR (V4L2_CID_CODEC_BASE + 636)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR (V4L2_CID_CODEC_BASE + 637)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR (V4L2_CID_CODEC_BASE + 638)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR (V4L2_CID_CODEC_BASE + 639)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR (V4L2_CID_CODEC_BASE + 640)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR (V4L2_CID_CODEC_BASE + 641)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (V4L2_CID_CODEC_BASE + 642)
+#define V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES (V4L2_CID_CODEC_BASE + 643)
+#define V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR (V4L2_CID_CODEC_BASE + 644)
+#define V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY (V4L2_CID_CODEC_BASE + 645)
+#define V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE (V4L2_CID_CODEC_BASE + 646)
+enum v4l2_mpeg_video_frame_skip_mode {
+  V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,
+  V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,
+  V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2,
+};
+#define V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MIN_QP (V4L2_CID_CODEC_BASE + 647)
+#define V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MAX_QP (V4L2_CID_CODEC_BASE + 648)
+#define V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MIN_QP (V4L2_CID_CODEC_BASE + 649)
+#define V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MAX_QP (V4L2_CID_CODEC_BASE + 650)
+#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MIN_QP (V4L2_CID_CODEC_BASE + 651)
+#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP (V4L2_CID_CODEC_BASE + 652)
+#define V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY (V4L2_CID_CODEC_BASE + 653)
+#define V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE (V4L2_CID_CODEC_BASE + 654)
+#define V4L2_CID_CODEC_CX2341X_BASE (V4L2_CTRL_CLASS_CODEC | 0x1000)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_CODEC_CX2341X_BASE + 0)
+enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
+  V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
+  V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1,
+};
+#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_CODEC_CX2341X_BASE + 1)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_CODEC_CX2341X_BASE + 2)
+enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
+  V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0,
+  V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
+  V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT = 2,
+  V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3,
+  V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4,
+};
+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_CODEC_CX2341X_BASE + 3)
+enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
+  V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0,
+  V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
+};
+#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_CODEC_CX2341X_BASE + 4)
+enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
+  V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
+  V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1,
+};
+#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_CODEC_CX2341X_BASE + 5)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_CODEC_CX2341X_BASE + 6)
+enum v4l2_mpeg_cx2341x_video_median_filter_type {
+  V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0,
+  V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1,
+  V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT = 2,
+  V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,
+  V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4,
+};
+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_CODEC_CX2341X_BASE + 7)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_CODEC_CX2341X_BASE + 8)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_CODEC_CX2341X_BASE + 9)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_CODEC_CX2341X_BASE + 10)
+#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_CODEC_CX2341X_BASE + 11)
+#define V4L2_CID_CODEC_MFC51_BASE (V4L2_CTRL_CLASS_CODEC | 0x1100)
+#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY (V4L2_CID_CODEC_MFC51_BASE + 0)
+#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE (V4L2_CID_CODEC_MFC51_BASE + 1)
+#define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE (V4L2_CID_CODEC_MFC51_BASE + 2)
+enum v4l2_mpeg_mfc51_video_frame_skip_mode {
+  V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,
+  V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,
+  V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2,
+};
+#define V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE (V4L2_CID_CODEC_MFC51_BASE + 3)
+enum v4l2_mpeg_mfc51_video_force_frame_type {
+  V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_DISABLED = 0,
+  V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_I_FRAME = 1,
+  V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_NOT_CODED = 2,
+};
+#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING (V4L2_CID_CODEC_MFC51_BASE + 4)
+#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV (V4L2_CID_CODEC_MFC51_BASE + 5)
+#define V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT (V4L2_CID_CODEC_MFC51_BASE + 6)
+#define V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF (V4L2_CID_CODEC_MFC51_BASE + 7)
+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY (V4L2_CID_CODEC_MFC51_BASE + 50)
+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK (V4L2_CID_CODEC_MFC51_BASE + 51)
+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH (V4L2_CID_CODEC_MFC51_BASE + 52)
+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC (V4L2_CID_CODEC_MFC51_BASE + 53)
+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P (V4L2_CID_CODEC_MFC51_BASE + 54)
+#define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900)
+#define V4L2_CID_CAMERA_CLASS (V4L2_CTRL_CLASS_CAMERA | 1)
+#define V4L2_CID_EXPOSURE_AUTO (V4L2_CID_CAMERA_CLASS_BASE + 1)
+enum v4l2_exposure_auto_type {
+  V4L2_EXPOSURE_AUTO = 0,
+  V4L2_EXPOSURE_MANUAL = 1,
+  V4L2_EXPOSURE_SHUTTER_PRIORITY = 2,
+  V4L2_EXPOSURE_APERTURE_PRIORITY = 3
+};
+#define V4L2_CID_EXPOSURE_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE + 2)
+#define V4L2_CID_EXPOSURE_AUTO_PRIORITY (V4L2_CID_CAMERA_CLASS_BASE + 3)
+#define V4L2_CID_PAN_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE + 4)
+#define V4L2_CID_TILT_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE + 5)
+#define V4L2_CID_PAN_RESET (V4L2_CID_CAMERA_CLASS_BASE + 6)
+#define V4L2_CID_TILT_RESET (V4L2_CID_CAMERA_CLASS_BASE + 7)
+#define V4L2_CID_PAN_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE + 8)
+#define V4L2_CID_TILT_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE + 9)
+#define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE + 10)
+#define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE + 11)
+#define V4L2_CID_FOCUS_AUTO (V4L2_CID_CAMERA_CLASS_BASE + 12)
+#define V4L2_CID_ZOOM_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE + 13)
+#define V4L2_CID_ZOOM_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE + 14)
+#define V4L2_CID_ZOOM_CONTINUOUS (V4L2_CID_CAMERA_CLASS_BASE + 15)
+#define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE + 16)
+#define V4L2_CID_IRIS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE + 17)
+#define V4L2_CID_IRIS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE + 18)
+#define V4L2_CID_AUTO_EXPOSURE_BIAS (V4L2_CID_CAMERA_CLASS_BASE + 19)
+#define V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE (V4L2_CID_CAMERA_CLASS_BASE + 20)
+enum v4l2_auto_n_preset_white_balance {
+  V4L2_WHITE_BALANCE_MANUAL = 0,
+  V4L2_WHITE_BALANCE_AUTO = 1,
+  V4L2_WHITE_BALANCE_INCANDESCENT = 2,
+  V4L2_WHITE_BALANCE_FLUORESCENT = 3,
+  V4L2_WHITE_BALANCE_FLUORESCENT_H = 4,
+  V4L2_WHITE_BALANCE_HORIZON = 5,
+  V4L2_WHITE_BALANCE_DAYLIGHT = 6,
+  V4L2_WHITE_BALANCE_FLASH = 7,
+  V4L2_WHITE_BALANCE_CLOUDY = 8,
+  V4L2_WHITE_BALANCE_SHADE = 9,
+};
+#define V4L2_CID_WIDE_DYNAMIC_RANGE (V4L2_CID_CAMERA_CLASS_BASE + 21)
+#define V4L2_CID_IMAGE_STABILIZATION (V4L2_CID_CAMERA_CLASS_BASE + 22)
+#define V4L2_CID_ISO_SENSITIVITY (V4L2_CID_CAMERA_CLASS_BASE + 23)
+#define V4L2_CID_ISO_SENSITIVITY_AUTO (V4L2_CID_CAMERA_CLASS_BASE + 24)
+enum v4l2_iso_sensitivity_auto_type {
+  V4L2_ISO_SENSITIVITY_MANUAL = 0,
+  V4L2_ISO_SENSITIVITY_AUTO = 1,
+};
+#define V4L2_CID_EXPOSURE_METERING (V4L2_CID_CAMERA_CLASS_BASE + 25)
+enum v4l2_exposure_metering {
+  V4L2_EXPOSURE_METERING_AVERAGE = 0,
+  V4L2_EXPOSURE_METERING_CENTER_WEIGHTED = 1,
+  V4L2_EXPOSURE_METERING_SPOT = 2,
+  V4L2_EXPOSURE_METERING_MATRIX = 3,
+};
+#define V4L2_CID_SCENE_MODE (V4L2_CID_CAMERA_CLASS_BASE + 26)
+enum v4l2_scene_mode {
+  V4L2_SCENE_MODE_NONE = 0,
+  V4L2_SCENE_MODE_BACKLIGHT = 1,
+  V4L2_SCENE_MODE_BEACH_SNOW = 2,
+  V4L2_SCENE_MODE_CANDLE_LIGHT = 3,
+  V4L2_SCENE_MODE_DAWN_DUSK = 4,
+  V4L2_SCENE_MODE_FALL_COLORS = 5,
+  V4L2_SCENE_MODE_FIREWORKS = 6,
+  V4L2_SCENE_MODE_LANDSCAPE = 7,
+  V4L2_SCENE_MODE_NIGHT = 8,
+  V4L2_SCENE_MODE_PARTY_INDOOR = 9,
+  V4L2_SCENE_MODE_PORTRAIT = 10,
+  V4L2_SCENE_MODE_SPORTS = 11,
+  V4L2_SCENE_MODE_SUNSET = 12,
+  V4L2_SCENE_MODE_TEXT = 13,
+};
+#define V4L2_CID_3A_LOCK (V4L2_CID_CAMERA_CLASS_BASE + 27)
+#define V4L2_LOCK_EXPOSURE (1 << 0)
+#define V4L2_LOCK_WHITE_BALANCE (1 << 1)
+#define V4L2_LOCK_FOCUS (1 << 2)
+#define V4L2_CID_AUTO_FOCUS_START (V4L2_CID_CAMERA_CLASS_BASE + 28)
+#define V4L2_CID_AUTO_FOCUS_STOP (V4L2_CID_CAMERA_CLASS_BASE + 29)
+#define V4L2_CID_AUTO_FOCUS_STATUS (V4L2_CID_CAMERA_CLASS_BASE + 30)
+#define V4L2_AUTO_FOCUS_STATUS_IDLE (0 << 0)
+#define V4L2_AUTO_FOCUS_STATUS_BUSY (1 << 0)
+#define V4L2_AUTO_FOCUS_STATUS_REACHED (1 << 1)
+#define V4L2_AUTO_FOCUS_STATUS_FAILED (1 << 2)
+#define V4L2_CID_AUTO_FOCUS_RANGE (V4L2_CID_CAMERA_CLASS_BASE + 31)
+enum v4l2_auto_focus_range {
+  V4L2_AUTO_FOCUS_RANGE_AUTO = 0,
+  V4L2_AUTO_FOCUS_RANGE_NORMAL = 1,
+  V4L2_AUTO_FOCUS_RANGE_MACRO = 2,
+  V4L2_AUTO_FOCUS_RANGE_INFINITY = 3,
+};
+#define V4L2_CID_PAN_SPEED (V4L2_CID_CAMERA_CLASS_BASE + 32)
+#define V4L2_CID_TILT_SPEED (V4L2_CID_CAMERA_CLASS_BASE + 33)
+#define V4L2_CID_CAMERA_ORIENTATION (V4L2_CID_CAMERA_CLASS_BASE + 34)
+#define V4L2_CAMERA_ORIENTATION_FRONT 0
+#define V4L2_CAMERA_ORIENTATION_BACK 1
+#define V4L2_CAMERA_ORIENTATION_EXTERNAL 2
+#define V4L2_CID_CAMERA_SENSOR_ROTATION (V4L2_CID_CAMERA_CLASS_BASE + 35)
+#define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900)
+#define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1)
+#define V4L2_CID_RDS_TX_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 1)
+#define V4L2_CID_RDS_TX_PI (V4L2_CID_FM_TX_CLASS_BASE + 2)
+#define V4L2_CID_RDS_TX_PTY (V4L2_CID_FM_TX_CLASS_BASE + 3)
+#define V4L2_CID_RDS_TX_PS_NAME (V4L2_CID_FM_TX_CLASS_BASE + 5)
+#define V4L2_CID_RDS_TX_RADIO_TEXT (V4L2_CID_FM_TX_CLASS_BASE + 6)
+#define V4L2_CID_RDS_TX_MONO_STEREO (V4L2_CID_FM_TX_CLASS_BASE + 7)
+#define V4L2_CID_RDS_TX_ARTIFICIAL_HEAD (V4L2_CID_FM_TX_CLASS_BASE + 8)
+#define V4L2_CID_RDS_TX_COMPRESSED (V4L2_CID_FM_TX_CLASS_BASE + 9)
+#define V4L2_CID_RDS_TX_DYNAMIC_PTY (V4L2_CID_FM_TX_CLASS_BASE + 10)
+#define V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT (V4L2_CID_FM_TX_CLASS_BASE + 11)
+#define V4L2_CID_RDS_TX_TRAFFIC_PROGRAM (V4L2_CID_FM_TX_CLASS_BASE + 12)
+#define V4L2_CID_RDS_TX_MUSIC_SPEECH (V4L2_CID_FM_TX_CLASS_BASE + 13)
+#define V4L2_CID_RDS_TX_ALT_FREQS_ENABLE (V4L2_CID_FM_TX_CLASS_BASE + 14)
+#define V4L2_CID_RDS_TX_ALT_FREQS (V4L2_CID_FM_TX_CLASS_BASE + 15)
+#define V4L2_CID_AUDIO_LIMITER_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 64)
+#define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 65)
+#define V4L2_CID_AUDIO_LIMITER_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 66)
+#define V4L2_CID_AUDIO_COMPRESSION_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 80)
+#define V4L2_CID_AUDIO_COMPRESSION_GAIN (V4L2_CID_FM_TX_CLASS_BASE + 81)
+#define V4L2_CID_AUDIO_COMPRESSION_THRESHOLD (V4L2_CID_FM_TX_CLASS_BASE + 82)
+#define V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME (V4L2_CID_FM_TX_CLASS_BASE + 83)
+#define V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 84)
+#define V4L2_CID_PILOT_TONE_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 96)
+#define V4L2_CID_PILOT_TONE_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 97)
+#define V4L2_CID_PILOT_TONE_FREQUENCY (V4L2_CID_FM_TX_CLASS_BASE + 98)
+#define V4L2_CID_TUNE_PREEMPHASIS (V4L2_CID_FM_TX_CLASS_BASE + 112)
+enum v4l2_preemphasis {
+  V4L2_PREEMPHASIS_DISABLED = 0,
+  V4L2_PREEMPHASIS_50_uS = 1,
+  V4L2_PREEMPHASIS_75_uS = 2,
+};
+#define V4L2_CID_TUNE_POWER_LEVEL (V4L2_CID_FM_TX_CLASS_BASE + 113)
+#define V4L2_CID_TUNE_ANTENNA_CAPACITOR (V4L2_CID_FM_TX_CLASS_BASE + 114)
+#define V4L2_CID_FLASH_CLASS_BASE (V4L2_CTRL_CLASS_FLASH | 0x900)
+#define V4L2_CID_FLASH_CLASS (V4L2_CTRL_CLASS_FLASH | 1)
+#define V4L2_CID_FLASH_LED_MODE (V4L2_CID_FLASH_CLASS_BASE + 1)
+enum v4l2_flash_led_mode {
+  V4L2_FLASH_LED_MODE_NONE,
+  V4L2_FLASH_LED_MODE_FLASH,
+  V4L2_FLASH_LED_MODE_TORCH,
+};
+#define V4L2_CID_FLASH_STROBE_SOURCE (V4L2_CID_FLASH_CLASS_BASE + 2)
+enum v4l2_flash_strobe_source {
+  V4L2_FLASH_STROBE_SOURCE_SOFTWARE,
+  V4L2_FLASH_STROBE_SOURCE_EXTERNAL,
+};
+#define V4L2_CID_FLASH_STROBE (V4L2_CID_FLASH_CLASS_BASE + 3)
+#define V4L2_CID_FLASH_STROBE_STOP (V4L2_CID_FLASH_CLASS_BASE + 4)
+#define V4L2_CID_FLASH_STROBE_STATUS (V4L2_CID_FLASH_CLASS_BASE + 5)
+#define V4L2_CID_FLASH_TIMEOUT (V4L2_CID_FLASH_CLASS_BASE + 6)
+#define V4L2_CID_FLASH_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 7)
+#define V4L2_CID_FLASH_TORCH_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 8)
+#define V4L2_CID_FLASH_INDICATOR_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 9)
+#define V4L2_CID_FLASH_FAULT (V4L2_CID_FLASH_CLASS_BASE + 10)
+#define V4L2_FLASH_FAULT_OVER_VOLTAGE (1 << 0)
+#define V4L2_FLASH_FAULT_TIMEOUT (1 << 1)
+#define V4L2_FLASH_FAULT_OVER_TEMPERATURE (1 << 2)
+#define V4L2_FLASH_FAULT_SHORT_CIRCUIT (1 << 3)
+#define V4L2_FLASH_FAULT_OVER_CURRENT (1 << 4)
+#define V4L2_FLASH_FAULT_INDICATOR (1 << 5)
+#define V4L2_FLASH_FAULT_UNDER_VOLTAGE (1 << 6)
+#define V4L2_FLASH_FAULT_INPUT_VOLTAGE (1 << 7)
+#define V4L2_FLASH_FAULT_LED_OVER_TEMPERATURE (1 << 8)
+#define V4L2_CID_FLASH_CHARGE (V4L2_CID_FLASH_CLASS_BASE + 11)
+#define V4L2_CID_FLASH_READY (V4L2_CID_FLASH_CLASS_BASE + 12)
+#define V4L2_CID_JPEG_CLASS_BASE (V4L2_CTRL_CLASS_JPEG | 0x900)
+#define V4L2_CID_JPEG_CLASS (V4L2_CTRL_CLASS_JPEG | 1)
+#define V4L2_CID_JPEG_CHROMA_SUBSAMPLING (V4L2_CID_JPEG_CLASS_BASE + 1)
+enum v4l2_jpeg_chroma_subsampling {
+  V4L2_JPEG_CHROMA_SUBSAMPLING_444 = 0,
+  V4L2_JPEG_CHROMA_SUBSAMPLING_422 = 1,
+  V4L2_JPEG_CHROMA_SUBSAMPLING_420 = 2,
+  V4L2_JPEG_CHROMA_SUBSAMPLING_411 = 3,
+  V4L2_JPEG_CHROMA_SUBSAMPLING_410 = 4,
+  V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY = 5,
+};
+#define V4L2_CID_JPEG_RESTART_INTERVAL (V4L2_CID_JPEG_CLASS_BASE + 2)
+#define V4L2_CID_JPEG_COMPRESSION_QUALITY (V4L2_CID_JPEG_CLASS_BASE + 3)
+#define V4L2_CID_JPEG_ACTIVE_MARKER (V4L2_CID_JPEG_CLASS_BASE + 4)
+#define V4L2_JPEG_ACTIVE_MARKER_APP0 (1 << 0)
+#define V4L2_JPEG_ACTIVE_MARKER_APP1 (1 << 1)
+#define V4L2_JPEG_ACTIVE_MARKER_COM (1 << 16)
+#define V4L2_JPEG_ACTIVE_MARKER_DQT (1 << 17)
+#define V4L2_JPEG_ACTIVE_MARKER_DHT (1 << 18)
+#define V4L2_CID_IMAGE_SOURCE_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_SOURCE | 0x900)
+#define V4L2_CID_IMAGE_SOURCE_CLASS (V4L2_CTRL_CLASS_IMAGE_SOURCE | 1)
+#define V4L2_CID_VBLANK (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 1)
+#define V4L2_CID_HBLANK (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 2)
+#define V4L2_CID_ANALOGUE_GAIN (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 3)
+#define V4L2_CID_TEST_PATTERN_RED (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 4)
+#define V4L2_CID_TEST_PATTERN_GREENR (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 5)
+#define V4L2_CID_TEST_PATTERN_BLUE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6)
+#define V4L2_CID_TEST_PATTERN_GREENB (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7)
+#define V4L2_CID_UNIT_CELL_SIZE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)
+#define V4L2_CID_NOTIFY_GAINS (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 9)
+#define V4L2_CID_IMAGE_PROC_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_PROC | 0x900)
+#define V4L2_CID_IMAGE_PROC_CLASS (V4L2_CTRL_CLASS_IMAGE_PROC | 1)
+#define V4L2_CID_LINK_FREQ (V4L2_CID_IMAGE_PROC_CLASS_BASE + 1)
+#define V4L2_CID_PIXEL_RATE (V4L2_CID_IMAGE_PROC_CLASS_BASE + 2)
+#define V4L2_CID_TEST_PATTERN (V4L2_CID_IMAGE_PROC_CLASS_BASE + 3)
+#define V4L2_CID_DEINTERLACING_MODE (V4L2_CID_IMAGE_PROC_CLASS_BASE + 4)
+#define V4L2_CID_DIGITAL_GAIN (V4L2_CID_IMAGE_PROC_CLASS_BASE + 5)
+#define V4L2_CID_DV_CLASS_BASE (V4L2_CTRL_CLASS_DV | 0x900)
+#define V4L2_CID_DV_CLASS (V4L2_CTRL_CLASS_DV | 1)
+#define V4L2_CID_DV_TX_HOTPLUG (V4L2_CID_DV_CLASS_BASE + 1)
+#define V4L2_CID_DV_TX_RXSENSE (V4L2_CID_DV_CLASS_BASE + 2)
+#define V4L2_CID_DV_TX_EDID_PRESENT (V4L2_CID_DV_CLASS_BASE + 3)
+#define V4L2_CID_DV_TX_MODE (V4L2_CID_DV_CLASS_BASE + 4)
+enum v4l2_dv_tx_mode {
+  V4L2_DV_TX_MODE_DVI_D = 0,
+  V4L2_DV_TX_MODE_HDMI = 1,
+};
+#define V4L2_CID_DV_TX_RGB_RANGE (V4L2_CID_DV_CLASS_BASE + 5)
+enum v4l2_dv_rgb_range {
+  V4L2_DV_RGB_RANGE_AUTO = 0,
+  V4L2_DV_RGB_RANGE_LIMITED = 1,
+  V4L2_DV_RGB_RANGE_FULL = 2,
+};
+#define V4L2_CID_DV_TX_IT_CONTENT_TYPE (V4L2_CID_DV_CLASS_BASE + 6)
+enum v4l2_dv_it_content_type {
+  V4L2_DV_IT_CONTENT_TYPE_GRAPHICS = 0,
+  V4L2_DV_IT_CONTENT_TYPE_PHOTO = 1,
+  V4L2_DV_IT_CONTENT_TYPE_CINEMA = 2,
+  V4L2_DV_IT_CONTENT_TYPE_GAME = 3,
+  V4L2_DV_IT_CONTENT_TYPE_NO_ITC = 4,
+};
+#define V4L2_CID_DV_RX_POWER_PRESENT (V4L2_CID_DV_CLASS_BASE + 100)
+#define V4L2_CID_DV_RX_RGB_RANGE (V4L2_CID_DV_CLASS_BASE + 101)
+#define V4L2_CID_DV_RX_IT_CONTENT_TYPE (V4L2_CID_DV_CLASS_BASE + 102)
+#define V4L2_CID_FM_RX_CLASS_BASE (V4L2_CTRL_CLASS_FM_RX | 0x900)
+#define V4L2_CID_FM_RX_CLASS (V4L2_CTRL_CLASS_FM_RX | 1)
+#define V4L2_CID_TUNE_DEEMPHASIS (V4L2_CID_FM_RX_CLASS_BASE + 1)
+enum v4l2_deemphasis {
+  V4L2_DEEMPHASIS_DISABLED = V4L2_PREEMPHASIS_DISABLED,
+  V4L2_DEEMPHASIS_50_uS = V4L2_PREEMPHASIS_50_uS,
+  V4L2_DEEMPHASIS_75_uS = V4L2_PREEMPHASIS_75_uS,
+};
+#define V4L2_CID_RDS_RECEPTION (V4L2_CID_FM_RX_CLASS_BASE + 2)
+#define V4L2_CID_RDS_RX_PTY (V4L2_CID_FM_RX_CLASS_BASE + 3)
+#define V4L2_CID_RDS_RX_PS_NAME (V4L2_CID_FM_RX_CLASS_BASE + 4)
+#define V4L2_CID_RDS_RX_RADIO_TEXT (V4L2_CID_FM_RX_CLASS_BASE + 5)
+#define V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT (V4L2_CID_FM_RX_CLASS_BASE + 6)
+#define V4L2_CID_RDS_RX_TRAFFIC_PROGRAM (V4L2_CID_FM_RX_CLASS_BASE + 7)
+#define V4L2_CID_RDS_RX_MUSIC_SPEECH (V4L2_CID_FM_RX_CLASS_BASE + 8)
+#define V4L2_CID_RF_TUNER_CLASS_BASE (V4L2_CTRL_CLASS_RF_TUNER | 0x900)
+#define V4L2_CID_RF_TUNER_CLASS (V4L2_CTRL_CLASS_RF_TUNER | 1)
+#define V4L2_CID_RF_TUNER_BANDWIDTH_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 11)
+#define V4L2_CID_RF_TUNER_BANDWIDTH (V4L2_CID_RF_TUNER_CLASS_BASE + 12)
+#define V4L2_CID_RF_TUNER_RF_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 32)
+#define V4L2_CID_RF_TUNER_LNA_GAIN_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 41)
+#define V4L2_CID_RF_TUNER_LNA_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 42)
+#define V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 51)
+#define V4L2_CID_RF_TUNER_MIXER_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 52)
+#define V4L2_CID_RF_TUNER_IF_GAIN_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 61)
+#define V4L2_CID_RF_TUNER_IF_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 62)
+#define V4L2_CID_RF_TUNER_PLL_LOCK (V4L2_CID_RF_TUNER_CLASS_BASE + 91)
+#define V4L2_CID_DETECT_CLASS_BASE (V4L2_CTRL_CLASS_DETECT | 0x900)
+#define V4L2_CID_DETECT_CLASS (V4L2_CTRL_CLASS_DETECT | 1)
+#define V4L2_CID_DETECT_MD_MODE (V4L2_CID_DETECT_CLASS_BASE + 1)
+enum v4l2_detect_md_mode {
+  V4L2_DETECT_MD_MODE_DISABLED = 0,
+  V4L2_DETECT_MD_MODE_GLOBAL = 1,
+  V4L2_DETECT_MD_MODE_THRESHOLD_GRID = 2,
+  V4L2_DETECT_MD_MODE_REGION_GRID = 3,
+};
+#define V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD (V4L2_CID_DETECT_CLASS_BASE + 2)
+#define V4L2_CID_DETECT_MD_THRESHOLD_GRID (V4L2_CID_DETECT_CLASS_BASE + 3)
+#define V4L2_CID_DETECT_MD_REGION_GRID (V4L2_CID_DETECT_CLASS_BASE + 4)
+#define V4L2_CID_CODEC_STATELESS_BASE (V4L2_CTRL_CLASS_CODEC_STATELESS | 0x900)
+#define V4L2_CID_CODEC_STATELESS_CLASS (V4L2_CTRL_CLASS_CODEC_STATELESS | 1)
+#define V4L2_CID_STATELESS_H264_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 0)
+enum v4l2_stateless_h264_decode_mode {
+  V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED,
+  V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED,
+};
+#define V4L2_CID_STATELESS_H264_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 1)
+enum v4l2_stateless_h264_start_code {
+  V4L2_STATELESS_H264_START_CODE_NONE,
+  V4L2_STATELESS_H264_START_CODE_ANNEX_B,
+};
+#define V4L2_H264_SPS_CONSTRAINT_SET0_FLAG 0x01
+#define V4L2_H264_SPS_CONSTRAINT_SET1_FLAG 0x02
+#define V4L2_H264_SPS_CONSTRAINT_SET2_FLAG 0x04
+#define V4L2_H264_SPS_CONSTRAINT_SET3_FLAG 0x08
+#define V4L2_H264_SPS_CONSTRAINT_SET4_FLAG 0x10
+#define V4L2_H264_SPS_CONSTRAINT_SET5_FLAG 0x20
+#define V4L2_H264_SPS_FLAG_SEPARATE_COLOUR_PLANE 0x01
+#define V4L2_H264_SPS_FLAG_QPPRIME_Y_ZERO_TRANSFORM_BYPASS 0x02
+#define V4L2_H264_SPS_FLAG_DELTA_PIC_ORDER_ALWAYS_ZERO 0x04
+#define V4L2_H264_SPS_FLAG_GAPS_IN_FRAME_NUM_VALUE_ALLOWED 0x08
+#define V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY 0x10
+#define V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD 0x20
+#define V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE 0x40
+#define V4L2_H264_SPS_HAS_CHROMA_FORMAT(sps) ((sps)->profile_idc == 100 || (sps)->profile_idc == 110 || (sps)->profile_idc == 122 || (sps)->profile_idc == 244 || (sps)->profile_idc == 44 || (sps)->profile_idc == 83 || (sps)->profile_idc == 86 || (sps)->profile_idc == 118 || (sps)->profile_idc == 128 || (sps)->profile_idc == 138 || (sps)->profile_idc == 139 || (sps)->profile_idc == 134 || (sps)->profile_idc == 135)
+#define V4L2_CID_STATELESS_H264_SPS (V4L2_CID_CODEC_STATELESS_BASE + 2)
+struct v4l2_ctrl_h264_sps {
+  __u8 profile_idc;
+  __u8 constraint_set_flags;
+  __u8 level_idc;
+  __u8 seq_parameter_set_id;
+  __u8 chroma_format_idc;
+  __u8 bit_depth_luma_minus8;
+  __u8 bit_depth_chroma_minus8;
+  __u8 log2_max_frame_num_minus4;
+  __u8 pic_order_cnt_type;
+  __u8 log2_max_pic_order_cnt_lsb_minus4;
+  __u8 max_num_ref_frames;
+  __u8 num_ref_frames_in_pic_order_cnt_cycle;
+  __s32 offset_for_ref_frame[255];
+  __s32 offset_for_non_ref_pic;
+  __s32 offset_for_top_to_bottom_field;
+  __u16 pic_width_in_mbs_minus1;
+  __u16 pic_height_in_map_units_minus1;
+  __u32 flags;
+};
+#define V4L2_H264_PPS_FLAG_ENTROPY_CODING_MODE 0x0001
+#define V4L2_H264_PPS_FLAG_BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT 0x0002
+#define V4L2_H264_PPS_FLAG_WEIGHTED_PRED 0x0004
+#define V4L2_H264_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT 0x0008
+#define V4L2_H264_PPS_FLAG_CONSTRAINED_INTRA_PRED 0x0010
+#define V4L2_H264_PPS_FLAG_REDUNDANT_PIC_CNT_PRESENT 0x0020
+#define V4L2_H264_PPS_FLAG_TRANSFORM_8X8_MODE 0x0040
+#define V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT 0x0080
+#define V4L2_CID_STATELESS_H264_PPS (V4L2_CID_CODEC_STATELESS_BASE + 3)
+struct v4l2_ctrl_h264_pps {
+  __u8 pic_parameter_set_id;
+  __u8 seq_parameter_set_id;
+  __u8 num_slice_groups_minus1;
+  __u8 num_ref_idx_l0_default_active_minus1;
+  __u8 num_ref_idx_l1_default_active_minus1;
+  __u8 weighted_bipred_idc;
+  __s8 pic_init_qp_minus26;
+  __s8 pic_init_qs_minus26;
+  __s8 chroma_qp_index_offset;
+  __s8 second_chroma_qp_index_offset;
+  __u16 flags;
+};
+#define V4L2_CID_STATELESS_H264_SCALING_MATRIX (V4L2_CID_CODEC_STATELESS_BASE + 4)
+struct v4l2_ctrl_h264_scaling_matrix {
+  __u8 scaling_list_4x4[6][16];
+  __u8 scaling_list_8x8[6][64];
+};
+struct v4l2_h264_weight_factors {
+  __s16 luma_weight[32];
+  __s16 luma_offset[32];
+  __s16 chroma_weight[32][2];
+  __s16 chroma_offset[32][2];
+};
+#define V4L2_H264_CTRL_PRED_WEIGHTS_REQUIRED(pps,slice) ((((pps)->flags & V4L2_H264_PPS_FLAG_WEIGHTED_PRED) && ((slice)->slice_type == V4L2_H264_SLICE_TYPE_P || (slice)->slice_type == V4L2_H264_SLICE_TYPE_SP)) || ((pps)->weighted_bipred_idc == 1 && (slice)->slice_type == V4L2_H264_SLICE_TYPE_B))
+#define V4L2_CID_STATELESS_H264_PRED_WEIGHTS (V4L2_CID_CODEC_STATELESS_BASE + 5)
+struct v4l2_ctrl_h264_pred_weights {
+  __u16 luma_log2_weight_denom;
+  __u16 chroma_log2_weight_denom;
+  struct v4l2_h264_weight_factors weight_factors[2];
+};
+#define V4L2_H264_SLICE_TYPE_P 0
+#define V4L2_H264_SLICE_TYPE_B 1
+#define V4L2_H264_SLICE_TYPE_I 2
+#define V4L2_H264_SLICE_TYPE_SP 3
+#define V4L2_H264_SLICE_TYPE_SI 4
+#define V4L2_H264_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED 0x01
+#define V4L2_H264_SLICE_FLAG_SP_FOR_SWITCH 0x02
+#define V4L2_H264_TOP_FIELD_REF 0x1
+#define V4L2_H264_BOTTOM_FIELD_REF 0x2
+#define V4L2_H264_FRAME_REF 0x3
+struct v4l2_h264_reference {
+  __u8 fields;
+  __u8 index;
+};
+#define V4L2_H264_NUM_DPB_ENTRIES 16
+#define V4L2_H264_REF_LIST_LEN (2 * V4L2_H264_NUM_DPB_ENTRIES)
+#define V4L2_CID_STATELESS_H264_SLICE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 6)
+struct v4l2_ctrl_h264_slice_params {
+  __u32 header_bit_size;
+  __u32 first_mb_in_slice;
+  __u8 slice_type;
+  __u8 colour_plane_id;
+  __u8 redundant_pic_cnt;
+  __u8 cabac_init_idc;
+  __s8 slice_qp_delta;
+  __s8 slice_qs_delta;
+  __u8 disable_deblocking_filter_idc;
+  __s8 slice_alpha_c0_offset_div2;
+  __s8 slice_beta_offset_div2;
+  __u8 num_ref_idx_l0_active_minus1;
+  __u8 num_ref_idx_l1_active_minus1;
+  __u8 reserved;
+  struct v4l2_h264_reference ref_pic_list0[V4L2_H264_REF_LIST_LEN];
+  struct v4l2_h264_reference ref_pic_list1[V4L2_H264_REF_LIST_LEN];
+  __u32 flags;
+};
+#define V4L2_H264_DPB_ENTRY_FLAG_VALID 0x01
+#define V4L2_H264_DPB_ENTRY_FLAG_ACTIVE 0x02
+#define V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM 0x04
+#define V4L2_H264_DPB_ENTRY_FLAG_FIELD 0x08
+struct v4l2_h264_dpb_entry {
+  __u64 reference_ts;
+  __u32 pic_num;
+  __u16 frame_num;
+  __u8 fields;
+  __u8 reserved[5];
+  __s32 top_field_order_cnt;
+  __s32 bottom_field_order_cnt;
+  __u32 flags;
+};
+#define V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC 0x01
+#define V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC 0x02
+#define V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD 0x04
+#define V4L2_CID_STATELESS_H264_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 7)
+struct v4l2_ctrl_h264_decode_params {
+  struct v4l2_h264_dpb_entry dpb[V4L2_H264_NUM_DPB_ENTRIES];
+  __u16 nal_ref_idc;
+  __u16 frame_num;
+  __s32 top_field_order_cnt;
+  __s32 bottom_field_order_cnt;
+  __u16 idr_pic_id;
+  __u16 pic_order_cnt_lsb;
+  __s32 delta_pic_order_cnt_bottom;
+  __s32 delta_pic_order_cnt0;
+  __s32 delta_pic_order_cnt1;
+  __u32 dec_ref_pic_marking_bit_size;
+  __u32 pic_order_cnt_bit_size;
+  __u32 slice_group_change_cycle;
+  __u32 reserved;
+  __u32 flags;
+};
+#define V4L2_FWHT_VERSION 3
+#define V4L2_FWHT_FL_IS_INTERLACED _BITUL(0)
+#define V4L2_FWHT_FL_IS_BOTTOM_FIRST _BITUL(1)
+#define V4L2_FWHT_FL_IS_ALTERNATE _BITUL(2)
+#define V4L2_FWHT_FL_IS_BOTTOM_FIELD _BITUL(3)
+#define V4L2_FWHT_FL_LUMA_IS_UNCOMPRESSED _BITUL(4)
+#define V4L2_FWHT_FL_CB_IS_UNCOMPRESSED _BITUL(5)
+#define V4L2_FWHT_FL_CR_IS_UNCOMPRESSED _BITUL(6)
+#define V4L2_FWHT_FL_CHROMA_FULL_HEIGHT _BITUL(7)
+#define V4L2_FWHT_FL_CHROMA_FULL_WIDTH _BITUL(8)
+#define V4L2_FWHT_FL_ALPHA_IS_UNCOMPRESSED _BITUL(9)
+#define V4L2_FWHT_FL_I_FRAME _BITUL(10)
+#define V4L2_FWHT_FL_COMPONENTS_NUM_MSK GENMASK(18, 16)
+#define V4L2_FWHT_FL_COMPONENTS_NUM_OFFSET 16
+#define V4L2_FWHT_FL_PIXENC_MSK GENMASK(20, 19)
+#define V4L2_FWHT_FL_PIXENC_OFFSET 19
+#define V4L2_FWHT_FL_PIXENC_YUV (1 << V4L2_FWHT_FL_PIXENC_OFFSET)
+#define V4L2_FWHT_FL_PIXENC_RGB (2 << V4L2_FWHT_FL_PIXENC_OFFSET)
+#define V4L2_FWHT_FL_PIXENC_HSV (3 << V4L2_FWHT_FL_PIXENC_OFFSET)
+#define V4L2_CID_STATELESS_FWHT_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 100)
+struct v4l2_ctrl_fwht_params {
+  __u64 backward_ref_ts;
+  __u32 version;
+  __u32 width;
+  __u32 height;
+  __u32 flags;
+  __u32 colorspace;
+  __u32 xfer_func;
+  __u32 ycbcr_enc;
+  __u32 quantization;
+};
+#define V4L2_VP8_SEGMENT_FLAG_ENABLED 0x01
+#define V4L2_VP8_SEGMENT_FLAG_UPDATE_MAP 0x02
+#define V4L2_VP8_SEGMENT_FLAG_UPDATE_FEATURE_DATA 0x04
+#define V4L2_VP8_SEGMENT_FLAG_DELTA_VALUE_MODE 0x08
+struct v4l2_vp8_segment {
+  __s8 quant_update[4];
+  __s8 lf_update[4];
+  __u8 segment_probs[3];
+  __u8 padding;
+  __u32 flags;
+};
+#define V4L2_VP8_LF_ADJ_ENABLE 0x01
+#define V4L2_VP8_LF_DELTA_UPDATE 0x02
+#define V4L2_VP8_LF_FILTER_TYPE_SIMPLE 0x04
+struct v4l2_vp8_loop_filter {
+  __s8 ref_frm_delta[4];
+  __s8 mb_mode_delta[4];
+  __u8 sharpness_level;
+  __u8 level;
+  __u16 padding;
+  __u32 flags;
+};
+struct v4l2_vp8_quantization {
+  __u8 y_ac_qi;
+  __s8 y_dc_delta;
+  __s8 y2_dc_delta;
+  __s8 y2_ac_delta;
+  __s8 uv_dc_delta;
+  __s8 uv_ac_delta;
+  __u16 padding;
+};
+#define V4L2_VP8_COEFF_PROB_CNT 11
+#define V4L2_VP8_MV_PROB_CNT 19
+struct v4l2_vp8_entropy {
+  __u8 coeff_probs[4][8][3][V4L2_VP8_COEFF_PROB_CNT];
+  __u8 y_mode_probs[4];
+  __u8 uv_mode_probs[3];
+  __u8 mv_probs[2][V4L2_VP8_MV_PROB_CNT];
+  __u8 padding[3];
+};
+struct v4l2_vp8_entropy_coder_state {
+  __u8 range;
+  __u8 value;
+  __u8 bit_count;
+  __u8 padding;
+};
+#define V4L2_VP8_FRAME_FLAG_KEY_FRAME 0x01
+#define V4L2_VP8_FRAME_FLAG_EXPERIMENTAL 0x02
+#define V4L2_VP8_FRAME_FLAG_SHOW_FRAME 0x04
+#define V4L2_VP8_FRAME_FLAG_MB_NO_SKIP_COEFF 0x08
+#define V4L2_VP8_FRAME_FLAG_SIGN_BIAS_GOLDEN 0x10
+#define V4L2_VP8_FRAME_FLAG_SIGN_BIAS_ALT 0x20
+#define V4L2_VP8_FRAME_IS_KEY_FRAME(hdr) (! ! ((hdr)->flags & V4L2_VP8_FRAME_FLAG_KEY_FRAME))
+#define V4L2_CID_STATELESS_VP8_FRAME (V4L2_CID_CODEC_STATELESS_BASE + 200)
+struct v4l2_ctrl_vp8_frame {
+  struct v4l2_vp8_segment segment;
+  struct v4l2_vp8_loop_filter lf;
+  struct v4l2_vp8_quantization quant;
+  struct v4l2_vp8_entropy entropy;
+  struct v4l2_vp8_entropy_coder_state coder_state;
+  __u16 width;
+  __u16 height;
+  __u8 horizontal_scale;
+  __u8 vertical_scale;
+  __u8 version;
+  __u8 prob_skip_false;
+  __u8 prob_intra;
+  __u8 prob_last;
+  __u8 prob_gf;
+  __u8 num_dct_parts;
+  __u32 first_part_size;
+  __u32 first_part_header_bits;
+  __u32 dct_part_sizes[8];
+  __u64 last_frame_ts;
+  __u64 golden_frame_ts;
+  __u64 alt_frame_ts;
+  __u64 flags;
+};
+#define V4L2_MPEG2_SEQ_FLAG_PROGRESSIVE 0x01
+#define V4L2_CID_STATELESS_MPEG2_SEQUENCE (V4L2_CID_CODEC_STATELESS_BASE + 220)
+struct v4l2_ctrl_mpeg2_sequence {
+  __u16 horizontal_size;
+  __u16 vertical_size;
+  __u32 vbv_buffer_size;
+  __u16 profile_and_level_indication;
+  __u8 chroma_format;
+  __u8 flags;
+};
+#define V4L2_MPEG2_PIC_CODING_TYPE_I 1
+#define V4L2_MPEG2_PIC_CODING_TYPE_P 2
+#define V4L2_MPEG2_PIC_CODING_TYPE_B 3
+#define V4L2_MPEG2_PIC_CODING_TYPE_D 4
+#define V4L2_MPEG2_PIC_TOP_FIELD 0x1
+#define V4L2_MPEG2_PIC_BOTTOM_FIELD 0x2
+#define V4L2_MPEG2_PIC_FRAME 0x3
+#define V4L2_MPEG2_PIC_FLAG_TOP_FIELD_FIRST 0x0001
+#define V4L2_MPEG2_PIC_FLAG_FRAME_PRED_DCT 0x0002
+#define V4L2_MPEG2_PIC_FLAG_CONCEALMENT_MV 0x0004
+#define V4L2_MPEG2_PIC_FLAG_Q_SCALE_TYPE 0x0008
+#define V4L2_MPEG2_PIC_FLAG_INTRA_VLC 0x0010
+#define V4L2_MPEG2_PIC_FLAG_ALT_SCAN 0x0020
+#define V4L2_MPEG2_PIC_FLAG_REPEAT_FIRST 0x0040
+#define V4L2_MPEG2_PIC_FLAG_PROGRESSIVE 0x0080
+#define V4L2_CID_STATELESS_MPEG2_PICTURE (V4L2_CID_CODEC_STATELESS_BASE + 221)
+struct v4l2_ctrl_mpeg2_picture {
+  __u64 backward_ref_ts;
+  __u64 forward_ref_ts;
+  __u32 flags;
+  __u8 f_code[2][2];
+  __u8 picture_coding_type;
+  __u8 picture_structure;
+  __u8 intra_dc_precision;
+  __u8 reserved[5];
+};
+#define V4L2_CID_STATELESS_MPEG2_QUANTISATION (V4L2_CID_CODEC_STATELESS_BASE + 222)
+struct v4l2_ctrl_mpeg2_quantisation {
+  __u8 intra_quantiser_matrix[64];
+  __u8 non_intra_quantiser_matrix[64];
+  __u8 chroma_intra_quantiser_matrix[64];
+  __u8 chroma_non_intra_quantiser_matrix[64];
+};
+#define V4L2_CID_COLORIMETRY_CLASS_BASE (V4L2_CTRL_CLASS_COLORIMETRY | 0x900)
+#define V4L2_CID_COLORIMETRY_CLASS (V4L2_CTRL_CLASS_COLORIMETRY | 1)
+#define V4L2_CID_COLORIMETRY_HDR10_CLL_INFO (V4L2_CID_COLORIMETRY_CLASS_BASE + 0)
+struct v4l2_ctrl_hdr10_cll_info {
+  __u16 max_content_light_level;
+  __u16 max_pic_average_light_level;
+};
+#define V4L2_CID_COLORIMETRY_HDR10_MASTERING_DISPLAY (V4L2_CID_COLORIMETRY_CLASS_BASE + 1)
+#define V4L2_HDR10_MASTERING_PRIMARIES_X_LOW 5
+#define V4L2_HDR10_MASTERING_PRIMARIES_X_HIGH 37000
+#define V4L2_HDR10_MASTERING_PRIMARIES_Y_LOW 5
+#define V4L2_HDR10_MASTERING_PRIMARIES_Y_HIGH 42000
+#define V4L2_HDR10_MASTERING_WHITE_POINT_X_LOW 5
+#define V4L2_HDR10_MASTERING_WHITE_POINT_X_HIGH 37000
+#define V4L2_HDR10_MASTERING_WHITE_POINT_Y_LOW 5
+#define V4L2_HDR10_MASTERING_WHITE_POINT_Y_HIGH 42000
+#define V4L2_HDR10_MASTERING_MAX_LUMA_LOW 50000
+#define V4L2_HDR10_MASTERING_MAX_LUMA_HIGH 100000000
+#define V4L2_HDR10_MASTERING_MIN_LUMA_LOW 1
+#define V4L2_HDR10_MASTERING_MIN_LUMA_HIGH 50000
+struct v4l2_ctrl_hdr10_mastering_display {
+  __u16 display_primaries_x[3];
+  __u16 display_primaries_y[3];
+  __u16 white_point_x;
+  __u16 white_point_y;
+  __u32 max_display_mastering_luminance;
+  __u32 min_display_mastering_luminance;
+};
+#define V4L2_CTRL_CLASS_MPEG V4L2_CTRL_CLASS_CODEC
+#define V4L2_CID_MPEG_CLASS V4L2_CID_CODEC_CLASS
+#define V4L2_CID_MPEG_BASE V4L2_CID_CODEC_BASE
+#define V4L2_CID_MPEG_CX2341X_BASE V4L2_CID_CODEC_CX2341X_BASE
+#define V4L2_CID_MPEG_MFC51_BASE V4L2_CID_CODEC_MFC51_BASE
+#endif
diff --git a/i686-linux-musl/include/linux/v4l2-dv-timings.h b/i686-linux-musl/include/linux/v4l2-dv-timings.h
new file mode 100644
index 0000000..29596d1
--- /dev/null
+++ b/i686-linux-musl/include/linux/v4l2-dv-timings.h
@@ -0,0 +1,255 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _V4L2_DV_TIMINGS_H
+#define _V4L2_DV_TIMINGS_H
+#if __GNUC__ < 4 || __GNUC__ == 4 && __GNUC_MINOR__ < 6
+#define V4L2_INIT_BT_TIMINGS(_width,args...) {.bt = { _width, ##args } }
+#else
+#define V4L2_INIT_BT_TIMINGS(_width,args...) . bt = { _width, ##args }
+#endif
+#define V4L2_DV_BT_CEA_640X480P59_94 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(640, 480, 0, 0, 25175000, 16, 96, 48, 10, 2, 33, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 1) \
+}
+#define V4L2_DV_BT_CEA_720X480I59_94 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(720, 480, 1, 0, 13500000, 19, 62, 57, 4, 3, 15, 4, 3, 16, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_HALF_LINE | V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_PICTURE_ASPECT | V4L2_DV_FL_HAS_CEA861_VIC, { 4, 3 }, 6) \
+}
+#define V4L2_DV_BT_CEA_720X480P59_94 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(720, 480, 0, 0, 27000000, 16, 62, 60, 9, 6, 30, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_PICTURE_ASPECT | V4L2_DV_FL_HAS_CEA861_VIC, { 4, 3 }, 2) \
+}
+#define V4L2_DV_BT_CEA_720X576I50 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(720, 576, 1, 0, 13500000, 12, 63, 69, 2, 3, 19, 2, 3, 20, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_HALF_LINE | V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_PICTURE_ASPECT | V4L2_DV_FL_HAS_CEA861_VIC, { 4, 3 }, 21) \
+}
+#define V4L2_DV_BT_CEA_720X576P50 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(720, 576, 0, 0, 27000000, 12, 64, 68, 5, 5, 39, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_PICTURE_ASPECT | V4L2_DV_FL_HAS_CEA861_VIC, { 4, 3 }, 17) \
+}
+#define V4L2_DV_BT_CEA_1280X720P24 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 720, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 59400000, 1760, 40, 220, 5, 5, 20, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 60) \
+}
+#define V4L2_DV_BT_CEA_1280X720P25 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 720, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 2420, 40, 220, 5, 5, 20, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 61) \
+}
+#define V4L2_DV_BT_CEA_1280X720P30 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 720, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 1760, 40, 220, 5, 5, 20, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 62) \
+}
+#define V4L2_DV_BT_CEA_1280X720P50 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 720, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 440, 40, 220, 5, 5, 20, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 19) \
+}
+#define V4L2_DV_BT_CEA_1280X720P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 720, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 110, 40, 220, 5, 5, 20, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 4) \
+}
+#define V4L2_DV_BT_CEA_1920X1080P24 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1080, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 638, 44, 148, 4, 5, 36, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 32) \
+}
+#define V4L2_DV_BT_CEA_1920X1080P25 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1080, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 528, 44, 148, 4, 5, 36, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 33) \
+}
+#define V4L2_DV_BT_CEA_1920X1080P30 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1080, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 88, 44, 148, 4, 5, 36, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 34) \
+}
+#define V4L2_DV_BT_CEA_1920X1080I50 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1080, 1, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 528, 44, 148, 2, 5, 15, 2, 5, 16, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_HALF_LINE | V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 20) \
+}
+#define V4L2_DV_BT_CEA_1920X1080P50 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1080, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 148500000, 528, 44, 148, 4, 5, 36, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 31) \
+}
+#define V4L2_DV_BT_CEA_1920X1080I60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1080, 1, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 74250000, 88, 44, 148, 2, 5, 15, 2, 5, 16, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_HALF_LINE | V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 5) \
+}
+#define V4L2_DV_BT_CEA_1920X1080P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1080, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 148500000, 88, 44, 148, 4, 5, 36, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 16) \
+}
+#define V4L2_DV_BT_CEA_3840X2160P24 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(3840, 2160, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 297000000, 1276, 88, 296, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC | V4L2_DV_FL_HAS_HDMI_VIC, { 0, 0 }, 93, 3) \
+}
+#define V4L2_DV_BT_CEA_3840X2160P25 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(3840, 2160, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 297000000, 1056, 88, 296, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC | V4L2_DV_FL_HAS_HDMI_VIC, { 0, 0 }, 94, 2) \
+}
+#define V4L2_DV_BT_CEA_3840X2160P30 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(3840, 2160, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 297000000, 176, 88, 296, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC | V4L2_DV_FL_HAS_HDMI_VIC, { 0, 0 }, 95, 1) \
+}
+#define V4L2_DV_BT_CEA_3840X2160P50 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(3840, 2160, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 594000000, 1056, 88, 296, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 96) \
+}
+#define V4L2_DV_BT_CEA_3840X2160P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(3840, 2160, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 594000000, 176, 88, 296, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 97) \
+}
+#define V4L2_DV_BT_CEA_4096X2160P24 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 297000000, 1020, 88, 296, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC | V4L2_DV_FL_HAS_HDMI_VIC, { 0, 0 }, 98, 4) \
+}
+#define V4L2_DV_BT_CEA_4096X2160P25 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 297000000, 968, 88, 128, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 99) \
+}
+#define V4L2_DV_BT_CEA_4096X2160P30 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 297000000, 88, 88, 128, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 100) \
+}
+#define V4L2_DV_BT_CEA_4096X2160P50 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 594000000, 968, 88, 128, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 101) \
+}
+#define V4L2_DV_BT_CEA_4096X2160P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 594000000, 88, 88, 128, 8, 10, 72, 0, 0, 0, V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 102) \
+}
+#define V4L2_DV_BT_DMT_640X350P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(640, 350, 0, V4L2_DV_HSYNC_POS_POL, 31500000, 32, 64, 96, 32, 3, 60, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_640X400P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(640, 400, 0, V4L2_DV_VSYNC_POS_POL, 31500000, 32, 64, 96, 1, 3, 41, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_720X400P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(720, 400, 0, V4L2_DV_VSYNC_POS_POL, 35500000, 36, 72, 108, 1, 3, 42, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_640X480P60 V4L2_DV_BT_CEA_640X480P59_94
+#define V4L2_DV_BT_DMT_640X480P72 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(640, 480, 0, 0, 31500000, 24, 40, 128, 9, 3, 28, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_640X480P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(640, 480, 0, 0, 31500000, 16, 64, 120, 1, 3, 16, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_640X480P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(640, 480, 0, 0, 36000000, 56, 56, 80, 1, 3, 25, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_800X600P56 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(800, 600, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 36000000, 24, 72, 128, 1, 2, 22, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_800X600P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(800, 600, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 40000000, 40, 128, 88, 1, 4, 23, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_800X600P72 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(800, 600, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 50000000, 56, 120, 64, 37, 6, 23, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_800X600P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(800, 600, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 49500000, 16, 80, 160, 1, 3, 21, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_800X600P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(800, 600, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 56250000, 32, 64, 152, 1, 3, 27, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_800X600P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(800, 600, 0, V4L2_DV_HSYNC_POS_POL, 73250000, 48, 32, 80, 3, 4, 29, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_848X480P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(848, 480, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 33750000, 16, 112, 112, 6, 8, 23, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1024X768I43 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1024, 768, 1, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 44900000, 8, 176, 56, 0, 4, 20, 0, 4, 21, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1024X768P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1024, 768, 0, 0, 65000000, 24, 136, 160, 3, 6, 29, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1024X768P70 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1024, 768, 0, 0, 75000000, 24, 136, 144, 3, 6, 29, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1024X768P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1024, 768, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 78750000, 16, 96, 176, 1, 3, 28, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1024X768P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1024, 768, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 94500000, 48, 96, 208, 1, 3, 36, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1024X768P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1024, 768, 0, V4L2_DV_HSYNC_POS_POL, 115500000, 48, 32, 80, 3, 4, 38, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1152X864P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1152, 864, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 108000000, 64, 128, 256, 1, 3, 32, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X720P60 V4L2_DV_BT_CEA_1280X720P60
+#define V4L2_DV_BT_DMT_1280X768P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 768, 0, V4L2_DV_HSYNC_POS_POL, 68250000, 48, 32, 80, 3, 7, 12, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1280X768P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 768, 0, V4L2_DV_VSYNC_POS_POL, 79500000, 64, 128, 192, 3, 7, 20, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X768P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 768, 0, V4L2_DV_VSYNC_POS_POL, 102250000, 80, 128, 208, 3, 7, 27, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X768P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 768, 0, V4L2_DV_VSYNC_POS_POL, 117500000, 80, 136, 216, 3, 7, 31, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X768P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 768, 0, V4L2_DV_HSYNC_POS_POL, 140250000, 48, 32, 80, 3, 7, 35, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1280X800P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 800, 0, V4L2_DV_HSYNC_POS_POL, 71000000, 48, 32, 80, 3, 6, 14, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1280X800P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 800, 0, V4L2_DV_VSYNC_POS_POL, 83500000, 72, 128, 200, 3, 6, 22, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X800P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 800, 0, V4L2_DV_VSYNC_POS_POL, 106500000, 80, 128, 208, 3, 6, 29, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X800P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 800, 0, V4L2_DV_VSYNC_POS_POL, 122500000, 80, 136, 216, 3, 6, 34, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X800P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 800, 0, V4L2_DV_HSYNC_POS_POL, 146250000, 48, 32, 80, 3, 6, 38, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1280X960P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 960, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 108000000, 96, 112, 312, 1, 3, 36, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X960P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 960, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 148500000, 64, 160, 224, 1, 3, 47, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X960P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 960, 0, V4L2_DV_HSYNC_POS_POL, 175500000, 48, 32, 80, 3, 4, 50, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1280X1024P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 1024, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 108000000, 48, 112, 248, 1, 3, 38, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X1024P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 1024, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 135000000, 16, 144, 248, 1, 3, 38, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X1024P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 1024, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 157500000, 64, 160, 224, 1, 3, 44, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1280X1024P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1280, 1024, 0, V4L2_DV_HSYNC_POS_POL, 187250000, 48, 32, 80, 3, 7, 50, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1360X768P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1360, 768, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 85500000, 64, 112, 256, 3, 6, 18, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1360X768P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1360, 768, 0, V4L2_DV_HSYNC_POS_POL, 148250000, 48, 32, 80, 3, 5, 37, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1366X768P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1366, 768, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 85500000, 70, 143, 213, 3, 3, 24, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1366X768P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1366, 768, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 72000000, 14, 56, 64, 1, 3, 28, 0, 0, 0, V4L2_DV_BT_STD_DMT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1400X1050P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1400, 1050, 0, V4L2_DV_HSYNC_POS_POL, 101000000, 48, 32, 80, 3, 4, 23, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1400X1050P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1400, 1050, 0, V4L2_DV_VSYNC_POS_POL, 121750000, 88, 144, 232, 3, 4, 32, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1400X1050P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1400, 1050, 0, V4L2_DV_VSYNC_POS_POL, 156000000, 104, 144, 248, 3, 4, 42, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1400X1050P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1400, 1050, 0, V4L2_DV_VSYNC_POS_POL, 179500000, 104, 152, 256, 3, 4, 48, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1400X1050P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1400, 1050, 0, V4L2_DV_HSYNC_POS_POL, 208000000, 48, 32, 80, 3, 4, 55, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1440X900P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1440, 900, 0, V4L2_DV_HSYNC_POS_POL, 88750000, 48, 32, 80, 3, 6, 17, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1440X900P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1440, 900, 0, V4L2_DV_VSYNC_POS_POL, 106500000, 80, 152, 232, 3, 6, 25, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1440X900P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1440, 900, 0, V4L2_DV_VSYNC_POS_POL, 136750000, 96, 152, 248, 3, 6, 33, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1440X900P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1440, 900, 0, V4L2_DV_VSYNC_POS_POL, 157000000, 104, 152, 256, 3, 6, 39, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1440X900P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1440, 900, 0, V4L2_DV_HSYNC_POS_POL, 182750000, 48, 32, 80, 3, 6, 44, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1600X900P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1600, 900, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 108000000, 24, 80, 96, 1, 3, 96, 0, 0, 0, V4L2_DV_BT_STD_DMT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1600X1200P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1600, 1200, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 162000000, 64, 192, 304, 1, 3, 46, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1600X1200P65 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1600, 1200, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 175500000, 64, 192, 304, 1, 3, 46, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1600X1200P70 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1600, 1200, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 189000000, 64, 192, 304, 1, 3, 46, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1600X1200P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1600, 1200, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 202500000, 64, 192, 304, 1, 3, 46, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1600X1200P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1600, 1200, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 229500000, 64, 192, 304, 1, 3, 46, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1600X1200P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1600, 1200, 0, V4L2_DV_HSYNC_POS_POL, 268250000, 48, 32, 80, 3, 4, 64, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1680X1050P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1680, 1050, 0, V4L2_DV_HSYNC_POS_POL, 119000000, 48, 32, 80, 3, 6, 21, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1680X1050P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1680, 1050, 0, V4L2_DV_VSYNC_POS_POL, 146250000, 104, 176, 280, 3, 6, 30, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1680X1050P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1680, 1050, 0, V4L2_DV_VSYNC_POS_POL, 187000000, 120, 176, 296, 3, 6, 40, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1680X1050P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1680, 1050, 0, V4L2_DV_VSYNC_POS_POL, 214750000, 128, 176, 304, 3, 6, 46, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1680X1050P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1680, 1050, 0, V4L2_DV_HSYNC_POS_POL, 245500000, 48, 32, 80, 3, 6, 53, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1792X1344P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1792, 1344, 0, V4L2_DV_VSYNC_POS_POL, 204750000, 128, 200, 328, 1, 3, 46, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1792X1344P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1792, 1344, 0, V4L2_DV_VSYNC_POS_POL, 261000000, 96, 216, 352, 1, 3, 69, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1792X1344P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1792, 1344, 0, V4L2_DV_HSYNC_POS_POL, 333250000, 48, 32, 80, 3, 4, 72, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1856X1392P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1856, 1392, 0, V4L2_DV_VSYNC_POS_POL, 218250000, 96, 224, 352, 1, 3, 43, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1856X1392P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1856, 1392, 0, V4L2_DV_VSYNC_POS_POL, 288000000, 128, 224, 352, 1, 3, 104, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1856X1392P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1856, 1392, 0, V4L2_DV_HSYNC_POS_POL, 356500000, 48, 32, 80, 3, 4, 75, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1920X1080P60 V4L2_DV_BT_CEA_1920X1080P60
+#define V4L2_DV_BT_DMT_1920X1200P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1200, 0, V4L2_DV_HSYNC_POS_POL, 154000000, 48, 32, 80, 3, 6, 26, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1920X1200P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1200, 0, V4L2_DV_VSYNC_POS_POL, 193250000, 136, 200, 336, 3, 6, 36, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1920X1200P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1200, 0, V4L2_DV_VSYNC_POS_POL, 245250000, 136, 208, 344, 3, 6, 46, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1920X1200P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1200, 0, V4L2_DV_VSYNC_POS_POL, 281250000, 144, 208, 352, 3, 6, 53, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_1920X1200P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1200, 0, V4L2_DV_HSYNC_POS_POL, 317000000, 48, 32, 80, 3, 6, 62, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_1920X1440P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1440, 0, V4L2_DV_VSYNC_POS_POL, 234000000, 128, 208, 344, 1, 3, 56, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1920X1440P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1440, 0, V4L2_DV_VSYNC_POS_POL, 297000000, 144, 224, 352, 1, 3, 56, 0, 0, 0, V4L2_DV_BT_STD_DMT, 0) \
+}
+#define V4L2_DV_BT_DMT_1920X1440P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(1920, 1440, 0, V4L2_DV_HSYNC_POS_POL, 380500000, 48, 32, 80, 3, 4, 78, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_2048X1152P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(2048, 1152, 0, V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, 162000000, 26, 80, 96, 1, 3, 44, 0, 0, 0, V4L2_DV_BT_STD_DMT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_2560X1600P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(2560, 1600, 0, V4L2_DV_HSYNC_POS_POL, 268500000, 48, 32, 80, 3, 6, 37, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_2560X1600P60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(2560, 1600, 0, V4L2_DV_VSYNC_POS_POL, 348500000, 192, 280, 472, 3, 6, 49, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_2560X1600P75 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(2560, 1600, 0, V4L2_DV_VSYNC_POS_POL, 443250000, 208, 280, 488, 3, 6, 63, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_2560X1600P85 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(2560, 1600, 0, V4L2_DV_VSYNC_POS_POL, 505250000, 208, 280, 488, 3, 6, 73, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, 0) \
+}
+#define V4L2_DV_BT_DMT_2560X1600P120_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(2560, 1600, 0, V4L2_DV_HSYNC_POS_POL, 552750000, 48, 32, 80, 3, 6, 85, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_4096X2160P60_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL, 556744000, 8, 32, 40, 48, 8, 6, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_DMT_4096X2160P59_94_RB {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(4096, 2160, 0, V4L2_DV_HSYNC_POS_POL, 556188000, 8, 32, 40, 48, 8, 6, 0, 0, 0, V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CVT, V4L2_DV_FL_REDUCED_BLANKING) \
+}
+#define V4L2_DV_BT_SDI_720X487I60 {.type = V4L2_DV_BT_656_1120, V4L2_INIT_BT_TIMINGS(720, 487, 1, V4L2_DV_HSYNC_POS_POL, 13500000, 16, 121, 0, 0, 19, 0, 0, 19, 0, V4L2_DV_BT_STD_SDI, V4L2_DV_FL_FIRST_FIELD_EXTRA_LINE) \
+}
+#endif
diff --git a/i686-linux-musl/include/linux/v4l2-mediabus.h b/i686-linux-musl/include/linux/v4l2-mediabus.h
new file mode 100644
index 0000000..157c0ac
--- /dev/null
+++ b/i686-linux-musl/include/linux/v4l2-mediabus.h
@@ -0,0 +1,119 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_V4L2_MEDIABUS_H
+#define __LINUX_V4L2_MEDIABUS_H
+#include <linux/media-bus-format.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+#define V4L2_MBUS_FRAMEFMT_SET_CSC 0x0001
+struct v4l2_mbus_framefmt {
+  __u32 width;
+  __u32 height;
+  __u32 code;
+  __u32 field;
+  __u32 colorspace;
+  union {
+    __u16 ycbcr_enc;
+    __u16 hsv_enc;
+  };
+  __u16 quantization;
+  __u16 xfer_func;
+  __u16 flags;
+  __u16 reserved[10];
+};
+#define V4L2_MBUS_FROM_MEDIA_BUS_FMT(name) V4L2_MBUS_FMT_ ##name = MEDIA_BUS_FMT_ ##name
+enum v4l2_mbus_pixelcode {
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(FIXED),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB444_2X8_PADHI_BE),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB444_2X8_PADHI_LE),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB555_2X8_PADHI_BE),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB555_2X8_PADHI_LE),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(BGR565_2X8_BE),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(BGR565_2X8_LE),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB565_2X8_BE),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB565_2X8_LE),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB666_1X18),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_1X24),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_2X12_BE),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_2X12_LE),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(ARGB8888_1X32),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y8_1X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(UV8_1X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_1_5X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_1_5X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_1_5X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_1_5X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_2X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_2X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_2X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_2X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y10_1X10),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY10_2X10),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY10_2X10),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV10_2X10),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU10_2X10),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y12_1X12),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_1X16),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_1X16),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_1X16),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_1X16),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(YDYUYDYV8_1X16),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY10_1X20),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY10_1X20),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV10_1X20),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU10_1X20),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUV10_1X30),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(AYUV8_1X32),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY12_2X12),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY12_2X12),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV12_2X12),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU12_2X12),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY12_1X24),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY12_1X24),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV12_1X24),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU12_1X24),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR8_1X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG8_1X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG8_1X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB8_1X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_ALAW8_1X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_ALAW8_1X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_ALAW8_1X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_ALAW8_1X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_DPCM8_1X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_DPCM8_1X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_DPCM8_1X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_DPCM8_1X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADHI_BE),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADHI_LE),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADLO_BE),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADLO_LE),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_1X10),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_1X10),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_1X10),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_1X10),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR12_1X12),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG12_1X12),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG12_1X12),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB12_1X12),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(JPEG_1X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(S5C_UYVY_JPEG_1X8),
+  V4L2_MBUS_FROM_MEDIA_BUS_FMT(AHSV8888_1X32),
+};
+#endif
diff --git a/i686-linux-musl/include/linux/v4l2-subdev.h b/i686-linux-musl/include/linux/v4l2-subdev.h
new file mode 100644
index 0000000..2954dc3
--- /dev/null
+++ b/i686-linux-musl/include/linux/v4l2-subdev.h
@@ -0,0 +1,118 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_V4L2_SUBDEV_H
+#define __LINUX_V4L2_SUBDEV_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/v4l2-common.h>
+#include <linux/v4l2-mediabus.h>
+enum v4l2_subdev_format_whence {
+  V4L2_SUBDEV_FORMAT_TRY = 0,
+  V4L2_SUBDEV_FORMAT_ACTIVE = 1,
+};
+struct v4l2_subdev_format {
+  __u32 which;
+  __u32 pad;
+  struct v4l2_mbus_framefmt format;
+  __u32 reserved[8];
+};
+struct v4l2_subdev_crop {
+  __u32 which;
+  __u32 pad;
+  struct v4l2_rect rect;
+  __u32 reserved[8];
+};
+#define V4L2_SUBDEV_MBUS_CODE_CSC_COLORSPACE 0x00000001
+#define V4L2_SUBDEV_MBUS_CODE_CSC_XFER_FUNC 0x00000002
+#define V4L2_SUBDEV_MBUS_CODE_CSC_YCBCR_ENC 0x00000004
+#define V4L2_SUBDEV_MBUS_CODE_CSC_HSV_ENC V4L2_SUBDEV_MBUS_CODE_CSC_YCBCR_ENC
+#define V4L2_SUBDEV_MBUS_CODE_CSC_QUANTIZATION 0x00000008
+struct v4l2_subdev_mbus_code_enum {
+  __u32 pad;
+  __u32 index;
+  __u32 code;
+  __u32 which;
+  __u32 flags;
+  __u32 reserved[7];
+};
+struct v4l2_subdev_frame_size_enum {
+  __u32 index;
+  __u32 pad;
+  __u32 code;
+  __u32 min_width;
+  __u32 max_width;
+  __u32 min_height;
+  __u32 max_height;
+  __u32 which;
+  __u32 reserved[8];
+};
+struct v4l2_subdev_frame_interval {
+  __u32 pad;
+  struct v4l2_fract interval;
+  __u32 reserved[9];
+};
+struct v4l2_subdev_frame_interval_enum {
+  __u32 index;
+  __u32 pad;
+  __u32 code;
+  __u32 width;
+  __u32 height;
+  struct v4l2_fract interval;
+  __u32 which;
+  __u32 reserved[8];
+};
+struct v4l2_subdev_selection {
+  __u32 which;
+  __u32 pad;
+  __u32 target;
+  __u32 flags;
+  struct v4l2_rect r;
+  __u32 reserved[8];
+};
+struct v4l2_subdev_capability {
+  __u32 version;
+  __u32 capabilities;
+  __u32 reserved[14];
+};
+#define V4L2_SUBDEV_CAP_RO_SUBDEV 0x00000001
+#define v4l2_subdev_edid v4l2_edid
+#define VIDIOC_SUBDEV_QUERYCAP _IOR('V', 0, struct v4l2_subdev_capability)
+#define VIDIOC_SUBDEV_G_FMT _IOWR('V', 4, struct v4l2_subdev_format)
+#define VIDIOC_SUBDEV_S_FMT _IOWR('V', 5, struct v4l2_subdev_format)
+#define VIDIOC_SUBDEV_G_FRAME_INTERVAL _IOWR('V', 21, struct v4l2_subdev_frame_interval)
+#define VIDIOC_SUBDEV_S_FRAME_INTERVAL _IOWR('V', 22, struct v4l2_subdev_frame_interval)
+#define VIDIOC_SUBDEV_ENUM_MBUS_CODE _IOWR('V', 2, struct v4l2_subdev_mbus_code_enum)
+#define VIDIOC_SUBDEV_ENUM_FRAME_SIZE _IOWR('V', 74, struct v4l2_subdev_frame_size_enum)
+#define VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL _IOWR('V', 75, struct v4l2_subdev_frame_interval_enum)
+#define VIDIOC_SUBDEV_G_CROP _IOWR('V', 59, struct v4l2_subdev_crop)
+#define VIDIOC_SUBDEV_S_CROP _IOWR('V', 60, struct v4l2_subdev_crop)
+#define VIDIOC_SUBDEV_G_SELECTION _IOWR('V', 61, struct v4l2_subdev_selection)
+#define VIDIOC_SUBDEV_S_SELECTION _IOWR('V', 62, struct v4l2_subdev_selection)
+#define VIDIOC_SUBDEV_G_STD _IOR('V', 23, v4l2_std_id)
+#define VIDIOC_SUBDEV_S_STD _IOW('V', 24, v4l2_std_id)
+#define VIDIOC_SUBDEV_ENUMSTD _IOWR('V', 25, struct v4l2_standard)
+#define VIDIOC_SUBDEV_G_EDID _IOWR('V', 40, struct v4l2_edid)
+#define VIDIOC_SUBDEV_S_EDID _IOWR('V', 41, struct v4l2_edid)
+#define VIDIOC_SUBDEV_QUERYSTD _IOR('V', 63, v4l2_std_id)
+#define VIDIOC_SUBDEV_S_DV_TIMINGS _IOWR('V', 87, struct v4l2_dv_timings)
+#define VIDIOC_SUBDEV_G_DV_TIMINGS _IOWR('V', 88, struct v4l2_dv_timings)
+#define VIDIOC_SUBDEV_ENUM_DV_TIMINGS _IOWR('V', 98, struct v4l2_enum_dv_timings)
+#define VIDIOC_SUBDEV_QUERY_DV_TIMINGS _IOR('V', 99, struct v4l2_dv_timings)
+#define VIDIOC_SUBDEV_DV_TIMINGS_CAP _IOWR('V', 100, struct v4l2_dv_timings_cap)
+#endif
diff --git a/i686-linux-musl/include/linux/vbox_err.h b/i686-linux-musl/include/linux/vbox_err.h
new file mode 100644
index 0000000..dec3574
--- /dev/null
+++ b/i686-linux-musl/include/linux/vbox_err.h
@@ -0,0 +1,157 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_VBOX_ERR_H__
+#define __UAPI_VBOX_ERR_H__
+#define VINF_SUCCESS 0
+#define VERR_GENERAL_FAILURE (- 1)
+#define VERR_INVALID_PARAMETER (- 2)
+#define VERR_INVALID_MAGIC (- 3)
+#define VERR_INVALID_HANDLE (- 4)
+#define VERR_LOCK_FAILED (- 5)
+#define VERR_INVALID_POINTER (- 6)
+#define VERR_IDT_FAILED (- 7)
+#define VERR_NO_MEMORY (- 8)
+#define VERR_ALREADY_LOADED (- 9)
+#define VERR_PERMISSION_DENIED (- 10)
+#define VERR_VERSION_MISMATCH (- 11)
+#define VERR_NOT_IMPLEMENTED (- 12)
+#define VERR_INVALID_FLAGS (- 13)
+#define VERR_NOT_EQUAL (- 18)
+#define VERR_NOT_SYMLINK (- 19)
+#define VERR_NO_TMP_MEMORY (- 20)
+#define VERR_INVALID_FMODE (- 21)
+#define VERR_WRONG_ORDER (- 22)
+#define VERR_NO_TLS_FOR_SELF (- 23)
+#define VERR_FAILED_TO_SET_SELF_TLS (- 24)
+#define VERR_NO_CONT_MEMORY (- 26)
+#define VERR_NO_PAGE_MEMORY (- 27)
+#define VERR_THREAD_IS_DEAD (- 29)
+#define VERR_THREAD_NOT_WAITABLE (- 30)
+#define VERR_PAGE_TABLE_NOT_PRESENT (- 31)
+#define VERR_INVALID_CONTEXT (- 32)
+#define VERR_TIMER_BUSY (- 33)
+#define VERR_ADDRESS_CONFLICT (- 34)
+#define VERR_UNRESOLVED_ERROR (- 35)
+#define VERR_INVALID_FUNCTION (- 36)
+#define VERR_NOT_SUPPORTED (- 37)
+#define VERR_ACCESS_DENIED (- 38)
+#define VERR_INTERRUPTED (- 39)
+#define VERR_TIMEOUT (- 40)
+#define VERR_BUFFER_OVERFLOW (- 41)
+#define VERR_TOO_MUCH_DATA (- 42)
+#define VERR_MAX_THRDS_REACHED (- 43)
+#define VERR_MAX_PROCS_REACHED (- 44)
+#define VERR_SIGNAL_REFUSED (- 45)
+#define VERR_SIGNAL_PENDING (- 46)
+#define VERR_SIGNAL_INVALID (- 47)
+#define VERR_STATE_CHANGED (- 48)
+#define VERR_INVALID_UUID_FORMAT (- 49)
+#define VERR_PROCESS_NOT_FOUND (- 50)
+#define VERR_PROCESS_RUNNING (- 51)
+#define VERR_TRY_AGAIN (- 52)
+#define VERR_PARSE_ERROR (- 53)
+#define VERR_OUT_OF_RANGE (- 54)
+#define VERR_NUMBER_TOO_BIG (- 55)
+#define VERR_NO_DIGITS (- 56)
+#define VERR_NEGATIVE_UNSIGNED (- 57)
+#define VERR_NO_TRANSLATION (- 58)
+#define VERR_NOT_FOUND (- 78)
+#define VERR_INVALID_STATE (- 79)
+#define VERR_OUT_OF_RESOURCES (- 80)
+#define VERR_FILE_NOT_FOUND (- 102)
+#define VERR_PATH_NOT_FOUND (- 103)
+#define VERR_INVALID_NAME (- 104)
+#define VERR_ALREADY_EXISTS (- 105)
+#define VERR_TOO_MANY_OPEN_FILES (- 106)
+#define VERR_SEEK (- 107)
+#define VERR_NEGATIVE_SEEK (- 108)
+#define VERR_SEEK_ON_DEVICE (- 109)
+#define VERR_EOF (- 110)
+#define VERR_READ_ERROR (- 111)
+#define VERR_WRITE_ERROR (- 112)
+#define VERR_WRITE_PROTECT (- 113)
+#define VERR_SHARING_VIOLATION (- 114)
+#define VERR_FILE_LOCK_FAILED (- 115)
+#define VERR_FILE_LOCK_VIOLATION (- 116)
+#define VERR_CANT_CREATE (- 117)
+#define VERR_CANT_DELETE_DIRECTORY (- 118)
+#define VERR_NOT_SAME_DEVICE (- 119)
+#define VERR_FILENAME_TOO_LONG (- 120)
+#define VERR_MEDIA_NOT_PRESENT (- 121)
+#define VERR_MEDIA_NOT_RECOGNIZED (- 122)
+#define VERR_FILE_NOT_LOCKED (- 123)
+#define VERR_FILE_LOCK_LOST (- 124)
+#define VERR_DIR_NOT_EMPTY (- 125)
+#define VERR_NOT_A_DIRECTORY (- 126)
+#define VERR_IS_A_DIRECTORY (- 127)
+#define VERR_FILE_TOO_BIG (- 128)
+#define VERR_NET_IO_ERROR (- 400)
+#define VERR_NET_OUT_OF_RESOURCES (- 401)
+#define VERR_NET_HOST_NOT_FOUND (- 402)
+#define VERR_NET_PATH_NOT_FOUND (- 403)
+#define VERR_NET_PRINT_ERROR (- 404)
+#define VERR_NET_NO_NETWORK (- 405)
+#define VERR_NET_NOT_UNIQUE_NAME (- 406)
+#define VERR_NET_IN_PROGRESS (- 436)
+#define VERR_NET_ALREADY_IN_PROGRESS (- 437)
+#define VERR_NET_NOT_SOCKET (- 438)
+#define VERR_NET_DEST_ADDRESS_REQUIRED (- 439)
+#define VERR_NET_MSG_SIZE (- 440)
+#define VERR_NET_PROTOCOL_TYPE (- 441)
+#define VERR_NET_PROTOCOL_NOT_AVAILABLE (- 442)
+#define VERR_NET_PROTOCOL_NOT_SUPPORTED (- 443)
+#define VERR_NET_SOCKET_TYPE_NOT_SUPPORTED (- 444)
+#define VERR_NET_OPERATION_NOT_SUPPORTED (- 445)
+#define VERR_NET_PROTOCOL_FAMILY_NOT_SUPPORTED (- 446)
+#define VERR_NET_ADDRESS_FAMILY_NOT_SUPPORTED (- 447)
+#define VERR_NET_ADDRESS_IN_USE (- 448)
+#define VERR_NET_ADDRESS_NOT_AVAILABLE (- 449)
+#define VERR_NET_DOWN (- 450)
+#define VERR_NET_UNREACHABLE (- 451)
+#define VERR_NET_CONNECTION_RESET (- 452)
+#define VERR_NET_CONNECTION_ABORTED (- 453)
+#define VERR_NET_CONNECTION_RESET_BY_PEER (- 454)
+#define VERR_NET_NO_BUFFER_SPACE (- 455)
+#define VERR_NET_ALREADY_CONNECTED (- 456)
+#define VERR_NET_NOT_CONNECTED (- 457)
+#define VERR_NET_SHUTDOWN (- 458)
+#define VERR_NET_TOO_MANY_REFERENCES (- 459)
+#define VERR_NET_CONNECTION_TIMED_OUT (- 460)
+#define VERR_NET_CONNECTION_REFUSED (- 461)
+#define VERR_NET_HOST_DOWN (- 464)
+#define VERR_NET_HOST_UNREACHABLE (- 465)
+#define VERR_NET_PROTOCOL_ERROR (- 466)
+#define VERR_NET_INCOMPLETE_TX_PACKET (- 467)
+#define VERR_RESOURCE_BUSY (- 138)
+#define VERR_DISK_FULL (- 152)
+#define VERR_TOO_MANY_SYMLINKS (- 156)
+#define VERR_NO_MORE_FILES (- 201)
+#define VERR_INTERNAL_ERROR (- 225)
+#define VERR_INTERNAL_ERROR_2 (- 226)
+#define VERR_INTERNAL_ERROR_3 (- 227)
+#define VERR_INTERNAL_ERROR_4 (- 228)
+#define VERR_DEV_IO_ERROR (- 250)
+#define VERR_IO_BAD_LENGTH (- 255)
+#define VERR_BROKEN_PIPE (- 301)
+#define VERR_NO_DATA (- 304)
+#define VERR_SEM_DESTROYED (- 363)
+#define VERR_DEADLOCK (- 365)
+#define VERR_BAD_EXE_FORMAT (- 608)
+#define VINF_HGCM_ASYNC_EXECUTE (2903)
+#endif
diff --git a/i686-linux-musl/include/linux/vbox_vmmdev_types.h b/i686-linux-musl/include/linux/vbox_vmmdev_types.h
new file mode 100644
index 0000000..009f9a6
--- /dev/null
+++ b/i686-linux-musl/include/linux/vbox_vmmdev_types.h
@@ -0,0 +1,194 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_VBOX_VMMDEV_TYPES_H__
+#define __UAPI_VBOX_VMMDEV_TYPES_H__
+#include <asm/bitsperlong.h>
+#include <linux/types.h>
+#define VMMDEV_ASSERT_SIZE(type,size) typedef char type ##_asrt_size[1 - 2 * ! ! (sizeof(struct type) != (size))]
+enum vmmdev_request_type {
+  VMMDEVREQ_INVALID_REQUEST = 0,
+  VMMDEVREQ_GET_MOUSE_STATUS = 1,
+  VMMDEVREQ_SET_MOUSE_STATUS = 2,
+  VMMDEVREQ_SET_POINTER_SHAPE = 3,
+  VMMDEVREQ_GET_HOST_VERSION = 4,
+  VMMDEVREQ_IDLE = 5,
+  VMMDEVREQ_GET_HOST_TIME = 10,
+  VMMDEVREQ_GET_HYPERVISOR_INFO = 20,
+  VMMDEVREQ_SET_HYPERVISOR_INFO = 21,
+  VMMDEVREQ_REGISTER_PATCH_MEMORY = 22,
+  VMMDEVREQ_DEREGISTER_PATCH_MEMORY = 23,
+  VMMDEVREQ_SET_POWER_STATUS = 30,
+  VMMDEVREQ_ACKNOWLEDGE_EVENTS = 41,
+  VMMDEVREQ_CTL_GUEST_FILTER_MASK = 42,
+  VMMDEVREQ_REPORT_GUEST_INFO = 50,
+  VMMDEVREQ_REPORT_GUEST_INFO2 = 58,
+  VMMDEVREQ_REPORT_GUEST_STATUS = 59,
+  VMMDEVREQ_REPORT_GUEST_USER_STATE = 74,
+  VMMDEVREQ_GET_DISPLAY_CHANGE_REQ = 51,
+  VMMDEVREQ_VIDEMODE_SUPPORTED = 52,
+  VMMDEVREQ_GET_HEIGHT_REDUCTION = 53,
+  VMMDEVREQ_GET_DISPLAY_CHANGE_REQ2 = 54,
+  VMMDEVREQ_REPORT_GUEST_CAPABILITIES = 55,
+  VMMDEVREQ_SET_GUEST_CAPABILITIES = 56,
+  VMMDEVREQ_VIDEMODE_SUPPORTED2 = 57,
+  VMMDEVREQ_GET_DISPLAY_CHANGE_REQEX = 80,
+  VMMDEVREQ_GET_DISPLAY_CHANGE_REQ_MULTI = 81,
+  VMMDEVREQ_HGCM_CONNECT = 60,
+  VMMDEVREQ_HGCM_DISCONNECT = 61,
+  VMMDEVREQ_HGCM_CALL32 = 62,
+  VMMDEVREQ_HGCM_CALL64 = 63,
+  VMMDEVREQ_HGCM_CANCEL = 64,
+  VMMDEVREQ_HGCM_CANCEL2 = 65,
+  VMMDEVREQ_VIDEO_ACCEL_ENABLE = 70,
+  VMMDEVREQ_VIDEO_ACCEL_FLUSH = 71,
+  VMMDEVREQ_VIDEO_SET_VISIBLE_REGION = 72,
+  VMMDEVREQ_GET_SEAMLESS_CHANGE_REQ = 73,
+  VMMDEVREQ_QUERY_CREDENTIALS = 100,
+  VMMDEVREQ_REPORT_CREDENTIALS_JUDGEMENT = 101,
+  VMMDEVREQ_REPORT_GUEST_STATS = 110,
+  VMMDEVREQ_GET_MEMBALLOON_CHANGE_REQ = 111,
+  VMMDEVREQ_GET_STATISTICS_CHANGE_REQ = 112,
+  VMMDEVREQ_CHANGE_MEMBALLOON = 113,
+  VMMDEVREQ_GET_VRDPCHANGE_REQ = 150,
+  VMMDEVREQ_LOG_STRING = 200,
+  VMMDEVREQ_GET_CPU_HOTPLUG_REQ = 210,
+  VMMDEVREQ_SET_CPU_HOTPLUG_STATUS = 211,
+  VMMDEVREQ_REGISTER_SHARED_MODULE = 212,
+  VMMDEVREQ_UNREGISTER_SHARED_MODULE = 213,
+  VMMDEVREQ_CHECK_SHARED_MODULES = 214,
+  VMMDEVREQ_GET_PAGE_SHARING_STATUS = 215,
+  VMMDEVREQ_DEBUG_IS_PAGE_SHARED = 216,
+  VMMDEVREQ_GET_SESSION_ID = 217,
+  VMMDEVREQ_WRITE_COREDUMP = 218,
+  VMMDEVREQ_GUEST_HEARTBEAT = 219,
+  VMMDEVREQ_HEARTBEAT_CONFIGURE = 220,
+  VMMDEVREQ_NT_BUG_CHECK = 221,
+  VMMDEVREQ_VIDEO_UPDATE_MONITOR_POSITIONS = 222,
+  VMMDEVREQ_SIZEHACK = 0x7fffffff
+};
+#if __BITS_PER_LONG == 64
+#define VMMDEVREQ_HGCM_CALL VMMDEVREQ_HGCM_CALL64
+#else
+#define VMMDEVREQ_HGCM_CALL VMMDEVREQ_HGCM_CALL32
+#endif
+#define VMMDEV_REQUESTOR_USR_NOT_GIVEN 0x00000000
+#define VMMDEV_REQUESTOR_USR_DRV 0x00000001
+#define VMMDEV_REQUESTOR_USR_DRV_OTHER 0x00000002
+#define VMMDEV_REQUESTOR_USR_ROOT 0x00000003
+#define VMMDEV_REQUESTOR_USR_USER 0x00000006
+#define VMMDEV_REQUESTOR_USR_MASK 0x00000007
+#define VMMDEV_REQUESTOR_KERNEL 0x00000000
+#define VMMDEV_REQUESTOR_USERMODE 0x00000008
+#define VMMDEV_REQUESTOR_MODE_MASK 0x00000008
+#define VMMDEV_REQUESTOR_CON_DONT_KNOW 0x00000000
+#define VMMDEV_REQUESTOR_CON_NO 0x00000010
+#define VMMDEV_REQUESTOR_CON_YES 0x00000020
+#define VMMDEV_REQUESTOR_CON_MASK 0x00000030
+#define VMMDEV_REQUESTOR_GRP_VBOX 0x00000080
+#define VMMDEV_REQUESTOR_TRUST_NOT_GIVEN 0x00000000
+#define VMMDEV_REQUESTOR_TRUST_UNTRUSTED 0x00001000
+#define VMMDEV_REQUESTOR_TRUST_LOW 0x00002000
+#define VMMDEV_REQUESTOR_TRUST_MEDIUM 0x00003000
+#define VMMDEV_REQUESTOR_TRUST_MEDIUM_PLUS 0x00004000
+#define VMMDEV_REQUESTOR_TRUST_HIGH 0x00005000
+#define VMMDEV_REQUESTOR_TRUST_SYSTEM 0x00006000
+#define VMMDEV_REQUESTOR_TRUST_PROTECTED 0x00007000
+#define VMMDEV_REQUESTOR_TRUST_MASK 0x00007000
+#define VMMDEV_REQUESTOR_USER_DEVICE 0x00008000
+enum vmmdev_hgcm_service_location_type {
+  VMMDEV_HGCM_LOC_INVALID = 0,
+  VMMDEV_HGCM_LOC_LOCALHOST = 1,
+  VMMDEV_HGCM_LOC_LOCALHOST_EXISTING = 2,
+  VMMDEV_HGCM_LOC_SIZEHACK = 0x7fffffff
+};
+struct vmmdev_hgcm_service_location_localhost {
+  char service_name[128];
+};
+struct vmmdev_hgcm_service_location {
+  enum vmmdev_hgcm_service_location_type type;
+  union {
+    struct vmmdev_hgcm_service_location_localhost localhost;
+  } u;
+};
+enum vmmdev_hgcm_function_parameter_type {
+  VMMDEV_HGCM_PARM_TYPE_INVALID = 0,
+  VMMDEV_HGCM_PARM_TYPE_32BIT = 1,
+  VMMDEV_HGCM_PARM_TYPE_64BIT = 2,
+  VMMDEV_HGCM_PARM_TYPE_PHYSADDR = 3,
+  VMMDEV_HGCM_PARM_TYPE_LINADDR = 4,
+  VMMDEV_HGCM_PARM_TYPE_LINADDR_IN = 5,
+  VMMDEV_HGCM_PARM_TYPE_LINADDR_OUT = 6,
+  VMMDEV_HGCM_PARM_TYPE_LINADDR_KERNEL = 7,
+  VMMDEV_HGCM_PARM_TYPE_LINADDR_KERNEL_IN = 8,
+  VMMDEV_HGCM_PARM_TYPE_LINADDR_KERNEL_OUT = 9,
+  VMMDEV_HGCM_PARM_TYPE_PAGELIST = 10,
+  VMMDEV_HGCM_PARM_TYPE_SIZEHACK = 0x7fffffff
+};
+struct vmmdev_hgcm_function_parameter32 {
+  enum vmmdev_hgcm_function_parameter_type type;
+  union {
+    __u32 value32;
+    __u64 value64;
+    struct {
+      __u32 size;
+      union {
+        __u32 phys_addr;
+        __u32 linear_addr;
+      } u;
+    } pointer;
+    struct {
+      __u32 size;
+      __u32 offset;
+    } page_list;
+  } u;
+} __packed;
+struct vmmdev_hgcm_function_parameter64 {
+  enum vmmdev_hgcm_function_parameter_type type;
+  union {
+    __u32 value32;
+    __u64 value64;
+    struct {
+      __u32 size;
+      union {
+        __u64 phys_addr;
+        __u64 linear_addr;
+      } u;
+    } __packed pointer;
+    struct {
+      __u32 size;
+      __u32 offset;
+    } page_list;
+  } __packed u;
+} __packed;
+#if __BITS_PER_LONG == 64
+#define vmmdev_hgcm_function_parameter vmmdev_hgcm_function_parameter64
+#else
+#define vmmdev_hgcm_function_parameter vmmdev_hgcm_function_parameter32
+#endif
+#define VMMDEV_HGCM_F_PARM_DIRECTION_NONE 0x00000000U
+#define VMMDEV_HGCM_F_PARM_DIRECTION_TO_HOST 0x00000001U
+#define VMMDEV_HGCM_F_PARM_DIRECTION_FROM_HOST 0x00000002U
+#define VMMDEV_HGCM_F_PARM_DIRECTION_BOTH 0x00000003U
+struct vmmdev_hgcm_pagelist {
+  __u32 flags;
+  __u16 offset_first_page;
+  __u16 page_count;
+  __u64 pages[1];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/vboxguest.h b/i686-linux-musl/include/linux/vboxguest.h
new file mode 100644
index 0000000..342c020
--- /dev/null
+++ b/i686-linux-musl/include/linux/vboxguest.h
@@ -0,0 +1,174 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_VBOXGUEST_H__
+#define __UAPI_VBOXGUEST_H__
+#include <asm/bitsperlong.h>
+#include <linux/ioctl.h>
+#include <linux/vbox_err.h>
+#include <linux/vbox_vmmdev_types.h>
+#define VBG_IOCTL_HDR_VERSION 0x10001
+#define VBG_IOCTL_HDR_TYPE_DEFAULT 0
+struct vbg_ioctl_hdr {
+  __u32 size_in;
+  __u32 version;
+  __u32 type;
+  __s32 rc;
+  __u32 size_out;
+  __u32 reserved;
+};
+#define VBG_IOC_VERSION 0x00010000u
+struct vbg_ioctl_driver_version_info {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      __u32 req_version;
+      __u32 min_version;
+      __u32 reserved1;
+      __u32 reserved2;
+    } in;
+    struct {
+      __u32 session_version;
+      __u32 driver_version;
+      __u32 driver_revision;
+      __u32 reserved1;
+      __u32 reserved2;
+    } out;
+  } u;
+};
+#define VBG_IOCTL_DRIVER_VERSION_INFO _IOWR('V', 0, struct vbg_ioctl_driver_version_info)
+#define VBG_IOCTL_VMMDEV_REQUEST(s) _IOC(_IOC_READ | _IOC_WRITE, 'V', 2, s)
+#define VBG_IOCTL_VMMDEV_REQUEST_BIG _IO('V', 3)
+struct vbg_ioctl_hgcm_connect {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      struct vmmdev_hgcm_service_location loc;
+    } in;
+    struct {
+      __u32 client_id;
+    } out;
+  } u;
+};
+#define VBG_IOCTL_HGCM_CONNECT _IOWR('V', 4, struct vbg_ioctl_hgcm_connect)
+struct vbg_ioctl_hgcm_disconnect {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      __u32 client_id;
+    } in;
+  } u;
+};
+#define VBG_IOCTL_HGCM_DISCONNECT _IOWR('V', 5, struct vbg_ioctl_hgcm_disconnect)
+struct vbg_ioctl_hgcm_call {
+  struct vbg_ioctl_hdr hdr;
+  __u32 client_id;
+  __u32 function;
+  __u32 timeout_ms;
+  __u8 interruptible;
+  __u8 reserved;
+  __u16 parm_count;
+};
+#define VBG_IOCTL_HGCM_CALL_32(s) _IOC(_IOC_READ | _IOC_WRITE, 'V', 6, s)
+#define VBG_IOCTL_HGCM_CALL_64(s) _IOC(_IOC_READ | _IOC_WRITE, 'V', 7, s)
+#if __BITS_PER_LONG == 64
+#define VBG_IOCTL_HGCM_CALL(s) VBG_IOCTL_HGCM_CALL_64(s)
+#else
+#define VBG_IOCTL_HGCM_CALL(s) VBG_IOCTL_HGCM_CALL_32(s)
+#endif
+struct vbg_ioctl_log {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      char msg[1];
+    } in;
+  } u;
+};
+#define VBG_IOCTL_LOG(s) _IO('V', 9)
+struct vbg_ioctl_wait_for_events {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      __u32 timeout_ms;
+      __u32 events;
+    } in;
+    struct {
+      __u32 events;
+    } out;
+  } u;
+};
+#define VBG_IOCTL_WAIT_FOR_EVENTS _IOWR('V', 10, struct vbg_ioctl_wait_for_events)
+#define VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS _IOWR('V', 11, struct vbg_ioctl_hdr)
+struct vbg_ioctl_change_filter {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      __u32 or_mask;
+      __u32 not_mask;
+    } in;
+  } u;
+};
+#define VBG_IOCTL_CHANGE_FILTER_MASK _IOWR('V', 12, struct vbg_ioctl_change_filter)
+struct vbg_ioctl_acquire_guest_caps {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      __u32 flags;
+      __u32 or_mask;
+      __u32 not_mask;
+    } in;
+  } u;
+};
+#define VBGL_IOC_AGC_FLAGS_CONFIG_ACQUIRE_MODE 0x00000001
+#define VBGL_IOC_AGC_FLAGS_VALID_MASK 0x00000001
+#define VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES _IOWR('V', 13, struct vbg_ioctl_acquire_guest_caps)
+struct vbg_ioctl_set_guest_caps {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      __u32 or_mask;
+      __u32 not_mask;
+    } in;
+    struct {
+      __u32 session_caps;
+      __u32 global_caps;
+    } out;
+  } u;
+};
+#define VBG_IOCTL_CHANGE_GUEST_CAPABILITIES _IOWR('V', 14, struct vbg_ioctl_set_guest_caps)
+struct vbg_ioctl_check_balloon {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      __u32 balloon_chunks;
+      __u8 handle_in_r3;
+      __u8 padding[3];
+    } out;
+  } u;
+};
+#define VBG_IOCTL_CHECK_BALLOON _IOWR('V', 17, struct vbg_ioctl_check_balloon)
+struct vbg_ioctl_write_coredump {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      __u32 flags;
+    } in;
+  } u;
+};
+#define VBG_IOCTL_WRITE_CORE_DUMP _IOWR('V', 19, struct vbg_ioctl_write_coredump)
+#endif
diff --git a/i686-linux-musl/include/linux/vdpa.h b/i686-linux-musl/include/linux/vdpa.h
new file mode 100644
index 0000000..767ce12
--- /dev/null
+++ b/i686-linux-musl/include/linux/vdpa.h
@@ -0,0 +1,49 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_VDPA_H_
+#define _UAPI_LINUX_VDPA_H_
+#define VDPA_GENL_NAME "vdpa"
+#define VDPA_GENL_VERSION 0x1
+enum vdpa_command {
+  VDPA_CMD_UNSPEC,
+  VDPA_CMD_MGMTDEV_NEW,
+  VDPA_CMD_MGMTDEV_GET,
+  VDPA_CMD_DEV_NEW,
+  VDPA_CMD_DEV_DEL,
+  VDPA_CMD_DEV_GET,
+  VDPA_CMD_DEV_CONFIG_GET,
+};
+enum vdpa_attr {
+  VDPA_ATTR_UNSPEC,
+  VDPA_ATTR_MGMTDEV_BUS_NAME,
+  VDPA_ATTR_MGMTDEV_DEV_NAME,
+  VDPA_ATTR_MGMTDEV_SUPPORTED_CLASSES,
+  VDPA_ATTR_DEV_NAME,
+  VDPA_ATTR_DEV_ID,
+  VDPA_ATTR_DEV_VENDOR_ID,
+  VDPA_ATTR_DEV_MAX_VQS,
+  VDPA_ATTR_DEV_MAX_VQ_SIZE,
+  VDPA_ATTR_DEV_MIN_VQ_SIZE,
+  VDPA_ATTR_DEV_NET_CFG_MACADDR,
+  VDPA_ATTR_DEV_NET_STATUS,
+  VDPA_ATTR_DEV_NET_CFG_MAX_VQP,
+  VDPA_ATTR_DEV_NET_CFG_MTU,
+  VDPA_ATTR_MAX,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/vduse.h b/i686-linux-musl/include/linux/vduse.h
new file mode 100644
index 0000000..2dc8c82
--- /dev/null
+++ b/i686-linux-musl/include/linux/vduse.h
@@ -0,0 +1,134 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_VDUSE_H_
+#define _UAPI_VDUSE_H_
+#include <linux/types.h>
+#define VDUSE_BASE 0x81
+#define VDUSE_API_VERSION 0
+#define VDUSE_GET_API_VERSION _IOR(VDUSE_BASE, 0x00, __u64)
+#define VDUSE_SET_API_VERSION _IOW(VDUSE_BASE, 0x01, __u64)
+struct vduse_dev_config {
+#define VDUSE_NAME_MAX 256
+  char name[VDUSE_NAME_MAX];
+  __u32 vendor_id;
+  __u32 device_id;
+  __u64 features;
+  __u32 vq_num;
+  __u32 vq_align;
+  __u32 reserved[13];
+  __u32 config_size;
+  __u8 config[];
+};
+#define VDUSE_CREATE_DEV _IOW(VDUSE_BASE, 0x02, struct vduse_dev_config)
+#define VDUSE_DESTROY_DEV _IOW(VDUSE_BASE, 0x03, char[VDUSE_NAME_MAX])
+struct vduse_iotlb_entry {
+  __u64 offset;
+  __u64 start;
+  __u64 last;
+#define VDUSE_ACCESS_RO 0x1
+#define VDUSE_ACCESS_WO 0x2
+#define VDUSE_ACCESS_RW 0x3
+  __u8 perm;
+};
+#define VDUSE_IOTLB_GET_FD _IOWR(VDUSE_BASE, 0x10, struct vduse_iotlb_entry)
+#define VDUSE_DEV_GET_FEATURES _IOR(VDUSE_BASE, 0x11, __u64)
+struct vduse_config_data {
+  __u32 offset;
+  __u32 length;
+  __u8 buffer[];
+};
+#define VDUSE_DEV_SET_CONFIG _IOW(VDUSE_BASE, 0x12, struct vduse_config_data)
+#define VDUSE_DEV_INJECT_CONFIG_IRQ _IO(VDUSE_BASE, 0x13)
+struct vduse_vq_config {
+  __u32 index;
+  __u16 max_size;
+  __u16 reserved[13];
+};
+#define VDUSE_VQ_SETUP _IOW(VDUSE_BASE, 0x14, struct vduse_vq_config)
+struct vduse_vq_state_split {
+  __u16 avail_index;
+};
+struct vduse_vq_state_packed {
+  __u16 last_avail_counter;
+  __u16 last_avail_idx;
+  __u16 last_used_counter;
+  __u16 last_used_idx;
+};
+struct vduse_vq_info {
+  __u32 index;
+  __u32 num;
+  __u64 desc_addr;
+  __u64 driver_addr;
+  __u64 device_addr;
+  union {
+    struct vduse_vq_state_split split;
+    struct vduse_vq_state_packed packed;
+  };
+  __u8 ready;
+};
+#define VDUSE_VQ_GET_INFO _IOWR(VDUSE_BASE, 0x15, struct vduse_vq_info)
+struct vduse_vq_eventfd {
+  __u32 index;
+#define VDUSE_EVENTFD_DEASSIGN - 1
+  int fd;
+};
+#define VDUSE_VQ_SETUP_KICKFD _IOW(VDUSE_BASE, 0x16, struct vduse_vq_eventfd)
+#define VDUSE_VQ_INJECT_IRQ _IOW(VDUSE_BASE, 0x17, __u32)
+enum vduse_req_type {
+  VDUSE_GET_VQ_STATE,
+  VDUSE_SET_STATUS,
+  VDUSE_UPDATE_IOTLB,
+};
+struct vduse_vq_state {
+  __u32 index;
+  union {
+    struct vduse_vq_state_split split;
+    struct vduse_vq_state_packed packed;
+  };
+};
+struct vduse_dev_status {
+  __u8 status;
+};
+struct vduse_iova_range {
+  __u64 start;
+  __u64 last;
+};
+struct vduse_dev_request {
+  __u32 type;
+  __u32 request_id;
+  __u32 reserved[4];
+  union {
+    struct vduse_vq_state vq_state;
+    struct vduse_dev_status s;
+    struct vduse_iova_range iova;
+    __u32 padding[32];
+  };
+};
+struct vduse_dev_response {
+  __u32 request_id;
+#define VDUSE_REQ_RESULT_OK 0x00
+#define VDUSE_REQ_RESULT_FAILED 0x01
+  __u32 result;
+  __u32 reserved[4];
+  union {
+    struct vduse_vq_state vq_state;
+    __u32 padding[32];
+  };
+};
+#endif
diff --git a/i686-linux-musl/include/linux/version.h b/i686-linux-musl/include/linux/version.h
new file mode 100644
index 0000000..bd323a8
--- /dev/null
+++ b/i686-linux-musl/include/linux/version.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#define LINUX_VERSION_CODE 331776
+#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
+#define LINUX_VERSION_MAJOR 5
+#define LINUX_VERSION_PATCHLEVEL 16
+#define LINUX_VERSION_SUBLEVEL 0
diff --git a/i686-linux-musl/include/linux/veth.h b/i686-linux-musl/include/linux/veth.h
new file mode 100644
index 0000000..7f79830
--- /dev/null
+++ b/i686-linux-musl/include/linux/veth.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __NET_VETH_H_
+#define __NET_VETH_H_
+enum {
+  VETH_INFO_UNSPEC,
+  VETH_INFO_PEER,
+  __VETH_INFO_MAX
+#define VETH_INFO_MAX (__VETH_INFO_MAX - 1)
+};
+#endif
diff --git a/i686-linux-musl/include/linux/vfio.h b/i686-linux-musl/include/linux/vfio.h
new file mode 100644
index 0000000..e0f322b
--- /dev/null
+++ b/i686-linux-musl/include/linux/vfio.h
@@ -0,0 +1,432 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPIVFIO_H
+#define _UAPIVFIO_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define VFIO_API_VERSION 0
+#define VFIO_TYPE1_IOMMU 1
+#define VFIO_SPAPR_TCE_IOMMU 2
+#define VFIO_TYPE1v2_IOMMU 3
+#define VFIO_DMA_CC_IOMMU 4
+#define VFIO_EEH 5
+#define VFIO_TYPE1_NESTING_IOMMU 6
+#define VFIO_SPAPR_TCE_v2_IOMMU 7
+#define VFIO_NOIOMMU_IOMMU 8
+#define VFIO_UNMAP_ALL 9
+#define VFIO_UPDATE_VADDR 10
+#define VFIO_TYPE (';')
+#define VFIO_BASE 100
+struct vfio_info_cap_header {
+  __u16 id;
+  __u16 version;
+  __u32 next;
+};
+#define VFIO_GET_API_VERSION _IO(VFIO_TYPE, VFIO_BASE + 0)
+#define VFIO_CHECK_EXTENSION _IO(VFIO_TYPE, VFIO_BASE + 1)
+#define VFIO_SET_IOMMU _IO(VFIO_TYPE, VFIO_BASE + 2)
+struct vfio_group_status {
+  __u32 argsz;
+  __u32 flags;
+#define VFIO_GROUP_FLAGS_VIABLE (1 << 0)
+#define VFIO_GROUP_FLAGS_CONTAINER_SET (1 << 1)
+};
+#define VFIO_GROUP_GET_STATUS _IO(VFIO_TYPE, VFIO_BASE + 3)
+#define VFIO_GROUP_SET_CONTAINER _IO(VFIO_TYPE, VFIO_BASE + 4)
+#define VFIO_GROUP_UNSET_CONTAINER _IO(VFIO_TYPE, VFIO_BASE + 5)
+#define VFIO_GROUP_GET_DEVICE_FD _IO(VFIO_TYPE, VFIO_BASE + 6)
+struct vfio_device_info {
+  __u32 argsz;
+  __u32 flags;
+#define VFIO_DEVICE_FLAGS_RESET (1 << 0)
+#define VFIO_DEVICE_FLAGS_PCI (1 << 1)
+#define VFIO_DEVICE_FLAGS_PLATFORM (1 << 2)
+#define VFIO_DEVICE_FLAGS_AMBA (1 << 3)
+#define VFIO_DEVICE_FLAGS_CCW (1 << 4)
+#define VFIO_DEVICE_FLAGS_AP (1 << 5)
+#define VFIO_DEVICE_FLAGS_FSL_MC (1 << 6)
+#define VFIO_DEVICE_FLAGS_CAPS (1 << 7)
+  __u32 num_regions;
+  __u32 num_irqs;
+  __u32 cap_offset;
+};
+#define VFIO_DEVICE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 7)
+#define VFIO_DEVICE_API_PCI_STRING "vfio-pci"
+#define VFIO_DEVICE_API_PLATFORM_STRING "vfio-platform"
+#define VFIO_DEVICE_API_AMBA_STRING "vfio-amba"
+#define VFIO_DEVICE_API_CCW_STRING "vfio-ccw"
+#define VFIO_DEVICE_API_AP_STRING "vfio-ap"
+#define VFIO_DEVICE_INFO_CAP_ZPCI_BASE 1
+#define VFIO_DEVICE_INFO_CAP_ZPCI_GROUP 2
+#define VFIO_DEVICE_INFO_CAP_ZPCI_UTIL 3
+#define VFIO_DEVICE_INFO_CAP_ZPCI_PFIP 4
+struct vfio_region_info {
+  __u32 argsz;
+  __u32 flags;
+#define VFIO_REGION_INFO_FLAG_READ (1 << 0)
+#define VFIO_REGION_INFO_FLAG_WRITE (1 << 1)
+#define VFIO_REGION_INFO_FLAG_MMAP (1 << 2)
+#define VFIO_REGION_INFO_FLAG_CAPS (1 << 3)
+  __u32 index;
+  __u32 cap_offset;
+  __u64 size;
+  __u64 offset;
+};
+#define VFIO_DEVICE_GET_REGION_INFO _IO(VFIO_TYPE, VFIO_BASE + 8)
+#define VFIO_REGION_INFO_CAP_SPARSE_MMAP 1
+struct vfio_region_sparse_mmap_area {
+  __u64 offset;
+  __u64 size;
+};
+struct vfio_region_info_cap_sparse_mmap {
+  struct vfio_info_cap_header header;
+  __u32 nr_areas;
+  __u32 reserved;
+  struct vfio_region_sparse_mmap_area areas[];
+};
+#define VFIO_REGION_INFO_CAP_TYPE 2
+struct vfio_region_info_cap_type {
+  struct vfio_info_cap_header header;
+  __u32 type;
+  __u32 subtype;
+};
+#define VFIO_REGION_TYPE_PCI_VENDOR_TYPE (1 << 31)
+#define VFIO_REGION_TYPE_PCI_VENDOR_MASK (0xffff)
+#define VFIO_REGION_TYPE_GFX (1)
+#define VFIO_REGION_TYPE_CCW (2)
+#define VFIO_REGION_TYPE_MIGRATION (3)
+#define VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION (1)
+#define VFIO_REGION_SUBTYPE_INTEL_IGD_HOST_CFG (2)
+#define VFIO_REGION_SUBTYPE_INTEL_IGD_LPC_CFG (3)
+#define VFIO_REGION_SUBTYPE_NVIDIA_NVLINK2_RAM (1)
+#define VFIO_REGION_SUBTYPE_IBM_NVLINK2_ATSD (1)
+#define VFIO_REGION_SUBTYPE_GFX_EDID (1)
+struct vfio_region_gfx_edid {
+  __u32 edid_offset;
+  __u32 edid_max_size;
+  __u32 edid_size;
+  __u32 max_xres;
+  __u32 max_yres;
+  __u32 link_state;
+#define VFIO_DEVICE_GFX_LINK_STATE_UP 1
+#define VFIO_DEVICE_GFX_LINK_STATE_DOWN 2
+};
+#define VFIO_REGION_SUBTYPE_CCW_ASYNC_CMD (1)
+#define VFIO_REGION_SUBTYPE_CCW_SCHIB (2)
+#define VFIO_REGION_SUBTYPE_CCW_CRW (3)
+#define VFIO_REGION_SUBTYPE_MIGRATION (1)
+struct vfio_device_migration_info {
+  __u32 device_state;
+#define VFIO_DEVICE_STATE_STOP (0)
+#define VFIO_DEVICE_STATE_RUNNING (1 << 0)
+#define VFIO_DEVICE_STATE_SAVING (1 << 1)
+#define VFIO_DEVICE_STATE_RESUMING (1 << 2)
+#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_RUNNING | VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RESUMING)
+#define VFIO_DEVICE_STATE_VALID(state) (state & VFIO_DEVICE_STATE_RESUMING ? (state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_RESUMING : 1)
+#define VFIO_DEVICE_STATE_IS_ERROR(state) ((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RESUMING))
+#define VFIO_DEVICE_STATE_SET_ERROR(state) ((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_SATE_SAVING | VFIO_DEVICE_STATE_RESUMING)
+  __u32 reserved;
+  __u64 pending_bytes;
+  __u64 data_offset;
+  __u64 data_size;
+};
+#define VFIO_REGION_INFO_CAP_MSIX_MAPPABLE 3
+#define VFIO_REGION_INFO_CAP_NVLINK2_SSATGT 4
+struct vfio_region_info_cap_nvlink2_ssatgt {
+  struct vfio_info_cap_header header;
+  __u64 tgt;
+};
+#define VFIO_REGION_INFO_CAP_NVLINK2_LNKSPD 5
+struct vfio_region_info_cap_nvlink2_lnkspd {
+  struct vfio_info_cap_header header;
+  __u32 link_speed;
+  __u32 __pad;
+};
+struct vfio_irq_info {
+  __u32 argsz;
+  __u32 flags;
+#define VFIO_IRQ_INFO_EVENTFD (1 << 0)
+#define VFIO_IRQ_INFO_MASKABLE (1 << 1)
+#define VFIO_IRQ_INFO_AUTOMASKED (1 << 2)
+#define VFIO_IRQ_INFO_NORESIZE (1 << 3)
+  __u32 index;
+  __u32 count;
+};
+#define VFIO_DEVICE_GET_IRQ_INFO _IO(VFIO_TYPE, VFIO_BASE + 9)
+struct vfio_irq_set {
+  __u32 argsz;
+  __u32 flags;
+#define VFIO_IRQ_SET_DATA_NONE (1 << 0)
+#define VFIO_IRQ_SET_DATA_BOOL (1 << 1)
+#define VFIO_IRQ_SET_DATA_EVENTFD (1 << 2)
+#define VFIO_IRQ_SET_ACTION_MASK (1 << 3)
+#define VFIO_IRQ_SET_ACTION_UNMASK (1 << 4)
+#define VFIO_IRQ_SET_ACTION_TRIGGER (1 << 5)
+  __u32 index;
+  __u32 start;
+  __u32 count;
+  __u8 data[];
+};
+#define VFIO_DEVICE_SET_IRQS _IO(VFIO_TYPE, VFIO_BASE + 10)
+#define VFIO_IRQ_SET_DATA_TYPE_MASK (VFIO_IRQ_SET_DATA_NONE | VFIO_IRQ_SET_DATA_BOOL | VFIO_IRQ_SET_DATA_EVENTFD)
+#define VFIO_IRQ_SET_ACTION_TYPE_MASK (VFIO_IRQ_SET_ACTION_MASK | VFIO_IRQ_SET_ACTION_UNMASK | VFIO_IRQ_SET_ACTION_TRIGGER)
+#define VFIO_DEVICE_RESET _IO(VFIO_TYPE, VFIO_BASE + 11)
+enum {
+  VFIO_PCI_BAR0_REGION_INDEX,
+  VFIO_PCI_BAR1_REGION_INDEX,
+  VFIO_PCI_BAR2_REGION_INDEX,
+  VFIO_PCI_BAR3_REGION_INDEX,
+  VFIO_PCI_BAR4_REGION_INDEX,
+  VFIO_PCI_BAR5_REGION_INDEX,
+  VFIO_PCI_ROM_REGION_INDEX,
+  VFIO_PCI_CONFIG_REGION_INDEX,
+  VFIO_PCI_VGA_REGION_INDEX,
+  VFIO_PCI_NUM_REGIONS = 9
+};
+enum {
+  VFIO_PCI_INTX_IRQ_INDEX,
+  VFIO_PCI_MSI_IRQ_INDEX,
+  VFIO_PCI_MSIX_IRQ_INDEX,
+  VFIO_PCI_ERR_IRQ_INDEX,
+  VFIO_PCI_REQ_IRQ_INDEX,
+  VFIO_PCI_NUM_IRQS
+};
+enum {
+  VFIO_CCW_CONFIG_REGION_INDEX,
+  VFIO_CCW_NUM_REGIONS
+};
+enum {
+  VFIO_CCW_IO_IRQ_INDEX,
+  VFIO_CCW_CRW_IRQ_INDEX,
+  VFIO_CCW_REQ_IRQ_INDEX,
+  VFIO_CCW_NUM_IRQS
+};
+struct vfio_pci_dependent_device {
+  __u32 group_id;
+  __u16 segment;
+  __u8 bus;
+  __u8 devfn;
+};
+struct vfio_pci_hot_reset_info {
+  __u32 argsz;
+  __u32 flags;
+  __u32 count;
+  struct vfio_pci_dependent_device devices[];
+};
+#define VFIO_DEVICE_GET_PCI_HOT_RESET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
+struct vfio_pci_hot_reset {
+  __u32 argsz;
+  __u32 flags;
+  __u32 count;
+  __s32 group_fds[];
+};
+#define VFIO_DEVICE_PCI_HOT_RESET _IO(VFIO_TYPE, VFIO_BASE + 13)
+struct vfio_device_gfx_plane_info {
+  __u32 argsz;
+  __u32 flags;
+#define VFIO_GFX_PLANE_TYPE_PROBE (1 << 0)
+#define VFIO_GFX_PLANE_TYPE_DMABUF (1 << 1)
+#define VFIO_GFX_PLANE_TYPE_REGION (1 << 2)
+  __u32 drm_plane_type;
+  __u32 drm_format;
+  __u64 drm_format_mod;
+  __u32 width;
+  __u32 height;
+  __u32 stride;
+  __u32 size;
+  __u32 x_pos;
+  __u32 y_pos;
+  __u32 x_hot;
+  __u32 y_hot;
+  union {
+    __u32 region_index;
+    __u32 dmabuf_id;
+  };
+};
+#define VFIO_DEVICE_QUERY_GFX_PLANE _IO(VFIO_TYPE, VFIO_BASE + 14)
+#define VFIO_DEVICE_GET_GFX_DMABUF _IO(VFIO_TYPE, VFIO_BASE + 15)
+struct vfio_device_ioeventfd {
+  __u32 argsz;
+  __u32 flags;
+#define VFIO_DEVICE_IOEVENTFD_8 (1 << 0)
+#define VFIO_DEVICE_IOEVENTFD_16 (1 << 1)
+#define VFIO_DEVICE_IOEVENTFD_32 (1 << 2)
+#define VFIO_DEVICE_IOEVENTFD_64 (1 << 3)
+#define VFIO_DEVICE_IOEVENTFD_SIZE_MASK (0xf)
+  __u64 offset;
+  __u64 data;
+  __s32 fd;
+};
+#define VFIO_DEVICE_IOEVENTFD _IO(VFIO_TYPE, VFIO_BASE + 16)
+struct vfio_device_feature {
+  __u32 argsz;
+  __u32 flags;
+#define VFIO_DEVICE_FEATURE_MASK (0xffff)
+#define VFIO_DEVICE_FEATURE_GET (1 << 16)
+#define VFIO_DEVICE_FEATURE_SET (1 << 17)
+#define VFIO_DEVICE_FEATURE_PROBE (1 << 18)
+  __u8 data[];
+};
+#define VFIO_DEVICE_FEATURE _IO(VFIO_TYPE, VFIO_BASE + 17)
+#define VFIO_DEVICE_FEATURE_PCI_VF_TOKEN (0)
+struct vfio_iommu_type1_info {
+  __u32 argsz;
+  __u32 flags;
+#define VFIO_IOMMU_INFO_PGSIZES (1 << 0)
+#define VFIO_IOMMU_INFO_CAPS (1 << 1)
+  __u64 iova_pgsizes;
+  __u32 cap_offset;
+};
+#define VFIO_IOMMU_TYPE1_INFO_CAP_IOVA_RANGE 1
+struct vfio_iova_range {
+  __u64 start;
+  __u64 end;
+};
+struct vfio_iommu_type1_info_cap_iova_range {
+  struct vfio_info_cap_header header;
+  __u32 nr_iovas;
+  __u32 reserved;
+  struct vfio_iova_range iova_ranges[];
+};
+#define VFIO_IOMMU_TYPE1_INFO_CAP_MIGRATION 2
+struct vfio_iommu_type1_info_cap_migration {
+  struct vfio_info_cap_header header;
+  __u32 flags;
+  __u64 pgsize_bitmap;
+  __u64 max_dirty_bitmap_size;
+};
+#define VFIO_IOMMU_TYPE1_INFO_DMA_AVAIL 3
+struct vfio_iommu_type1_info_dma_avail {
+  struct vfio_info_cap_header header;
+  __u32 avail;
+};
+#define VFIO_IOMMU_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
+struct vfio_iommu_type1_dma_map {
+  __u32 argsz;
+  __u32 flags;
+#define VFIO_DMA_MAP_FLAG_READ (1 << 0)
+#define VFIO_DMA_MAP_FLAG_WRITE (1 << 1)
+#define VFIO_DMA_MAP_FLAG_VADDR (1 << 2)
+  __u64 vaddr;
+  __u64 iova;
+  __u64 size;
+};
+#define VFIO_IOMMU_MAP_DMA _IO(VFIO_TYPE, VFIO_BASE + 13)
+struct vfio_bitmap {
+  __u64 pgsize;
+  __u64 size;
+  __u64 __user * data;
+};
+struct vfio_iommu_type1_dma_unmap {
+  __u32 argsz;
+  __u32 flags;
+#define VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP (1 << 0)
+#define VFIO_DMA_UNMAP_FLAG_ALL (1 << 1)
+#define VFIO_DMA_UNMAP_FLAG_VADDR (1 << 2)
+  __u64 iova;
+  __u64 size;
+  __u8 data[];
+};
+#define VFIO_IOMMU_UNMAP_DMA _IO(VFIO_TYPE, VFIO_BASE + 14)
+#define VFIO_IOMMU_ENABLE _IO(VFIO_TYPE, VFIO_BASE + 15)
+#define VFIO_IOMMU_DISABLE _IO(VFIO_TYPE, VFIO_BASE + 16)
+struct vfio_iommu_type1_dirty_bitmap {
+  __u32 argsz;
+  __u32 flags;
+#define VFIO_IOMMU_DIRTY_PAGES_FLAG_START (1 << 0)
+#define VFIO_IOMMU_DIRTY_PAGES_FLAG_STOP (1 << 1)
+#define VFIO_IOMMU_DIRTY_PAGES_FLAG_GET_BITMAP (1 << 2)
+  __u8 data[];
+};
+struct vfio_iommu_type1_dirty_bitmap_get {
+  __u64 iova;
+  __u64 size;
+  struct vfio_bitmap bitmap;
+};
+#define VFIO_IOMMU_DIRTY_PAGES _IO(VFIO_TYPE, VFIO_BASE + 17)
+struct vfio_iommu_spapr_tce_ddw_info {
+  __u64 pgsizes;
+  __u32 max_dynamic_windows_supported;
+  __u32 levels;
+};
+struct vfio_iommu_spapr_tce_info {
+  __u32 argsz;
+  __u32 flags;
+#define VFIO_IOMMU_SPAPR_INFO_DDW (1 << 0)
+  __u32 dma32_window_start;
+  __u32 dma32_window_size;
+  struct vfio_iommu_spapr_tce_ddw_info ddw;
+};
+#define VFIO_IOMMU_SPAPR_TCE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
+struct vfio_eeh_pe_err {
+  __u32 type;
+  __u32 func;
+  __u64 addr;
+  __u64 mask;
+};
+struct vfio_eeh_pe_op {
+  __u32 argsz;
+  __u32 flags;
+  __u32 op;
+  union {
+    struct vfio_eeh_pe_err err;
+  };
+};
+#define VFIO_EEH_PE_DISABLE 0
+#define VFIO_EEH_PE_ENABLE 1
+#define VFIO_EEH_PE_UNFREEZE_IO 2
+#define VFIO_EEH_PE_UNFREEZE_DMA 3
+#define VFIO_EEH_PE_GET_STATE 4
+#define VFIO_EEH_PE_STATE_NORMAL 0
+#define VFIO_EEH_PE_STATE_RESET 1
+#define VFIO_EEH_PE_STATE_STOPPED 2
+#define VFIO_EEH_PE_STATE_STOPPED_DMA 4
+#define VFIO_EEH_PE_STATE_UNAVAIL 5
+#define VFIO_EEH_PE_RESET_DEACTIVATE 5
+#define VFIO_EEH_PE_RESET_HOT 6
+#define VFIO_EEH_PE_RESET_FUNDAMENTAL 7
+#define VFIO_EEH_PE_CONFIGURE 8
+#define VFIO_EEH_PE_INJECT_ERR 9
+#define VFIO_EEH_PE_OP _IO(VFIO_TYPE, VFIO_BASE + 21)
+struct vfio_iommu_spapr_register_memory {
+  __u32 argsz;
+  __u32 flags;
+  __u64 vaddr;
+  __u64 size;
+};
+#define VFIO_IOMMU_SPAPR_REGISTER_MEMORY _IO(VFIO_TYPE, VFIO_BASE + 17)
+#define VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY _IO(VFIO_TYPE, VFIO_BASE + 18)
+struct vfio_iommu_spapr_tce_create {
+  __u32 argsz;
+  __u32 flags;
+  __u32 page_shift;
+  __u32 __resv1;
+  __u64 window_size;
+  __u32 levels;
+  __u32 __resv2;
+  __u64 start_addr;
+};
+#define VFIO_IOMMU_SPAPR_TCE_CREATE _IO(VFIO_TYPE, VFIO_BASE + 19)
+struct vfio_iommu_spapr_tce_remove {
+  __u32 argsz;
+  __u32 flags;
+  __u64 start_addr;
+};
+#define VFIO_IOMMU_SPAPR_TCE_REMOVE _IO(VFIO_TYPE, VFIO_BASE + 20)
+#endif
diff --git a/i686-linux-musl/include/linux/vfio_ccw.h b/i686-linux-musl/include/linux/vfio_ccw.h
new file mode 100644
index 0000000..a6defc5
--- /dev/null
+++ b/i686-linux-musl/include/linux/vfio_ccw.h
@@ -0,0 +1,45 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _VFIO_CCW_H_
+#define _VFIO_CCW_H_
+#include <linux/types.h>
+struct ccw_io_region {
+#define ORB_AREA_SIZE 12
+  __u8 orb_area[ORB_AREA_SIZE];
+#define SCSW_AREA_SIZE 12
+  __u8 scsw_area[SCSW_AREA_SIZE];
+#define IRB_AREA_SIZE 96
+  __u8 irb_area[IRB_AREA_SIZE];
+  __u32 ret_code;
+} __packed;
+#define VFIO_CCW_ASYNC_CMD_HSCH (1 << 0)
+#define VFIO_CCW_ASYNC_CMD_CSCH (1 << 1)
+struct ccw_cmd_region {
+  __u32 command;
+  __u32 ret_code;
+} __packed;
+struct ccw_schib_region {
+#define SCHIB_AREA_SIZE 52
+  __u8 schib_area[SCHIB_AREA_SIZE];
+} __packed;
+struct ccw_crw_region {
+  __u32 crw;
+  __u32 pad;
+} __packed;
+#endif
diff --git a/i686-linux-musl/include/linux/vfio_zdev.h b/i686-linux-musl/include/linux/vfio_zdev.h
new file mode 100644
index 0000000..c678e9a
--- /dev/null
+++ b/i686-linux-musl/include/linux/vfio_zdev.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _VFIO_ZDEV_H_
+#define _VFIO_ZDEV_H_
+#include <linux/types.h>
+#include <linux/vfio.h>
+struct vfio_device_info_cap_zpci_base {
+  struct vfio_info_cap_header header;
+  __u64 start_dma;
+  __u64 end_dma;
+  __u16 pchid;
+  __u16 vfn;
+  __u16 fmb_length;
+  __u8 pft;
+  __u8 gid;
+};
+struct vfio_device_info_cap_zpci_group {
+  struct vfio_info_cap_header header;
+  __u64 dasm;
+  __u64 msi_addr;
+  __u64 flags;
+#define VFIO_DEVICE_INFO_ZPCI_FLAG_REFRESH 1
+  __u16 mui;
+  __u16 noi;
+  __u16 maxstbl;
+  __u8 version;
+};
+struct vfio_device_info_cap_zpci_util {
+  struct vfio_info_cap_header header;
+  __u32 size;
+  __u8 util_str[];
+};
+struct vfio_device_info_cap_zpci_pfip {
+  struct vfio_info_cap_header header;
+  __u32 size;
+  __u8 pfip[];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/vhost.h b/i686-linux-musl/include/linux/vhost.h
new file mode 100644
index 0000000..53b01c4
--- /dev/null
+++ b/i686-linux-musl/include/linux/vhost.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_VHOST_H
+#define _LINUX_VHOST_H
+#include <linux/vhost_types.h>
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define VHOST_FILE_UNBIND - 1
+#define VHOST_VIRTIO 0xAF
+#define VHOST_GET_FEATURES _IOR(VHOST_VIRTIO, 0x00, __u64)
+#define VHOST_SET_FEATURES _IOW(VHOST_VIRTIO, 0x00, __u64)
+#define VHOST_SET_OWNER _IO(VHOST_VIRTIO, 0x01)
+#define VHOST_RESET_OWNER _IO(VHOST_VIRTIO, 0x02)
+#define VHOST_SET_MEM_TABLE _IOW(VHOST_VIRTIO, 0x03, struct vhost_memory)
+#define VHOST_SET_LOG_BASE _IOW(VHOST_VIRTIO, 0x04, __u64)
+#define VHOST_SET_LOG_FD _IOW(VHOST_VIRTIO, 0x07, int)
+#define VHOST_SET_VRING_NUM _IOW(VHOST_VIRTIO, 0x10, struct vhost_vring_state)
+#define VHOST_SET_VRING_ADDR _IOW(VHOST_VIRTIO, 0x11, struct vhost_vring_addr)
+#define VHOST_SET_VRING_BASE _IOW(VHOST_VIRTIO, 0x12, struct vhost_vring_state)
+#define VHOST_GET_VRING_BASE _IOWR(VHOST_VIRTIO, 0x12, struct vhost_vring_state)
+#define VHOST_VRING_LITTLE_ENDIAN 0
+#define VHOST_VRING_BIG_ENDIAN 1
+#define VHOST_SET_VRING_ENDIAN _IOW(VHOST_VIRTIO, 0x13, struct vhost_vring_state)
+#define VHOST_GET_VRING_ENDIAN _IOW(VHOST_VIRTIO, 0x14, struct vhost_vring_state)
+#define VHOST_SET_VRING_KICK _IOW(VHOST_VIRTIO, 0x20, struct vhost_vring_file)
+#define VHOST_SET_VRING_CALL _IOW(VHOST_VIRTIO, 0x21, struct vhost_vring_file)
+#define VHOST_SET_VRING_ERR _IOW(VHOST_VIRTIO, 0x22, struct vhost_vring_file)
+#define VHOST_SET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x23, struct vhost_vring_state)
+#define VHOST_GET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x24, struct vhost_vring_state)
+#define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
+#define VHOST_BACKEND_F_IOTLB_BATCH 0x2
+#define VHOST_SET_BACKEND_FEATURES _IOW(VHOST_VIRTIO, 0x25, __u64)
+#define VHOST_GET_BACKEND_FEATURES _IOR(VHOST_VIRTIO, 0x26, __u64)
+#define VHOST_NET_SET_BACKEND _IOW(VHOST_VIRTIO, 0x30, struct vhost_vring_file)
+#define VHOST_SCSI_SET_ENDPOINT _IOW(VHOST_VIRTIO, 0x40, struct vhost_scsi_target)
+#define VHOST_SCSI_CLEAR_ENDPOINT _IOW(VHOST_VIRTIO, 0x41, struct vhost_scsi_target)
+#define VHOST_SCSI_GET_ABI_VERSION _IOW(VHOST_VIRTIO, 0x42, int)
+#define VHOST_SCSI_SET_EVENTS_MISSED _IOW(VHOST_VIRTIO, 0x43, __u32)
+#define VHOST_SCSI_GET_EVENTS_MISSED _IOW(VHOST_VIRTIO, 0x44, __u32)
+#define VHOST_VSOCK_SET_GUEST_CID _IOW(VHOST_VIRTIO, 0x60, __u64)
+#define VHOST_VSOCK_SET_RUNNING _IOW(VHOST_VIRTIO, 0x61, int)
+#define VHOST_VDPA_GET_DEVICE_ID _IOR(VHOST_VIRTIO, 0x70, __u32)
+#define VHOST_VDPA_GET_STATUS _IOR(VHOST_VIRTIO, 0x71, __u8)
+#define VHOST_VDPA_SET_STATUS _IOW(VHOST_VIRTIO, 0x72, __u8)
+#define VHOST_VDPA_GET_CONFIG _IOR(VHOST_VIRTIO, 0x73, struct vhost_vdpa_config)
+#define VHOST_VDPA_SET_CONFIG _IOW(VHOST_VIRTIO, 0x74, struct vhost_vdpa_config)
+#define VHOST_VDPA_SET_VRING_ENABLE _IOW(VHOST_VIRTIO, 0x75, struct vhost_vring_state)
+#define VHOST_VDPA_GET_VRING_NUM _IOR(VHOST_VIRTIO, 0x76, __u16)
+#define VHOST_VDPA_SET_CONFIG_CALL _IOW(VHOST_VIRTIO, 0x77, int)
+#define VHOST_VDPA_GET_IOVA_RANGE _IOR(VHOST_VIRTIO, 0x78, struct vhost_vdpa_iova_range)
+#endif
diff --git a/i686-linux-musl/include/linux/vhost_types.h b/i686-linux-musl/include/linux/vhost_types.h
new file mode 100644
index 0000000..6b4cc77
--- /dev/null
+++ b/i686-linux-musl/include/linux/vhost_types.h
@@ -0,0 +1,105 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_VHOST_TYPES_H
+#define _LINUX_VHOST_TYPES_H
+#include <linux/types.h>
+#include <linux/compiler.h>
+#include <linux/virtio_config.h>
+#include <linux/virtio_ring.h>
+struct vhost_vring_state {
+  unsigned int index;
+  unsigned int num;
+};
+struct vhost_vring_file {
+  unsigned int index;
+  int fd;
+};
+struct vhost_vring_addr {
+  unsigned int index;
+  unsigned int flags;
+#define VHOST_VRING_F_LOG 0
+  __u64 desc_user_addr;
+  __u64 used_user_addr;
+  __u64 avail_user_addr;
+  __u64 log_guest_addr;
+};
+struct vhost_iotlb_msg {
+  __u64 iova;
+  __u64 size;
+  __u64 uaddr;
+#define VHOST_ACCESS_RO 0x1
+#define VHOST_ACCESS_WO 0x2
+#define VHOST_ACCESS_RW 0x3
+  __u8 perm;
+#define VHOST_IOTLB_MISS 1
+#define VHOST_IOTLB_UPDATE 2
+#define VHOST_IOTLB_INVALIDATE 3
+#define VHOST_IOTLB_ACCESS_FAIL 4
+#define VHOST_IOTLB_BATCH_BEGIN 5
+#define VHOST_IOTLB_BATCH_END 6
+  __u8 type;
+};
+#define VHOST_IOTLB_MSG 0x1
+#define VHOST_IOTLB_MSG_V2 0x2
+struct vhost_msg {
+  int type;
+  union {
+    struct vhost_iotlb_msg iotlb;
+    __u8 padding[64];
+  };
+};
+struct vhost_msg_v2 {
+  __u32 type;
+  __u32 reserved;
+  union {
+    struct vhost_iotlb_msg iotlb;
+    __u8 padding[64];
+  };
+};
+struct vhost_memory_region {
+  __u64 guest_phys_addr;
+  __u64 memory_size;
+  __u64 userspace_addr;
+  __u64 flags_padding;
+};
+#define VHOST_PAGE_SIZE 0x1000
+struct vhost_memory {
+  __u32 nregions;
+  __u32 padding;
+  struct vhost_memory_region regions[0];
+};
+#define VHOST_SCSI_ABI_VERSION 1
+struct vhost_scsi_target {
+  int abi_version;
+  char vhost_wwpn[224];
+  unsigned short vhost_tpgt;
+  unsigned short reserved;
+};
+struct vhost_vdpa_config {
+  __u32 off;
+  __u32 len;
+  __u8 buf[0];
+};
+struct vhost_vdpa_iova_range {
+  __u64 first;
+  __u64 last;
+};
+#define VHOST_F_LOG_ALL 26
+#define VHOST_NET_F_VIRTIO_NET_HDR 27
+#endif
diff --git a/i686-linux-musl/include/linux/videodev2.h b/i686-linux-musl/include/linux/videodev2.h
new file mode 100644
index 0000000..5ca1d91
--- /dev/null
+++ b/i686-linux-musl/include/linux/videodev2.h
@@ -0,0 +1,1472 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__LINUX_VIDEODEV2_H
+#define _UAPI__LINUX_VIDEODEV2_H
+#include <sys/time.h>
+#include <linux/compiler.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/v4l2-common.h>
+#include <linux/v4l2-controls.h>
+#define VIDEO_MAX_FRAME 32
+#define VIDEO_MAX_PLANES 8
+#define v4l2_fourcc(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
+#define v4l2_fourcc_be(a,b,c,d) (v4l2_fourcc(a, b, c, d) | (1U << 31))
+enum v4l2_field {
+  V4L2_FIELD_ANY = 0,
+  V4L2_FIELD_NONE = 1,
+  V4L2_FIELD_TOP = 2,
+  V4L2_FIELD_BOTTOM = 3,
+  V4L2_FIELD_INTERLACED = 4,
+  V4L2_FIELD_SEQ_TB = 5,
+  V4L2_FIELD_SEQ_BT = 6,
+  V4L2_FIELD_ALTERNATE = 7,
+  V4L2_FIELD_INTERLACED_TB = 8,
+  V4L2_FIELD_INTERLACED_BT = 9,
+};
+#define V4L2_FIELD_HAS_TOP(field) ((field) == V4L2_FIELD_TOP || (field) == V4L2_FIELD_INTERLACED || (field) == V4L2_FIELD_INTERLACED_TB || (field) == V4L2_FIELD_INTERLACED_BT || (field) == V4L2_FIELD_SEQ_TB || (field) == V4L2_FIELD_SEQ_BT)
+#define V4L2_FIELD_HAS_BOTTOM(field) ((field) == V4L2_FIELD_BOTTOM || (field) == V4L2_FIELD_INTERLACED || (field) == V4L2_FIELD_INTERLACED_TB || (field) == V4L2_FIELD_INTERLACED_BT || (field) == V4L2_FIELD_SEQ_TB || (field) == V4L2_FIELD_SEQ_BT)
+#define V4L2_FIELD_HAS_BOTH(field) ((field) == V4L2_FIELD_INTERLACED || (field) == V4L2_FIELD_INTERLACED_TB || (field) == V4L2_FIELD_INTERLACED_BT || (field) == V4L2_FIELD_SEQ_TB || (field) == V4L2_FIELD_SEQ_BT)
+#define V4L2_FIELD_HAS_T_OR_B(field) ((field) == V4L2_FIELD_BOTTOM || (field) == V4L2_FIELD_TOP || (field) == V4L2_FIELD_ALTERNATE)
+#define V4L2_FIELD_IS_INTERLACED(field) ((field) == V4L2_FIELD_INTERLACED || (field) == V4L2_FIELD_INTERLACED_TB || (field) == V4L2_FIELD_INTERLACED_BT)
+#define V4L2_FIELD_IS_SEQUENTIAL(field) ((field) == V4L2_FIELD_SEQ_TB || (field) == V4L2_FIELD_SEQ_BT)
+enum v4l2_buf_type {
+  V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
+  V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
+  V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
+  V4L2_BUF_TYPE_VBI_CAPTURE = 4,
+  V4L2_BUF_TYPE_VBI_OUTPUT = 5,
+  V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6,
+  V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7,
+  V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
+  V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,
+  V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10,
+  V4L2_BUF_TYPE_SDR_CAPTURE = 11,
+  V4L2_BUF_TYPE_SDR_OUTPUT = 12,
+  V4L2_BUF_TYPE_META_CAPTURE = 13,
+  V4L2_BUF_TYPE_META_OUTPUT = 14,
+  V4L2_BUF_TYPE_PRIVATE = 0x80,
+};
+#define V4L2_TYPE_IS_MULTIPLANAR(type) ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
+#define V4L2_TYPE_IS_OUTPUT(type) ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY || (type) == V4L2_BUF_TYPE_VBI_OUTPUT || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT || (type) == V4L2_BUF_TYPE_SDR_OUTPUT || (type) == V4L2_BUF_TYPE_META_OUTPUT)
+#define V4L2_TYPE_IS_CAPTURE(type) (! V4L2_TYPE_IS_OUTPUT(type))
+enum v4l2_tuner_type {
+  V4L2_TUNER_RADIO = 1,
+  V4L2_TUNER_ANALOG_TV = 2,
+  V4L2_TUNER_DIGITAL_TV = 3,
+  V4L2_TUNER_SDR = 4,
+  V4L2_TUNER_RF = 5,
+};
+#define V4L2_TUNER_ADC V4L2_TUNER_SDR
+enum v4l2_memory {
+  V4L2_MEMORY_MMAP = 1,
+  V4L2_MEMORY_USERPTR = 2,
+  V4L2_MEMORY_OVERLAY = 3,
+  V4L2_MEMORY_DMABUF = 4,
+};
+enum v4l2_colorspace {
+  V4L2_COLORSPACE_DEFAULT = 0,
+  V4L2_COLORSPACE_SMPTE170M = 1,
+  V4L2_COLORSPACE_SMPTE240M = 2,
+  V4L2_COLORSPACE_REC709 = 3,
+  V4L2_COLORSPACE_BT878 = 4,
+  V4L2_COLORSPACE_470_SYSTEM_M = 5,
+  V4L2_COLORSPACE_470_SYSTEM_BG = 6,
+  V4L2_COLORSPACE_JPEG = 7,
+  V4L2_COLORSPACE_SRGB = 8,
+  V4L2_COLORSPACE_OPRGB = 9,
+  V4L2_COLORSPACE_BT2020 = 10,
+  V4L2_COLORSPACE_RAW = 11,
+  V4L2_COLORSPACE_DCI_P3 = 12,
+};
+#define V4L2_MAP_COLORSPACE_DEFAULT(is_sdtv,is_hdtv) ((is_sdtv) ? V4L2_COLORSPACE_SMPTE170M : ((is_hdtv) ? V4L2_COLORSPACE_REC709 : V4L2_COLORSPACE_SRGB))
+enum v4l2_xfer_func {
+  V4L2_XFER_FUNC_DEFAULT = 0,
+  V4L2_XFER_FUNC_709 = 1,
+  V4L2_XFER_FUNC_SRGB = 2,
+  V4L2_XFER_FUNC_OPRGB = 3,
+  V4L2_XFER_FUNC_SMPTE240M = 4,
+  V4L2_XFER_FUNC_NONE = 5,
+  V4L2_XFER_FUNC_DCI_P3 = 6,
+  V4L2_XFER_FUNC_SMPTE2084 = 7,
+};
+#define V4L2_MAP_XFER_FUNC_DEFAULT(colsp) ((colsp) == V4L2_COLORSPACE_OPRGB ? V4L2_XFER_FUNC_OPRGB : ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_XFER_FUNC_SMPTE240M : ((colsp) == V4L2_COLORSPACE_DCI_P3 ? V4L2_XFER_FUNC_DCI_P3 : ((colsp) == V4L2_COLORSPACE_RAW ? V4L2_XFER_FUNC_NONE : ((colsp) == V4L2_COLORSPACE_SRGB || (colsp) == V4L2_COLORSPACE_JPEG ? V4L2_XFER_FUNC_SRGB : V4L2_XFER_FUNC_709)))))
+enum v4l2_ycbcr_encoding {
+  V4L2_YCBCR_ENC_DEFAULT = 0,
+  V4L2_YCBCR_ENC_601 = 1,
+  V4L2_YCBCR_ENC_709 = 2,
+  V4L2_YCBCR_ENC_XV601 = 3,
+  V4L2_YCBCR_ENC_XV709 = 4,
+  V4L2_YCBCR_ENC_SYCC = 5,
+  V4L2_YCBCR_ENC_BT2020 = 6,
+  V4L2_YCBCR_ENC_BT2020_CONST_LUM = 7,
+  V4L2_YCBCR_ENC_SMPTE240M = 8,
+};
+enum v4l2_hsv_encoding {
+  V4L2_HSV_ENC_180 = 128,
+  V4L2_HSV_ENC_256 = 129,
+};
+#define V4L2_MAP_YCBCR_ENC_DEFAULT(colsp) (((colsp) == V4L2_COLORSPACE_REC709 || (colsp) == V4L2_COLORSPACE_DCI_P3) ? V4L2_YCBCR_ENC_709 : ((colsp) == V4L2_COLORSPACE_BT2020 ? V4L2_YCBCR_ENC_BT2020 : ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_YCBCR_ENC_SMPTE240M : V4L2_YCBCR_ENC_601)))
+enum v4l2_quantization {
+  V4L2_QUANTIZATION_DEFAULT = 0,
+  V4L2_QUANTIZATION_FULL_RANGE = 1,
+  V4L2_QUANTIZATION_LIM_RANGE = 2,
+};
+#define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb_or_hsv,colsp,ycbcr_enc) (((is_rgb_or_hsv) || (colsp) == V4L2_COLORSPACE_JPEG) ? V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE)
+#define V4L2_COLORSPACE_ADOBERGB V4L2_COLORSPACE_OPRGB
+#define V4L2_XFER_FUNC_ADOBERGB V4L2_XFER_FUNC_OPRGB
+enum v4l2_priority {
+  V4L2_PRIORITY_UNSET = 0,
+  V4L2_PRIORITY_BACKGROUND = 1,
+  V4L2_PRIORITY_INTERACTIVE = 2,
+  V4L2_PRIORITY_RECORD = 3,
+  V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE,
+};
+struct v4l2_rect {
+  __s32 left;
+  __s32 top;
+  __u32 width;
+  __u32 height;
+};
+struct v4l2_fract {
+  __u32 numerator;
+  __u32 denominator;
+};
+struct v4l2_area {
+  __u32 width;
+  __u32 height;
+};
+struct v4l2_capability {
+  __u8 driver[16];
+  __u8 card[32];
+  __u8 bus_info[32];
+  __u32 version;
+  __u32 capabilities;
+  __u32 device_caps;
+  __u32 reserved[3];
+};
+#define V4L2_CAP_VIDEO_CAPTURE 0x00000001
+#define V4L2_CAP_VIDEO_OUTPUT 0x00000002
+#define V4L2_CAP_VIDEO_OVERLAY 0x00000004
+#define V4L2_CAP_VBI_CAPTURE 0x00000010
+#define V4L2_CAP_VBI_OUTPUT 0x00000020
+#define V4L2_CAP_SLICED_VBI_CAPTURE 0x00000040
+#define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080
+#define V4L2_CAP_RDS_CAPTURE 0x00000100
+#define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200
+#define V4L2_CAP_HW_FREQ_SEEK 0x00000400
+#define V4L2_CAP_RDS_OUTPUT 0x00000800
+#define V4L2_CAP_VIDEO_CAPTURE_MPLANE 0x00001000
+#define V4L2_CAP_VIDEO_OUTPUT_MPLANE 0x00002000
+#define V4L2_CAP_VIDEO_M2M_MPLANE 0x00004000
+#define V4L2_CAP_VIDEO_M2M 0x00008000
+#define V4L2_CAP_TUNER 0x00010000
+#define V4L2_CAP_AUDIO 0x00020000
+#define V4L2_CAP_RADIO 0x00040000
+#define V4L2_CAP_MODULATOR 0x00080000
+#define V4L2_CAP_SDR_CAPTURE 0x00100000
+#define V4L2_CAP_EXT_PIX_FORMAT 0x00200000
+#define V4L2_CAP_SDR_OUTPUT 0x00400000
+#define V4L2_CAP_META_CAPTURE 0x00800000
+#define V4L2_CAP_READWRITE 0x01000000
+#define V4L2_CAP_ASYNCIO 0x02000000
+#define V4L2_CAP_STREAMING 0x04000000
+#define V4L2_CAP_META_OUTPUT 0x08000000
+#define V4L2_CAP_TOUCH 0x10000000
+#define V4L2_CAP_IO_MC 0x20000000
+#define V4L2_CAP_DEVICE_CAPS 0x80000000
+struct v4l2_pix_format {
+  __u32 width;
+  __u32 height;
+  __u32 pixelformat;
+  __u32 field;
+  __u32 bytesperline;
+  __u32 sizeimage;
+  __u32 colorspace;
+  __u32 priv;
+  __u32 flags;
+  union {
+    __u32 ycbcr_enc;
+    __u32 hsv_enc;
+  };
+  __u32 quantization;
+  __u32 xfer_func;
+};
+#define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1')
+#define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4')
+#define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2')
+#define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2')
+#define V4L2_PIX_FMT_RGBA444 v4l2_fourcc('R', 'A', '1', '2')
+#define V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2')
+#define V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2')
+#define V4L2_PIX_FMT_XBGR444 v4l2_fourcc('X', 'B', '1', '2')
+#define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('G', 'A', '1', '2')
+#define V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2')
+#define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O')
+#define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5')
+#define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5')
+#define V4L2_PIX_FMT_RGBA555 v4l2_fourcc('R', 'A', '1', '5')
+#define V4L2_PIX_FMT_RGBX555 v4l2_fourcc('R', 'X', '1', '5')
+#define V4L2_PIX_FMT_ABGR555 v4l2_fourcc('A', 'B', '1', '5')
+#define V4L2_PIX_FMT_XBGR555 v4l2_fourcc('X', 'B', '1', '5')
+#define V4L2_PIX_FMT_BGRA555 v4l2_fourcc('B', 'A', '1', '5')
+#define V4L2_PIX_FMT_BGRX555 v4l2_fourcc('B', 'X', '1', '5')
+#define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P')
+#define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q')
+#define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5')
+#define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5')
+#define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R')
+#define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H')
+#define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3')
+#define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3')
+#define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4')
+#define V4L2_PIX_FMT_ABGR32 v4l2_fourcc('A', 'R', '2', '4')
+#define V4L2_PIX_FMT_XBGR32 v4l2_fourcc('X', 'R', '2', '4')
+#define V4L2_PIX_FMT_BGRA32 v4l2_fourcc('R', 'A', '2', '4')
+#define V4L2_PIX_FMT_BGRX32 v4l2_fourcc('R', 'X', '2', '4')
+#define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4')
+#define V4L2_PIX_FMT_RGBA32 v4l2_fourcc('A', 'B', '2', '4')
+#define V4L2_PIX_FMT_RGBX32 v4l2_fourcc('X', 'B', '2', '4')
+#define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4')
+#define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4')
+#define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y')
+#define V4L2_PIX_FMT_Y4 v4l2_fourcc('Y', '0', '4', ' ')
+#define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ')
+#define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ')
+#define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ')
+#define V4L2_PIX_FMT_Y14 v4l2_fourcc('Y', '1', '4', ' ')
+#define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ')
+#define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ')
+#define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B')
+#define V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P')
+#define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8')
+#define V4L2_PIX_FMT_UV8 v4l2_fourcc('U', 'V', '8', ' ')
+#define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V')
+#define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V')
+#define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U')
+#define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y')
+#define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y')
+#define V4L2_PIX_FMT_Y41P v4l2_fourcc('Y', '4', '1', 'P')
+#define V4L2_PIX_FMT_YUV444 v4l2_fourcc('Y', '4', '4', '4')
+#define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O')
+#define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P')
+#define V4L2_PIX_FMT_YUV24 v4l2_fourcc('Y', 'U', 'V', '3')
+#define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4')
+#define V4L2_PIX_FMT_AYUV32 v4l2_fourcc('A', 'Y', 'U', 'V')
+#define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V')
+#define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A')
+#define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X')
+#define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0')
+#define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
+#define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
+#define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6')
+#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
+#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4')
+#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2')
+#define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2')
+#define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1')
+#define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6')
+#define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1')
+#define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9')
+#define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9')
+#define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P')
+#define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2')
+#define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2')
+#define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P')
+#define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2')
+#define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1')
+#define V4L2_PIX_FMT_YUV422M v4l2_fourcc('Y', 'M', '1', '6')
+#define V4L2_PIX_FMT_YVU422M v4l2_fourcc('Y', 'M', '6', '1')
+#define V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4')
+#define V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2')
+#define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2')
+#define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2')
+#define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2')
+#define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2')
+#define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2')
+#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1')
+#define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G')
+#define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G')
+#define V4L2_PIX_FMT_SRGGB8 v4l2_fourcc('R', 'G', 'G', 'B')
+#define V4L2_PIX_FMT_SBGGR10 v4l2_fourcc('B', 'G', '1', '0')
+#define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0')
+#define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0')
+#define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0')
+#define V4L2_PIX_FMT_SBGGR10P v4l2_fourcc('p', 'B', 'A', 'A')
+#define V4L2_PIX_FMT_SGBRG10P v4l2_fourcc('p', 'G', 'A', 'A')
+#define V4L2_PIX_FMT_SGRBG10P v4l2_fourcc('p', 'g', 'A', 'A')
+#define V4L2_PIX_FMT_SRGGB10P v4l2_fourcc('p', 'R', 'A', 'A')
+#define V4L2_PIX_FMT_SBGGR10ALAW8 v4l2_fourcc('a', 'B', 'A', '8')
+#define V4L2_PIX_FMT_SGBRG10ALAW8 v4l2_fourcc('a', 'G', 'A', '8')
+#define V4L2_PIX_FMT_SGRBG10ALAW8 v4l2_fourcc('a', 'g', 'A', '8')
+#define V4L2_PIX_FMT_SRGGB10ALAW8 v4l2_fourcc('a', 'R', 'A', '8')
+#define V4L2_PIX_FMT_SBGGR10DPCM8 v4l2_fourcc('b', 'B', 'A', '8')
+#define V4L2_PIX_FMT_SGBRG10DPCM8 v4l2_fourcc('b', 'G', 'A', '8')
+#define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0')
+#define V4L2_PIX_FMT_SRGGB10DPCM8 v4l2_fourcc('b', 'R', 'A', '8')
+#define V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2')
+#define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2')
+#define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2')
+#define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2')
+#define V4L2_PIX_FMT_SBGGR12P v4l2_fourcc('p', 'B', 'C', 'C')
+#define V4L2_PIX_FMT_SGBRG12P v4l2_fourcc('p', 'G', 'C', 'C')
+#define V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C')
+#define V4L2_PIX_FMT_SRGGB12P v4l2_fourcc('p', 'R', 'C', 'C')
+#define V4L2_PIX_FMT_SBGGR14 v4l2_fourcc('B', 'G', '1', '4')
+#define V4L2_PIX_FMT_SGBRG14 v4l2_fourcc('G', 'B', '1', '4')
+#define V4L2_PIX_FMT_SGRBG14 v4l2_fourcc('G', 'R', '1', '4')
+#define V4L2_PIX_FMT_SRGGB14 v4l2_fourcc('R', 'G', '1', '4')
+#define V4L2_PIX_FMT_SBGGR14P v4l2_fourcc('p', 'B', 'E', 'E')
+#define V4L2_PIX_FMT_SGBRG14P v4l2_fourcc('p', 'G', 'E', 'E')
+#define V4L2_PIX_FMT_SGRBG14P v4l2_fourcc('p', 'g', 'E', 'E')
+#define V4L2_PIX_FMT_SRGGB14P v4l2_fourcc('p', 'R', 'E', 'E')
+#define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2')
+#define V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6')
+#define V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6')
+#define V4L2_PIX_FMT_SRGGB16 v4l2_fourcc('R', 'G', '1', '6')
+#define V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3')
+#define V4L2_PIX_FMT_HSV32 v4l2_fourcc('H', 'S', 'V', '4')
+#define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M', 'J', 'P', 'G')
+#define V4L2_PIX_FMT_JPEG v4l2_fourcc('J', 'P', 'E', 'G')
+#define V4L2_PIX_FMT_DV v4l2_fourcc('d', 'v', 's', 'd')
+#define V4L2_PIX_FMT_MPEG v4l2_fourcc('M', 'P', 'E', 'G')
+#define V4L2_PIX_FMT_H264 v4l2_fourcc('H', '2', '6', '4')
+#define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1')
+#define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4')
+#define V4L2_PIX_FMT_H263 v4l2_fourcc('H', '2', '6', '3')
+#define V4L2_PIX_FMT_MPEG1 v4l2_fourcc('M', 'P', 'G', '1')
+#define V4L2_PIX_FMT_MPEG2 v4l2_fourcc('M', 'P', 'G', '2')
+#define V4L2_PIX_FMT_MPEG2_SLICE v4l2_fourcc('M', 'G', '2', 'S')
+#define V4L2_PIX_FMT_MPEG4 v4l2_fourcc('M', 'P', 'G', '4')
+#define V4L2_PIX_FMT_XVID v4l2_fourcc('X', 'V', 'I', 'D')
+#define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G')
+#define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L')
+#define V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0')
+#define V4L2_PIX_FMT_VP8_FRAME v4l2_fourcc('V', 'P', '8', 'F')
+#define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0')
+#define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C')
+#define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T')
+#define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H')
+#define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4')
+#define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')
+#define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
+#define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')
+#define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0')
+#define V4L2_PIX_FMT_PWC1 v4l2_fourcc('P', 'W', 'C', '1')
+#define V4L2_PIX_FMT_PWC2 v4l2_fourcc('P', 'W', 'C', '2')
+#define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5')
+#define V4L2_PIX_FMT_SPCA501 v4l2_fourcc('S', '5', '0', '1')
+#define V4L2_PIX_FMT_SPCA505 v4l2_fourcc('S', '5', '0', '5')
+#define V4L2_PIX_FMT_SPCA508 v4l2_fourcc('S', '5', '0', '8')
+#define V4L2_PIX_FMT_SPCA561 v4l2_fourcc('S', '5', '6', '1')
+#define V4L2_PIX_FMT_PAC207 v4l2_fourcc('P', '2', '0', '7')
+#define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0')
+#define V4L2_PIX_FMT_JL2005BCD v4l2_fourcc('J', 'L', '2', '0')
+#define V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X')
+#define V4L2_PIX_FMT_SQ905C v4l2_fourcc('9', '0', '5', 'C')
+#define V4L2_PIX_FMT_PJPG v4l2_fourcc('P', 'J', 'P', 'G')
+#define V4L2_PIX_FMT_OV511 v4l2_fourcc('O', '5', '1', '1')
+#define V4L2_PIX_FMT_OV518 v4l2_fourcc('O', '5', '1', '8')
+#define V4L2_PIX_FMT_STV0680 v4l2_fourcc('S', '6', '8', '0')
+#define V4L2_PIX_FMT_TM6000 v4l2_fourcc('T', 'M', '6', '0')
+#define V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V')
+#define V4L2_PIX_FMT_KONICA420 v4l2_fourcc('K', 'O', 'N', 'I')
+#define V4L2_PIX_FMT_JPGL v4l2_fourcc('J', 'P', 'G', 'L')
+#define V4L2_PIX_FMT_SE401 v4l2_fourcc('S', '4', '0', '1')
+#define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I')
+#define V4L2_PIX_FMT_Y8I v4l2_fourcc('Y', '8', 'I', ' ')
+#define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I')
+#define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ')
+#define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1')
+#define V4L2_PIX_FMT_MM21 v4l2_fourcc('M', 'M', '2', '1')
+#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I')
+#define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4')
+#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')
+#define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b')
+#define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g')
+#define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G')
+#define V4L2_PIX_FMT_IPU3_SRGGB10 v4l2_fourcc('i', 'p', '3', 'r')
+#define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8')
+#define V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6')
+#define V4L2_SDR_FMT_CS8 v4l2_fourcc('C', 'S', '0', '8')
+#define V4L2_SDR_FMT_CS14LE v4l2_fourcc('C', 'S', '1', '4')
+#define V4L2_SDR_FMT_RU12LE v4l2_fourcc('R', 'U', '1', '2')
+#define V4L2_SDR_FMT_PCU16BE v4l2_fourcc('P', 'C', '1', '6')
+#define V4L2_SDR_FMT_PCU18BE v4l2_fourcc('P', 'C', '1', '8')
+#define V4L2_SDR_FMT_PCU20BE v4l2_fourcc('P', 'C', '2', '0')
+#define V4L2_TCH_FMT_DELTA_TD16 v4l2_fourcc('T', 'D', '1', '6')
+#define V4L2_TCH_FMT_DELTA_TD08 v4l2_fourcc('T', 'D', '0', '8')
+#define V4L2_TCH_FMT_TU16 v4l2_fourcc('T', 'U', '1', '6')
+#define V4L2_TCH_FMT_TU08 v4l2_fourcc('T', 'U', '0', '8')
+#define V4L2_META_FMT_VSP1_HGO v4l2_fourcc('V', 'S', 'P', 'H')
+#define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T')
+#define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H')
+#define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X')
+#define V4L2_META_FMT_VIVID v4l2_fourcc('V', 'I', 'V', 'D')
+#define V4L2_META_FMT_RK_ISP1_PARAMS v4l2_fourcc('R', 'K', '1', 'P')
+#define V4L2_META_FMT_RK_ISP1_STAT_3A v4l2_fourcc('R', 'K', '1', 'S')
+#define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe
+#define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA 0x00000001
+#define V4L2_PIX_FMT_FLAG_SET_CSC 0x00000002
+struct v4l2_fmtdesc {
+  __u32 index;
+  __u32 type;
+  __u32 flags;
+  __u8 description[32];
+  __u32 pixelformat;
+  __u32 mbus_code;
+  __u32 reserved[3];
+};
+#define V4L2_FMT_FLAG_COMPRESSED 0x0001
+#define V4L2_FMT_FLAG_EMULATED 0x0002
+#define V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM 0x0004
+#define V4L2_FMT_FLAG_DYN_RESOLUTION 0x0008
+#define V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL 0x0010
+#define V4L2_FMT_FLAG_CSC_COLORSPACE 0x0020
+#define V4L2_FMT_FLAG_CSC_XFER_FUNC 0x0040
+#define V4L2_FMT_FLAG_CSC_YCBCR_ENC 0x0080
+#define V4L2_FMT_FLAG_CSC_HSV_ENC V4L2_FMT_FLAG_CSC_YCBCR_ENC
+#define V4L2_FMT_FLAG_CSC_QUANTIZATION 0x0100
+enum v4l2_frmsizetypes {
+  V4L2_FRMSIZE_TYPE_DISCRETE = 1,
+  V4L2_FRMSIZE_TYPE_CONTINUOUS = 2,
+  V4L2_FRMSIZE_TYPE_STEPWISE = 3,
+};
+struct v4l2_frmsize_discrete {
+  __u32 width;
+  __u32 height;
+};
+struct v4l2_frmsize_stepwise {
+  __u32 min_width;
+  __u32 max_width;
+  __u32 step_width;
+  __u32 min_height;
+  __u32 max_height;
+  __u32 step_height;
+};
+struct v4l2_frmsizeenum {
+  __u32 index;
+  __u32 pixel_format;
+  __u32 type;
+  union {
+    struct v4l2_frmsize_discrete discrete;
+    struct v4l2_frmsize_stepwise stepwise;
+  };
+  __u32 reserved[2];
+};
+enum v4l2_frmivaltypes {
+  V4L2_FRMIVAL_TYPE_DISCRETE = 1,
+  V4L2_FRMIVAL_TYPE_CONTINUOUS = 2,
+  V4L2_FRMIVAL_TYPE_STEPWISE = 3,
+};
+struct v4l2_frmival_stepwise {
+  struct v4l2_fract min;
+  struct v4l2_fract max;
+  struct v4l2_fract step;
+};
+struct v4l2_frmivalenum {
+  __u32 index;
+  __u32 pixel_format;
+  __u32 width;
+  __u32 height;
+  __u32 type;
+  union {
+    struct v4l2_fract discrete;
+    struct v4l2_frmival_stepwise stepwise;
+  };
+  __u32 reserved[2];
+};
+struct v4l2_timecode {
+  __u32 type;
+  __u32 flags;
+  __u8 frames;
+  __u8 seconds;
+  __u8 minutes;
+  __u8 hours;
+  __u8 userbits[4];
+};
+#define V4L2_TC_TYPE_24FPS 1
+#define V4L2_TC_TYPE_25FPS 2
+#define V4L2_TC_TYPE_30FPS 3
+#define V4L2_TC_TYPE_50FPS 4
+#define V4L2_TC_TYPE_60FPS 5
+#define V4L2_TC_FLAG_DROPFRAME 0x0001
+#define V4L2_TC_FLAG_COLORFRAME 0x0002
+#define V4L2_TC_USERBITS_field 0x000C
+#define V4L2_TC_USERBITS_USERDEFINED 0x0000
+#define V4L2_TC_USERBITS_8BITCHARS 0x0008
+struct v4l2_jpegcompression {
+  int quality;
+  int APPn;
+  int APP_len;
+  char APP_data[60];
+  int COM_len;
+  char COM_data[60];
+  __u32 jpeg_markers;
+#define V4L2_JPEG_MARKER_DHT (1 << 3)
+#define V4L2_JPEG_MARKER_DQT (1 << 4)
+#define V4L2_JPEG_MARKER_DRI (1 << 5)
+#define V4L2_JPEG_MARKER_COM (1 << 6)
+#define V4L2_JPEG_MARKER_APP (1 << 7)
+};
+struct v4l2_requestbuffers {
+  __u32 count;
+  __u32 type;
+  __u32 memory;
+  __u32 capabilities;
+  __u8 flags;
+  __u8 reserved[3];
+};
+#define V4L2_MEMORY_FLAG_NON_COHERENT (1 << 0)
+#define V4L2_BUF_CAP_SUPPORTS_MMAP (1 << 0)
+#define V4L2_BUF_CAP_SUPPORTS_USERPTR (1 << 1)
+#define V4L2_BUF_CAP_SUPPORTS_DMABUF (1 << 2)
+#define V4L2_BUF_CAP_SUPPORTS_REQUESTS (1 << 3)
+#define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS (1 << 4)
+#define V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF (1 << 5)
+#define V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS (1 << 6)
+struct v4l2_plane {
+  __u32 bytesused;
+  __u32 length;
+  union {
+    __u32 mem_offset;
+    unsigned long userptr;
+    __s32 fd;
+  } m;
+  __u32 data_offset;
+  __u32 reserved[11];
+};
+struct v4l2_buffer {
+  __u32 index;
+  __u32 type;
+  __u32 bytesused;
+  __u32 flags;
+  __u32 field;
+  struct timeval timestamp;
+  struct v4l2_timecode timecode;
+  __u32 sequence;
+  __u32 memory;
+  union {
+    __u32 offset;
+    unsigned long userptr;
+    struct v4l2_plane * planes;
+    __s32 fd;
+  } m;
+  __u32 length;
+  __u32 reserved2;
+  union {
+    __s32 request_fd;
+    __u32 reserved;
+  };
+};
+#define V4L2_BUF_FLAG_MAPPED 0x00000001
+#define V4L2_BUF_FLAG_QUEUED 0x00000002
+#define V4L2_BUF_FLAG_DONE 0x00000004
+#define V4L2_BUF_FLAG_KEYFRAME 0x00000008
+#define V4L2_BUF_FLAG_PFRAME 0x00000010
+#define V4L2_BUF_FLAG_BFRAME 0x00000020
+#define V4L2_BUF_FLAG_ERROR 0x00000040
+#define V4L2_BUF_FLAG_IN_REQUEST 0x00000080
+#define V4L2_BUF_FLAG_TIMECODE 0x00000100
+#define V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF 0x00000200
+#define V4L2_BUF_FLAG_PREPARED 0x00000400
+#define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x00000800
+#define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x00001000
+#define V4L2_BUF_FLAG_TIMESTAMP_MASK 0x0000e000
+#define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN 0x00000000
+#define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC 0x00002000
+#define V4L2_BUF_FLAG_TIMESTAMP_COPY 0x00004000
+#define V4L2_BUF_FLAG_TSTAMP_SRC_MASK 0x00070000
+#define V4L2_BUF_FLAG_TSTAMP_SRC_EOF 0x00000000
+#define V4L2_BUF_FLAG_TSTAMP_SRC_SOE 0x00010000
+#define V4L2_BUF_FLAG_LAST 0x00100000
+#define V4L2_BUF_FLAG_REQUEST_FD 0x00800000
+struct v4l2_exportbuffer {
+  __u32 type;
+  __u32 index;
+  __u32 plane;
+  __u32 flags;
+  __s32 fd;
+  __u32 reserved[11];
+};
+struct v4l2_framebuffer {
+  __u32 capability;
+  __u32 flags;
+  void * base;
+  struct {
+    __u32 width;
+    __u32 height;
+    __u32 pixelformat;
+    __u32 field;
+    __u32 bytesperline;
+    __u32 sizeimage;
+    __u32 colorspace;
+    __u32 priv;
+  } fmt;
+};
+#define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
+#define V4L2_FBUF_CAP_CHROMAKEY 0x0002
+#define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004
+#define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008
+#define V4L2_FBUF_CAP_LOCAL_ALPHA 0x0010
+#define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020
+#define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040
+#define V4L2_FBUF_CAP_SRC_CHROMAKEY 0x0080
+#define V4L2_FBUF_FLAG_PRIMARY 0x0001
+#define V4L2_FBUF_FLAG_OVERLAY 0x0002
+#define V4L2_FBUF_FLAG_CHROMAKEY 0x0004
+#define V4L2_FBUF_FLAG_LOCAL_ALPHA 0x0008
+#define V4L2_FBUF_FLAG_GLOBAL_ALPHA 0x0010
+#define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA 0x0020
+#define V4L2_FBUF_FLAG_SRC_CHROMAKEY 0x0040
+struct v4l2_clip {
+  struct v4l2_rect c;
+  struct v4l2_clip __user * next;
+};
+struct v4l2_window {
+  struct v4l2_rect w;
+  __u32 field;
+  __u32 chromakey;
+  struct v4l2_clip * clips;
+  __u32 clipcount;
+  void __user * bitmap;
+  __u8 global_alpha;
+};
+struct v4l2_captureparm {
+  __u32 capability;
+  __u32 capturemode;
+  struct v4l2_fract timeperframe;
+  __u32 extendedmode;
+  __u32 readbuffers;
+  __u32 reserved[4];
+};
+#define V4L2_MODE_HIGHQUALITY 0x0001
+#define V4L2_CAP_TIMEPERFRAME 0x1000
+struct v4l2_outputparm {
+  __u32 capability;
+  __u32 outputmode;
+  struct v4l2_fract timeperframe;
+  __u32 extendedmode;
+  __u32 writebuffers;
+  __u32 reserved[4];
+};
+struct v4l2_cropcap {
+  __u32 type;
+  struct v4l2_rect bounds;
+  struct v4l2_rect defrect;
+  struct v4l2_fract pixelaspect;
+};
+struct v4l2_crop {
+  __u32 type;
+  struct v4l2_rect c;
+};
+struct v4l2_selection {
+  __u32 type;
+  __u32 target;
+  __u32 flags;
+  struct v4l2_rect r;
+  __u32 reserved[9];
+};
+typedef __u64 v4l2_std_id;
+#define V4L2_STD_PAL_B ((v4l2_std_id) 0x00000001)
+#define V4L2_STD_PAL_B1 ((v4l2_std_id) 0x00000002)
+#define V4L2_STD_PAL_G ((v4l2_std_id) 0x00000004)
+#define V4L2_STD_PAL_H ((v4l2_std_id) 0x00000008)
+#define V4L2_STD_PAL_I ((v4l2_std_id) 0x00000010)
+#define V4L2_STD_PAL_D ((v4l2_std_id) 0x00000020)
+#define V4L2_STD_PAL_D1 ((v4l2_std_id) 0x00000040)
+#define V4L2_STD_PAL_K ((v4l2_std_id) 0x00000080)
+#define V4L2_STD_PAL_M ((v4l2_std_id) 0x00000100)
+#define V4L2_STD_PAL_N ((v4l2_std_id) 0x00000200)
+#define V4L2_STD_PAL_Nc ((v4l2_std_id) 0x00000400)
+#define V4L2_STD_PAL_60 ((v4l2_std_id) 0x00000800)
+#define V4L2_STD_NTSC_M ((v4l2_std_id) 0x00001000)
+#define V4L2_STD_NTSC_M_JP ((v4l2_std_id) 0x00002000)
+#define V4L2_STD_NTSC_443 ((v4l2_std_id) 0x00004000)
+#define V4L2_STD_NTSC_M_KR ((v4l2_std_id) 0x00008000)
+#define V4L2_STD_SECAM_B ((v4l2_std_id) 0x00010000)
+#define V4L2_STD_SECAM_D ((v4l2_std_id) 0x00020000)
+#define V4L2_STD_SECAM_G ((v4l2_std_id) 0x00040000)
+#define V4L2_STD_SECAM_H ((v4l2_std_id) 0x00080000)
+#define V4L2_STD_SECAM_K ((v4l2_std_id) 0x00100000)
+#define V4L2_STD_SECAM_K1 ((v4l2_std_id) 0x00200000)
+#define V4L2_STD_SECAM_L ((v4l2_std_id) 0x00400000)
+#define V4L2_STD_SECAM_LC ((v4l2_std_id) 0x00800000)
+#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id) 0x01000000)
+#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id) 0x02000000)
+#define V4L2_STD_NTSC (V4L2_STD_NTSC_M | V4L2_STD_NTSC_M_JP | V4L2_STD_NTSC_M_KR)
+#define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D | V4L2_STD_SECAM_K | V4L2_STD_SECAM_K1)
+#define V4L2_STD_SECAM (V4L2_STD_SECAM_B | V4L2_STD_SECAM_G | V4L2_STD_SECAM_H | V4L2_STD_SECAM_DK | V4L2_STD_SECAM_L | V4L2_STD_SECAM_LC)
+#define V4L2_STD_PAL_BG (V4L2_STD_PAL_B | V4L2_STD_PAL_B1 | V4L2_STD_PAL_G)
+#define V4L2_STD_PAL_DK (V4L2_STD_PAL_D | V4L2_STD_PAL_D1 | V4L2_STD_PAL_K)
+#define V4L2_STD_PAL (V4L2_STD_PAL_BG | V4L2_STD_PAL_DK | V4L2_STD_PAL_H | V4L2_STD_PAL_I)
+#define V4L2_STD_B (V4L2_STD_PAL_B | V4L2_STD_PAL_B1 | V4L2_STD_SECAM_B)
+#define V4L2_STD_G (V4L2_STD_PAL_G | V4L2_STD_SECAM_G)
+#define V4L2_STD_H (V4L2_STD_PAL_H | V4L2_STD_SECAM_H)
+#define V4L2_STD_L (V4L2_STD_SECAM_L | V4L2_STD_SECAM_LC)
+#define V4L2_STD_GH (V4L2_STD_G | V4L2_STD_H)
+#define V4L2_STD_DK (V4L2_STD_PAL_DK | V4L2_STD_SECAM_DK)
+#define V4L2_STD_BG (V4L2_STD_B | V4L2_STD_G)
+#define V4L2_STD_MN (V4L2_STD_PAL_M | V4L2_STD_PAL_N | V4L2_STD_PAL_Nc | V4L2_STD_NTSC)
+#define V4L2_STD_MTS (V4L2_STD_NTSC_M | V4L2_STD_PAL_M | V4L2_STD_PAL_N | V4L2_STD_PAL_Nc)
+#define V4L2_STD_525_60 (V4L2_STD_PAL_M | V4L2_STD_PAL_60 | V4L2_STD_NTSC | V4L2_STD_NTSC_443)
+#define V4L2_STD_625_50 (V4L2_STD_PAL | V4L2_STD_PAL_N | V4L2_STD_PAL_Nc | V4L2_STD_SECAM)
+#define V4L2_STD_ATSC (V4L2_STD_ATSC_8_VSB | V4L2_STD_ATSC_16_VSB)
+#define V4L2_STD_UNKNOWN 0
+#define V4L2_STD_ALL (V4L2_STD_525_60 | V4L2_STD_625_50)
+struct v4l2_standard {
+  __u32 index;
+  v4l2_std_id id;
+  __u8 name[24];
+  struct v4l2_fract frameperiod;
+  __u32 framelines;
+  __u32 reserved[4];
+};
+struct v4l2_bt_timings {
+  __u32 width;
+  __u32 height;
+  __u32 interlaced;
+  __u32 polarities;
+  __u64 pixelclock;
+  __u32 hfrontporch;
+  __u32 hsync;
+  __u32 hbackporch;
+  __u32 vfrontporch;
+  __u32 vsync;
+  __u32 vbackporch;
+  __u32 il_vfrontporch;
+  __u32 il_vsync;
+  __u32 il_vbackporch;
+  __u32 standards;
+  __u32 flags;
+  struct v4l2_fract picture_aspect;
+  __u8 cea861_vic;
+  __u8 hdmi_vic;
+  __u8 reserved[46];
+} __attribute__((packed));
+#define V4L2_DV_PROGRESSIVE 0
+#define V4L2_DV_INTERLACED 1
+#define V4L2_DV_VSYNC_POS_POL 0x00000001
+#define V4L2_DV_HSYNC_POS_POL 0x00000002
+#define V4L2_DV_BT_STD_CEA861 (1 << 0)
+#define V4L2_DV_BT_STD_DMT (1 << 1)
+#define V4L2_DV_BT_STD_CVT (1 << 2)
+#define V4L2_DV_BT_STD_GTF (1 << 3)
+#define V4L2_DV_BT_STD_SDI (1 << 4)
+#define V4L2_DV_FL_REDUCED_BLANKING (1 << 0)
+#define V4L2_DV_FL_CAN_REDUCE_FPS (1 << 1)
+#define V4L2_DV_FL_REDUCED_FPS (1 << 2)
+#define V4L2_DV_FL_HALF_LINE (1 << 3)
+#define V4L2_DV_FL_IS_CE_VIDEO (1 << 4)
+#define V4L2_DV_FL_FIRST_FIELD_EXTRA_LINE (1 << 5)
+#define V4L2_DV_FL_HAS_PICTURE_ASPECT (1 << 6)
+#define V4L2_DV_FL_HAS_CEA861_VIC (1 << 7)
+#define V4L2_DV_FL_HAS_HDMI_VIC (1 << 8)
+#define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS (1 << 9)
+#define V4L2_DV_BT_BLANKING_WIDTH(bt) ((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch)
+#define V4L2_DV_BT_FRAME_WIDTH(bt) ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
+#define V4L2_DV_BT_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)
+#define V4L2_DV_BT_FRAME_HEIGHT(bt) ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
+struct v4l2_dv_timings {
+  __u32 type;
+  union {
+    struct v4l2_bt_timings bt;
+    __u32 reserved[32];
+  };
+} __attribute__((packed));
+#define V4L2_DV_BT_656_1120 0
+struct v4l2_enum_dv_timings {
+  __u32 index;
+  __u32 pad;
+  __u32 reserved[2];
+  struct v4l2_dv_timings timings;
+};
+struct v4l2_bt_timings_cap {
+  __u32 min_width;
+  __u32 max_width;
+  __u32 min_height;
+  __u32 max_height;
+  __u64 min_pixelclock;
+  __u64 max_pixelclock;
+  __u32 standards;
+  __u32 capabilities;
+  __u32 reserved[16];
+} __attribute__((packed));
+#define V4L2_DV_BT_CAP_INTERLACED (1 << 0)
+#define V4L2_DV_BT_CAP_PROGRESSIVE (1 << 1)
+#define V4L2_DV_BT_CAP_REDUCED_BLANKING (1 << 2)
+#define V4L2_DV_BT_CAP_CUSTOM (1 << 3)
+struct v4l2_dv_timings_cap {
+  __u32 type;
+  __u32 pad;
+  __u32 reserved[2];
+  union {
+    struct v4l2_bt_timings_cap bt;
+    __u32 raw_data[32];
+  };
+};
+struct v4l2_input {
+  __u32 index;
+  __u8 name[32];
+  __u32 type;
+  __u32 audioset;
+  __u32 tuner;
+  v4l2_std_id std;
+  __u32 status;
+  __u32 capabilities;
+  __u32 reserved[3];
+};
+#define V4L2_INPUT_TYPE_TUNER 1
+#define V4L2_INPUT_TYPE_CAMERA 2
+#define V4L2_INPUT_TYPE_TOUCH 3
+#define V4L2_IN_ST_NO_POWER 0x00000001
+#define V4L2_IN_ST_NO_SIGNAL 0x00000002
+#define V4L2_IN_ST_NO_COLOR 0x00000004
+#define V4L2_IN_ST_HFLIP 0x00000010
+#define V4L2_IN_ST_VFLIP 0x00000020
+#define V4L2_IN_ST_NO_H_LOCK 0x00000100
+#define V4L2_IN_ST_COLOR_KILL 0x00000200
+#define V4L2_IN_ST_NO_V_LOCK 0x00000400
+#define V4L2_IN_ST_NO_STD_LOCK 0x00000800
+#define V4L2_IN_ST_NO_SYNC 0x00010000
+#define V4L2_IN_ST_NO_EQU 0x00020000
+#define V4L2_IN_ST_NO_CARRIER 0x00040000
+#define V4L2_IN_ST_MACROVISION 0x01000000
+#define V4L2_IN_ST_NO_ACCESS 0x02000000
+#define V4L2_IN_ST_VTR 0x04000000
+#define V4L2_IN_CAP_DV_TIMINGS 0x00000002
+#define V4L2_IN_CAP_CUSTOM_TIMINGS V4L2_IN_CAP_DV_TIMINGS
+#define V4L2_IN_CAP_STD 0x00000004
+#define V4L2_IN_CAP_NATIVE_SIZE 0x00000008
+struct v4l2_output {
+  __u32 index;
+  __u8 name[32];
+  __u32 type;
+  __u32 audioset;
+  __u32 modulator;
+  v4l2_std_id std;
+  __u32 capabilities;
+  __u32 reserved[3];
+};
+#define V4L2_OUTPUT_TYPE_MODULATOR 1
+#define V4L2_OUTPUT_TYPE_ANALOG 2
+#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
+#define V4L2_OUT_CAP_DV_TIMINGS 0x00000002
+#define V4L2_OUT_CAP_CUSTOM_TIMINGS V4L2_OUT_CAP_DV_TIMINGS
+#define V4L2_OUT_CAP_STD 0x00000004
+#define V4L2_OUT_CAP_NATIVE_SIZE 0x00000008
+struct v4l2_control {
+  __u32 id;
+  __s32 value;
+};
+struct v4l2_ext_control {
+  __u32 id;
+  __u32 size;
+  __u32 reserved2[1];
+  union {
+    __s32 value;
+    __s64 value64;
+    char __user * string;
+    __u8 __user * p_u8;
+    __u16 __user * p_u16;
+    __u32 __user * p_u32;
+    struct v4l2_area __user * p_area;
+    struct v4l2_ctrl_h264_sps __user * p_h264_sps;
+    struct v4l2_ctrl_h264_pps * p_h264_pps;
+    struct v4l2_ctrl_h264_scaling_matrix __user * p_h264_scaling_matrix;
+    struct v4l2_ctrl_h264_pred_weights __user * p_h264_pred_weights;
+    struct v4l2_ctrl_h264_slice_params __user * p_h264_slice_params;
+    struct v4l2_ctrl_h264_decode_params __user * p_h264_decode_params;
+    struct v4l2_ctrl_fwht_params __user * p_fwht_params;
+    struct v4l2_ctrl_vp8_frame __user * p_vp8_frame;
+    struct v4l2_ctrl_mpeg2_sequence __user * p_mpeg2_sequence;
+    struct v4l2_ctrl_mpeg2_picture __user * p_mpeg2_picture;
+    struct v4l2_ctrl_mpeg2_quantisation __user * p_mpeg2_quantisation;
+    void __user * ptr;
+  };
+} __attribute__((packed));
+struct v4l2_ext_controls {
+  union {
+    __u32 ctrl_class;
+    __u32 which;
+  };
+  __u32 count;
+  __u32 error_idx;
+  __s32 request_fd;
+  __u32 reserved[1];
+  struct v4l2_ext_control * controls;
+};
+#define V4L2_CTRL_ID_MASK (0x0fffffff)
+#define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
+#define V4L2_CTRL_ID2WHICH(id) ((id) & 0x0fff0000UL)
+#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
+#define V4L2_CTRL_MAX_DIMS (4)
+#define V4L2_CTRL_WHICH_CUR_VAL 0
+#define V4L2_CTRL_WHICH_DEF_VAL 0x0f000000
+#define V4L2_CTRL_WHICH_REQUEST_VAL 0x0f010000
+enum v4l2_ctrl_type {
+  V4L2_CTRL_TYPE_INTEGER = 1,
+  V4L2_CTRL_TYPE_BOOLEAN = 2,
+  V4L2_CTRL_TYPE_MENU = 3,
+  V4L2_CTRL_TYPE_BUTTON = 4,
+  V4L2_CTRL_TYPE_INTEGER64 = 5,
+  V4L2_CTRL_TYPE_CTRL_CLASS = 6,
+  V4L2_CTRL_TYPE_STRING = 7,
+  V4L2_CTRL_TYPE_BITMASK = 8,
+  V4L2_CTRL_TYPE_INTEGER_MENU = 9,
+  V4L2_CTRL_COMPOUND_TYPES = 0x0100,
+  V4L2_CTRL_TYPE_U8 = 0x0100,
+  V4L2_CTRL_TYPE_U16 = 0x0101,
+  V4L2_CTRL_TYPE_U32 = 0x0102,
+  V4L2_CTRL_TYPE_AREA = 0x0106,
+  V4L2_CTRL_TYPE_HDR10_CLL_INFO = 0x0110,
+  V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY = 0x0111,
+  V4L2_CTRL_TYPE_H264_SPS = 0x0200,
+  V4L2_CTRL_TYPE_H264_PPS = 0x0201,
+  V4L2_CTRL_TYPE_H264_SCALING_MATRIX = 0x0202,
+  V4L2_CTRL_TYPE_H264_SLICE_PARAMS = 0x0203,
+  V4L2_CTRL_TYPE_H264_DECODE_PARAMS = 0x0204,
+  V4L2_CTRL_TYPE_H264_PRED_WEIGHTS = 0x0205,
+  V4L2_CTRL_TYPE_FWHT_PARAMS = 0x0220,
+  V4L2_CTRL_TYPE_VP8_FRAME = 0x0240,
+  V4L2_CTRL_TYPE_MPEG2_QUANTISATION = 0x0250,
+  V4L2_CTRL_TYPE_MPEG2_SEQUENCE = 0x0251,
+  V4L2_CTRL_TYPE_MPEG2_PICTURE = 0x0252,
+};
+struct v4l2_queryctrl {
+  __u32 id;
+  __u32 type;
+  __u8 name[32];
+  __s32 minimum;
+  __s32 maximum;
+  __s32 step;
+  __s32 default_value;
+  __u32 flags;
+  __u32 reserved[2];
+};
+struct v4l2_query_ext_ctrl {
+  __u32 id;
+  __u32 type;
+  char name[32];
+  __s64 minimum;
+  __s64 maximum;
+  __u64 step;
+  __s64 default_value;
+  __u32 flags;
+  __u32 elem_size;
+  __u32 elems;
+  __u32 nr_of_dims;
+  __u32 dims[V4L2_CTRL_MAX_DIMS];
+  __u32 reserved[32];
+};
+struct v4l2_querymenu {
+  __u32 id;
+  __u32 index;
+  union {
+    __u8 name[32];
+    __s64 value;
+  };
+  __u32 reserved;
+} __attribute__((packed));
+#define V4L2_CTRL_FLAG_DISABLED 0x0001
+#define V4L2_CTRL_FLAG_GRABBED 0x0002
+#define V4L2_CTRL_FLAG_READ_ONLY 0x0004
+#define V4L2_CTRL_FLAG_UPDATE 0x0008
+#define V4L2_CTRL_FLAG_INACTIVE 0x0010
+#define V4L2_CTRL_FLAG_SLIDER 0x0020
+#define V4L2_CTRL_FLAG_WRITE_ONLY 0x0040
+#define V4L2_CTRL_FLAG_VOLATILE 0x0080
+#define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
+#define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
+#define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
+#define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
+#define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
+#define V4L2_CID_MAX_CTRLS 1024
+#define V4L2_CID_PRIVATE_BASE 0x08000000
+struct v4l2_tuner {
+  __u32 index;
+  __u8 name[32];
+  __u32 type;
+  __u32 capability;
+  __u32 rangelow;
+  __u32 rangehigh;
+  __u32 rxsubchans;
+  __u32 audmode;
+  __s32 signal;
+  __s32 afc;
+  __u32 reserved[4];
+};
+struct v4l2_modulator {
+  __u32 index;
+  __u8 name[32];
+  __u32 capability;
+  __u32 rangelow;
+  __u32 rangehigh;
+  __u32 txsubchans;
+  __u32 type;
+  __u32 reserved[3];
+};
+#define V4L2_TUNER_CAP_LOW 0x0001
+#define V4L2_TUNER_CAP_NORM 0x0002
+#define V4L2_TUNER_CAP_HWSEEK_BOUNDED 0x0004
+#define V4L2_TUNER_CAP_HWSEEK_WRAP 0x0008
+#define V4L2_TUNER_CAP_STEREO 0x0010
+#define V4L2_TUNER_CAP_LANG2 0x0020
+#define V4L2_TUNER_CAP_SAP 0x0020
+#define V4L2_TUNER_CAP_LANG1 0x0040
+#define V4L2_TUNER_CAP_RDS 0x0080
+#define V4L2_TUNER_CAP_RDS_BLOCK_IO 0x0100
+#define V4L2_TUNER_CAP_RDS_CONTROLS 0x0200
+#define V4L2_TUNER_CAP_FREQ_BANDS 0x0400
+#define V4L2_TUNER_CAP_HWSEEK_PROG_LIM 0x0800
+#define V4L2_TUNER_CAP_1HZ 0x1000
+#define V4L2_TUNER_SUB_MONO 0x0001
+#define V4L2_TUNER_SUB_STEREO 0x0002
+#define V4L2_TUNER_SUB_LANG2 0x0004
+#define V4L2_TUNER_SUB_SAP 0x0004
+#define V4L2_TUNER_SUB_LANG1 0x0008
+#define V4L2_TUNER_SUB_RDS 0x0010
+#define V4L2_TUNER_MODE_MONO 0x0000
+#define V4L2_TUNER_MODE_STEREO 0x0001
+#define V4L2_TUNER_MODE_LANG2 0x0002
+#define V4L2_TUNER_MODE_SAP 0x0002
+#define V4L2_TUNER_MODE_LANG1 0x0003
+#define V4L2_TUNER_MODE_LANG1_LANG2 0x0004
+struct v4l2_frequency {
+  __u32 tuner;
+  __u32 type;
+  __u32 frequency;
+  __u32 reserved[8];
+};
+#define V4L2_BAND_MODULATION_VSB (1 << 1)
+#define V4L2_BAND_MODULATION_FM (1 << 2)
+#define V4L2_BAND_MODULATION_AM (1 << 3)
+struct v4l2_frequency_band {
+  __u32 tuner;
+  __u32 type;
+  __u32 index;
+  __u32 capability;
+  __u32 rangelow;
+  __u32 rangehigh;
+  __u32 modulation;
+  __u32 reserved[9];
+};
+struct v4l2_hw_freq_seek {
+  __u32 tuner;
+  __u32 type;
+  __u32 seek_upward;
+  __u32 wrap_around;
+  __u32 spacing;
+  __u32 rangelow;
+  __u32 rangehigh;
+  __u32 reserved[5];
+};
+struct v4l2_rds_data {
+  __u8 lsb;
+  __u8 msb;
+  __u8 block;
+} __attribute__((packed));
+#define V4L2_RDS_BLOCK_MSK 0x7
+#define V4L2_RDS_BLOCK_A 0
+#define V4L2_RDS_BLOCK_B 1
+#define V4L2_RDS_BLOCK_C 2
+#define V4L2_RDS_BLOCK_D 3
+#define V4L2_RDS_BLOCK_C_ALT 4
+#define V4L2_RDS_BLOCK_INVALID 7
+#define V4L2_RDS_BLOCK_CORRECTED 0x40
+#define V4L2_RDS_BLOCK_ERROR 0x80
+struct v4l2_audio {
+  __u32 index;
+  __u8 name[32];
+  __u32 capability;
+  __u32 mode;
+  __u32 reserved[2];
+};
+#define V4L2_AUDCAP_STEREO 0x00001
+#define V4L2_AUDCAP_AVL 0x00002
+#define V4L2_AUDMODE_AVL 0x00001
+struct v4l2_audioout {
+  __u32 index;
+  __u8 name[32];
+  __u32 capability;
+  __u32 mode;
+  __u32 reserved[2];
+};
+#define V4L2_ENC_IDX_FRAME_I (0)
+#define V4L2_ENC_IDX_FRAME_P (1)
+#define V4L2_ENC_IDX_FRAME_B (2)
+#define V4L2_ENC_IDX_FRAME_MASK (0xf)
+struct v4l2_enc_idx_entry {
+  __u64 offset;
+  __u64 pts;
+  __u32 length;
+  __u32 flags;
+  __u32 reserved[2];
+};
+#define V4L2_ENC_IDX_ENTRIES (64)
+struct v4l2_enc_idx {
+  __u32 entries;
+  __u32 entries_cap;
+  __u32 reserved[4];
+  struct v4l2_enc_idx_entry entry[V4L2_ENC_IDX_ENTRIES];
+};
+#define V4L2_ENC_CMD_START (0)
+#define V4L2_ENC_CMD_STOP (1)
+#define V4L2_ENC_CMD_PAUSE (2)
+#define V4L2_ENC_CMD_RESUME (3)
+#define V4L2_ENC_CMD_STOP_AT_GOP_END (1 << 0)
+struct v4l2_encoder_cmd {
+  __u32 cmd;
+  __u32 flags;
+  union {
+    struct {
+      __u32 data[8];
+    } raw;
+  };
+};
+#define V4L2_DEC_CMD_START (0)
+#define V4L2_DEC_CMD_STOP (1)
+#define V4L2_DEC_CMD_PAUSE (2)
+#define V4L2_DEC_CMD_RESUME (3)
+#define V4L2_DEC_CMD_FLUSH (4)
+#define V4L2_DEC_CMD_START_MUTE_AUDIO (1 << 0)
+#define V4L2_DEC_CMD_PAUSE_TO_BLACK (1 << 0)
+#define V4L2_DEC_CMD_STOP_TO_BLACK (1 << 0)
+#define V4L2_DEC_CMD_STOP_IMMEDIATELY (1 << 1)
+#define V4L2_DEC_START_FMT_NONE (0)
+#define V4L2_DEC_START_FMT_GOP (1)
+struct v4l2_decoder_cmd {
+  __u32 cmd;
+  __u32 flags;
+  union {
+    struct {
+      __u64 pts;
+    } stop;
+    struct {
+      __s32 speed;
+      __u32 format;
+    } start;
+    struct {
+      __u32 data[16];
+    } raw;
+  };
+};
+struct v4l2_vbi_format {
+  __u32 sampling_rate;
+  __u32 offset;
+  __u32 samples_per_line;
+  __u32 sample_format;
+  __s32 start[2];
+  __u32 count[2];
+  __u32 flags;
+  __u32 reserved[2];
+};
+#define V4L2_VBI_UNSYNC (1 << 0)
+#define V4L2_VBI_INTERLACED (1 << 1)
+#define V4L2_VBI_ITU_525_F1_START (1)
+#define V4L2_VBI_ITU_525_F2_START (264)
+#define V4L2_VBI_ITU_625_F1_START (1)
+#define V4L2_VBI_ITU_625_F2_START (314)
+struct v4l2_sliced_vbi_format {
+  __u16 service_set;
+  __u16 service_lines[2][24];
+  __u32 io_size;
+  __u32 reserved[2];
+};
+#define V4L2_SLICED_TELETEXT_B (0x0001)
+#define V4L2_SLICED_VPS (0x0400)
+#define V4L2_SLICED_CAPTION_525 (0x1000)
+#define V4L2_SLICED_WSS_625 (0x4000)
+#define V4L2_SLICED_VBI_525 (V4L2_SLICED_CAPTION_525)
+#define V4L2_SLICED_VBI_625 (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)
+struct v4l2_sliced_vbi_cap {
+  __u16 service_set;
+  __u16 service_lines[2][24];
+  __u32 type;
+  __u32 reserved[3];
+};
+struct v4l2_sliced_vbi_data {
+  __u32 id;
+  __u32 field;
+  __u32 line;
+  __u32 reserved;
+  __u8 data[48];
+};
+#define V4L2_MPEG_VBI_IVTV_TELETEXT_B (1)
+#define V4L2_MPEG_VBI_IVTV_CAPTION_525 (4)
+#define V4L2_MPEG_VBI_IVTV_WSS_625 (5)
+#define V4L2_MPEG_VBI_IVTV_VPS (7)
+struct v4l2_mpeg_vbi_itv0_line {
+  __u8 id;
+  __u8 data[42];
+} __attribute__((packed));
+struct v4l2_mpeg_vbi_itv0 {
+  __le32 linemask[2];
+  struct v4l2_mpeg_vbi_itv0_line line[35];
+} __attribute__((packed));
+struct v4l2_mpeg_vbi_ITV0 {
+  struct v4l2_mpeg_vbi_itv0_line line[36];
+} __attribute__((packed));
+#define V4L2_MPEG_VBI_IVTV_MAGIC0 "itv0"
+#define V4L2_MPEG_VBI_IVTV_MAGIC1 "ITV0"
+struct v4l2_mpeg_vbi_fmt_ivtv {
+  __u8 magic[4];
+  union {
+    struct v4l2_mpeg_vbi_itv0 itv0;
+    struct v4l2_mpeg_vbi_ITV0 ITV0;
+  };
+} __attribute__((packed));
+struct v4l2_plane_pix_format {
+  __u32 sizeimage;
+  __u32 bytesperline;
+  __u16 reserved[6];
+} __attribute__((packed));
+struct v4l2_pix_format_mplane {
+  __u32 width;
+  __u32 height;
+  __u32 pixelformat;
+  __u32 field;
+  __u32 colorspace;
+  struct v4l2_plane_pix_format plane_fmt[VIDEO_MAX_PLANES];
+  __u8 num_planes;
+  __u8 flags;
+  union {
+    __u8 ycbcr_enc;
+    __u8 hsv_enc;
+  };
+  __u8 quantization;
+  __u8 xfer_func;
+  __u8 reserved[7];
+} __attribute__((packed));
+struct v4l2_sdr_format {
+  __u32 pixelformat;
+  __u32 buffersize;
+  __u8 reserved[24];
+} __attribute__((packed));
+struct v4l2_meta_format {
+  __u32 dataformat;
+  __u32 buffersize;
+} __attribute__((packed));
+struct v4l2_format {
+  __u32 type;
+  union {
+    struct v4l2_pix_format pix;
+    struct v4l2_pix_format_mplane pix_mp;
+    struct v4l2_window win;
+    struct v4l2_vbi_format vbi;
+    struct v4l2_sliced_vbi_format sliced;
+    struct v4l2_sdr_format sdr;
+    struct v4l2_meta_format meta;
+    __u8 raw_data[200];
+  } fmt;
+};
+struct v4l2_streamparm {
+  __u32 type;
+  union {
+    struct v4l2_captureparm capture;
+    struct v4l2_outputparm output;
+    __u8 raw_data[200];
+  } parm;
+};
+#define V4L2_EVENT_ALL 0
+#define V4L2_EVENT_VSYNC 1
+#define V4L2_EVENT_EOS 2
+#define V4L2_EVENT_CTRL 3
+#define V4L2_EVENT_FRAME_SYNC 4
+#define V4L2_EVENT_SOURCE_CHANGE 5
+#define V4L2_EVENT_MOTION_DET 6
+#define V4L2_EVENT_PRIVATE_START 0x08000000
+struct v4l2_event_vsync {
+  __u8 field;
+} __attribute__((packed));
+#define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
+#define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
+#define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
+struct v4l2_event_ctrl {
+  __u32 changes;
+  __u32 type;
+  union {
+    __s32 value;
+    __s64 value64;
+  };
+  __u32 flags;
+  __s32 minimum;
+  __s32 maximum;
+  __s32 step;
+  __s32 default_value;
+};
+struct v4l2_event_frame_sync {
+  __u32 frame_sequence;
+};
+#define V4L2_EVENT_SRC_CH_RESOLUTION (1 << 0)
+struct v4l2_event_src_change {
+  __u32 changes;
+};
+#define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ (1 << 0)
+struct v4l2_event_motion_det {
+  __u32 flags;
+  __u32 frame_sequence;
+  __u32 region_mask;
+};
+struct v4l2_event {
+  __u32 type;
+  union {
+    struct v4l2_event_vsync vsync;
+    struct v4l2_event_ctrl ctrl;
+    struct v4l2_event_frame_sync frame_sync;
+    struct v4l2_event_src_change src_change;
+    struct v4l2_event_motion_det motion_det;
+    __u8 data[64];
+  } u;
+  __u32 pending;
+  __u32 sequence;
+  struct timespec timestamp;
+  __u32 id;
+  __u32 reserved[8];
+};
+#define V4L2_EVENT_SUB_FL_SEND_INITIAL (1 << 0)
+#define V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK (1 << 1)
+struct v4l2_event_subscription {
+  __u32 type;
+  __u32 id;
+  __u32 flags;
+  __u32 reserved[5];
+};
+#define V4L2_CHIP_MATCH_BRIDGE 0
+#define V4L2_CHIP_MATCH_SUBDEV 4
+#define V4L2_CHIP_MATCH_HOST V4L2_CHIP_MATCH_BRIDGE
+#define V4L2_CHIP_MATCH_I2C_DRIVER 1
+#define V4L2_CHIP_MATCH_I2C_ADDR 2
+#define V4L2_CHIP_MATCH_AC97 3
+struct v4l2_dbg_match {
+  __u32 type;
+  union {
+    __u32 addr;
+    char name[32];
+  };
+} __attribute__((packed));
+struct v4l2_dbg_register {
+  struct v4l2_dbg_match match;
+  __u32 size;
+  __u64 reg;
+  __u64 val;
+} __attribute__((packed));
+#define V4L2_CHIP_FL_READABLE (1 << 0)
+#define V4L2_CHIP_FL_WRITABLE (1 << 1)
+struct v4l2_dbg_chip_info {
+  struct v4l2_dbg_match match;
+  char name[32];
+  __u32 flags;
+  __u32 reserved[32];
+} __attribute__((packed));
+struct v4l2_create_buffers {
+  __u32 index;
+  __u32 count;
+  __u32 memory;
+  struct v4l2_format format;
+  __u32 capabilities;
+  __u32 flags;
+  __u32 reserved[6];
+};
+#define VIDIOC_QUERYCAP _IOR('V', 0, struct v4l2_capability)
+#define VIDIOC_ENUM_FMT _IOWR('V', 2, struct v4l2_fmtdesc)
+#define VIDIOC_G_FMT _IOWR('V', 4, struct v4l2_format)
+#define VIDIOC_S_FMT _IOWR('V', 5, struct v4l2_format)
+#define VIDIOC_REQBUFS _IOWR('V', 8, struct v4l2_requestbuffers)
+#define VIDIOC_QUERYBUF _IOWR('V', 9, struct v4l2_buffer)
+#define VIDIOC_G_FBUF _IOR('V', 10, struct v4l2_framebuffer)
+#define VIDIOC_S_FBUF _IOW('V', 11, struct v4l2_framebuffer)
+#define VIDIOC_OVERLAY _IOW('V', 14, int)
+#define VIDIOC_QBUF _IOWR('V', 15, struct v4l2_buffer)
+#define VIDIOC_EXPBUF _IOWR('V', 16, struct v4l2_exportbuffer)
+#define VIDIOC_DQBUF _IOWR('V', 17, struct v4l2_buffer)
+#define VIDIOC_STREAMON _IOW('V', 18, int)
+#define VIDIOC_STREAMOFF _IOW('V', 19, int)
+#define VIDIOC_G_PARM _IOWR('V', 21, struct v4l2_streamparm)
+#define VIDIOC_S_PARM _IOWR('V', 22, struct v4l2_streamparm)
+#define VIDIOC_G_STD _IOR('V', 23, v4l2_std_id)
+#define VIDIOC_S_STD _IOW('V', 24, v4l2_std_id)
+#define VIDIOC_ENUMSTD _IOWR('V', 25, struct v4l2_standard)
+#define VIDIOC_ENUMINPUT _IOWR('V', 26, struct v4l2_input)
+#define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control)
+#define VIDIOC_S_CTRL _IOWR('V', 28, struct v4l2_control)
+#define VIDIOC_G_TUNER _IOWR('V', 29, struct v4l2_tuner)
+#define VIDIOC_S_TUNER _IOW('V', 30, struct v4l2_tuner)
+#define VIDIOC_G_AUDIO _IOR('V', 33, struct v4l2_audio)
+#define VIDIOC_S_AUDIO _IOW('V', 34, struct v4l2_audio)
+#define VIDIOC_QUERYCTRL _IOWR('V', 36, struct v4l2_queryctrl)
+#define VIDIOC_QUERYMENU _IOWR('V', 37, struct v4l2_querymenu)
+#define VIDIOC_G_INPUT _IOR('V', 38, int)
+#define VIDIOC_S_INPUT _IOWR('V', 39, int)
+#define VIDIOC_G_EDID _IOWR('V', 40, struct v4l2_edid)
+#define VIDIOC_S_EDID _IOWR('V', 41, struct v4l2_edid)
+#define VIDIOC_G_OUTPUT _IOR('V', 46, int)
+#define VIDIOC_S_OUTPUT _IOWR('V', 47, int)
+#define VIDIOC_ENUMOUTPUT _IOWR('V', 48, struct v4l2_output)
+#define VIDIOC_G_AUDOUT _IOR('V', 49, struct v4l2_audioout)
+#define VIDIOC_S_AUDOUT _IOW('V', 50, struct v4l2_audioout)
+#define VIDIOC_G_MODULATOR _IOWR('V', 54, struct v4l2_modulator)
+#define VIDIOC_S_MODULATOR _IOW('V', 55, struct v4l2_modulator)
+#define VIDIOC_G_FREQUENCY _IOWR('V', 56, struct v4l2_frequency)
+#define VIDIOC_S_FREQUENCY _IOW('V', 57, struct v4l2_frequency)
+#define VIDIOC_CROPCAP _IOWR('V', 58, struct v4l2_cropcap)
+#define VIDIOC_G_CROP _IOWR('V', 59, struct v4l2_crop)
+#define VIDIOC_S_CROP _IOW('V', 60, struct v4l2_crop)
+#define VIDIOC_G_JPEGCOMP _IOR('V', 61, struct v4l2_jpegcompression)
+#define VIDIOC_S_JPEGCOMP _IOW('V', 62, struct v4l2_jpegcompression)
+#define VIDIOC_QUERYSTD _IOR('V', 63, v4l2_std_id)
+#define VIDIOC_TRY_FMT _IOWR('V', 64, struct v4l2_format)
+#define VIDIOC_ENUMAUDIO _IOWR('V', 65, struct v4l2_audio)
+#define VIDIOC_ENUMAUDOUT _IOWR('V', 66, struct v4l2_audioout)
+#define VIDIOC_G_PRIORITY _IOR('V', 67, __u32)
+#define VIDIOC_S_PRIORITY _IOW('V', 68, __u32)
+#define VIDIOC_G_SLICED_VBI_CAP _IOWR('V', 69, struct v4l2_sliced_vbi_cap)
+#define VIDIOC_LOG_STATUS _IO('V', 70)
+#define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct v4l2_ext_controls)
+#define VIDIOC_S_EXT_CTRLS _IOWR('V', 72, struct v4l2_ext_controls)
+#define VIDIOC_TRY_EXT_CTRLS _IOWR('V', 73, struct v4l2_ext_controls)
+#define VIDIOC_ENUM_FRAMESIZES _IOWR('V', 74, struct v4l2_frmsizeenum)
+#define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct v4l2_frmivalenum)
+#define VIDIOC_G_ENC_INDEX _IOR('V', 76, struct v4l2_enc_idx)
+#define VIDIOC_ENCODER_CMD _IOWR('V', 77, struct v4l2_encoder_cmd)
+#define VIDIOC_TRY_ENCODER_CMD _IOWR('V', 78, struct v4l2_encoder_cmd)
+#define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct v4l2_dbg_register)
+#define VIDIOC_DBG_G_REGISTER _IOWR('V', 80, struct v4l2_dbg_register)
+#define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct v4l2_hw_freq_seek)
+#define VIDIOC_S_DV_TIMINGS _IOWR('V', 87, struct v4l2_dv_timings)
+#define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct v4l2_dv_timings)
+#define VIDIOC_DQEVENT _IOR('V', 89, struct v4l2_event)
+#define VIDIOC_SUBSCRIBE_EVENT _IOW('V', 90, struct v4l2_event_subscription)
+#define VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct v4l2_event_subscription)
+#define VIDIOC_CREATE_BUFS _IOWR('V', 92, struct v4l2_create_buffers)
+#define VIDIOC_PREPARE_BUF _IOWR('V', 93, struct v4l2_buffer)
+#define VIDIOC_G_SELECTION _IOWR('V', 94, struct v4l2_selection)
+#define VIDIOC_S_SELECTION _IOWR('V', 95, struct v4l2_selection)
+#define VIDIOC_DECODER_CMD _IOWR('V', 96, struct v4l2_decoder_cmd)
+#define VIDIOC_TRY_DECODER_CMD _IOWR('V', 97, struct v4l2_decoder_cmd)
+#define VIDIOC_ENUM_DV_TIMINGS _IOWR('V', 98, struct v4l2_enum_dv_timings)
+#define VIDIOC_QUERY_DV_TIMINGS _IOR('V', 99, struct v4l2_dv_timings)
+#define VIDIOC_DV_TIMINGS_CAP _IOWR('V', 100, struct v4l2_dv_timings_cap)
+#define VIDIOC_ENUM_FREQ_BANDS _IOWR('V', 101, struct v4l2_frequency_band)
+#define VIDIOC_DBG_G_CHIP_INFO _IOWR('V', 102, struct v4l2_dbg_chip_info)
+#define VIDIOC_QUERY_EXT_CTRL _IOWR('V', 103, struct v4l2_query_ext_ctrl)
+#define BASE_VIDIOC_PRIVATE 192
+#define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16
+#define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_9p.h b/i686-linux-musl/include/linux/virtio_9p.h
new file mode 100644
index 0000000..1d9dfb1
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_9p.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_VIRTIO_9P_H
+#define _LINUX_VIRTIO_9P_H
+#include <linux/virtio_types.h>
+#include <linux/virtio_ids.h>
+#include <linux/virtio_config.h>
+#define VIRTIO_9P_MOUNT_TAG 0
+struct virtio_9p_config {
+  __virtio16 tag_len;
+  __u8 tag[0];
+} __attribute__((packed));
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_balloon.h b/i686-linux-musl/include/linux/virtio_balloon.h
new file mode 100644
index 0000000..d145caa
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_balloon.h
@@ -0,0 +1,61 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_VIRTIO_BALLOON_H
+#define _LINUX_VIRTIO_BALLOON_H
+#include <linux/types.h>
+#include <linux/virtio_types.h>
+#include <linux/virtio_ids.h>
+#include <linux/virtio_config.h>
+#define VIRTIO_BALLOON_F_MUST_TELL_HOST 0
+#define VIRTIO_BALLOON_F_STATS_VQ 1
+#define VIRTIO_BALLOON_F_DEFLATE_ON_OOM 2
+#define VIRTIO_BALLOON_F_FREE_PAGE_HINT 3
+#define VIRTIO_BALLOON_F_PAGE_POISON 4
+#define VIRTIO_BALLOON_F_REPORTING 5
+#define VIRTIO_BALLOON_PFN_SHIFT 12
+#define VIRTIO_BALLOON_CMD_ID_STOP 0
+#define VIRTIO_BALLOON_CMD_ID_DONE 1
+struct virtio_balloon_config {
+  __le32 num_pages;
+  __le32 actual;
+  union {
+    __le32 free_page_hint_cmd_id;
+    __le32 free_page_report_cmd_id;
+  };
+  __le32 poison_val;
+};
+#define VIRTIO_BALLOON_S_SWAP_IN 0
+#define VIRTIO_BALLOON_S_SWAP_OUT 1
+#define VIRTIO_BALLOON_S_MAJFLT 2
+#define VIRTIO_BALLOON_S_MINFLT 3
+#define VIRTIO_BALLOON_S_MEMFREE 4
+#define VIRTIO_BALLOON_S_MEMTOT 5
+#define VIRTIO_BALLOON_S_AVAIL 6
+#define VIRTIO_BALLOON_S_CACHES 7
+#define VIRTIO_BALLOON_S_HTLB_PGALLOC 8
+#define VIRTIO_BALLOON_S_HTLB_PGFAIL 9
+#define VIRTIO_BALLOON_S_NR 10
+#define VIRTIO_BALLOON_S_NAMES_WITH_PREFIX(VIRTIO_BALLOON_S_NAMES_prefix) { VIRTIO_BALLOON_S_NAMES_prefix "swap-in", VIRTIO_BALLOON_S_NAMES_prefix "swap-out", VIRTIO_BALLOON_S_NAMES_prefix "major-faults", VIRTIO_BALLOON_S_NAMES_prefix "minor-faults", VIRTIO_BALLOON_S_NAMES_prefix "free-memory", VIRTIO_BALLOON_S_NAMES_prefix "total-memory", VIRTIO_BALLOON_S_NAMES_prefix "available-memory", VIRTIO_BALLOON_S_NAMES_prefix "disk-caches", VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-allocations", VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-failures" \
+}
+#define VIRTIO_BALLOON_S_NAMES VIRTIO_BALLOON_S_NAMES_WITH_PREFIX("")
+struct virtio_balloon_stat {
+  __virtio16 tag;
+  __virtio64 val;
+} __attribute__((packed));
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_blk.h b/i686-linux-musl/include/linux/virtio_blk.h
new file mode 100644
index 0000000..f2f0381
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_blk.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_VIRTIO_BLK_H
+#define _LINUX_VIRTIO_BLK_H
+#include <linux/types.h>
+#include <linux/virtio_ids.h>
+#include <linux/virtio_config.h>
+#include <linux/virtio_types.h>
+#define VIRTIO_BLK_F_SIZE_MAX 1
+#define VIRTIO_BLK_F_SEG_MAX 2
+#define VIRTIO_BLK_F_GEOMETRY 4
+#define VIRTIO_BLK_F_RO 5
+#define VIRTIO_BLK_F_BLK_SIZE 6
+#define VIRTIO_BLK_F_TOPOLOGY 10
+#define VIRTIO_BLK_F_MQ 12
+#define VIRTIO_BLK_F_DISCARD 13
+#define VIRTIO_BLK_F_WRITE_ZEROES 14
+#ifndef VIRTIO_BLK_NO_LEGACY
+#define VIRTIO_BLK_F_BARRIER 0
+#define VIRTIO_BLK_F_SCSI 7
+#define VIRTIO_BLK_F_FLUSH 9
+#define VIRTIO_BLK_F_CONFIG_WCE 11
+#define VIRTIO_BLK_F_WCE VIRTIO_BLK_F_FLUSH
+#endif
+#define VIRTIO_BLK_ID_BYTES 20
+struct virtio_blk_config {
+  __virtio64 capacity;
+  __virtio32 size_max;
+  __virtio32 seg_max;
+  struct virtio_blk_geometry {
+    __virtio16 cylinders;
+    __u8 heads;
+    __u8 sectors;
+  } geometry;
+  __virtio32 blk_size;
+  __u8 physical_block_exp;
+  __u8 alignment_offset;
+  __virtio16 min_io_size;
+  __virtio32 opt_io_size;
+  __u8 wce;
+  __u8 unused;
+  __virtio16 num_queues;
+  __virtio32 max_discard_sectors;
+  __virtio32 max_discard_seg;
+  __virtio32 discard_sector_alignment;
+  __virtio32 max_write_zeroes_sectors;
+  __virtio32 max_write_zeroes_seg;
+  __u8 write_zeroes_may_unmap;
+  __u8 unused1[3];
+} __attribute__((packed));
+#define VIRTIO_BLK_T_IN 0
+#define VIRTIO_BLK_T_OUT 1
+#ifndef VIRTIO_BLK_NO_LEGACY
+#define VIRTIO_BLK_T_SCSI_CMD 2
+#endif
+#define VIRTIO_BLK_T_FLUSH 4
+#define VIRTIO_BLK_T_GET_ID 8
+#define VIRTIO_BLK_T_DISCARD 11
+#define VIRTIO_BLK_T_WRITE_ZEROES 13
+#ifndef VIRTIO_BLK_NO_LEGACY
+#define VIRTIO_BLK_T_BARRIER 0x80000000
+#endif
+struct virtio_blk_outhdr {
+  __virtio32 type;
+  __virtio32 ioprio;
+  __virtio64 sector;
+};
+#define VIRTIO_BLK_WRITE_ZEROES_FLAG_UNMAP 0x00000001
+struct virtio_blk_discard_write_zeroes {
+  __le64 sector;
+  __le32 num_sectors;
+  __le32 flags;
+};
+#ifndef VIRTIO_BLK_NO_LEGACY
+struct virtio_scsi_inhdr {
+  __virtio32 errors;
+  __virtio32 data_len;
+  __virtio32 sense_len;
+  __virtio32 residual;
+};
+#endif
+#define VIRTIO_BLK_S_OK 0
+#define VIRTIO_BLK_S_IOERR 1
+#define VIRTIO_BLK_S_UNSUPP 2
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_bt.h b/i686-linux-musl/include/linux/virtio_bt.h
new file mode 100644
index 0000000..7e29eaa
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_bt.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_VIRTIO_BT_H
+#define _UAPI_LINUX_VIRTIO_BT_H
+#include <linux/virtio_types.h>
+#define VIRTIO_BT_F_VND_HCI 0
+#define VIRTIO_BT_F_MSFT_EXT 1
+#define VIRTIO_BT_F_AOSP_EXT 2
+enum virtio_bt_config_type {
+  VIRTIO_BT_CONFIG_TYPE_PRIMARY = 0,
+  VIRTIO_BT_CONFIG_TYPE_AMP = 1,
+};
+enum virtio_bt_config_vendor {
+  VIRTIO_BT_CONFIG_VENDOR_NONE = 0,
+  VIRTIO_BT_CONFIG_VENDOR_ZEPHYR = 1,
+  VIRTIO_BT_CONFIG_VENDOR_INTEL = 2,
+  VIRTIO_BT_CONFIG_VENDOR_REALTEK = 3,
+};
+struct virtio_bt_config {
+  __u8 type;
+  __u16 vendor;
+  __u16 msft_opcode;
+} __attribute__((packed));
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_config.h b/i686-linux-musl/include/linux/virtio_config.h
new file mode 100644
index 0000000..6198fd1
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_config.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_VIRTIO_CONFIG_H
+#define _UAPI_LINUX_VIRTIO_CONFIG_H
+#include <linux/types.h>
+#define VIRTIO_CONFIG_S_ACKNOWLEDGE 1
+#define VIRTIO_CONFIG_S_DRIVER 2
+#define VIRTIO_CONFIG_S_DRIVER_OK 4
+#define VIRTIO_CONFIG_S_FEATURES_OK 8
+#define VIRTIO_CONFIG_S_NEEDS_RESET 0x40
+#define VIRTIO_CONFIG_S_FAILED 0x80
+#define VIRTIO_TRANSPORT_F_START 28
+#define VIRTIO_TRANSPORT_F_END 38
+#ifndef VIRTIO_CONFIG_NO_LEGACY
+#define VIRTIO_F_NOTIFY_ON_EMPTY 24
+#define VIRTIO_F_ANY_LAYOUT 27
+#endif
+#define VIRTIO_F_VERSION_1 32
+#define VIRTIO_F_ACCESS_PLATFORM 33
+#define VIRTIO_F_IOMMU_PLATFORM VIRTIO_F_ACCESS_PLATFORM
+#define VIRTIO_F_RING_PACKED 34
+#define VIRTIO_F_ORDER_PLATFORM 36
+#define VIRTIO_F_SR_IOV 37
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_console.h b/i686-linux-musl/include/linux/virtio_console.h
new file mode 100644
index 0000000..6eb4d2a
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_console.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_VIRTIO_CONSOLE_H
+#define _UAPI_LINUX_VIRTIO_CONSOLE_H
+#include <linux/types.h>
+#include <linux/virtio_types.h>
+#include <linux/virtio_ids.h>
+#include <linux/virtio_config.h>
+#define VIRTIO_CONSOLE_F_SIZE 0
+#define VIRTIO_CONSOLE_F_MULTIPORT 1
+#define VIRTIO_CONSOLE_F_EMERG_WRITE 2
+#define VIRTIO_CONSOLE_BAD_ID (~(__u32) 0)
+struct virtio_console_config {
+  __virtio16 cols;
+  __virtio16 rows;
+  __virtio32 max_nr_ports;
+  __virtio32 emerg_wr;
+} __attribute__((packed));
+struct virtio_console_control {
+  __virtio32 id;
+  __virtio16 event;
+  __virtio16 value;
+};
+#define VIRTIO_CONSOLE_DEVICE_READY 0
+#define VIRTIO_CONSOLE_PORT_ADD 1
+#define VIRTIO_CONSOLE_PORT_REMOVE 2
+#define VIRTIO_CONSOLE_PORT_READY 3
+#define VIRTIO_CONSOLE_CONSOLE_PORT 4
+#define VIRTIO_CONSOLE_RESIZE 5
+#define VIRTIO_CONSOLE_PORT_OPEN 6
+#define VIRTIO_CONSOLE_PORT_NAME 7
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_crypto.h b/i686-linux-musl/include/linux/virtio_crypto.h
new file mode 100644
index 0000000..2ce760f
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_crypto.h
@@ -0,0 +1,293 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _VIRTIO_CRYPTO_H
+#define _VIRTIO_CRYPTO_H
+#include <linux/types.h>
+#include <linux/virtio_types.h>
+#include <linux/virtio_ids.h>
+#include <linux/virtio_config.h>
+#define VIRTIO_CRYPTO_SERVICE_CIPHER 0
+#define VIRTIO_CRYPTO_SERVICE_HASH 1
+#define VIRTIO_CRYPTO_SERVICE_MAC 2
+#define VIRTIO_CRYPTO_SERVICE_AEAD 3
+#define VIRTIO_CRYPTO_OPCODE(service,op) (((service) << 8) | (op))
+struct virtio_crypto_ctrl_header {
+#define VIRTIO_CRYPTO_CIPHER_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x02)
+#define VIRTIO_CRYPTO_CIPHER_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x03)
+#define VIRTIO_CRYPTO_HASH_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_HASH, 0x02)
+#define VIRTIO_CRYPTO_HASH_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_HASH, 0x03)
+#define VIRTIO_CRYPTO_MAC_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x02)
+#define VIRTIO_CRYPTO_MAC_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x03)
+#define VIRTIO_CRYPTO_AEAD_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x02)
+#define VIRTIO_CRYPTO_AEAD_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x03)
+  __le32 opcode;
+  __le32 algo;
+  __le32 flag;
+  __le32 queue_id;
+};
+struct virtio_crypto_cipher_session_para {
+#define VIRTIO_CRYPTO_NO_CIPHER 0
+#define VIRTIO_CRYPTO_CIPHER_ARC4 1
+#define VIRTIO_CRYPTO_CIPHER_AES_ECB 2
+#define VIRTIO_CRYPTO_CIPHER_AES_CBC 3
+#define VIRTIO_CRYPTO_CIPHER_AES_CTR 4
+#define VIRTIO_CRYPTO_CIPHER_DES_ECB 5
+#define VIRTIO_CRYPTO_CIPHER_DES_CBC 6
+#define VIRTIO_CRYPTO_CIPHER_3DES_ECB 7
+#define VIRTIO_CRYPTO_CIPHER_3DES_CBC 8
+#define VIRTIO_CRYPTO_CIPHER_3DES_CTR 9
+#define VIRTIO_CRYPTO_CIPHER_KASUMI_F8 10
+#define VIRTIO_CRYPTO_CIPHER_SNOW3G_UEA2 11
+#define VIRTIO_CRYPTO_CIPHER_AES_F8 12
+#define VIRTIO_CRYPTO_CIPHER_AES_XTS 13
+#define VIRTIO_CRYPTO_CIPHER_ZUC_EEA3 14
+  __le32 algo;
+  __le32 keylen;
+#define VIRTIO_CRYPTO_OP_ENCRYPT 1
+#define VIRTIO_CRYPTO_OP_DECRYPT 2
+  __le32 op;
+  __le32 padding;
+};
+struct virtio_crypto_session_input {
+  __le64 session_id;
+  __le32 status;
+  __le32 padding;
+};
+struct virtio_crypto_cipher_session_req {
+  struct virtio_crypto_cipher_session_para para;
+  __u8 padding[32];
+};
+struct virtio_crypto_hash_session_para {
+#define VIRTIO_CRYPTO_NO_HASH 0
+#define VIRTIO_CRYPTO_HASH_MD5 1
+#define VIRTIO_CRYPTO_HASH_SHA1 2
+#define VIRTIO_CRYPTO_HASH_SHA_224 3
+#define VIRTIO_CRYPTO_HASH_SHA_256 4
+#define VIRTIO_CRYPTO_HASH_SHA_384 5
+#define VIRTIO_CRYPTO_HASH_SHA_512 6
+#define VIRTIO_CRYPTO_HASH_SHA3_224 7
+#define VIRTIO_CRYPTO_HASH_SHA3_256 8
+#define VIRTIO_CRYPTO_HASH_SHA3_384 9
+#define VIRTIO_CRYPTO_HASH_SHA3_512 10
+#define VIRTIO_CRYPTO_HASH_SHA3_SHAKE128 11
+#define VIRTIO_CRYPTO_HASH_SHA3_SHAKE256 12
+  __le32 algo;
+  __le32 hash_result_len;
+  __u8 padding[8];
+};
+struct virtio_crypto_hash_create_session_req {
+  struct virtio_crypto_hash_session_para para;
+  __u8 padding[40];
+};
+struct virtio_crypto_mac_session_para {
+#define VIRTIO_CRYPTO_NO_MAC 0
+#define VIRTIO_CRYPTO_MAC_HMAC_MD5 1
+#define VIRTIO_CRYPTO_MAC_HMAC_SHA1 2
+#define VIRTIO_CRYPTO_MAC_HMAC_SHA_224 3
+#define VIRTIO_CRYPTO_MAC_HMAC_SHA_256 4
+#define VIRTIO_CRYPTO_MAC_HMAC_SHA_384 5
+#define VIRTIO_CRYPTO_MAC_HMAC_SHA_512 6
+#define VIRTIO_CRYPTO_MAC_CMAC_3DES 25
+#define VIRTIO_CRYPTO_MAC_CMAC_AES 26
+#define VIRTIO_CRYPTO_MAC_KASUMI_F9 27
+#define VIRTIO_CRYPTO_MAC_SNOW3G_UIA2 28
+#define VIRTIO_CRYPTO_MAC_GMAC_AES 41
+#define VIRTIO_CRYPTO_MAC_GMAC_TWOFISH 42
+#define VIRTIO_CRYPTO_MAC_CBCMAC_AES 49
+#define VIRTIO_CRYPTO_MAC_CBCMAC_KASUMI_F9 50
+#define VIRTIO_CRYPTO_MAC_XCBC_AES 53
+  __le32 algo;
+  __le32 hash_result_len;
+  __le32 auth_key_len;
+  __le32 padding;
+};
+struct virtio_crypto_mac_create_session_req {
+  struct virtio_crypto_mac_session_para para;
+  __u8 padding[40];
+};
+struct virtio_crypto_aead_session_para {
+#define VIRTIO_CRYPTO_NO_AEAD 0
+#define VIRTIO_CRYPTO_AEAD_GCM 1
+#define VIRTIO_CRYPTO_AEAD_CCM 2
+#define VIRTIO_CRYPTO_AEAD_CHACHA20_POLY1305 3
+  __le32 algo;
+  __le32 key_len;
+  __le32 hash_result_len;
+  __le32 aad_len;
+  __le32 op;
+  __le32 padding;
+};
+struct virtio_crypto_aead_create_session_req {
+  struct virtio_crypto_aead_session_para para;
+  __u8 padding[32];
+};
+struct virtio_crypto_alg_chain_session_para {
+#define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_HASH_THEN_CIPHER 1
+#define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_CIPHER_THEN_HASH 2
+  __le32 alg_chain_order;
+#define VIRTIO_CRYPTO_SYM_HASH_MODE_PLAIN 1
+#define VIRTIO_CRYPTO_SYM_HASH_MODE_AUTH 2
+#define VIRTIO_CRYPTO_SYM_HASH_MODE_NESTED 3
+  __le32 hash_mode;
+  struct virtio_crypto_cipher_session_para cipher_param;
+  union {
+    struct virtio_crypto_hash_session_para hash_param;
+    struct virtio_crypto_mac_session_para mac_param;
+    __u8 padding[16];
+  } u;
+  __le32 aad_len;
+  __le32 padding;
+};
+struct virtio_crypto_alg_chain_session_req {
+  struct virtio_crypto_alg_chain_session_para para;
+};
+struct virtio_crypto_sym_create_session_req {
+  union {
+    struct virtio_crypto_cipher_session_req cipher;
+    struct virtio_crypto_alg_chain_session_req chain;
+    __u8 padding[48];
+  } u;
+#define VIRTIO_CRYPTO_SYM_OP_NONE 0
+#define VIRTIO_CRYPTO_SYM_OP_CIPHER 1
+#define VIRTIO_CRYPTO_SYM_OP_ALGORITHM_CHAINING 2
+  __le32 op_type;
+  __le32 padding;
+};
+struct virtio_crypto_destroy_session_req {
+  __le64 session_id;
+  __u8 padding[48];
+};
+struct virtio_crypto_op_ctrl_req {
+  struct virtio_crypto_ctrl_header header;
+  union {
+    struct virtio_crypto_sym_create_session_req sym_create_session;
+    struct virtio_crypto_hash_create_session_req hash_create_session;
+    struct virtio_crypto_mac_create_session_req mac_create_session;
+    struct virtio_crypto_aead_create_session_req aead_create_session;
+    struct virtio_crypto_destroy_session_req destroy_session;
+    __u8 padding[56];
+  } u;
+};
+struct virtio_crypto_op_header {
+#define VIRTIO_CRYPTO_CIPHER_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x00)
+#define VIRTIO_CRYPTO_CIPHER_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x01)
+#define VIRTIO_CRYPTO_HASH VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_HASH, 0x00)
+#define VIRTIO_CRYPTO_MAC VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x00)
+#define VIRTIO_CRYPTO_AEAD_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x00)
+#define VIRTIO_CRYPTO_AEAD_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x01)
+  __le32 opcode;
+  __le32 algo;
+  __le64 session_id;
+  __le32 flag;
+  __le32 padding;
+};
+struct virtio_crypto_cipher_para {
+  __le32 iv_len;
+  __le32 src_data_len;
+  __le32 dst_data_len;
+  __le32 padding;
+};
+struct virtio_crypto_hash_para {
+  __le32 src_data_len;
+  __le32 hash_result_len;
+};
+struct virtio_crypto_mac_para {
+  struct virtio_crypto_hash_para hash;
+};
+struct virtio_crypto_aead_para {
+  __le32 iv_len;
+  __le32 aad_len;
+  __le32 src_data_len;
+  __le32 dst_data_len;
+};
+struct virtio_crypto_cipher_data_req {
+  struct virtio_crypto_cipher_para para;
+  __u8 padding[24];
+};
+struct virtio_crypto_hash_data_req {
+  struct virtio_crypto_hash_para para;
+  __u8 padding[40];
+};
+struct virtio_crypto_mac_data_req {
+  struct virtio_crypto_mac_para para;
+  __u8 padding[40];
+};
+struct virtio_crypto_alg_chain_data_para {
+  __le32 iv_len;
+  __le32 src_data_len;
+  __le32 dst_data_len;
+  __le32 cipher_start_src_offset;
+  __le32 len_to_cipher;
+  __le32 hash_start_src_offset;
+  __le32 len_to_hash;
+  __le32 aad_len;
+  __le32 hash_result_len;
+  __le32 reserved;
+};
+struct virtio_crypto_alg_chain_data_req {
+  struct virtio_crypto_alg_chain_data_para para;
+};
+struct virtio_crypto_sym_data_req {
+  union {
+    struct virtio_crypto_cipher_data_req cipher;
+    struct virtio_crypto_alg_chain_data_req chain;
+    __u8 padding[40];
+  } u;
+  __le32 op_type;
+  __le32 padding;
+};
+struct virtio_crypto_aead_data_req {
+  struct virtio_crypto_aead_para para;
+  __u8 padding[32];
+};
+struct virtio_crypto_op_data_req {
+  struct virtio_crypto_op_header header;
+  union {
+    struct virtio_crypto_sym_data_req sym_req;
+    struct virtio_crypto_hash_data_req hash_req;
+    struct virtio_crypto_mac_data_req mac_req;
+    struct virtio_crypto_aead_data_req aead_req;
+    __u8 padding[48];
+  } u;
+};
+#define VIRTIO_CRYPTO_OK 0
+#define VIRTIO_CRYPTO_ERR 1
+#define VIRTIO_CRYPTO_BADMSG 2
+#define VIRTIO_CRYPTO_NOTSUPP 3
+#define VIRTIO_CRYPTO_INVSESS 4
+#define VIRTIO_CRYPTO_S_HW_READY (1 << 0)
+struct virtio_crypto_config {
+  __le32 status;
+  __le32 max_dataqueues;
+  __le32 crypto_services;
+  __le32 cipher_algo_l;
+  __le32 cipher_algo_h;
+  __le32 hash_algo;
+  __le32 mac_algo_l;
+  __le32 mac_algo_h;
+  __le32 aead_algo;
+  __le32 max_cipher_key_len;
+  __le32 max_auth_key_len;
+  __le32 reserve;
+  __le64 max_size;
+};
+struct virtio_crypto_inhdr {
+  __u8 status;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_fs.h b/i686-linux-musl/include/linux/virtio_fs.h
new file mode 100644
index 0000000..62c57cf
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_fs.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_VIRTIO_FS_H
+#define _UAPI_LINUX_VIRTIO_FS_H
+#include <linux/types.h>
+#include <linux/virtio_ids.h>
+#include <linux/virtio_config.h>
+#include <linux/virtio_types.h>
+struct virtio_fs_config {
+  __u8 tag[36];
+  __le32 num_request_queues;
+} __attribute__((packed));
+#define VIRTIO_FS_SHMCAP_ID_CACHE 0
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_gpio.h b/i686-linux-musl/include/linux/virtio_gpio.h
new file mode 100644
index 0000000..543fe76
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_gpio.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_VIRTIO_GPIO_H
+#define _LINUX_VIRTIO_GPIO_H
+#include <linux/types.h>
+#define VIRTIO_GPIO_F_IRQ 0
+#define VIRTIO_GPIO_MSG_GET_NAMES 0x0001
+#define VIRTIO_GPIO_MSG_GET_DIRECTION 0x0002
+#define VIRTIO_GPIO_MSG_SET_DIRECTION 0x0003
+#define VIRTIO_GPIO_MSG_GET_VALUE 0x0004
+#define VIRTIO_GPIO_MSG_SET_VALUE 0x0005
+#define VIRTIO_GPIO_MSG_IRQ_TYPE 0x0006
+#define VIRTIO_GPIO_STATUS_OK 0x0
+#define VIRTIO_GPIO_STATUS_ERR 0x1
+#define VIRTIO_GPIO_DIRECTION_NONE 0x00
+#define VIRTIO_GPIO_DIRECTION_OUT 0x01
+#define VIRTIO_GPIO_DIRECTION_IN 0x02
+#define VIRTIO_GPIO_IRQ_TYPE_NONE 0x00
+#define VIRTIO_GPIO_IRQ_TYPE_EDGE_RISING 0x01
+#define VIRTIO_GPIO_IRQ_TYPE_EDGE_FALLING 0x02
+#define VIRTIO_GPIO_IRQ_TYPE_EDGE_BOTH 0x03
+#define VIRTIO_GPIO_IRQ_TYPE_LEVEL_HIGH 0x04
+#define VIRTIO_GPIO_IRQ_TYPE_LEVEL_LOW 0x08
+struct virtio_gpio_config {
+  __le16 ngpio;
+  __u8 padding[2];
+  __le32 gpio_names_size;
+};
+struct virtio_gpio_request {
+  __le16 type;
+  __le16 gpio;
+  __le32 value;
+};
+struct virtio_gpio_response {
+  __u8 status;
+  __u8 value;
+};
+struct virtio_gpio_response_get_names {
+  __u8 status;
+  __u8 value[];
+};
+struct virtio_gpio_irq_request {
+  __le16 gpio;
+};
+struct virtio_gpio_irq_response {
+  __u8 status;
+};
+#define VIRTIO_GPIO_IRQ_STATUS_INVALID 0x0
+#define VIRTIO_GPIO_IRQ_STATUS_VALID 0x1
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_gpu.h b/i686-linux-musl/include/linux/virtio_gpu.h
new file mode 100644
index 0000000..8a21afd
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_gpu.h
@@ -0,0 +1,315 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef VIRTIO_GPU_HW_H
+#define VIRTIO_GPU_HW_H
+#include <linux/types.h>
+#define VIRTIO_GPU_F_VIRGL 0
+#define VIRTIO_GPU_F_EDID 1
+#define VIRTIO_GPU_F_RESOURCE_UUID 2
+#define VIRTIO_GPU_F_RESOURCE_BLOB 3
+#define VIRTIO_GPU_F_CONTEXT_INIT 4
+enum virtio_gpu_ctrl_type {
+  VIRTIO_GPU_UNDEFINED = 0,
+  VIRTIO_GPU_CMD_GET_DISPLAY_INFO = 0x0100,
+  VIRTIO_GPU_CMD_RESOURCE_CREATE_2D,
+  VIRTIO_GPU_CMD_RESOURCE_UNREF,
+  VIRTIO_GPU_CMD_SET_SCANOUT,
+  VIRTIO_GPU_CMD_RESOURCE_FLUSH,
+  VIRTIO_GPU_CMD_TRANSFER_TO_HOST_2D,
+  VIRTIO_GPU_CMD_RESOURCE_ATTACH_BACKING,
+  VIRTIO_GPU_CMD_RESOURCE_DETACH_BACKING,
+  VIRTIO_GPU_CMD_GET_CAPSET_INFO,
+  VIRTIO_GPU_CMD_GET_CAPSET,
+  VIRTIO_GPU_CMD_GET_EDID,
+  VIRTIO_GPU_CMD_RESOURCE_ASSIGN_UUID,
+  VIRTIO_GPU_CMD_RESOURCE_CREATE_BLOB,
+  VIRTIO_GPU_CMD_SET_SCANOUT_BLOB,
+  VIRTIO_GPU_CMD_CTX_CREATE = 0x0200,
+  VIRTIO_GPU_CMD_CTX_DESTROY,
+  VIRTIO_GPU_CMD_CTX_ATTACH_RESOURCE,
+  VIRTIO_GPU_CMD_CTX_DETACH_RESOURCE,
+  VIRTIO_GPU_CMD_RESOURCE_CREATE_3D,
+  VIRTIO_GPU_CMD_TRANSFER_TO_HOST_3D,
+  VIRTIO_GPU_CMD_TRANSFER_FROM_HOST_3D,
+  VIRTIO_GPU_CMD_SUBMIT_3D,
+  VIRTIO_GPU_CMD_RESOURCE_MAP_BLOB,
+  VIRTIO_GPU_CMD_RESOURCE_UNMAP_BLOB,
+  VIRTIO_GPU_CMD_UPDATE_CURSOR = 0x0300,
+  VIRTIO_GPU_CMD_MOVE_CURSOR,
+  VIRTIO_GPU_RESP_OK_NODATA = 0x1100,
+  VIRTIO_GPU_RESP_OK_DISPLAY_INFO,
+  VIRTIO_GPU_RESP_OK_CAPSET_INFO,
+  VIRTIO_GPU_RESP_OK_CAPSET,
+  VIRTIO_GPU_RESP_OK_EDID,
+  VIRTIO_GPU_RESP_OK_RESOURCE_UUID,
+  VIRTIO_GPU_RESP_OK_MAP_INFO,
+  VIRTIO_GPU_RESP_ERR_UNSPEC = 0x1200,
+  VIRTIO_GPU_RESP_ERR_OUT_OF_MEMORY,
+  VIRTIO_GPU_RESP_ERR_INVALID_SCANOUT_ID,
+  VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID,
+  VIRTIO_GPU_RESP_ERR_INVALID_CONTEXT_ID,
+  VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER,
+};
+enum virtio_gpu_shm_id {
+  VIRTIO_GPU_SHM_ID_UNDEFINED = 0,
+  VIRTIO_GPU_SHM_ID_HOST_VISIBLE = 1
+};
+#define VIRTIO_GPU_FLAG_FENCE (1 << 0)
+#define VIRTIO_GPU_FLAG_INFO_RING_IDX (1 << 1)
+struct virtio_gpu_ctrl_hdr {
+  __le32 type;
+  __le32 flags;
+  __le64 fence_id;
+  __le32 ctx_id;
+  __u8 ring_idx;
+  __u8 padding[3];
+};
+struct virtio_gpu_cursor_pos {
+  __le32 scanout_id;
+  __le32 x;
+  __le32 y;
+  __le32 padding;
+};
+struct virtio_gpu_update_cursor {
+  struct virtio_gpu_ctrl_hdr hdr;
+  struct virtio_gpu_cursor_pos pos;
+  __le32 resource_id;
+  __le32 hot_x;
+  __le32 hot_y;
+  __le32 padding;
+};
+struct virtio_gpu_rect {
+  __le32 x;
+  __le32 y;
+  __le32 width;
+  __le32 height;
+};
+struct virtio_gpu_resource_unref {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 resource_id;
+  __le32 padding;
+};
+struct virtio_gpu_resource_create_2d {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 resource_id;
+  __le32 format;
+  __le32 width;
+  __le32 height;
+};
+struct virtio_gpu_set_scanout {
+  struct virtio_gpu_ctrl_hdr hdr;
+  struct virtio_gpu_rect r;
+  __le32 scanout_id;
+  __le32 resource_id;
+};
+struct virtio_gpu_resource_flush {
+  struct virtio_gpu_ctrl_hdr hdr;
+  struct virtio_gpu_rect r;
+  __le32 resource_id;
+  __le32 padding;
+};
+struct virtio_gpu_transfer_to_host_2d {
+  struct virtio_gpu_ctrl_hdr hdr;
+  struct virtio_gpu_rect r;
+  __le64 offset;
+  __le32 resource_id;
+  __le32 padding;
+};
+struct virtio_gpu_mem_entry {
+  __le64 addr;
+  __le32 length;
+  __le32 padding;
+};
+struct virtio_gpu_resource_attach_backing {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 resource_id;
+  __le32 nr_entries;
+};
+struct virtio_gpu_resource_detach_backing {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 resource_id;
+  __le32 padding;
+};
+#define VIRTIO_GPU_MAX_SCANOUTS 16
+struct virtio_gpu_resp_display_info {
+  struct virtio_gpu_ctrl_hdr hdr;
+  struct virtio_gpu_display_one {
+    struct virtio_gpu_rect r;
+    __le32 enabled;
+    __le32 flags;
+  } pmodes[VIRTIO_GPU_MAX_SCANOUTS];
+};
+struct virtio_gpu_box {
+  __le32 x, y, z;
+  __le32 w, h, d;
+};
+struct virtio_gpu_transfer_host_3d {
+  struct virtio_gpu_ctrl_hdr hdr;
+  struct virtio_gpu_box box;
+  __le64 offset;
+  __le32 resource_id;
+  __le32 level;
+  __le32 stride;
+  __le32 layer_stride;
+};
+#define VIRTIO_GPU_RESOURCE_FLAG_Y_0_TOP (1 << 0)
+struct virtio_gpu_resource_create_3d {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 resource_id;
+  __le32 target;
+  __le32 format;
+  __le32 bind;
+  __le32 width;
+  __le32 height;
+  __le32 depth;
+  __le32 array_size;
+  __le32 last_level;
+  __le32 nr_samples;
+  __le32 flags;
+  __le32 padding;
+};
+#define VIRTIO_GPU_CONTEXT_INIT_CAPSET_ID_MASK 0x000000ff
+struct virtio_gpu_ctx_create {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 nlen;
+  __le32 context_init;
+  char debug_name[64];
+};
+struct virtio_gpu_ctx_destroy {
+  struct virtio_gpu_ctrl_hdr hdr;
+};
+struct virtio_gpu_ctx_resource {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 resource_id;
+  __le32 padding;
+};
+struct virtio_gpu_cmd_submit {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 size;
+  __le32 padding;
+};
+#define VIRTIO_GPU_CAPSET_VIRGL 1
+#define VIRTIO_GPU_CAPSET_VIRGL2 2
+struct virtio_gpu_get_capset_info {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 capset_index;
+  __le32 padding;
+};
+struct virtio_gpu_resp_capset_info {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 capset_id;
+  __le32 capset_max_version;
+  __le32 capset_max_size;
+  __le32 padding;
+};
+struct virtio_gpu_get_capset {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 capset_id;
+  __le32 capset_version;
+};
+struct virtio_gpu_resp_capset {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __u8 capset_data[];
+};
+struct virtio_gpu_cmd_get_edid {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 scanout;
+  __le32 padding;
+};
+struct virtio_gpu_resp_edid {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 size;
+  __le32 padding;
+  __u8 edid[1024];
+};
+#define VIRTIO_GPU_EVENT_DISPLAY (1 << 0)
+struct virtio_gpu_config {
+  __le32 events_read;
+  __le32 events_clear;
+  __le32 num_scanouts;
+  __le32 num_capsets;
+};
+enum virtio_gpu_formats {
+  VIRTIO_GPU_FORMAT_B8G8R8A8_UNORM = 1,
+  VIRTIO_GPU_FORMAT_B8G8R8X8_UNORM = 2,
+  VIRTIO_GPU_FORMAT_A8R8G8B8_UNORM = 3,
+  VIRTIO_GPU_FORMAT_X8R8G8B8_UNORM = 4,
+  VIRTIO_GPU_FORMAT_R8G8B8A8_UNORM = 67,
+  VIRTIO_GPU_FORMAT_X8B8G8R8_UNORM = 68,
+  VIRTIO_GPU_FORMAT_A8B8G8R8_UNORM = 121,
+  VIRTIO_GPU_FORMAT_R8G8B8X8_UNORM = 134,
+};
+struct virtio_gpu_resource_assign_uuid {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 resource_id;
+  __le32 padding;
+};
+struct virtio_gpu_resp_resource_uuid {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __u8 uuid[16];
+};
+struct virtio_gpu_resource_create_blob {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 resource_id;
+#define VIRTIO_GPU_BLOB_MEM_GUEST 0x0001
+#define VIRTIO_GPU_BLOB_MEM_HOST3D 0x0002
+#define VIRTIO_GPU_BLOB_MEM_HOST3D_GUEST 0x0003
+#define VIRTIO_GPU_BLOB_FLAG_USE_MAPPABLE 0x0001
+#define VIRTIO_GPU_BLOB_FLAG_USE_SHAREABLE 0x0002
+#define VIRTIO_GPU_BLOB_FLAG_USE_CROSS_DEVICE 0x0004
+  __le32 blob_mem;
+  __le32 blob_flags;
+  __le32 nr_entries;
+  __le64 blob_id;
+  __le64 size;
+};
+struct virtio_gpu_set_scanout_blob {
+  struct virtio_gpu_ctrl_hdr hdr;
+  struct virtio_gpu_rect r;
+  __le32 scanout_id;
+  __le32 resource_id;
+  __le32 width;
+  __le32 height;
+  __le32 format;
+  __le32 padding;
+  __le32 strides[4];
+  __le32 offsets[4];
+};
+struct virtio_gpu_resource_map_blob {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 resource_id;
+  __le32 padding;
+  __le64 offset;
+};
+#define VIRTIO_GPU_MAP_CACHE_MASK 0x0f
+#define VIRTIO_GPU_MAP_CACHE_NONE 0x00
+#define VIRTIO_GPU_MAP_CACHE_CACHED 0x01
+#define VIRTIO_GPU_MAP_CACHE_UNCACHED 0x02
+#define VIRTIO_GPU_MAP_CACHE_WC 0x03
+struct virtio_gpu_resp_map_info {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __u32 map_info;
+  __u32 padding;
+};
+struct virtio_gpu_resource_unmap_blob {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 resource_id;
+  __le32 padding;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_i2c.h b/i686-linux-musl/include/linux/virtio_i2c.h
new file mode 100644
index 0000000..9540f26
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_i2c.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_VIRTIO_I2C_H
+#define _UAPI_LINUX_VIRTIO_I2C_H
+#include <linux/const.h>
+#include <linux/types.h>
+#define VIRTIO_I2C_F_ZERO_LENGTH_REQUEST 0
+#define VIRTIO_I2C_FLAGS_FAIL_NEXT _BITUL(0)
+#define VIRTIO_I2C_FLAGS_M_RD _BITUL(1)
+struct virtio_i2c_out_hdr {
+  __le16 addr;
+  __le16 padding;
+  __le32 flags;
+};
+struct virtio_i2c_in_hdr {
+  __u8 status;
+};
+#define VIRTIO_I2C_MSG_OK 0
+#define VIRTIO_I2C_MSG_ERR 1
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_ids.h b/i686-linux-musl/include/linux/virtio_ids.h
new file mode 100644
index 0000000..2894700
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_ids.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_VIRTIO_IDS_H
+#define _LINUX_VIRTIO_IDS_H
+#define VIRTIO_ID_NET 1
+#define VIRTIO_ID_BLOCK 2
+#define VIRTIO_ID_CONSOLE 3
+#define VIRTIO_ID_RNG 4
+#define VIRTIO_ID_BALLOON 5
+#define VIRTIO_ID_IOMEM 6
+#define VIRTIO_ID_RPMSG 7
+#define VIRTIO_ID_SCSI 8
+#define VIRTIO_ID_9P 9
+#define VIRTIO_ID_MAC80211_WLAN 10
+#define VIRTIO_ID_RPROC_SERIAL 11
+#define VIRTIO_ID_CAIF 12
+#define VIRTIO_ID_MEMORY_BALLOON 13
+#define VIRTIO_ID_GPU 16
+#define VIRTIO_ID_CLOCK 17
+#define VIRTIO_ID_INPUT 18
+#define VIRTIO_ID_VSOCK 19
+#define VIRTIO_ID_CRYPTO 20
+#define VIRTIO_ID_SIGNAL_DIST 21
+#define VIRTIO_ID_PSTORE 22
+#define VIRTIO_ID_IOMMU 23
+#define VIRTIO_ID_MEM 24
+#define VIRTIO_ID_SOUND 25
+#define VIRTIO_ID_FS 26
+#define VIRTIO_ID_PMEM 27
+#define VIRTIO_ID_RPMB 28
+#define VIRTIO_ID_MAC80211_HWSIM 29
+#define VIRTIO_ID_VIDEO_ENCODER 30
+#define VIRTIO_ID_VIDEO_DECODER 31
+#define VIRTIO_ID_SCMI 32
+#define VIRTIO_ID_NITRO_SEC_MOD 33
+#define VIRTIO_ID_I2C_ADAPTER 34
+#define VIRTIO_ID_WATCHDOG 35
+#define VIRTIO_ID_CAN 36
+#define VIRTIO_ID_DMABUF 37
+#define VIRTIO_ID_PARAM_SERV 38
+#define VIRTIO_ID_AUDIO_POLICY 39
+#define VIRTIO_ID_BT 40
+#define VIRTIO_ID_GPIO 41
+#define VIRTIO_TRANS_ID_NET 1000
+#define VIRTIO_TRANS_ID_BLOCK 1001
+#define VIRTIO_TRANS_ID_BALLOON 1002
+#define VIRTIO_TRANS_ID_CONSOLE 1003
+#define VIRTIO_TRANS_ID_SCSI 1004
+#define VIRTIO_TRANS_ID_RNG 1005
+#define VIRTIO_TRANS_ID_9P 1009
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_input.h b/i686-linux-musl/include/linux/virtio_input.h
new file mode 100644
index 0000000..188b0bb
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_input.h
@@ -0,0 +1,61 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_VIRTIO_INPUT_H
+#define _LINUX_VIRTIO_INPUT_H
+#include <linux/types.h>
+enum virtio_input_config_select {
+  VIRTIO_INPUT_CFG_UNSET = 0x00,
+  VIRTIO_INPUT_CFG_ID_NAME = 0x01,
+  VIRTIO_INPUT_CFG_ID_SERIAL = 0x02,
+  VIRTIO_INPUT_CFG_ID_DEVIDS = 0x03,
+  VIRTIO_INPUT_CFG_PROP_BITS = 0x10,
+  VIRTIO_INPUT_CFG_EV_BITS = 0x11,
+  VIRTIO_INPUT_CFG_ABS_INFO = 0x12,
+};
+struct virtio_input_absinfo {
+  __le32 min;
+  __le32 max;
+  __le32 fuzz;
+  __le32 flat;
+  __le32 res;
+};
+struct virtio_input_devids {
+  __le16 bustype;
+  __le16 vendor;
+  __le16 product;
+  __le16 version;
+};
+struct virtio_input_config {
+  __u8 select;
+  __u8 subsel;
+  __u8 size;
+  __u8 reserved[5];
+  union {
+    char string[128];
+    __u8 bitmap[128];
+    struct virtio_input_absinfo abs;
+    struct virtio_input_devids ids;
+  } u;
+};
+struct virtio_input_event {
+  __le16 type;
+  __le16 code;
+  __le32 value;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_iommu.h b/i686-linux-musl/include/linux/virtio_iommu.h
new file mode 100644
index 0000000..b08de57
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_iommu.h
@@ -0,0 +1,136 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_VIRTIO_IOMMU_H
+#define _UAPI_LINUX_VIRTIO_IOMMU_H
+#include <linux/types.h>
+#define VIRTIO_IOMMU_F_INPUT_RANGE 0
+#define VIRTIO_IOMMU_F_DOMAIN_RANGE 1
+#define VIRTIO_IOMMU_F_MAP_UNMAP 2
+#define VIRTIO_IOMMU_F_BYPASS 3
+#define VIRTIO_IOMMU_F_PROBE 4
+#define VIRTIO_IOMMU_F_MMIO 5
+struct virtio_iommu_range_64 {
+  __le64 start;
+  __le64 end;
+};
+struct virtio_iommu_range_32 {
+  __le32 start;
+  __le32 end;
+};
+struct virtio_iommu_config {
+  __le64 page_size_mask;
+  struct virtio_iommu_range_64 input_range;
+  struct virtio_iommu_range_32 domain_range;
+  __le32 probe_size;
+};
+#define VIRTIO_IOMMU_T_ATTACH 0x01
+#define VIRTIO_IOMMU_T_DETACH 0x02
+#define VIRTIO_IOMMU_T_MAP 0x03
+#define VIRTIO_IOMMU_T_UNMAP 0x04
+#define VIRTIO_IOMMU_T_PROBE 0x05
+#define VIRTIO_IOMMU_S_OK 0x00
+#define VIRTIO_IOMMU_S_IOERR 0x01
+#define VIRTIO_IOMMU_S_UNSUPP 0x02
+#define VIRTIO_IOMMU_S_DEVERR 0x03
+#define VIRTIO_IOMMU_S_INVAL 0x04
+#define VIRTIO_IOMMU_S_RANGE 0x05
+#define VIRTIO_IOMMU_S_NOENT 0x06
+#define VIRTIO_IOMMU_S_FAULT 0x07
+#define VIRTIO_IOMMU_S_NOMEM 0x08
+struct virtio_iommu_req_head {
+  __u8 type;
+  __u8 reserved[3];
+};
+struct virtio_iommu_req_tail {
+  __u8 status;
+  __u8 reserved[3];
+};
+struct virtio_iommu_req_attach {
+  struct virtio_iommu_req_head head;
+  __le32 domain;
+  __le32 endpoint;
+  __u8 reserved[8];
+  struct virtio_iommu_req_tail tail;
+};
+struct virtio_iommu_req_detach {
+  struct virtio_iommu_req_head head;
+  __le32 domain;
+  __le32 endpoint;
+  __u8 reserved[8];
+  struct virtio_iommu_req_tail tail;
+};
+#define VIRTIO_IOMMU_MAP_F_READ (1 << 0)
+#define VIRTIO_IOMMU_MAP_F_WRITE (1 << 1)
+#define VIRTIO_IOMMU_MAP_F_MMIO (1 << 2)
+#define VIRTIO_IOMMU_MAP_F_MASK (VIRTIO_IOMMU_MAP_F_READ | VIRTIO_IOMMU_MAP_F_WRITE | VIRTIO_IOMMU_MAP_F_MMIO)
+struct virtio_iommu_req_map {
+  struct virtio_iommu_req_head head;
+  __le32 domain;
+  __le64 virt_start;
+  __le64 virt_end;
+  __le64 phys_start;
+  __le32 flags;
+  struct virtio_iommu_req_tail tail;
+};
+struct virtio_iommu_req_unmap {
+  struct virtio_iommu_req_head head;
+  __le32 domain;
+  __le64 virt_start;
+  __le64 virt_end;
+  __u8 reserved[4];
+  struct virtio_iommu_req_tail tail;
+};
+#define VIRTIO_IOMMU_PROBE_T_NONE 0
+#define VIRTIO_IOMMU_PROBE_T_RESV_MEM 1
+#define VIRTIO_IOMMU_PROBE_T_MASK 0xfff
+struct virtio_iommu_probe_property {
+  __le16 type;
+  __le16 length;
+};
+#define VIRTIO_IOMMU_RESV_MEM_T_RESERVED 0
+#define VIRTIO_IOMMU_RESV_MEM_T_MSI 1
+struct virtio_iommu_probe_resv_mem {
+  struct virtio_iommu_probe_property head;
+  __u8 subtype;
+  __u8 reserved[3];
+  __le64 start;
+  __le64 end;
+};
+struct virtio_iommu_req_probe {
+  struct virtio_iommu_req_head head;
+  __le32 endpoint;
+  __u8 reserved[64];
+  __u8 properties[];
+};
+#define VIRTIO_IOMMU_FAULT_R_UNKNOWN 0
+#define VIRTIO_IOMMU_FAULT_R_DOMAIN 1
+#define VIRTIO_IOMMU_FAULT_R_MAPPING 2
+#define VIRTIO_IOMMU_FAULT_F_READ (1 << 0)
+#define VIRTIO_IOMMU_FAULT_F_WRITE (1 << 1)
+#define VIRTIO_IOMMU_FAULT_F_EXEC (1 << 2)
+#define VIRTIO_IOMMU_FAULT_F_ADDRESS (1 << 8)
+struct virtio_iommu_fault {
+  __u8 reason;
+  __u8 reserved[3];
+  __le32 flags;
+  __le32 endpoint;
+  __u8 reserved2[4];
+  __le64 address;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_mem.h b/i686-linux-musl/include/linux/virtio_mem.h
new file mode 100644
index 0000000..66ffce1
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_mem.h
@@ -0,0 +1,82 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_VIRTIO_MEM_H
+#define _LINUX_VIRTIO_MEM_H
+#include <linux/types.h>
+#include <linux/virtio_types.h>
+#include <linux/virtio_ids.h>
+#include <linux/virtio_config.h>
+#define VIRTIO_MEM_F_ACPI_PXM 0
+#define VIRTIO_MEM_F_UNPLUGGED_INACCESSIBLE 1
+#define VIRTIO_MEM_REQ_PLUG 0
+#define VIRTIO_MEM_REQ_UNPLUG 1
+#define VIRTIO_MEM_REQ_UNPLUG_ALL 2
+#define VIRTIO_MEM_REQ_STATE 3
+struct virtio_mem_req_plug {
+  __virtio64 addr;
+  __virtio16 nb_blocks;
+  __virtio16 padding[3];
+};
+struct virtio_mem_req_unplug {
+  __virtio64 addr;
+  __virtio16 nb_blocks;
+  __virtio16 padding[3];
+};
+struct virtio_mem_req_state {
+  __virtio64 addr;
+  __virtio16 nb_blocks;
+  __virtio16 padding[3];
+};
+struct virtio_mem_req {
+  __virtio16 type;
+  __virtio16 padding[3];
+  union {
+    struct virtio_mem_req_plug plug;
+    struct virtio_mem_req_unplug unplug;
+    struct virtio_mem_req_state state;
+  } u;
+};
+#define VIRTIO_MEM_RESP_ACK 0
+#define VIRTIO_MEM_RESP_NACK 1
+#define VIRTIO_MEM_RESP_BUSY 2
+#define VIRTIO_MEM_RESP_ERROR 3
+#define VIRTIO_MEM_STATE_PLUGGED 0
+#define VIRTIO_MEM_STATE_UNPLUGGED 1
+#define VIRTIO_MEM_STATE_MIXED 2
+struct virtio_mem_resp_state {
+  __virtio16 state;
+};
+struct virtio_mem_resp {
+  __virtio16 type;
+  __virtio16 padding[3];
+  union {
+    struct virtio_mem_resp_state state;
+  } u;
+};
+struct virtio_mem_config {
+  __le64 block_size;
+  __le16 node_id;
+  __u8 padding[6];
+  __le64 addr;
+  __le64 region_size;
+  __le64 usable_region_size;
+  __le64 plugged_size;
+  __le64 requested_size;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_mmio.h b/i686-linux-musl/include/linux/virtio_mmio.h
new file mode 100644
index 0000000..a420fdc
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_mmio.h
@@ -0,0 +1,59 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_VIRTIO_MMIO_H
+#define _LINUX_VIRTIO_MMIO_H
+#define VIRTIO_MMIO_MAGIC_VALUE 0x000
+#define VIRTIO_MMIO_VERSION 0x004
+#define VIRTIO_MMIO_DEVICE_ID 0x008
+#define VIRTIO_MMIO_VENDOR_ID 0x00c
+#define VIRTIO_MMIO_DEVICE_FEATURES 0x010
+#define VIRTIO_MMIO_DEVICE_FEATURES_SEL 0x014
+#define VIRTIO_MMIO_DRIVER_FEATURES 0x020
+#define VIRTIO_MMIO_DRIVER_FEATURES_SEL 0x024
+#ifndef VIRTIO_MMIO_NO_LEGACY
+#define VIRTIO_MMIO_GUEST_PAGE_SIZE 0x028
+#endif
+#define VIRTIO_MMIO_QUEUE_SEL 0x030
+#define VIRTIO_MMIO_QUEUE_NUM_MAX 0x034
+#define VIRTIO_MMIO_QUEUE_NUM 0x038
+#ifndef VIRTIO_MMIO_NO_LEGACY
+#define VIRTIO_MMIO_QUEUE_ALIGN 0x03c
+#define VIRTIO_MMIO_QUEUE_PFN 0x040
+#endif
+#define VIRTIO_MMIO_QUEUE_READY 0x044
+#define VIRTIO_MMIO_QUEUE_NOTIFY 0x050
+#define VIRTIO_MMIO_INTERRUPT_STATUS 0x060
+#define VIRTIO_MMIO_INTERRUPT_ACK 0x064
+#define VIRTIO_MMIO_STATUS 0x070
+#define VIRTIO_MMIO_QUEUE_DESC_LOW 0x080
+#define VIRTIO_MMIO_QUEUE_DESC_HIGH 0x084
+#define VIRTIO_MMIO_QUEUE_AVAIL_LOW 0x090
+#define VIRTIO_MMIO_QUEUE_AVAIL_HIGH 0x094
+#define VIRTIO_MMIO_QUEUE_USED_LOW 0x0a0
+#define VIRTIO_MMIO_QUEUE_USED_HIGH 0x0a4
+#define VIRTIO_MMIO_SHM_SEL 0x0ac
+#define VIRTIO_MMIO_SHM_LEN_LOW 0x0b0
+#define VIRTIO_MMIO_SHM_LEN_HIGH 0x0b4
+#define VIRTIO_MMIO_SHM_BASE_LOW 0x0b8
+#define VIRTIO_MMIO_SHM_BASE_HIGH 0x0bc
+#define VIRTIO_MMIO_CONFIG_GENERATION 0x0fc
+#define VIRTIO_MMIO_CONFIG 0x100
+#define VIRTIO_MMIO_INT_VRING (1 << 0)
+#define VIRTIO_MMIO_INT_CONFIG (1 << 1)
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_net.h b/i686-linux-musl/include/linux/virtio_net.h
new file mode 100644
index 0000000..2d92904
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_net.h
@@ -0,0 +1,189 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_VIRTIO_NET_H
+#define _UAPI_LINUX_VIRTIO_NET_H
+#include <linux/types.h>
+#include <linux/virtio_ids.h>
+#include <linux/virtio_config.h>
+#include <linux/virtio_types.h>
+#include <linux/if_ether.h>
+#define VIRTIO_NET_F_CSUM 0
+#define VIRTIO_NET_F_GUEST_CSUM 1
+#define VIRTIO_NET_F_CTRL_GUEST_OFFLOADS 2
+#define VIRTIO_NET_F_MTU 3
+#define VIRTIO_NET_F_MAC 5
+#define VIRTIO_NET_F_GUEST_TSO4 7
+#define VIRTIO_NET_F_GUEST_TSO6 8
+#define VIRTIO_NET_F_GUEST_ECN 9
+#define VIRTIO_NET_F_GUEST_UFO 10
+#define VIRTIO_NET_F_HOST_TSO4 11
+#define VIRTIO_NET_F_HOST_TSO6 12
+#define VIRTIO_NET_F_HOST_ECN 13
+#define VIRTIO_NET_F_HOST_UFO 14
+#define VIRTIO_NET_F_MRG_RXBUF 15
+#define VIRTIO_NET_F_STATUS 16
+#define VIRTIO_NET_F_CTRL_VQ 17
+#define VIRTIO_NET_F_CTRL_RX 18
+#define VIRTIO_NET_F_CTRL_VLAN 19
+#define VIRTIO_NET_F_CTRL_RX_EXTRA 20
+#define VIRTIO_NET_F_GUEST_ANNOUNCE 21
+#define VIRTIO_NET_F_MQ 22
+#define VIRTIO_NET_F_CTRL_MAC_ADDR 23
+#define VIRTIO_NET_F_HASH_REPORT 57
+#define VIRTIO_NET_F_RSS 60
+#define VIRTIO_NET_F_RSC_EXT 61
+#define VIRTIO_NET_F_STANDBY 62
+#define VIRTIO_NET_F_SPEED_DUPLEX 63
+#ifndef VIRTIO_NET_NO_LEGACY
+#define VIRTIO_NET_F_GSO 6
+#endif
+#define VIRTIO_NET_S_LINK_UP 1
+#define VIRTIO_NET_S_ANNOUNCE 2
+#define VIRTIO_NET_RSS_HASH_TYPE_IPv4 (1 << 0)
+#define VIRTIO_NET_RSS_HASH_TYPE_TCPv4 (1 << 1)
+#define VIRTIO_NET_RSS_HASH_TYPE_UDPv4 (1 << 2)
+#define VIRTIO_NET_RSS_HASH_TYPE_IPv6 (1 << 3)
+#define VIRTIO_NET_RSS_HASH_TYPE_TCPv6 (1 << 4)
+#define VIRTIO_NET_RSS_HASH_TYPE_UDPv6 (1 << 5)
+#define VIRTIO_NET_RSS_HASH_TYPE_IP_EX (1 << 6)
+#define VIRTIO_NET_RSS_HASH_TYPE_TCP_EX (1 << 7)
+#define VIRTIO_NET_RSS_HASH_TYPE_UDP_EX (1 << 8)
+struct virtio_net_config {
+  __u8 mac[ETH_ALEN];
+  __virtio16 status;
+  __virtio16 max_virtqueue_pairs;
+  __virtio16 mtu;
+  __le32 speed;
+  __u8 duplex;
+  __u8 rss_max_key_size;
+  __le16 rss_max_indirection_table_length;
+  __le32 supported_hash_types;
+} __attribute__((packed));
+struct virtio_net_hdr_v1 {
+#define VIRTIO_NET_HDR_F_NEEDS_CSUM 1
+#define VIRTIO_NET_HDR_F_DATA_VALID 2
+#define VIRTIO_NET_HDR_F_RSC_INFO 4
+  __u8 flags;
+#define VIRTIO_NET_HDR_GSO_NONE 0
+#define VIRTIO_NET_HDR_GSO_TCPV4 1
+#define VIRTIO_NET_HDR_GSO_UDP 3
+#define VIRTIO_NET_HDR_GSO_TCPV6 4
+#define VIRTIO_NET_HDR_GSO_ECN 0x80
+  __u8 gso_type;
+  __virtio16 hdr_len;
+  __virtio16 gso_size;
+  union {
+    struct {
+      __virtio16 csum_start;
+      __virtio16 csum_offset;
+    };
+    struct {
+      __virtio16 start;
+      __virtio16 offset;
+    } csum;
+    struct {
+      __le16 segments;
+      __le16 dup_acks;
+    } rsc;
+  };
+  __virtio16 num_buffers;
+};
+struct virtio_net_hdr_v1_hash {
+  struct virtio_net_hdr_v1 hdr;
+  __le32 hash_value;
+#define VIRTIO_NET_HASH_REPORT_NONE 0
+#define VIRTIO_NET_HASH_REPORT_IPv4 1
+#define VIRTIO_NET_HASH_REPORT_TCPv4 2
+#define VIRTIO_NET_HASH_REPORT_UDPv4 3
+#define VIRTIO_NET_HASH_REPORT_IPv6 4
+#define VIRTIO_NET_HASH_REPORT_TCPv6 5
+#define VIRTIO_NET_HASH_REPORT_UDPv6 6
+#define VIRTIO_NET_HASH_REPORT_IPv6_EX 7
+#define VIRTIO_NET_HASH_REPORT_TCPv6_EX 8
+#define VIRTIO_NET_HASH_REPORT_UDPv6_EX 9
+  __le16 hash_report;
+  __le16 padding;
+};
+#ifndef VIRTIO_NET_NO_LEGACY
+struct virtio_net_hdr {
+  __u8 flags;
+  __u8 gso_type;
+  __virtio16 hdr_len;
+  __virtio16 gso_size;
+  __virtio16 csum_start;
+  __virtio16 csum_offset;
+};
+struct virtio_net_hdr_mrg_rxbuf {
+  struct virtio_net_hdr hdr;
+  __virtio16 num_buffers;
+};
+#endif
+struct virtio_net_ctrl_hdr {
+  __u8 class;
+  __u8 cmd;
+} __attribute__((packed));
+typedef __u8 virtio_net_ctrl_ack;
+#define VIRTIO_NET_OK 0
+#define VIRTIO_NET_ERR 1
+#define VIRTIO_NET_CTRL_RX 0
+#define VIRTIO_NET_CTRL_RX_PROMISC 0
+#define VIRTIO_NET_CTRL_RX_ALLMULTI 1
+#define VIRTIO_NET_CTRL_RX_ALLUNI 2
+#define VIRTIO_NET_CTRL_RX_NOMULTI 3
+#define VIRTIO_NET_CTRL_RX_NOUNI 4
+#define VIRTIO_NET_CTRL_RX_NOBCAST 5
+struct virtio_net_ctrl_mac {
+  __virtio32 entries;
+  __u8 macs[][ETH_ALEN];
+} __attribute__((packed));
+#define VIRTIO_NET_CTRL_MAC 1
+#define VIRTIO_NET_CTRL_MAC_TABLE_SET 0
+#define VIRTIO_NET_CTRL_MAC_ADDR_SET 1
+#define VIRTIO_NET_CTRL_VLAN 2
+#define VIRTIO_NET_CTRL_VLAN_ADD 0
+#define VIRTIO_NET_CTRL_VLAN_DEL 1
+#define VIRTIO_NET_CTRL_ANNOUNCE 3
+#define VIRTIO_NET_CTRL_ANNOUNCE_ACK 0
+#define VIRTIO_NET_CTRL_MQ 4
+struct virtio_net_ctrl_mq {
+  __virtio16 virtqueue_pairs;
+};
+#define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET 0
+#define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN 1
+#define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX 0x8000
+struct virtio_net_rss_config {
+  __le32 hash_types;
+  __le16 indirection_table_mask;
+  __le16 unclassified_queue;
+  __le16 indirection_table[1];
+  __le16 max_tx_vq;
+  __u8 hash_key_length;
+  __u8 hash_key_data[];
+};
+#define VIRTIO_NET_CTRL_MQ_RSS_CONFIG 1
+struct virtio_net_hash_config {
+  __le32 hash_types;
+  __le16 reserved[4];
+  __u8 hash_key_length;
+  __u8 hash_key_data[];
+};
+#define VIRTIO_NET_CTRL_MQ_HASH_CONFIG 2
+#define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5
+#define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_pci.h b/i686-linux-musl/include/linux/virtio_pci.h
new file mode 100644
index 0000000..e6d2731
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_pci.h
@@ -0,0 +1,121 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_VIRTIO_PCI_H
+#define _LINUX_VIRTIO_PCI_H
+#include <linux/types.h>
+#ifndef VIRTIO_PCI_NO_LEGACY
+#define VIRTIO_PCI_HOST_FEATURES 0
+#define VIRTIO_PCI_GUEST_FEATURES 4
+#define VIRTIO_PCI_QUEUE_PFN 8
+#define VIRTIO_PCI_QUEUE_NUM 12
+#define VIRTIO_PCI_QUEUE_SEL 14
+#define VIRTIO_PCI_QUEUE_NOTIFY 16
+#define VIRTIO_PCI_STATUS 18
+#define VIRTIO_PCI_ISR 19
+#define VIRTIO_MSI_CONFIG_VECTOR 20
+#define VIRTIO_MSI_QUEUE_VECTOR 22
+#define VIRTIO_PCI_CONFIG_OFF(msix_enabled) ((msix_enabled) ? 24 : 20)
+#define VIRTIO_PCI_CONFIG(dev) VIRTIO_PCI_CONFIG_OFF((dev)->msix_enabled)
+#define VIRTIO_PCI_ABI_VERSION 0
+#define VIRTIO_PCI_QUEUE_ADDR_SHIFT 12
+#define VIRTIO_PCI_VRING_ALIGN 4096
+#endif
+#define VIRTIO_PCI_ISR_CONFIG 0x2
+#define VIRTIO_MSI_NO_VECTOR 0xffff
+#ifndef VIRTIO_PCI_NO_MODERN
+#define VIRTIO_PCI_CAP_COMMON_CFG 1
+#define VIRTIO_PCI_CAP_NOTIFY_CFG 2
+#define VIRTIO_PCI_CAP_ISR_CFG 3
+#define VIRTIO_PCI_CAP_DEVICE_CFG 4
+#define VIRTIO_PCI_CAP_PCI_CFG 5
+#define VIRTIO_PCI_CAP_SHARED_MEMORY_CFG 8
+struct virtio_pci_cap {
+  __u8 cap_vndr;
+  __u8 cap_next;
+  __u8 cap_len;
+  __u8 cfg_type;
+  __u8 bar;
+  __u8 id;
+  __u8 padding[2];
+  __le32 offset;
+  __le32 length;
+};
+struct virtio_pci_cap64 {
+  struct virtio_pci_cap cap;
+  __le32 offset_hi;
+  __le32 length_hi;
+};
+struct virtio_pci_notify_cap {
+  struct virtio_pci_cap cap;
+  __le32 notify_off_multiplier;
+};
+struct virtio_pci_common_cfg {
+  __le32 device_feature_select;
+  __le32 device_feature;
+  __le32 guest_feature_select;
+  __le32 guest_feature;
+  __le16 msix_config;
+  __le16 num_queues;
+  __u8 device_status;
+  __u8 config_generation;
+  __le16 queue_select;
+  __le16 queue_size;
+  __le16 queue_msix_vector;
+  __le16 queue_enable;
+  __le16 queue_notify_off;
+  __le32 queue_desc_lo;
+  __le32 queue_desc_hi;
+  __le32 queue_avail_lo;
+  __le32 queue_avail_hi;
+  __le32 queue_used_lo;
+  __le32 queue_used_hi;
+};
+struct virtio_pci_cfg_cap {
+  struct virtio_pci_cap cap;
+  __u8 pci_cfg_data[4];
+};
+#define VIRTIO_PCI_CAP_VNDR 0
+#define VIRTIO_PCI_CAP_NEXT 1
+#define VIRTIO_PCI_CAP_LEN 2
+#define VIRTIO_PCI_CAP_CFG_TYPE 3
+#define VIRTIO_PCI_CAP_BAR 4
+#define VIRTIO_PCI_CAP_OFFSET 8
+#define VIRTIO_PCI_CAP_LENGTH 12
+#define VIRTIO_PCI_NOTIFY_CAP_MULT 16
+#define VIRTIO_PCI_COMMON_DFSELECT 0
+#define VIRTIO_PCI_COMMON_DF 4
+#define VIRTIO_PCI_COMMON_GFSELECT 8
+#define VIRTIO_PCI_COMMON_GF 12
+#define VIRTIO_PCI_COMMON_MSIX 16
+#define VIRTIO_PCI_COMMON_NUMQ 18
+#define VIRTIO_PCI_COMMON_STATUS 20
+#define VIRTIO_PCI_COMMON_CFGGENERATION 21
+#define VIRTIO_PCI_COMMON_Q_SELECT 22
+#define VIRTIO_PCI_COMMON_Q_SIZE 24
+#define VIRTIO_PCI_COMMON_Q_MSIX 26
+#define VIRTIO_PCI_COMMON_Q_ENABLE 28
+#define VIRTIO_PCI_COMMON_Q_NOFF 30
+#define VIRTIO_PCI_COMMON_Q_DESCLO 32
+#define VIRTIO_PCI_COMMON_Q_DESCHI 36
+#define VIRTIO_PCI_COMMON_Q_AVAILLO 40
+#define VIRTIO_PCI_COMMON_Q_AVAILHI 44
+#define VIRTIO_PCI_COMMON_Q_USEDLO 48
+#define VIRTIO_PCI_COMMON_Q_USEDHI 52
+#endif
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_pcidev.h b/i686-linux-musl/include/linux/virtio_pcidev.h
new file mode 100644
index 0000000..01c5869
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_pcidev.h
@@ -0,0 +1,41 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_VIRTIO_PCIDEV_H
+#define _UAPI_LINUX_VIRTIO_PCIDEV_H
+#include <linux/types.h>
+enum virtio_pcidev_ops {
+  VIRTIO_PCIDEV_OP_RESERVED = 0,
+  VIRTIO_PCIDEV_OP_CFG_READ,
+  VIRTIO_PCIDEV_OP_CFG_WRITE,
+  VIRTIO_PCIDEV_OP_MMIO_READ,
+  VIRTIO_PCIDEV_OP_MMIO_WRITE,
+  VIRTIO_PCIDEV_OP_MMIO_MEMSET,
+  VIRTIO_PCIDEV_OP_INT,
+  VIRTIO_PCIDEV_OP_MSI,
+  VIRTIO_PCIDEV_OP_PME,
+};
+struct virtio_pcidev_msg {
+  __u8 op;
+  __u8 bar;
+  __u16 reserved;
+  __u32 size;
+  __u64 addr;
+  __u8 data[];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_pmem.h b/i686-linux-musl/include/linux/virtio_pmem.h
new file mode 100644
index 0000000..838f9d6
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_pmem.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_VIRTIO_PMEM_H
+#define _UAPI_LINUX_VIRTIO_PMEM_H
+#include <linux/types.h>
+#include <linux/virtio_ids.h>
+#include <linux/virtio_config.h>
+struct virtio_pmem_config {
+  __le64 start;
+  __le64 size;
+};
+#define VIRTIO_PMEM_REQ_TYPE_FLUSH 0
+struct virtio_pmem_resp {
+  __le32 ret;
+};
+struct virtio_pmem_req {
+  __le32 type;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_ring.h b/i686-linux-musl/include/linux/virtio_ring.h
new file mode 100644
index 0000000..24cf671
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_ring.h
@@ -0,0 +1,84 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_VIRTIO_RING_H
+#define _UAPI_LINUX_VIRTIO_RING_H
+#include <stdint.h>
+#include <linux/types.h>
+#include <linux/virtio_types.h>
+#define VRING_DESC_F_NEXT 1
+#define VRING_DESC_F_WRITE 2
+#define VRING_DESC_F_INDIRECT 4
+#define VRING_PACKED_DESC_F_AVAIL 7
+#define VRING_PACKED_DESC_F_USED 15
+#define VRING_USED_F_NO_NOTIFY 1
+#define VRING_AVAIL_F_NO_INTERRUPT 1
+#define VRING_PACKED_EVENT_FLAG_ENABLE 0x0
+#define VRING_PACKED_EVENT_FLAG_DISABLE 0x1
+#define VRING_PACKED_EVENT_FLAG_DESC 0x2
+#define VRING_PACKED_EVENT_F_WRAP_CTR 15
+#define VIRTIO_RING_F_INDIRECT_DESC 28
+#define VIRTIO_RING_F_EVENT_IDX 29
+#define VRING_AVAIL_ALIGN_SIZE 2
+#define VRING_USED_ALIGN_SIZE 4
+#define VRING_DESC_ALIGN_SIZE 16
+struct vring_desc {
+  __virtio64 addr;
+  __virtio32 len;
+  __virtio16 flags;
+  __virtio16 next;
+};
+struct vring_avail {
+  __virtio16 flags;
+  __virtio16 idx;
+  __virtio16 ring[];
+};
+struct vring_used_elem {
+  __virtio32 id;
+  __virtio32 len;
+};
+typedef struct vring_used_elem __attribute__((aligned(VRING_USED_ALIGN_SIZE))) vring_used_elem_t;
+struct vring_used {
+  __virtio16 flags;
+  __virtio16 idx;
+  vring_used_elem_t ring[];
+};
+typedef struct vring_desc __attribute__((aligned(VRING_DESC_ALIGN_SIZE))) vring_desc_t;
+typedef struct vring_avail __attribute__((aligned(VRING_AVAIL_ALIGN_SIZE))) vring_avail_t;
+typedef struct vring_used __attribute__((aligned(VRING_USED_ALIGN_SIZE))) vring_used_t;
+struct vring {
+  unsigned int num;
+  vring_desc_t * desc;
+  vring_avail_t * avail;
+  vring_used_t * used;
+};
+#ifndef VIRTIO_RING_NO_LEGACY
+#define vring_used_event(vr) ((vr)->avail->ring[(vr)->num])
+#define vring_avail_event(vr) (* (__virtio16 *) & (vr)->used->ring[(vr)->num])
+#endif
+struct vring_packed_desc_event {
+  __le16 off_wrap;
+  __le16 flags;
+};
+struct vring_packed_desc {
+  __le64 addr;
+  __le32 len;
+  __le16 id;
+  __le16 flags;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_rng.h b/i686-linux-musl/include/linux/virtio_rng.h
new file mode 100644
index 0000000..b6471fd
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_rng.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_VIRTIO_RNG_H
+#define _LINUX_VIRTIO_RNG_H
+#include <linux/virtio_ids.h>
+#include <linux/virtio_config.h>
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_scmi.h b/i686-linux-musl/include/linux/virtio_scmi.h
new file mode 100644
index 0000000..7907ed4
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_scmi.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_VIRTIO_SCMI_H
+#define _UAPI_LINUX_VIRTIO_SCMI_H
+#include <linux/virtio_types.h>
+#define VIRTIO_SCMI_F_P2A_CHANNELS 0
+#define VIRTIO_SCMI_F_SHARED_MEMORY 1
+#define VIRTIO_SCMI_VQ_TX 0
+#define VIRTIO_SCMI_VQ_RX 1
+#define VIRTIO_SCMI_VQ_MAX_CNT 2
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_scsi.h b/i686-linux-musl/include/linux/virtio_scsi.h
new file mode 100644
index 0000000..74e6ac8
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_scsi.h
@@ -0,0 +1,131 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_VIRTIO_SCSI_H
+#define _LINUX_VIRTIO_SCSI_H
+#include <linux/virtio_types.h>
+#define VIRTIO_SCSI_CDB_DEFAULT_SIZE 32
+#define VIRTIO_SCSI_SENSE_DEFAULT_SIZE 96
+#ifndef VIRTIO_SCSI_CDB_SIZE
+#define VIRTIO_SCSI_CDB_SIZE VIRTIO_SCSI_CDB_DEFAULT_SIZE
+#endif
+#ifndef VIRTIO_SCSI_SENSE_SIZE
+#define VIRTIO_SCSI_SENSE_SIZE VIRTIO_SCSI_SENSE_DEFAULT_SIZE
+#endif
+struct virtio_scsi_cmd_req {
+  __u8 lun[8];
+  __virtio64 tag;
+  __u8 task_attr;
+  __u8 prio;
+  __u8 crn;
+  __u8 cdb[VIRTIO_SCSI_CDB_SIZE];
+} __attribute__((packed));
+struct virtio_scsi_cmd_req_pi {
+  __u8 lun[8];
+  __virtio64 tag;
+  __u8 task_attr;
+  __u8 prio;
+  __u8 crn;
+  __virtio32 pi_bytesout;
+  __virtio32 pi_bytesin;
+  __u8 cdb[VIRTIO_SCSI_CDB_SIZE];
+} __attribute__((packed));
+struct virtio_scsi_cmd_resp {
+  __virtio32 sense_len;
+  __virtio32 resid;
+  __virtio16 status_qualifier;
+  __u8 status;
+  __u8 response;
+  __u8 sense[VIRTIO_SCSI_SENSE_SIZE];
+} __attribute__((packed));
+struct virtio_scsi_ctrl_tmf_req {
+  __virtio32 type;
+  __virtio32 subtype;
+  __u8 lun[8];
+  __virtio64 tag;
+} __attribute__((packed));
+struct virtio_scsi_ctrl_tmf_resp {
+  __u8 response;
+} __attribute__((packed));
+struct virtio_scsi_ctrl_an_req {
+  __virtio32 type;
+  __u8 lun[8];
+  __virtio32 event_requested;
+} __attribute__((packed));
+struct virtio_scsi_ctrl_an_resp {
+  __virtio32 event_actual;
+  __u8 response;
+} __attribute__((packed));
+struct virtio_scsi_event {
+  __virtio32 event;
+  __u8 lun[8];
+  __virtio32 reason;
+} __attribute__((packed));
+struct virtio_scsi_config {
+  __virtio32 num_queues;
+  __virtio32 seg_max;
+  __virtio32 max_sectors;
+  __virtio32 cmd_per_lun;
+  __virtio32 event_info_size;
+  __virtio32 sense_size;
+  __virtio32 cdb_size;
+  __virtio16 max_channel;
+  __virtio16 max_target;
+  __virtio32 max_lun;
+} __attribute__((packed));
+#define VIRTIO_SCSI_F_INOUT 0
+#define VIRTIO_SCSI_F_HOTPLUG 1
+#define VIRTIO_SCSI_F_CHANGE 2
+#define VIRTIO_SCSI_F_T10_PI 3
+#define VIRTIO_SCSI_S_OK 0
+#define VIRTIO_SCSI_S_OVERRUN 1
+#define VIRTIO_SCSI_S_ABORTED 2
+#define VIRTIO_SCSI_S_BAD_TARGET 3
+#define VIRTIO_SCSI_S_RESET 4
+#define VIRTIO_SCSI_S_BUSY 5
+#define VIRTIO_SCSI_S_TRANSPORT_FAILURE 6
+#define VIRTIO_SCSI_S_TARGET_FAILURE 7
+#define VIRTIO_SCSI_S_NEXUS_FAILURE 8
+#define VIRTIO_SCSI_S_FAILURE 9
+#define VIRTIO_SCSI_S_FUNCTION_SUCCEEDED 10
+#define VIRTIO_SCSI_S_FUNCTION_REJECTED 11
+#define VIRTIO_SCSI_S_INCORRECT_LUN 12
+#define VIRTIO_SCSI_T_TMF 0
+#define VIRTIO_SCSI_T_AN_QUERY 1
+#define VIRTIO_SCSI_T_AN_SUBSCRIBE 2
+#define VIRTIO_SCSI_T_TMF_ABORT_TASK 0
+#define VIRTIO_SCSI_T_TMF_ABORT_TASK_SET 1
+#define VIRTIO_SCSI_T_TMF_CLEAR_ACA 2
+#define VIRTIO_SCSI_T_TMF_CLEAR_TASK_SET 3
+#define VIRTIO_SCSI_T_TMF_I_T_NEXUS_RESET 4
+#define VIRTIO_SCSI_T_TMF_LOGICAL_UNIT_RESET 5
+#define VIRTIO_SCSI_T_TMF_QUERY_TASK 6
+#define VIRTIO_SCSI_T_TMF_QUERY_TASK_SET 7
+#define VIRTIO_SCSI_T_EVENTS_MISSED 0x80000000
+#define VIRTIO_SCSI_T_NO_EVENT 0
+#define VIRTIO_SCSI_T_TRANSPORT_RESET 1
+#define VIRTIO_SCSI_T_ASYNC_NOTIFY 2
+#define VIRTIO_SCSI_T_PARAM_CHANGE 3
+#define VIRTIO_SCSI_EVT_RESET_HARD 0
+#define VIRTIO_SCSI_EVT_RESET_RESCAN 1
+#define VIRTIO_SCSI_EVT_RESET_REMOVED 2
+#define VIRTIO_SCSI_S_SIMPLE 0
+#define VIRTIO_SCSI_S_ORDERED 1
+#define VIRTIO_SCSI_S_HEAD 2
+#define VIRTIO_SCSI_S_ACA 3
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_snd.h b/i686-linux-musl/include/linux/virtio_snd.h
new file mode 100644
index 0000000..60dfa62
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_snd.h
@@ -0,0 +1,224 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef VIRTIO_SND_IF_H
+#define VIRTIO_SND_IF_H
+#include <linux/virtio_types.h>
+struct virtio_snd_config {
+  __le32 jacks;
+  __le32 streams;
+  __le32 chmaps;
+};
+enum {
+  VIRTIO_SND_VQ_CONTROL = 0,
+  VIRTIO_SND_VQ_EVENT,
+  VIRTIO_SND_VQ_TX,
+  VIRTIO_SND_VQ_RX,
+  VIRTIO_SND_VQ_MAX
+};
+enum {
+  VIRTIO_SND_D_OUTPUT = 0,
+  VIRTIO_SND_D_INPUT
+};
+enum {
+  VIRTIO_SND_R_JACK_INFO = 1,
+  VIRTIO_SND_R_JACK_REMAP,
+  VIRTIO_SND_R_PCM_INFO = 0x0100,
+  VIRTIO_SND_R_PCM_SET_PARAMS,
+  VIRTIO_SND_R_PCM_PREPARE,
+  VIRTIO_SND_R_PCM_RELEASE,
+  VIRTIO_SND_R_PCM_START,
+  VIRTIO_SND_R_PCM_STOP,
+  VIRTIO_SND_R_CHMAP_INFO = 0x0200,
+  VIRTIO_SND_EVT_JACK_CONNECTED = 0x1000,
+  VIRTIO_SND_EVT_JACK_DISCONNECTED,
+  VIRTIO_SND_EVT_PCM_PERIOD_ELAPSED = 0x1100,
+  VIRTIO_SND_EVT_PCM_XRUN,
+  VIRTIO_SND_S_OK = 0x8000,
+  VIRTIO_SND_S_BAD_MSG,
+  VIRTIO_SND_S_NOT_SUPP,
+  VIRTIO_SND_S_IO_ERR
+};
+struct virtio_snd_hdr {
+  __le32 code;
+};
+struct virtio_snd_event {
+  struct virtio_snd_hdr hdr;
+  __le32 data;
+};
+struct virtio_snd_query_info {
+  struct virtio_snd_hdr hdr;
+  __le32 start_id;
+  __le32 count;
+  __le32 size;
+};
+struct virtio_snd_info {
+  __le32 hda_fn_nid;
+};
+struct virtio_snd_jack_hdr {
+  struct virtio_snd_hdr hdr;
+  __le32 jack_id;
+};
+enum {
+  VIRTIO_SND_JACK_F_REMAP = 0
+};
+struct virtio_snd_jack_info {
+  struct virtio_snd_info hdr;
+  __le32 features;
+  __le32 hda_reg_defconf;
+  __le32 hda_reg_caps;
+  __u8 connected;
+  __u8 padding[7];
+};
+struct virtio_snd_jack_remap {
+  struct virtio_snd_jack_hdr hdr;
+  __le32 association;
+  __le32 sequence;
+};
+struct virtio_snd_pcm_hdr {
+  struct virtio_snd_hdr hdr;
+  __le32 stream_id;
+};
+enum {
+  VIRTIO_SND_PCM_F_SHMEM_HOST = 0,
+  VIRTIO_SND_PCM_F_SHMEM_GUEST,
+  VIRTIO_SND_PCM_F_MSG_POLLING,
+  VIRTIO_SND_PCM_F_EVT_SHMEM_PERIODS,
+  VIRTIO_SND_PCM_F_EVT_XRUNS
+};
+enum {
+  VIRTIO_SND_PCM_FMT_IMA_ADPCM = 0,
+  VIRTIO_SND_PCM_FMT_MU_LAW,
+  VIRTIO_SND_PCM_FMT_A_LAW,
+  VIRTIO_SND_PCM_FMT_S8,
+  VIRTIO_SND_PCM_FMT_U8,
+  VIRTIO_SND_PCM_FMT_S16,
+  VIRTIO_SND_PCM_FMT_U16,
+  VIRTIO_SND_PCM_FMT_S18_3,
+  VIRTIO_SND_PCM_FMT_U18_3,
+  VIRTIO_SND_PCM_FMT_S20_3,
+  VIRTIO_SND_PCM_FMT_U20_3,
+  VIRTIO_SND_PCM_FMT_S24_3,
+  VIRTIO_SND_PCM_FMT_U24_3,
+  VIRTIO_SND_PCM_FMT_S20,
+  VIRTIO_SND_PCM_FMT_U20,
+  VIRTIO_SND_PCM_FMT_S24,
+  VIRTIO_SND_PCM_FMT_U24,
+  VIRTIO_SND_PCM_FMT_S32,
+  VIRTIO_SND_PCM_FMT_U32,
+  VIRTIO_SND_PCM_FMT_FLOAT,
+  VIRTIO_SND_PCM_FMT_FLOAT64,
+  VIRTIO_SND_PCM_FMT_DSD_U8,
+  VIRTIO_SND_PCM_FMT_DSD_U16,
+  VIRTIO_SND_PCM_FMT_DSD_U32,
+  VIRTIO_SND_PCM_FMT_IEC958_SUBFRAME
+};
+enum {
+  VIRTIO_SND_PCM_RATE_5512 = 0,
+  VIRTIO_SND_PCM_RATE_8000,
+  VIRTIO_SND_PCM_RATE_11025,
+  VIRTIO_SND_PCM_RATE_16000,
+  VIRTIO_SND_PCM_RATE_22050,
+  VIRTIO_SND_PCM_RATE_32000,
+  VIRTIO_SND_PCM_RATE_44100,
+  VIRTIO_SND_PCM_RATE_48000,
+  VIRTIO_SND_PCM_RATE_64000,
+  VIRTIO_SND_PCM_RATE_88200,
+  VIRTIO_SND_PCM_RATE_96000,
+  VIRTIO_SND_PCM_RATE_176400,
+  VIRTIO_SND_PCM_RATE_192000,
+  VIRTIO_SND_PCM_RATE_384000
+};
+struct virtio_snd_pcm_info {
+  struct virtio_snd_info hdr;
+  __le32 features;
+  __le64 formats;
+  __le64 rates;
+  __u8 direction;
+  __u8 channels_min;
+  __u8 channels_max;
+  __u8 padding[5];
+};
+struct virtio_snd_pcm_set_params {
+  struct virtio_snd_pcm_hdr hdr;
+  __le32 buffer_bytes;
+  __le32 period_bytes;
+  __le32 features;
+  __u8 channels;
+  __u8 format;
+  __u8 rate;
+  __u8 padding;
+};
+struct virtio_snd_pcm_xfer {
+  __le32 stream_id;
+};
+struct virtio_snd_pcm_status {
+  __le32 status;
+  __le32 latency_bytes;
+};
+struct virtio_snd_chmap_hdr {
+  struct virtio_snd_hdr hdr;
+  __le32 chmap_id;
+};
+enum {
+  VIRTIO_SND_CHMAP_NONE = 0,
+  VIRTIO_SND_CHMAP_NA,
+  VIRTIO_SND_CHMAP_MONO,
+  VIRTIO_SND_CHMAP_FL,
+  VIRTIO_SND_CHMAP_FR,
+  VIRTIO_SND_CHMAP_RL,
+  VIRTIO_SND_CHMAP_RR,
+  VIRTIO_SND_CHMAP_FC,
+  VIRTIO_SND_CHMAP_LFE,
+  VIRTIO_SND_CHMAP_SL,
+  VIRTIO_SND_CHMAP_SR,
+  VIRTIO_SND_CHMAP_RC,
+  VIRTIO_SND_CHMAP_FLC,
+  VIRTIO_SND_CHMAP_FRC,
+  VIRTIO_SND_CHMAP_RLC,
+  VIRTIO_SND_CHMAP_RRC,
+  VIRTIO_SND_CHMAP_FLW,
+  VIRTIO_SND_CHMAP_FRW,
+  VIRTIO_SND_CHMAP_FLH,
+  VIRTIO_SND_CHMAP_FCH,
+  VIRTIO_SND_CHMAP_FRH,
+  VIRTIO_SND_CHMAP_TC,
+  VIRTIO_SND_CHMAP_TFL,
+  VIRTIO_SND_CHMAP_TFR,
+  VIRTIO_SND_CHMAP_TFC,
+  VIRTIO_SND_CHMAP_TRL,
+  VIRTIO_SND_CHMAP_TRR,
+  VIRTIO_SND_CHMAP_TRC,
+  VIRTIO_SND_CHMAP_TFLC,
+  VIRTIO_SND_CHMAP_TFRC,
+  VIRTIO_SND_CHMAP_TSL,
+  VIRTIO_SND_CHMAP_TSR,
+  VIRTIO_SND_CHMAP_LLFE,
+  VIRTIO_SND_CHMAP_RLFE,
+  VIRTIO_SND_CHMAP_BC,
+  VIRTIO_SND_CHMAP_BLC,
+  VIRTIO_SND_CHMAP_BRC
+};
+#define VIRTIO_SND_CHMAP_MAX_SIZE 18
+struct virtio_snd_chmap_info {
+  struct virtio_snd_info hdr;
+  __u8 direction;
+  __u8 channels;
+  __u8 positions[VIRTIO_SND_CHMAP_MAX_SIZE];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_types.h b/i686-linux-musl/include/linux/virtio_types.h
new file mode 100644
index 0000000..b04e6e6
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_types.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_VIRTIO_TYPES_H
+#define _UAPI_LINUX_VIRTIO_TYPES_H
+#include <linux/types.h>
+typedef __u16 __bitwise __virtio16;
+typedef __u32 __bitwise __virtio32;
+typedef __u64 __bitwise __virtio64;
+#endif
diff --git a/i686-linux-musl/include/linux/virtio_vsock.h b/i686-linux-musl/include/linux/virtio_vsock.h
new file mode 100644
index 0000000..73b5d49
--- /dev/null
+++ b/i686-linux-musl/include/linux/virtio_vsock.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_VIRTIO_VSOCK_H
+#define _UAPI_LINUX_VIRTIO_VSOCK_H
+#include <linux/types.h>
+#include <linux/virtio_ids.h>
+#include <linux/virtio_config.h>
+#define VIRTIO_VSOCK_F_SEQPACKET 1
+struct virtio_vsock_config {
+  __le64 guest_cid;
+} __attribute__((packed));
+enum virtio_vsock_event_id {
+  VIRTIO_VSOCK_EVENT_TRANSPORT_RESET = 0,
+};
+struct virtio_vsock_event {
+  __le32 id;
+} __attribute__((packed));
+struct virtio_vsock_hdr {
+  __le64 src_cid;
+  __le64 dst_cid;
+  __le32 src_port;
+  __le32 dst_port;
+  __le32 len;
+  __le16 type;
+  __le16 op;
+  __le32 flags;
+  __le32 buf_alloc;
+  __le32 fwd_cnt;
+} __attribute__((packed));
+enum virtio_vsock_type {
+  VIRTIO_VSOCK_TYPE_STREAM = 1,
+  VIRTIO_VSOCK_TYPE_SEQPACKET = 2,
+};
+enum virtio_vsock_op {
+  VIRTIO_VSOCK_OP_INVALID = 0,
+  VIRTIO_VSOCK_OP_REQUEST = 1,
+  VIRTIO_VSOCK_OP_RESPONSE = 2,
+  VIRTIO_VSOCK_OP_RST = 3,
+  VIRTIO_VSOCK_OP_SHUTDOWN = 4,
+  VIRTIO_VSOCK_OP_RW = 5,
+  VIRTIO_VSOCK_OP_CREDIT_UPDATE = 6,
+  VIRTIO_VSOCK_OP_CREDIT_REQUEST = 7,
+};
+enum virtio_vsock_shutdown {
+  VIRTIO_VSOCK_SHUTDOWN_RCV = 1,
+  VIRTIO_VSOCK_SHUTDOWN_SEND = 2,
+};
+enum virtio_vsock_rw {
+  VIRTIO_VSOCK_SEQ_EOM = 1,
+  VIRTIO_VSOCK_SEQ_EOR = 2,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/vm_sockets.h b/i686-linux-musl/include/linux/vm_sockets.h
new file mode 100644
index 0000000..58f720d
--- /dev/null
+++ b/i686-linux-musl/include/linux/vm_sockets.h
@@ -0,0 +1,55 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_VM_SOCKETS_H
+#define _UAPI_VM_SOCKETS_H
+#include <linux/socket.h>
+#include <linux/types.h>
+#define SO_VM_SOCKETS_BUFFER_SIZE 0
+#define SO_VM_SOCKETS_BUFFER_MIN_SIZE 1
+#define SO_VM_SOCKETS_BUFFER_MAX_SIZE 2
+#define SO_VM_SOCKETS_PEER_HOST_VM_ID 3
+#define SO_VM_SOCKETS_TRUSTED 5
+#define SO_VM_SOCKETS_CONNECT_TIMEOUT_OLD 6
+#define SO_VM_SOCKETS_NONBLOCK_TXRX 7
+#define SO_VM_SOCKETS_CONNECT_TIMEOUT_NEW 8
+#if __BITS_PER_LONG == 64 || defined(__x86_64__) && defined(__ILP32__)
+#define SO_VM_SOCKETS_CONNECT_TIMEOUT SO_VM_SOCKETS_CONNECT_TIMEOUT_OLD
+#else
+#define SO_VM_SOCKETS_CONNECT_TIMEOUT (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_VM_SOCKETS_CONNECT_TIMEOUT_OLD : SO_VM_SOCKETS_CONNECT_TIMEOUT_NEW)
+#endif
+#define VMADDR_CID_ANY - 1U
+#define VMADDR_PORT_ANY - 1U
+#define VMADDR_CID_HYPERVISOR 0
+#define VMADDR_CID_LOCAL 1
+#define VMADDR_CID_HOST 2
+#define VMADDR_FLAG_TO_HOST 0x01
+#define VM_SOCKETS_INVALID_VERSION - 1U
+#define VM_SOCKETS_VERSION_EPOCH(_v) (((_v) & 0xFF000000) >> 24)
+#define VM_SOCKETS_VERSION_MAJOR(_v) (((_v) & 0x00FF0000) >> 16)
+#define VM_SOCKETS_VERSION_MINOR(_v) (((_v) & 0x0000FFFF))
+struct sockaddr_vm {
+  __kernel_sa_family_t svm_family;
+  unsigned short svm_reserved1;
+  unsigned int svm_port;
+  unsigned int svm_cid;
+  __u8 svm_flags;
+  unsigned char svm_zero[sizeof(struct sockaddr) - sizeof(sa_family_t) - sizeof(unsigned short) - sizeof(unsigned int) - sizeof(unsigned int) - sizeof(__u8)];
+};
+#define IOCTL_VM_SOCKETS_GET_LOCAL_CID _IO(7, 0xb9)
+#endif
diff --git a/i686-linux-musl/include/linux/vm_sockets_diag.h b/i686-linux-musl/include/linux/vm_sockets_diag.h
new file mode 100644
index 0000000..2f9840b
--- /dev/null
+++ b/i686-linux-musl/include/linux/vm_sockets_diag.h
@@ -0,0 +1,43 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__VM_SOCKETS_DIAG_H__
+#define _UAPI__VM_SOCKETS_DIAG_H__
+#include <linux/types.h>
+struct vsock_diag_req {
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
+  __u16 pad;
+  __u32 vdiag_states;
+  __u32 vdiag_ino;
+  __u32 vdiag_show;
+  __u32 vdiag_cookie[2];
+};
+struct vsock_diag_msg {
+  __u8 vdiag_family;
+  __u8 vdiag_type;
+  __u8 vdiag_state;
+  __u8 vdiag_shutdown;
+  __u32 vdiag_src_cid;
+  __u32 vdiag_src_port;
+  __u32 vdiag_dst_cid;
+  __u32 vdiag_dst_port;
+  __u32 vdiag_ino;
+  __u32 vdiag_cookie[2];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/vmcore.h b/i686-linux-musl/include/linux/vmcore.h
new file mode 100644
index 0000000..3fa7fee
--- /dev/null
+++ b/i686-linux-musl/include/linux/vmcore.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_VMCORE_H
+#define _UAPI_VMCORE_H
+#include <linux/types.h>
+#define VMCOREDD_NOTE_NAME "LINUX"
+#define VMCOREDD_MAX_NAME_BYTES 44
+struct vmcoredd_header {
+  __u32 n_namesz;
+  __u32 n_descsz;
+  __u32 n_type;
+  __u8 name[8];
+  __u8 dump_name[VMCOREDD_MAX_NAME_BYTES];
+};
+#endif
diff --git a/i686-linux-musl/include/linux/vsockmon.h b/i686-linux-musl/include/linux/vsockmon.h
new file mode 100644
index 0000000..6435b5a
--- /dev/null
+++ b/i686-linux-musl/include/linux/vsockmon.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_VSOCKMON_H
+#define _UAPI_VSOCKMON_H
+#include <linux/virtio_vsock.h>
+struct af_vsockmon_hdr {
+  __le64 src_cid;
+  __le64 dst_cid;
+  __le32 src_port;
+  __le32 dst_port;
+  __le16 op;
+  __le16 transport;
+  __le16 len;
+  __u8 reserved[2];
+};
+enum af_vsockmon_op {
+  AF_VSOCK_OP_UNKNOWN = 0,
+  AF_VSOCK_OP_CONNECT = 1,
+  AF_VSOCK_OP_DISCONNECT = 2,
+  AF_VSOCK_OP_CONTROL = 3,
+  AF_VSOCK_OP_PAYLOAD = 4,
+};
+enum af_vsockmon_transport {
+  AF_VSOCK_TRANSPORT_UNKNOWN = 0,
+  AF_VSOCK_TRANSPORT_NO_INFO = 1,
+  AF_VSOCK_TRANSPORT_VIRTIO = 2,
+};
+#endif
diff --git a/i686-linux-musl/include/linux/vt.h b/i686-linux-musl/include/linux/vt.h
new file mode 100644
index 0000000..1a708cc
--- /dev/null
+++ b/i686-linux-musl/include/linux/vt.h
@@ -0,0 +1,82 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_VT_H
+#define _UAPI_LINUX_VT_H
+#define MIN_NR_CONSOLES 1
+#define MAX_NR_CONSOLES 63
+#define VT_OPENQRY 0x5600
+struct vt_mode {
+  char mode;
+  char waitv;
+  short relsig;
+  short acqsig;
+  short frsig;
+};
+#define VT_GETMODE 0x5601
+#define VT_SETMODE 0x5602
+#define VT_AUTO 0x00
+#define VT_PROCESS 0x01
+#define VT_ACKACQ 0x02
+struct vt_stat {
+  unsigned short v_active;
+  unsigned short v_signal;
+  unsigned short v_state;
+};
+#define VT_GETSTATE 0x5603
+#define VT_SENDSIG 0x5604
+#define VT_RELDISP 0x5605
+#define VT_ACTIVATE 0x5606
+#define VT_WAITACTIVE 0x5607
+#define VT_DISALLOCATE 0x5608
+struct vt_sizes {
+  unsigned short v_rows;
+  unsigned short v_cols;
+  unsigned short v_scrollsize;
+};
+#define VT_RESIZE 0x5609
+struct vt_consize {
+  unsigned short v_rows;
+  unsigned short v_cols;
+  unsigned short v_vlin;
+  unsigned short v_clin;
+  unsigned short v_vcol;
+  unsigned short v_ccol;
+};
+#define VT_RESIZEX 0x560A
+#define VT_LOCKSWITCH 0x560B
+#define VT_UNLOCKSWITCH 0x560C
+#define VT_GETHIFONTMASK 0x560D
+struct vt_event {
+  unsigned int event;
+#define VT_EVENT_SWITCH 0x0001
+#define VT_EVENT_BLANK 0x0002
+#define VT_EVENT_UNBLANK 0x0004
+#define VT_EVENT_RESIZE 0x0008
+#define VT_MAX_EVENT 0x000F
+  unsigned int oldev;
+  unsigned int newev;
+  unsigned int pad[4];
+};
+#define VT_WAITEVENT 0x560E
+struct vt_setactivate {
+  unsigned int console;
+  struct vt_mode mode;
+};
+#define VT_SETACTIVATE 0x560F
+#endif
diff --git a/i686-linux-musl/include/linux/vtpm_proxy.h b/i686-linux-musl/include/linux/vtpm_proxy.h
new file mode 100644
index 0000000..0ab0536
--- /dev/null
+++ b/i686-linux-musl/include/linux/vtpm_proxy.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_VTPM_PROXY_H
+#define _UAPI_LINUX_VTPM_PROXY_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+enum vtpm_proxy_flags {
+  VTPM_PROXY_FLAG_TPM2 = 1,
+};
+struct vtpm_proxy_new_dev {
+  __u32 flags;
+  __u32 tpm_num;
+  __u32 fd;
+  __u32 major;
+  __u32 minor;
+};
+#define VTPM_PROXY_IOC_NEW_DEV _IOWR(0xa1, 0x00, struct vtpm_proxy_new_dev)
+#define TPM2_CC_SET_LOCALITY 0x20001000
+#define TPM_ORD_SET_LOCALITY 0x20001000
+#endif
diff --git a/i686-linux-musl/include/linux/wait.h b/i686-linux-musl/include/linux/wait.h
new file mode 100644
index 0000000..385e882
--- /dev/null
+++ b/i686-linux-musl/include/linux/wait.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_WAIT_H
+#define _UAPI_LINUX_WAIT_H
+#define WNOHANG 0x00000001
+#define WUNTRACED 0x00000002
+#define WSTOPPED WUNTRACED
+#define WEXITED 0x00000004
+#define WCONTINUED 0x00000008
+#define WNOWAIT 0x01000000
+#define __WNOTHREAD 0x20000000
+#define __WALL 0x40000000
+#define __WCLONE 0x80000000
+#define P_ALL 0
+#define P_PID 1
+#define P_PGID 2
+#define P_PIDFD 3
+#endif
diff --git a/i686-linux-musl/include/linux/watch_queue.h b/i686-linux-musl/include/linux/watch_queue.h
new file mode 100644
index 0000000..4c4fd01
--- /dev/null
+++ b/i686-linux-musl/include/linux/watch_queue.h
@@ -0,0 +1,85 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_WATCH_QUEUE_H
+#define _UAPI_LINUX_WATCH_QUEUE_H
+#include <linux/types.h>
+#include <linux/fcntl.h>
+#include <linux/ioctl.h>
+#define O_NOTIFICATION_PIPE O_EXCL
+#define IOC_WATCH_QUEUE_SET_SIZE _IO('W', 0x60)
+#define IOC_WATCH_QUEUE_SET_FILTER _IO('W', 0x61)
+enum watch_notification_type {
+  WATCH_TYPE_META = 0,
+  WATCH_TYPE_KEY_NOTIFY = 1,
+  WATCH_TYPE__NR = 2
+};
+enum watch_meta_notification_subtype {
+  WATCH_META_REMOVAL_NOTIFICATION = 0,
+  WATCH_META_LOSS_NOTIFICATION = 1,
+};
+struct watch_notification {
+  __u32 type : 24;
+  __u32 subtype : 8;
+  __u32 info;
+#define WATCH_INFO_LENGTH 0x0000007f
+#define WATCH_INFO_LENGTH__SHIFT 0
+#define WATCH_INFO_ID 0x0000ff00
+#define WATCH_INFO_ID__SHIFT 8
+#define WATCH_INFO_TYPE_INFO 0xffff0000
+#define WATCH_INFO_TYPE_INFO__SHIFT 16
+#define WATCH_INFO_FLAG_0 0x00010000
+#define WATCH_INFO_FLAG_1 0x00020000
+#define WATCH_INFO_FLAG_2 0x00040000
+#define WATCH_INFO_FLAG_3 0x00080000
+#define WATCH_INFO_FLAG_4 0x00100000
+#define WATCH_INFO_FLAG_5 0x00200000
+#define WATCH_INFO_FLAG_6 0x00400000
+#define WATCH_INFO_FLAG_7 0x00800000
+};
+struct watch_notification_type_filter {
+  __u32 type;
+  __u32 info_filter;
+  __u32 info_mask;
+  __u32 subtype_filter[8];
+};
+struct watch_notification_filter {
+  __u32 nr_filters;
+  __u32 __reserved;
+  struct watch_notification_type_filter filters[];
+};
+struct watch_notification_removal {
+  struct watch_notification watch;
+  __u64 id;
+};
+enum key_notification_subtype {
+  NOTIFY_KEY_INSTANTIATED = 0,
+  NOTIFY_KEY_UPDATED = 1,
+  NOTIFY_KEY_LINKED = 2,
+  NOTIFY_KEY_UNLINKED = 3,
+  NOTIFY_KEY_CLEARED = 4,
+  NOTIFY_KEY_REVOKED = 5,
+  NOTIFY_KEY_INVALIDATED = 6,
+  NOTIFY_KEY_SETATTR = 7,
+};
+struct key_notification {
+  struct watch_notification watch;
+  __u32 key_id;
+  __u32 aux;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/watchdog.h b/i686-linux-musl/include/linux/watchdog.h
new file mode 100644
index 0000000..cac0816
--- /dev/null
+++ b/i686-linux-musl/include/linux/watchdog.h
@@ -0,0 +1,57 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_WATCHDOG_H
+#define _UAPI_LINUX_WATCHDOG_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define WATCHDOG_IOCTL_BASE 'W'
+struct watchdog_info {
+  __u32 options;
+  __u32 firmware_version;
+  __u8 identity[32];
+};
+#define WDIOC_GETSUPPORT _IOR(WATCHDOG_IOCTL_BASE, 0, struct watchdog_info)
+#define WDIOC_GETSTATUS _IOR(WATCHDOG_IOCTL_BASE, 1, int)
+#define WDIOC_GETBOOTSTATUS _IOR(WATCHDOG_IOCTL_BASE, 2, int)
+#define WDIOC_GETTEMP _IOR(WATCHDOG_IOCTL_BASE, 3, int)
+#define WDIOC_SETOPTIONS _IOR(WATCHDOG_IOCTL_BASE, 4, int)
+#define WDIOC_KEEPALIVE _IOR(WATCHDOG_IOCTL_BASE, 5, int)
+#define WDIOC_SETTIMEOUT _IOWR(WATCHDOG_IOCTL_BASE, 6, int)
+#define WDIOC_GETTIMEOUT _IOR(WATCHDOG_IOCTL_BASE, 7, int)
+#define WDIOC_SETPRETIMEOUT _IOWR(WATCHDOG_IOCTL_BASE, 8, int)
+#define WDIOC_GETPRETIMEOUT _IOR(WATCHDOG_IOCTL_BASE, 9, int)
+#define WDIOC_GETTIMELEFT _IOR(WATCHDOG_IOCTL_BASE, 10, int)
+#define WDIOF_UNKNOWN - 1
+#define WDIOS_UNKNOWN - 1
+#define WDIOF_OVERHEAT 0x0001
+#define WDIOF_FANFAULT 0x0002
+#define WDIOF_EXTERN1 0x0004
+#define WDIOF_EXTERN2 0x0008
+#define WDIOF_POWERUNDER 0x0010
+#define WDIOF_CARDRESET 0x0020
+#define WDIOF_POWEROVER 0x0040
+#define WDIOF_SETTIMEOUT 0x0080
+#define WDIOF_MAGICCLOSE 0x0100
+#define WDIOF_PRETIMEOUT 0x0200
+#define WDIOF_ALARMONLY 0x0400
+#define WDIOF_KEEPALIVEPING 0x8000
+#define WDIOS_DISABLECARD 0x0001
+#define WDIOS_ENABLECARD 0x0002
+#define WDIOS_TEMPPANIC 0x0004
+#endif
diff --git a/i686-linux-musl/include/linux/wireguard.h b/i686-linux-musl/include/linux/wireguard.h
new file mode 100644
index 0000000..6a4128b
--- /dev/null
+++ b/i686-linux-musl/include/linux/wireguard.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _WG_UAPI_WIREGUARD_H
+#define _WG_UAPI_WIREGUARD_H
+#define WG_GENL_NAME "wireguard"
+#define WG_GENL_VERSION 1
+#define WG_KEY_LEN 32
+enum wg_cmd {
+  WG_CMD_GET_DEVICE,
+  WG_CMD_SET_DEVICE,
+  __WG_CMD_MAX
+};
+#define WG_CMD_MAX (__WG_CMD_MAX - 1)
+enum wgdevice_flag {
+  WGDEVICE_F_REPLACE_PEERS = 1U << 0,
+  __WGDEVICE_F_ALL = WGDEVICE_F_REPLACE_PEERS
+};
+enum wgdevice_attribute {
+  WGDEVICE_A_UNSPEC,
+  WGDEVICE_A_IFINDEX,
+  WGDEVICE_A_IFNAME,
+  WGDEVICE_A_PRIVATE_KEY,
+  WGDEVICE_A_PUBLIC_KEY,
+  WGDEVICE_A_FLAGS,
+  WGDEVICE_A_LISTEN_PORT,
+  WGDEVICE_A_FWMARK,
+  WGDEVICE_A_PEERS,
+  __WGDEVICE_A_LAST
+};
+#define WGDEVICE_A_MAX (__WGDEVICE_A_LAST - 1)
+enum wgpeer_flag {
+  WGPEER_F_REMOVE_ME = 1U << 0,
+  WGPEER_F_REPLACE_ALLOWEDIPS = 1U << 1,
+  WGPEER_F_UPDATE_ONLY = 1U << 2,
+  __WGPEER_F_ALL = WGPEER_F_REMOVE_ME | WGPEER_F_REPLACE_ALLOWEDIPS | WGPEER_F_UPDATE_ONLY
+};
+enum wgpeer_attribute {
+  WGPEER_A_UNSPEC,
+  WGPEER_A_PUBLIC_KEY,
+  WGPEER_A_PRESHARED_KEY,
+  WGPEER_A_FLAGS,
+  WGPEER_A_ENDPOINT,
+  WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL,
+  WGPEER_A_LAST_HANDSHAKE_TIME,
+  WGPEER_A_RX_BYTES,
+  WGPEER_A_TX_BYTES,
+  WGPEER_A_ALLOWEDIPS,
+  WGPEER_A_PROTOCOL_VERSION,
+  __WGPEER_A_LAST
+};
+#define WGPEER_A_MAX (__WGPEER_A_LAST - 1)
+enum wgallowedip_attribute {
+  WGALLOWEDIP_A_UNSPEC,
+  WGALLOWEDIP_A_FAMILY,
+  WGALLOWEDIP_A_IPADDR,
+  WGALLOWEDIP_A_CIDR_MASK,
+  __WGALLOWEDIP_A_LAST
+};
+#define WGALLOWEDIP_A_MAX (__WGALLOWEDIP_A_LAST - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/wireless.h b/i686-linux-musl/include/linux/wireless.h
new file mode 100644
index 0000000..ca31dd2
--- /dev/null
+++ b/i686-linux-musl/include/linux/wireless.h
@@ -0,0 +1,449 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_WIRELESS_H
+#define _UAPI_LINUX_WIRELESS_H
+#include <linux/types.h>
+#include <linux/socket.h>
+#include <linux/if.h>
+#include <stddef.h>
+#define WIRELESS_EXT 22
+#define SIOCSIWCOMMIT 0x8B00
+#define SIOCGIWNAME 0x8B01
+#define SIOCSIWNWID 0x8B02
+#define SIOCGIWNWID 0x8B03
+#define SIOCSIWFREQ 0x8B04
+#define SIOCGIWFREQ 0x8B05
+#define SIOCSIWMODE 0x8B06
+#define SIOCGIWMODE 0x8B07
+#define SIOCSIWSENS 0x8B08
+#define SIOCGIWSENS 0x8B09
+#define SIOCSIWRANGE 0x8B0A
+#define SIOCGIWRANGE 0x8B0B
+#define SIOCSIWPRIV 0x8B0C
+#define SIOCGIWPRIV 0x8B0D
+#define SIOCSIWSTATS 0x8B0E
+#define SIOCGIWSTATS 0x8B0F
+#define SIOCSIWSPY 0x8B10
+#define SIOCGIWSPY 0x8B11
+#define SIOCSIWTHRSPY 0x8B12
+#define SIOCGIWTHRSPY 0x8B13
+#define SIOCSIWAP 0x8B14
+#define SIOCGIWAP 0x8B15
+#define SIOCGIWAPLIST 0x8B17
+#define SIOCSIWSCAN 0x8B18
+#define SIOCGIWSCAN 0x8B19
+#define SIOCSIWESSID 0x8B1A
+#define SIOCGIWESSID 0x8B1B
+#define SIOCSIWNICKN 0x8B1C
+#define SIOCGIWNICKN 0x8B1D
+#define SIOCSIWRATE 0x8B20
+#define SIOCGIWRATE 0x8B21
+#define SIOCSIWRTS 0x8B22
+#define SIOCGIWRTS 0x8B23
+#define SIOCSIWFRAG 0x8B24
+#define SIOCGIWFRAG 0x8B25
+#define SIOCSIWTXPOW 0x8B26
+#define SIOCGIWTXPOW 0x8B27
+#define SIOCSIWRETRY 0x8B28
+#define SIOCGIWRETRY 0x8B29
+#define SIOCSIWENCODE 0x8B2A
+#define SIOCGIWENCODE 0x8B2B
+#define SIOCSIWPOWER 0x8B2C
+#define SIOCGIWPOWER 0x8B2D
+#define SIOCSIWGENIE 0x8B30
+#define SIOCGIWGENIE 0x8B31
+#define SIOCSIWMLME 0x8B16
+#define SIOCSIWAUTH 0x8B32
+#define SIOCGIWAUTH 0x8B33
+#define SIOCSIWENCODEEXT 0x8B34
+#define SIOCGIWENCODEEXT 0x8B35
+#define SIOCSIWPMKSA 0x8B36
+#define SIOCIWFIRSTPRIV 0x8BE0
+#define SIOCIWLASTPRIV 0x8BFF
+#define SIOCIWFIRST 0x8B00
+#define SIOCIWLAST SIOCIWLASTPRIV
+#define IW_IOCTL_IDX(cmd) ((cmd) - SIOCIWFIRST)
+#define IW_HANDLER(id,func) [IW_IOCTL_IDX(id)] = func
+#define IW_IS_SET(cmd) (! ((cmd) & 0x1))
+#define IW_IS_GET(cmd) ((cmd) & 0x1)
+#define IWEVTXDROP 0x8C00
+#define IWEVQUAL 0x8C01
+#define IWEVCUSTOM 0x8C02
+#define IWEVREGISTERED 0x8C03
+#define IWEVEXPIRED 0x8C04
+#define IWEVGENIE 0x8C05
+#define IWEVMICHAELMICFAILURE 0x8C06
+#define IWEVASSOCREQIE 0x8C07
+#define IWEVASSOCRESPIE 0x8C08
+#define IWEVPMKIDCAND 0x8C09
+#define IWEVFIRST 0x8C00
+#define IW_EVENT_IDX(cmd) ((cmd) - IWEVFIRST)
+#define IW_PRIV_TYPE_MASK 0x7000
+#define IW_PRIV_TYPE_NONE 0x0000
+#define IW_PRIV_TYPE_BYTE 0x1000
+#define IW_PRIV_TYPE_CHAR 0x2000
+#define IW_PRIV_TYPE_INT 0x4000
+#define IW_PRIV_TYPE_FLOAT 0x5000
+#define IW_PRIV_TYPE_ADDR 0x6000
+#define IW_PRIV_SIZE_FIXED 0x0800
+#define IW_PRIV_SIZE_MASK 0x07FF
+#define IW_MAX_FREQUENCIES 32
+#define IW_MAX_BITRATES 32
+#define IW_MAX_TXPOWER 8
+#define IW_MAX_SPY 8
+#define IW_MAX_AP 64
+#define IW_ESSID_MAX_SIZE 32
+#define IW_MODE_AUTO 0
+#define IW_MODE_ADHOC 1
+#define IW_MODE_INFRA 2
+#define IW_MODE_MASTER 3
+#define IW_MODE_REPEAT 4
+#define IW_MODE_SECOND 5
+#define IW_MODE_MONITOR 6
+#define IW_MODE_MESH 7
+#define IW_QUAL_QUAL_UPDATED 0x01
+#define IW_QUAL_LEVEL_UPDATED 0x02
+#define IW_QUAL_NOISE_UPDATED 0x04
+#define IW_QUAL_ALL_UPDATED 0x07
+#define IW_QUAL_DBM 0x08
+#define IW_QUAL_QUAL_INVALID 0x10
+#define IW_QUAL_LEVEL_INVALID 0x20
+#define IW_QUAL_NOISE_INVALID 0x40
+#define IW_QUAL_RCPI 0x80
+#define IW_QUAL_ALL_INVALID 0x70
+#define IW_FREQ_AUTO 0x00
+#define IW_FREQ_FIXED 0x01
+#define IW_MAX_ENCODING_SIZES 8
+#define IW_ENCODING_TOKEN_MAX 64
+#define IW_ENCODE_INDEX 0x00FF
+#define IW_ENCODE_FLAGS 0xFF00
+#define IW_ENCODE_MODE 0xF000
+#define IW_ENCODE_DISABLED 0x8000
+#define IW_ENCODE_ENABLED 0x0000
+#define IW_ENCODE_RESTRICTED 0x4000
+#define IW_ENCODE_OPEN 0x2000
+#define IW_ENCODE_NOKEY 0x0800
+#define IW_ENCODE_TEMP 0x0400
+#define IW_POWER_ON 0x0000
+#define IW_POWER_TYPE 0xF000
+#define IW_POWER_PERIOD 0x1000
+#define IW_POWER_TIMEOUT 0x2000
+#define IW_POWER_MODE 0x0F00
+#define IW_POWER_UNICAST_R 0x0100
+#define IW_POWER_MULTICAST_R 0x0200
+#define IW_POWER_ALL_R 0x0300
+#define IW_POWER_FORCE_S 0x0400
+#define IW_POWER_REPEATER 0x0800
+#define IW_POWER_MODIFIER 0x000F
+#define IW_POWER_MIN 0x0001
+#define IW_POWER_MAX 0x0002
+#define IW_POWER_RELATIVE 0x0004
+#define IW_TXPOW_TYPE 0x00FF
+#define IW_TXPOW_DBM 0x0000
+#define IW_TXPOW_MWATT 0x0001
+#define IW_TXPOW_RELATIVE 0x0002
+#define IW_TXPOW_RANGE 0x1000
+#define IW_RETRY_ON 0x0000
+#define IW_RETRY_TYPE 0xF000
+#define IW_RETRY_LIMIT 0x1000
+#define IW_RETRY_LIFETIME 0x2000
+#define IW_RETRY_MODIFIER 0x00FF
+#define IW_RETRY_MIN 0x0001
+#define IW_RETRY_MAX 0x0002
+#define IW_RETRY_RELATIVE 0x0004
+#define IW_RETRY_SHORT 0x0010
+#define IW_RETRY_LONG 0x0020
+#define IW_SCAN_DEFAULT 0x0000
+#define IW_SCAN_ALL_ESSID 0x0001
+#define IW_SCAN_THIS_ESSID 0x0002
+#define IW_SCAN_ALL_FREQ 0x0004
+#define IW_SCAN_THIS_FREQ 0x0008
+#define IW_SCAN_ALL_MODE 0x0010
+#define IW_SCAN_THIS_MODE 0x0020
+#define IW_SCAN_ALL_RATE 0x0040
+#define IW_SCAN_THIS_RATE 0x0080
+#define IW_SCAN_TYPE_ACTIVE 0
+#define IW_SCAN_TYPE_PASSIVE 1
+#define IW_SCAN_MAX_DATA 4096
+#define IW_SCAN_CAPA_NONE 0x00
+#define IW_SCAN_CAPA_ESSID 0x01
+#define IW_SCAN_CAPA_BSSID 0x02
+#define IW_SCAN_CAPA_CHANNEL 0x04
+#define IW_SCAN_CAPA_MODE 0x08
+#define IW_SCAN_CAPA_RATE 0x10
+#define IW_SCAN_CAPA_TYPE 0x20
+#define IW_SCAN_CAPA_TIME 0x40
+#define IW_CUSTOM_MAX 256
+#define IW_GENERIC_IE_MAX 1024
+#define IW_MLME_DEAUTH 0
+#define IW_MLME_DISASSOC 1
+#define IW_MLME_AUTH 2
+#define IW_MLME_ASSOC 3
+#define IW_AUTH_INDEX 0x0FFF
+#define IW_AUTH_FLAGS 0xF000
+#define IW_AUTH_WPA_VERSION 0
+#define IW_AUTH_CIPHER_PAIRWISE 1
+#define IW_AUTH_CIPHER_GROUP 2
+#define IW_AUTH_KEY_MGMT 3
+#define IW_AUTH_TKIP_COUNTERMEASURES 4
+#define IW_AUTH_DROP_UNENCRYPTED 5
+#define IW_AUTH_80211_AUTH_ALG 6
+#define IW_AUTH_WPA_ENABLED 7
+#define IW_AUTH_RX_UNENCRYPTED_EAPOL 8
+#define IW_AUTH_ROAMING_CONTROL 9
+#define IW_AUTH_PRIVACY_INVOKED 10
+#define IW_AUTH_CIPHER_GROUP_MGMT 11
+#define IW_AUTH_MFP 12
+#define IW_AUTH_WPA_VERSION_DISABLED 0x00000001
+#define IW_AUTH_WPA_VERSION_WPA 0x00000002
+#define IW_AUTH_WPA_VERSION_WPA2 0x00000004
+#define IW_AUTH_CIPHER_NONE 0x00000001
+#define IW_AUTH_CIPHER_WEP40 0x00000002
+#define IW_AUTH_CIPHER_TKIP 0x00000004
+#define IW_AUTH_CIPHER_CCMP 0x00000008
+#define IW_AUTH_CIPHER_WEP104 0x00000010
+#define IW_AUTH_CIPHER_AES_CMAC 0x00000020
+#define IW_AUTH_KEY_MGMT_802_1X 1
+#define IW_AUTH_KEY_MGMT_PSK 2
+#define IW_AUTH_ALG_OPEN_SYSTEM 0x00000001
+#define IW_AUTH_ALG_SHARED_KEY 0x00000002
+#define IW_AUTH_ALG_LEAP 0x00000004
+#define IW_AUTH_ROAMING_ENABLE 0
+#define IW_AUTH_ROAMING_DISABLE 1
+#define IW_AUTH_MFP_DISABLED 0
+#define IW_AUTH_MFP_OPTIONAL 1
+#define IW_AUTH_MFP_REQUIRED 2
+#define IW_ENCODE_SEQ_MAX_SIZE 8
+#define IW_ENCODE_ALG_NONE 0
+#define IW_ENCODE_ALG_WEP 1
+#define IW_ENCODE_ALG_TKIP 2
+#define IW_ENCODE_ALG_CCMP 3
+#define IW_ENCODE_ALG_PMK 4
+#define IW_ENCODE_ALG_AES_CMAC 5
+#define IW_ENCODE_EXT_TX_SEQ_VALID 0x00000001
+#define IW_ENCODE_EXT_RX_SEQ_VALID 0x00000002
+#define IW_ENCODE_EXT_GROUP_KEY 0x00000004
+#define IW_ENCODE_EXT_SET_TX_KEY 0x00000008
+#define IW_MICFAILURE_KEY_ID 0x00000003
+#define IW_MICFAILURE_GROUP 0x00000004
+#define IW_MICFAILURE_PAIRWISE 0x00000008
+#define IW_MICFAILURE_STAKEY 0x00000010
+#define IW_MICFAILURE_COUNT 0x00000060
+#define IW_ENC_CAPA_WPA 0x00000001
+#define IW_ENC_CAPA_WPA2 0x00000002
+#define IW_ENC_CAPA_CIPHER_TKIP 0x00000004
+#define IW_ENC_CAPA_CIPHER_CCMP 0x00000008
+#define IW_ENC_CAPA_4WAY_HANDSHAKE 0x00000010
+#define IW_EVENT_CAPA_BASE(cmd) ((cmd >= SIOCIWFIRSTPRIV) ? (cmd - SIOCIWFIRSTPRIV + 0x60) : (cmd - SIOCIWFIRST))
+#define IW_EVENT_CAPA_INDEX(cmd) (IW_EVENT_CAPA_BASE(cmd) >> 5)
+#define IW_EVENT_CAPA_MASK(cmd) (1 << (IW_EVENT_CAPA_BASE(cmd) & 0x1F))
+#define IW_EVENT_CAPA_K_0 (IW_EVENT_CAPA_MASK(0x8B04) | IW_EVENT_CAPA_MASK(0x8B06) | IW_EVENT_CAPA_MASK(0x8B1A))
+#define IW_EVENT_CAPA_K_1 (IW_EVENT_CAPA_MASK(0x8B2A))
+#define IW_EVENT_CAPA_SET(event_capa,cmd) (event_capa[IW_EVENT_CAPA_INDEX(cmd)] |= IW_EVENT_CAPA_MASK(cmd))
+#define IW_EVENT_CAPA_SET_KERNEL(event_capa) { event_capa[0] |= IW_EVENT_CAPA_K_0; event_capa[1] |= IW_EVENT_CAPA_K_1; }
+struct iw_param {
+  __s32 value;
+  __u8 fixed;
+  __u8 disabled;
+  __u16 flags;
+};
+struct iw_point {
+  void __user * pointer;
+  __u16 length;
+  __u16 flags;
+};
+struct iw_freq {
+  __s32 m;
+  __s16 e;
+  __u8 i;
+  __u8 flags;
+};
+struct iw_quality {
+  __u8 qual;
+  __u8 level;
+  __u8 noise;
+  __u8 updated;
+};
+struct iw_discarded {
+  __u32 nwid;
+  __u32 code;
+  __u32 fragment;
+  __u32 retries;
+  __u32 misc;
+};
+struct iw_missed {
+  __u32 beacon;
+};
+struct iw_thrspy {
+  struct sockaddr addr;
+  struct iw_quality qual;
+  struct iw_quality low;
+  struct iw_quality high;
+};
+struct iw_scan_req {
+  __u8 scan_type;
+  __u8 essid_len;
+  __u8 num_channels;
+  __u8 flags;
+  struct sockaddr bssid;
+  __u8 essid[IW_ESSID_MAX_SIZE];
+  __u32 min_channel_time;
+  __u32 max_channel_time;
+  struct iw_freq channel_list[IW_MAX_FREQUENCIES];
+};
+struct iw_encode_ext {
+  __u32 ext_flags;
+  __u8 tx_seq[IW_ENCODE_SEQ_MAX_SIZE];
+  __u8 rx_seq[IW_ENCODE_SEQ_MAX_SIZE];
+  struct sockaddr addr;
+  __u16 alg;
+  __u16 key_len;
+  __u8 key[0];
+};
+struct iw_mlme {
+  __u16 cmd;
+  __u16 reason_code;
+  struct sockaddr addr;
+};
+#define IW_PMKSA_ADD 1
+#define IW_PMKSA_REMOVE 2
+#define IW_PMKSA_FLUSH 3
+#define IW_PMKID_LEN 16
+struct iw_pmksa {
+  __u32 cmd;
+  struct sockaddr bssid;
+  __u8 pmkid[IW_PMKID_LEN];
+};
+struct iw_michaelmicfailure {
+  __u32 flags;
+  struct sockaddr src_addr;
+  __u8 tsc[IW_ENCODE_SEQ_MAX_SIZE];
+};
+#define IW_PMKID_CAND_PREAUTH 0x00000001
+struct iw_pmkid_cand {
+  __u32 flags;
+  __u32 index;
+  struct sockaddr bssid;
+};
+struct iw_statistics {
+  __u16 status;
+  struct iw_quality qual;
+  struct iw_discarded discard;
+  struct iw_missed miss;
+};
+union iwreq_data {
+  char name[IFNAMSIZ];
+  struct iw_point essid;
+  struct iw_param nwid;
+  struct iw_freq freq;
+  struct iw_param sens;
+  struct iw_param bitrate;
+  struct iw_param txpower;
+  struct iw_param rts;
+  struct iw_param frag;
+  __u32 mode;
+  struct iw_param retry;
+  struct iw_point encoding;
+  struct iw_param power;
+  struct iw_quality qual;
+  struct sockaddr ap_addr;
+  struct sockaddr addr;
+  struct iw_param param;
+  struct iw_point data;
+};
+struct iwreq {
+  union {
+    char ifrn_name[IFNAMSIZ];
+  } ifr_ifrn;
+  union iwreq_data u;
+};
+struct iw_range {
+  __u32 throughput;
+  __u32 min_nwid;
+  __u32 max_nwid;
+  __u16 old_num_channels;
+  __u8 old_num_frequency;
+  __u8 scan_capa;
+  __u32 event_capa[6];
+  __s32 sensitivity;
+  struct iw_quality max_qual;
+  struct iw_quality avg_qual;
+  __u8 num_bitrates;
+  __s32 bitrate[IW_MAX_BITRATES];
+  __s32 min_rts;
+  __s32 max_rts;
+  __s32 min_frag;
+  __s32 max_frag;
+  __s32 min_pmp;
+  __s32 max_pmp;
+  __s32 min_pmt;
+  __s32 max_pmt;
+  __u16 pmp_flags;
+  __u16 pmt_flags;
+  __u16 pm_capa;
+  __u16 encoding_size[IW_MAX_ENCODING_SIZES];
+  __u8 num_encoding_sizes;
+  __u8 max_encoding_tokens;
+  __u8 encoding_login_index;
+  __u16 txpower_capa;
+  __u8 num_txpower;
+  __s32 txpower[IW_MAX_TXPOWER];
+  __u8 we_version_compiled;
+  __u8 we_version_source;
+  __u16 retry_capa;
+  __u16 retry_flags;
+  __u16 r_time_flags;
+  __s32 min_retry;
+  __s32 max_retry;
+  __s32 min_r_time;
+  __s32 max_r_time;
+  __u16 num_channels;
+  __u8 num_frequency;
+  struct iw_freq freq[IW_MAX_FREQUENCIES];
+  __u32 enc_capa;
+};
+struct iw_priv_args {
+  __u32 cmd;
+  __u16 set_args;
+  __u16 get_args;
+  char name[IFNAMSIZ];
+};
+struct iw_event {
+  __u16 len;
+  __u16 cmd;
+  union iwreq_data u;
+};
+#define IW_EV_LCP_LEN (sizeof(struct iw_event) - sizeof(union iwreq_data))
+#define IW_EV_CHAR_LEN (IW_EV_LCP_LEN + IFNAMSIZ)
+#define IW_EV_UINT_LEN (IW_EV_LCP_LEN + sizeof(__u32))
+#define IW_EV_FREQ_LEN (IW_EV_LCP_LEN + sizeof(struct iw_freq))
+#define IW_EV_PARAM_LEN (IW_EV_LCP_LEN + sizeof(struct iw_param))
+#define IW_EV_ADDR_LEN (IW_EV_LCP_LEN + sizeof(struct sockaddr))
+#define IW_EV_QUAL_LEN (IW_EV_LCP_LEN + sizeof(struct iw_quality))
+#define IW_EV_POINT_OFF offsetof(struct iw_point, length)
+#define IW_EV_POINT_LEN (IW_EV_LCP_LEN + sizeof(struct iw_point) - IW_EV_POINT_OFF)
+#define IW_EV_LCP_PK_LEN (4)
+#define IW_EV_CHAR_PK_LEN (IW_EV_LCP_PK_LEN + IFNAMSIZ)
+#define IW_EV_UINT_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(__u32))
+#define IW_EV_FREQ_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct iw_freq))
+#define IW_EV_PARAM_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct iw_param))
+#define IW_EV_ADDR_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct sockaddr))
+#define IW_EV_QUAL_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct iw_quality))
+#define IW_EV_POINT_PK_LEN (IW_EV_LCP_PK_LEN + 4)
+#endif
diff --git a/i686-linux-musl/include/linux/wmi.h b/i686-linux-musl/include/linux/wmi.h
new file mode 100644
index 0000000..26f54d9
--- /dev/null
+++ b/i686-linux-musl/include/linux/wmi.h
@@ -0,0 +1,62 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_WMI_H
+#define _UAPI_LINUX_WMI_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define WMI_IOC 'W'
+struct wmi_ioctl_buffer {
+  __u64 length;
+  __u8 data[];
+};
+struct calling_interface_buffer {
+  __u16 cmd_class;
+  __u16 cmd_select;
+  volatile __u32 input[4];
+  volatile __u32 output[4];
+} __packed;
+struct dell_wmi_extensions {
+  __u32 argattrib;
+  __u32 blength;
+  __u8 data[];
+} __packed;
+struct dell_wmi_smbios_buffer {
+  __u64 length;
+  struct calling_interface_buffer std;
+  struct dell_wmi_extensions ext;
+} __packed;
+#define CLASS_TOKEN_READ 0
+#define CLASS_TOKEN_WRITE 1
+#define SELECT_TOKEN_STD 0
+#define SELECT_TOKEN_BAT 1
+#define SELECT_TOKEN_AC 2
+#define CLASS_FLASH_INTERFACE 7
+#define SELECT_FLASH_INTERFACE 3
+#define CLASS_ADMIN_PROP 10
+#define SELECT_ADMIN_PROP 3
+#define CLASS_INFO 17
+#define SELECT_RFKILL 11
+#define SELECT_APP_REGISTRATION 3
+#define SELECT_DOCK 22
+#define CAPSULE_EN_TOKEN 0x0461
+#define CAPSULE_DIS_TOKEN 0x0462
+#define WSMT_EN_TOKEN 0x04EC
+#define WSMT_DIS_TOKEN 0x04ED
+#define DELL_WMI_SMBIOS_CMD _IOWR(WMI_IOC, 0, struct dell_wmi_smbios_buffer)
+#endif
diff --git a/i686-linux-musl/include/linux/wwan.h b/i686-linux-musl/include/linux/wwan.h
new file mode 100644
index 0000000..9f68713
--- /dev/null
+++ b/i686-linux-musl/include/linux/wwan.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_WWAN_H_
+#define _UAPI_WWAN_H_
+enum {
+  IFLA_WWAN_UNSPEC,
+  IFLA_WWAN_LINK_ID,
+  __IFLA_WWAN_MAX
+};
+#define IFLA_WWAN_MAX (__IFLA_WWAN_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/x25.h b/i686-linux-musl/include/linux/x25.h
new file mode 100644
index 0000000..6655bf9
--- /dev/null
+++ b/i686-linux-musl/include/linux/x25.h
@@ -0,0 +1,97 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef X25_KERNEL_H
+#define X25_KERNEL_H
+#include <linux/types.h>
+#include <linux/socket.h>
+#define SIOCX25GSUBSCRIP (SIOCPROTOPRIVATE + 0)
+#define SIOCX25SSUBSCRIP (SIOCPROTOPRIVATE + 1)
+#define SIOCX25GFACILITIES (SIOCPROTOPRIVATE + 2)
+#define SIOCX25SFACILITIES (SIOCPROTOPRIVATE + 3)
+#define SIOCX25GCALLUSERDATA (SIOCPROTOPRIVATE + 4)
+#define SIOCX25SCALLUSERDATA (SIOCPROTOPRIVATE + 5)
+#define SIOCX25GCAUSEDIAG (SIOCPROTOPRIVATE + 6)
+#define SIOCX25SCUDMATCHLEN (SIOCPROTOPRIVATE + 7)
+#define SIOCX25CALLACCPTAPPRV (SIOCPROTOPRIVATE + 8)
+#define SIOCX25SENDCALLACCPT (SIOCPROTOPRIVATE + 9)
+#define SIOCX25GDTEFACILITIES (SIOCPROTOPRIVATE + 10)
+#define SIOCX25SDTEFACILITIES (SIOCPROTOPRIVATE + 11)
+#define SIOCX25SCAUSEDIAG (SIOCPROTOPRIVATE + 12)
+#define X25_QBITINCL 1
+#define X25_PS16 4
+#define X25_PS32 5
+#define X25_PS64 6
+#define X25_PS128 7
+#define X25_PS256 8
+#define X25_PS512 9
+#define X25_PS1024 10
+#define X25_PS2048 11
+#define X25_PS4096 12
+struct x25_address {
+  char x25_addr[16];
+};
+struct sockaddr_x25 {
+  __kernel_sa_family_t sx25_family;
+  struct x25_address sx25_addr;
+};
+struct x25_subscrip_struct {
+  char device[200 - sizeof(unsigned long)];
+  unsigned long global_facil_mask;
+  unsigned int extended;
+};
+#define X25_MASK_REVERSE 0x01
+#define X25_MASK_THROUGHPUT 0x02
+#define X25_MASK_PACKET_SIZE 0x04
+#define X25_MASK_WINDOW_SIZE 0x08
+#define X25_MASK_CALLING_AE 0x10
+#define X25_MASK_CALLED_AE 0x20
+struct x25_route_struct {
+  struct x25_address address;
+  unsigned int sigdigits;
+  char device[200];
+};
+struct x25_facilities {
+  unsigned int winsize_in, winsize_out;
+  unsigned int pacsize_in, pacsize_out;
+  unsigned int throughput;
+  unsigned int reverse;
+};
+struct x25_dte_facilities {
+  __u16 delay_cumul;
+  __u16 delay_target;
+  __u16 delay_max;
+  __u8 min_throughput;
+  __u8 expedited;
+  __u8 calling_len;
+  __u8 called_len;
+  __u8 calling_ae[20];
+  __u8 called_ae[20];
+};
+struct x25_calluserdata {
+  unsigned int cudlength;
+  unsigned char cuddata[128];
+};
+struct x25_causediag {
+  unsigned char cause;
+  unsigned char diagnostic;
+};
+struct x25_subaddr {
+  unsigned int cudmatchlength;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/xattr.h b/i686-linux-musl/include/linux/xattr.h
new file mode 100644
index 0000000..fd02159
--- /dev/null
+++ b/i686-linux-musl/include/linux/xattr.h
@@ -0,0 +1,69 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <linux/libc-compat.h>
+#ifndef _UAPI_LINUX_XATTR_H
+#define _UAPI_LINUX_XATTR_H
+#if __UAPI_DEF_XATTR
+#define __USE_KERNEL_XATTR_DEFS
+#define XATTR_CREATE 0x1
+#define XATTR_REPLACE 0x2
+#endif
+#define XATTR_OS2_PREFIX "os2."
+#define XATTR_OS2_PREFIX_LEN (sizeof(XATTR_OS2_PREFIX) - 1)
+#define XATTR_MAC_OSX_PREFIX "osx."
+#define XATTR_MAC_OSX_PREFIX_LEN (sizeof(XATTR_MAC_OSX_PREFIX) - 1)
+#define XATTR_BTRFS_PREFIX "btrfs."
+#define XATTR_BTRFS_PREFIX_LEN (sizeof(XATTR_BTRFS_PREFIX) - 1)
+#define XATTR_HURD_PREFIX "gnu."
+#define XATTR_HURD_PREFIX_LEN (sizeof(XATTR_HURD_PREFIX) - 1)
+#define XATTR_SECURITY_PREFIX "security."
+#define XATTR_SECURITY_PREFIX_LEN (sizeof(XATTR_SECURITY_PREFIX) - 1)
+#define XATTR_SYSTEM_PREFIX "system."
+#define XATTR_SYSTEM_PREFIX_LEN (sizeof(XATTR_SYSTEM_PREFIX) - 1)
+#define XATTR_TRUSTED_PREFIX "trusted."
+#define XATTR_TRUSTED_PREFIX_LEN (sizeof(XATTR_TRUSTED_PREFIX) - 1)
+#define XATTR_USER_PREFIX "user."
+#define XATTR_USER_PREFIX_LEN (sizeof(XATTR_USER_PREFIX) - 1)
+#define XATTR_EVM_SUFFIX "evm"
+#define XATTR_NAME_EVM XATTR_SECURITY_PREFIX XATTR_EVM_SUFFIX
+#define XATTR_IMA_SUFFIX "ima"
+#define XATTR_NAME_IMA XATTR_SECURITY_PREFIX XATTR_IMA_SUFFIX
+#define XATTR_SELINUX_SUFFIX "selinux"
+#define XATTR_NAME_SELINUX XATTR_SECURITY_PREFIX XATTR_SELINUX_SUFFIX
+#define XATTR_SMACK_SUFFIX "SMACK64"
+#define XATTR_SMACK_IPIN "SMACK64IPIN"
+#define XATTR_SMACK_IPOUT "SMACK64IPOUT"
+#define XATTR_SMACK_EXEC "SMACK64EXEC"
+#define XATTR_SMACK_TRANSMUTE "SMACK64TRANSMUTE"
+#define XATTR_SMACK_MMAP "SMACK64MMAP"
+#define XATTR_NAME_SMACK XATTR_SECURITY_PREFIX XATTR_SMACK_SUFFIX
+#define XATTR_NAME_SMACKIPIN XATTR_SECURITY_PREFIX XATTR_SMACK_IPIN
+#define XATTR_NAME_SMACKIPOUT XATTR_SECURITY_PREFIX XATTR_SMACK_IPOUT
+#define XATTR_NAME_SMACKEXEC XATTR_SECURITY_PREFIX XATTR_SMACK_EXEC
+#define XATTR_NAME_SMACKTRANSMUTE XATTR_SECURITY_PREFIX XATTR_SMACK_TRANSMUTE
+#define XATTR_NAME_SMACKMMAP XATTR_SECURITY_PREFIX XATTR_SMACK_MMAP
+#define XATTR_APPARMOR_SUFFIX "apparmor"
+#define XATTR_NAME_APPARMOR XATTR_SECURITY_PREFIX XATTR_APPARMOR_SUFFIX
+#define XATTR_CAPS_SUFFIX "capability"
+#define XATTR_NAME_CAPS XATTR_SECURITY_PREFIX XATTR_CAPS_SUFFIX
+#define XATTR_POSIX_ACL_ACCESS "posix_acl_access"
+#define XATTR_NAME_POSIX_ACL_ACCESS XATTR_SYSTEM_PREFIX XATTR_POSIX_ACL_ACCESS
+#define XATTR_POSIX_ACL_DEFAULT "posix_acl_default"
+#define XATTR_NAME_POSIX_ACL_DEFAULT XATTR_SYSTEM_PREFIX XATTR_POSIX_ACL_DEFAULT
+#endif
diff --git a/i686-linux-musl/include/linux/xdp_diag.h b/i686-linux-musl/include/linux/xdp_diag.h
new file mode 100644
index 0000000..1fe9d49
--- /dev/null
+++ b/i686-linux-musl/include/linux/xdp_diag.h
@@ -0,0 +1,83 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_XDP_DIAG_H
+#define _LINUX_XDP_DIAG_H
+#include <linux/types.h>
+struct xdp_diag_req {
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
+  __u16 pad;
+  __u32 xdiag_ino;
+  __u32 xdiag_show;
+  __u32 xdiag_cookie[2];
+};
+struct xdp_diag_msg {
+  __u8 xdiag_family;
+  __u8 xdiag_type;
+  __u16 pad;
+  __u32 xdiag_ino;
+  __u32 xdiag_cookie[2];
+};
+#define XDP_SHOW_INFO (1 << 0)
+#define XDP_SHOW_RING_CFG (1 << 1)
+#define XDP_SHOW_UMEM (1 << 2)
+#define XDP_SHOW_MEMINFO (1 << 3)
+#define XDP_SHOW_STATS (1 << 4)
+enum {
+  XDP_DIAG_NONE,
+  XDP_DIAG_INFO,
+  XDP_DIAG_UID,
+  XDP_DIAG_RX_RING,
+  XDP_DIAG_TX_RING,
+  XDP_DIAG_UMEM,
+  XDP_DIAG_UMEM_FILL_RING,
+  XDP_DIAG_UMEM_COMPLETION_RING,
+  XDP_DIAG_MEMINFO,
+  XDP_DIAG_STATS,
+  __XDP_DIAG_MAX,
+};
+#define XDP_DIAG_MAX (__XDP_DIAG_MAX - 1)
+struct xdp_diag_info {
+  __u32 ifindex;
+  __u32 queue_id;
+};
+struct xdp_diag_ring {
+  __u32 entries;
+};
+#define XDP_DU_F_ZEROCOPY (1 << 0)
+struct xdp_diag_umem {
+  __u64 size;
+  __u32 id;
+  __u32 num_pages;
+  __u32 chunk_size;
+  __u32 headroom;
+  __u32 ifindex;
+  __u32 queue_id;
+  __u32 flags;
+  __u32 refs;
+};
+struct xdp_diag_stats {
+  __u64 n_rx_dropped;
+  __u64 n_rx_invalid;
+  __u64 n_rx_full;
+  __u64 n_fill_ring_empty;
+  __u64 n_tx_invalid;
+  __u64 n_tx_ring_empty;
+};
+#endif
diff --git a/i686-linux-musl/include/linux/xfrm.h b/i686-linux-musl/include/linux/xfrm.h
new file mode 100644
index 0000000..e40b7e3
--- /dev/null
+++ b/i686-linux-musl/include/linux/xfrm.h
@@ -0,0 +1,472 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_XFRM_H
+#define _LINUX_XFRM_H
+#include <linux/in6.h>
+#include <linux/types.h>
+typedef union {
+  __be32 a4;
+  __be32 a6[4];
+  struct in6_addr in6;
+} xfrm_address_t;
+struct xfrm_id {
+  xfrm_address_t daddr;
+  __be32 spi;
+  __u8 proto;
+};
+struct xfrm_sec_ctx {
+  __u8 ctx_doi;
+  __u8 ctx_alg;
+  __u16 ctx_len;
+  __u32 ctx_sid;
+  char ctx_str[0];
+};
+#define XFRM_SC_DOI_RESERVED 0
+#define XFRM_SC_DOI_LSM 1
+#define XFRM_SC_ALG_RESERVED 0
+#define XFRM_SC_ALG_SELINUX 1
+struct xfrm_selector {
+  xfrm_address_t daddr;
+  xfrm_address_t saddr;
+  __be16 dport;
+  __be16 dport_mask;
+  __be16 sport;
+  __be16 sport_mask;
+  __u16 family;
+  __u8 prefixlen_d;
+  __u8 prefixlen_s;
+  __u8 proto;
+  int ifindex;
+  __kernel_uid32_t user;
+};
+#define XFRM_INF (~(__u64) 0)
+struct xfrm_lifetime_cfg {
+  __u64 soft_byte_limit;
+  __u64 hard_byte_limit;
+  __u64 soft_packet_limit;
+  __u64 hard_packet_limit;
+  __u64 soft_add_expires_seconds;
+  __u64 hard_add_expires_seconds;
+  __u64 soft_use_expires_seconds;
+  __u64 hard_use_expires_seconds;
+};
+struct xfrm_lifetime_cur {
+  __u64 bytes;
+  __u64 packets;
+  __u64 add_time;
+  __u64 use_time;
+};
+struct xfrm_replay_state {
+  __u32 oseq;
+  __u32 seq;
+  __u32 bitmap;
+};
+#define XFRMA_REPLAY_ESN_MAX 4096
+struct xfrm_replay_state_esn {
+  unsigned int bmp_len;
+  __u32 oseq;
+  __u32 seq;
+  __u32 oseq_hi;
+  __u32 seq_hi;
+  __u32 replay_window;
+  __u32 bmp[0];
+};
+struct xfrm_algo {
+  char alg_name[64];
+  unsigned int alg_key_len;
+  char alg_key[0];
+};
+struct xfrm_algo_auth {
+  char alg_name[64];
+  unsigned int alg_key_len;
+  unsigned int alg_trunc_len;
+  char alg_key[0];
+};
+struct xfrm_algo_aead {
+  char alg_name[64];
+  unsigned int alg_key_len;
+  unsigned int alg_icv_len;
+  char alg_key[0];
+};
+struct xfrm_stats {
+  __u32 replay_window;
+  __u32 replay;
+  __u32 integrity_failed;
+};
+enum {
+  XFRM_POLICY_TYPE_MAIN = 0,
+  XFRM_POLICY_TYPE_SUB = 1,
+  XFRM_POLICY_TYPE_MAX = 2,
+  XFRM_POLICY_TYPE_ANY = 255
+};
+enum {
+  XFRM_POLICY_IN = 0,
+  XFRM_POLICY_OUT = 1,
+  XFRM_POLICY_FWD = 2,
+  XFRM_POLICY_MASK = 3,
+  XFRM_POLICY_MAX = 3
+};
+enum {
+  XFRM_SHARE_ANY,
+  XFRM_SHARE_SESSION,
+  XFRM_SHARE_USER,
+  XFRM_SHARE_UNIQUE
+};
+#define XFRM_MODE_TRANSPORT 0
+#define XFRM_MODE_TUNNEL 1
+#define XFRM_MODE_ROUTEOPTIMIZATION 2
+#define XFRM_MODE_IN_TRIGGER 3
+#define XFRM_MODE_BEET 4
+#define XFRM_MODE_MAX 5
+enum {
+  XFRM_MSG_BASE = 0x10,
+  XFRM_MSG_NEWSA = 0x10,
+#define XFRM_MSG_NEWSA XFRM_MSG_NEWSA
+  XFRM_MSG_DELSA,
+#define XFRM_MSG_DELSA XFRM_MSG_DELSA
+  XFRM_MSG_GETSA,
+#define XFRM_MSG_GETSA XFRM_MSG_GETSA
+  XFRM_MSG_NEWPOLICY,
+#define XFRM_MSG_NEWPOLICY XFRM_MSG_NEWPOLICY
+  XFRM_MSG_DELPOLICY,
+#define XFRM_MSG_DELPOLICY XFRM_MSG_DELPOLICY
+  XFRM_MSG_GETPOLICY,
+#define XFRM_MSG_GETPOLICY XFRM_MSG_GETPOLICY
+  XFRM_MSG_ALLOCSPI,
+#define XFRM_MSG_ALLOCSPI XFRM_MSG_ALLOCSPI
+  XFRM_MSG_ACQUIRE,
+#define XFRM_MSG_ACQUIRE XFRM_MSG_ACQUIRE
+  XFRM_MSG_EXPIRE,
+#define XFRM_MSG_EXPIRE XFRM_MSG_EXPIRE
+  XFRM_MSG_UPDPOLICY,
+#define XFRM_MSG_UPDPOLICY XFRM_MSG_UPDPOLICY
+  XFRM_MSG_UPDSA,
+#define XFRM_MSG_UPDSA XFRM_MSG_UPDSA
+  XFRM_MSG_POLEXPIRE,
+#define XFRM_MSG_POLEXPIRE XFRM_MSG_POLEXPIRE
+  XFRM_MSG_FLUSHSA,
+#define XFRM_MSG_FLUSHSA XFRM_MSG_FLUSHSA
+  XFRM_MSG_FLUSHPOLICY,
+#define XFRM_MSG_FLUSHPOLICY XFRM_MSG_FLUSHPOLICY
+  XFRM_MSG_NEWAE,
+#define XFRM_MSG_NEWAE XFRM_MSG_NEWAE
+  XFRM_MSG_GETAE,
+#define XFRM_MSG_GETAE XFRM_MSG_GETAE
+  XFRM_MSG_REPORT,
+#define XFRM_MSG_REPORT XFRM_MSG_REPORT
+  XFRM_MSG_MIGRATE,
+#define XFRM_MSG_MIGRATE XFRM_MSG_MIGRATE
+  XFRM_MSG_NEWSADINFO,
+#define XFRM_MSG_NEWSADINFO XFRM_MSG_NEWSADINFO
+  XFRM_MSG_GETSADINFO,
+#define XFRM_MSG_GETSADINFO XFRM_MSG_GETSADINFO
+  XFRM_MSG_NEWSPDINFO,
+#define XFRM_MSG_NEWSPDINFO XFRM_MSG_NEWSPDINFO
+  XFRM_MSG_GETSPDINFO,
+#define XFRM_MSG_GETSPDINFO XFRM_MSG_GETSPDINFO
+  XFRM_MSG_MAPPING,
+#define XFRM_MSG_MAPPING XFRM_MSG_MAPPING
+  XFRM_MSG_SETDEFAULT,
+#define XFRM_MSG_SETDEFAULT XFRM_MSG_SETDEFAULT
+  XFRM_MSG_GETDEFAULT,
+#define XFRM_MSG_GETDEFAULT XFRM_MSG_GETDEFAULT
+  __XFRM_MSG_MAX
+};
+#define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1)
+#define XFRM_NR_MSGTYPES (XFRM_MSG_MAX + 1 - XFRM_MSG_BASE)
+struct xfrm_user_sec_ctx {
+  __u16 len;
+  __u16 exttype;
+  __u8 ctx_alg;
+  __u8 ctx_doi;
+  __u16 ctx_len;
+};
+struct xfrm_user_tmpl {
+  struct xfrm_id id;
+  __u16 family;
+  xfrm_address_t saddr;
+  __u32 reqid;
+  __u8 mode;
+  __u8 share;
+  __u8 optional;
+  __u32 aalgos;
+  __u32 ealgos;
+  __u32 calgos;
+};
+struct xfrm_encap_tmpl {
+  __u16 encap_type;
+  __be16 encap_sport;
+  __be16 encap_dport;
+  xfrm_address_t encap_oa;
+};
+enum xfrm_ae_ftype_t {
+  XFRM_AE_UNSPEC,
+  XFRM_AE_RTHR = 1,
+  XFRM_AE_RVAL = 2,
+  XFRM_AE_LVAL = 4,
+  XFRM_AE_ETHR = 8,
+  XFRM_AE_CR = 16,
+  XFRM_AE_CE = 32,
+  XFRM_AE_CU = 64,
+  __XFRM_AE_MAX
+#define XFRM_AE_MAX (__XFRM_AE_MAX - 1)
+};
+struct xfrm_userpolicy_type {
+  __u8 type;
+  __u16 reserved1;
+  __u8 reserved2;
+};
+enum xfrm_attr_type_t {
+  XFRMA_UNSPEC,
+  XFRMA_ALG_AUTH,
+  XFRMA_ALG_CRYPT,
+  XFRMA_ALG_COMP,
+  XFRMA_ENCAP,
+  XFRMA_TMPL,
+  XFRMA_SA,
+  XFRMA_POLICY,
+  XFRMA_SEC_CTX,
+  XFRMA_LTIME_VAL,
+  XFRMA_REPLAY_VAL,
+  XFRMA_REPLAY_THRESH,
+  XFRMA_ETIMER_THRESH,
+  XFRMA_SRCADDR,
+  XFRMA_COADDR,
+  XFRMA_LASTUSED,
+  XFRMA_POLICY_TYPE,
+  XFRMA_MIGRATE,
+  XFRMA_ALG_AEAD,
+  XFRMA_KMADDRESS,
+  XFRMA_ALG_AUTH_TRUNC,
+  XFRMA_MARK,
+  XFRMA_TFCPAD,
+  XFRMA_REPLAY_ESN_VAL,
+  XFRMA_SA_EXTRA_FLAGS,
+  XFRMA_PROTO,
+  XFRMA_ADDRESS_FILTER,
+  XFRMA_PAD,
+  XFRMA_OFFLOAD_DEV,
+  XFRMA_SET_MARK,
+  XFRMA_SET_MARK_MASK,
+  XFRMA_IF_ID,
+  __XFRMA_MAX
+#define XFRMA_OUTPUT_MARK XFRMA_SET_MARK
+#define XFRMA_MAX (__XFRMA_MAX - 1)
+};
+struct xfrm_mark {
+  __u32 v;
+  __u32 m;
+};
+enum xfrm_sadattr_type_t {
+  XFRMA_SAD_UNSPEC,
+  XFRMA_SAD_CNT,
+  XFRMA_SAD_HINFO,
+  __XFRMA_SAD_MAX
+#define XFRMA_SAD_MAX (__XFRMA_SAD_MAX - 1)
+};
+struct xfrmu_sadhinfo {
+  __u32 sadhcnt;
+  __u32 sadhmcnt;
+};
+enum xfrm_spdattr_type_t {
+  XFRMA_SPD_UNSPEC,
+  XFRMA_SPD_INFO,
+  XFRMA_SPD_HINFO,
+  XFRMA_SPD_IPV4_HTHRESH,
+  XFRMA_SPD_IPV6_HTHRESH,
+  __XFRMA_SPD_MAX
+#define XFRMA_SPD_MAX (__XFRMA_SPD_MAX - 1)
+};
+struct xfrmu_spdinfo {
+  __u32 incnt;
+  __u32 outcnt;
+  __u32 fwdcnt;
+  __u32 inscnt;
+  __u32 outscnt;
+  __u32 fwdscnt;
+};
+struct xfrmu_spdhinfo {
+  __u32 spdhcnt;
+  __u32 spdhmcnt;
+};
+struct xfrmu_spdhthresh {
+  __u8 lbits;
+  __u8 rbits;
+};
+struct xfrm_usersa_info {
+  struct xfrm_selector sel;
+  struct xfrm_id id;
+  xfrm_address_t saddr;
+  struct xfrm_lifetime_cfg lft;
+  struct xfrm_lifetime_cur curlft;
+  struct xfrm_stats stats;
+  __u32 seq;
+  __u32 reqid;
+  __u16 family;
+  __u8 mode;
+  __u8 replay_window;
+  __u8 flags;
+#define XFRM_STATE_NOECN 1
+#define XFRM_STATE_DECAP_DSCP 2
+#define XFRM_STATE_NOPMTUDISC 4
+#define XFRM_STATE_WILDRECV 8
+#define XFRM_STATE_ICMP 16
+#define XFRM_STATE_AF_UNSPEC 32
+#define XFRM_STATE_ALIGN4 64
+#define XFRM_STATE_ESN 128
+};
+#define XFRM_SA_XFLAG_DONT_ENCAP_DSCP 1
+#define XFRM_SA_XFLAG_OSEQ_MAY_WRAP 2
+struct xfrm_usersa_id {
+  xfrm_address_t daddr;
+  __be32 spi;
+  __u16 family;
+  __u8 proto;
+};
+struct xfrm_aevent_id {
+  struct xfrm_usersa_id sa_id;
+  xfrm_address_t saddr;
+  __u32 flags;
+  __u32 reqid;
+};
+struct xfrm_userspi_info {
+  struct xfrm_usersa_info info;
+  __u32 min;
+  __u32 max;
+};
+struct xfrm_userpolicy_info {
+  struct xfrm_selector sel;
+  struct xfrm_lifetime_cfg lft;
+  struct xfrm_lifetime_cur curlft;
+  __u32 priority;
+  __u32 index;
+  __u8 dir;
+  __u8 action;
+#define XFRM_POLICY_ALLOW 0
+#define XFRM_POLICY_BLOCK 1
+  __u8 flags;
+#define XFRM_POLICY_LOCALOK 1
+#define XFRM_POLICY_ICMP 2
+  __u8 share;
+};
+struct xfrm_userpolicy_id {
+  struct xfrm_selector sel;
+  __u32 index;
+  __u8 dir;
+};
+struct xfrm_user_acquire {
+  struct xfrm_id id;
+  xfrm_address_t saddr;
+  struct xfrm_selector sel;
+  struct xfrm_userpolicy_info policy;
+  __u32 aalgos;
+  __u32 ealgos;
+  __u32 calgos;
+  __u32 seq;
+};
+struct xfrm_user_expire {
+  struct xfrm_usersa_info state;
+  __u8 hard;
+};
+struct xfrm_user_polexpire {
+  struct xfrm_userpolicy_info pol;
+  __u8 hard;
+};
+struct xfrm_usersa_flush {
+  __u8 proto;
+};
+struct xfrm_user_report {
+  __u8 proto;
+  struct xfrm_selector sel;
+};
+struct xfrm_user_kmaddress {
+  xfrm_address_t local;
+  xfrm_address_t remote;
+  __u32 reserved;
+  __u16 family;
+};
+struct xfrm_user_migrate {
+  xfrm_address_t old_daddr;
+  xfrm_address_t old_saddr;
+  xfrm_address_t new_daddr;
+  xfrm_address_t new_saddr;
+  __u8 proto;
+  __u8 mode;
+  __u16 reserved;
+  __u32 reqid;
+  __u16 old_family;
+  __u16 new_family;
+};
+struct xfrm_user_mapping {
+  struct xfrm_usersa_id id;
+  __u32 reqid;
+  xfrm_address_t old_saddr;
+  xfrm_address_t new_saddr;
+  __be16 old_sport;
+  __be16 new_sport;
+};
+struct xfrm_address_filter {
+  xfrm_address_t saddr;
+  xfrm_address_t daddr;
+  __u16 family;
+  __u8 splen;
+  __u8 dplen;
+};
+struct xfrm_user_offload {
+  int ifindex;
+  __u8 flags;
+};
+#define XFRM_OFFLOAD_IPV6 1
+#define XFRM_OFFLOAD_INBOUND 2
+struct xfrm_userpolicy_default {
+#define XFRM_USERPOLICY_UNSPEC 0
+#define XFRM_USERPOLICY_BLOCK 1
+#define XFRM_USERPOLICY_ACCEPT 2
+  __u8 in;
+  __u8 fwd;
+  __u8 out;
+};
+#define XFRMGRP_ACQUIRE 1
+#define XFRMGRP_EXPIRE 2
+#define XFRMGRP_SA 4
+#define XFRMGRP_POLICY 8
+#define XFRMGRP_REPORT 0x20
+enum xfrm_nlgroups {
+  XFRMNLGRP_NONE,
+#define XFRMNLGRP_NONE XFRMNLGRP_NONE
+  XFRMNLGRP_ACQUIRE,
+#define XFRMNLGRP_ACQUIRE XFRMNLGRP_ACQUIRE
+  XFRMNLGRP_EXPIRE,
+#define XFRMNLGRP_EXPIRE XFRMNLGRP_EXPIRE
+  XFRMNLGRP_SA,
+#define XFRMNLGRP_SA XFRMNLGRP_SA
+  XFRMNLGRP_POLICY,
+#define XFRMNLGRP_POLICY XFRMNLGRP_POLICY
+  XFRMNLGRP_AEVENTS,
+#define XFRMNLGRP_AEVENTS XFRMNLGRP_AEVENTS
+  XFRMNLGRP_REPORT,
+#define XFRMNLGRP_REPORT XFRMNLGRP_REPORT
+  XFRMNLGRP_MIGRATE,
+#define XFRMNLGRP_MIGRATE XFRMNLGRP_MIGRATE
+  XFRMNLGRP_MAPPING,
+#define XFRMNLGRP_MAPPING XFRMNLGRP_MAPPING
+  __XFRMNLGRP_MAX
+};
+#define XFRMNLGRP_MAX (__XFRMNLGRP_MAX - 1)
+#endif
diff --git a/i686-linux-musl/include/linux/xilinx-v4l2-controls.h b/i686-linux-musl/include/linux/xilinx-v4l2-controls.h
new file mode 100644
index 0000000..75c3628
--- /dev/null
+++ b/i686-linux-musl/include/linux/xilinx-v4l2-controls.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_XILINX_V4L2_CONTROLS_H__
+#define __UAPI_XILINX_V4L2_CONTROLS_H__
+#include <linux/v4l2-controls.h>
+#define V4L2_CID_XILINX_OFFSET 0xc000
+#define V4L2_CID_XILINX_BASE (V4L2_CID_USER_BASE + V4L2_CID_XILINX_OFFSET)
+#define V4L2_CID_XILINX_TPG (V4L2_CID_USER_BASE + 0xc000)
+#define V4L2_CID_XILINX_TPG_CROSS_HAIRS (V4L2_CID_XILINX_TPG + 1)
+#define V4L2_CID_XILINX_TPG_MOVING_BOX (V4L2_CID_XILINX_TPG + 2)
+#define V4L2_CID_XILINX_TPG_COLOR_MASK (V4L2_CID_XILINX_TPG + 3)
+#define V4L2_CID_XILINX_TPG_STUCK_PIXEL (V4L2_CID_XILINX_TPG + 4)
+#define V4L2_CID_XILINX_TPG_NOISE (V4L2_CID_XILINX_TPG + 5)
+#define V4L2_CID_XILINX_TPG_MOTION (V4L2_CID_XILINX_TPG + 6)
+#define V4L2_CID_XILINX_TPG_MOTION_SPEED (V4L2_CID_XILINX_TPG + 7)
+#define V4L2_CID_XILINX_TPG_CROSS_HAIR_ROW (V4L2_CID_XILINX_TPG + 8)
+#define V4L2_CID_XILINX_TPG_CROSS_HAIR_COLUMN (V4L2_CID_XILINX_TPG + 9)
+#define V4L2_CID_XILINX_TPG_ZPLATE_HOR_START (V4L2_CID_XILINX_TPG + 10)
+#define V4L2_CID_XILINX_TPG_ZPLATE_HOR_SPEED (V4L2_CID_XILINX_TPG + 11)
+#define V4L2_CID_XILINX_TPG_ZPLATE_VER_START (V4L2_CID_XILINX_TPG + 12)
+#define V4L2_CID_XILINX_TPG_ZPLATE_VER_SPEED (V4L2_CID_XILINX_TPG + 13)
+#define V4L2_CID_XILINX_TPG_BOX_SIZE (V4L2_CID_XILINX_TPG + 14)
+#define V4L2_CID_XILINX_TPG_BOX_COLOR (V4L2_CID_XILINX_TPG + 15)
+#define V4L2_CID_XILINX_TPG_STUCK_PIXEL_THRESH (V4L2_CID_XILINX_TPG + 16)
+#define V4L2_CID_XILINX_TPG_NOISE_GAIN (V4L2_CID_XILINX_TPG + 17)
+#endif
diff --git a/i686-linux-musl/include/linux/zorro.h b/i686-linux-musl/include/linux/zorro.h
new file mode 100644
index 0000000..f8e47a1
--- /dev/null
+++ b/i686-linux-musl/include/linux/zorro.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ZORRO_H
+#define _UAPI_LINUX_ZORRO_H
+#include <linux/types.h>
+#define ZORRO_MANUF(id) ((id) >> 16)
+#define ZORRO_PROD(id) (((id) >> 8) & 0xff)
+#define ZORRO_EPC(id) ((id) & 0xff)
+#define ZORRO_ID(manuf,prod,epc) ((ZORRO_MANUF_ ##manuf << 16) | ((prod) << 8) | (epc))
+typedef __u32 zorro_id;
+#include <linux/zorro_ids.h>
+#define GVP_PRODMASK (0xf8)
+#define GVP_SCSICLKMASK (0x01)
+enum GVP_flags {
+  GVP_IO = 0x01,
+  GVP_ACCEL = 0x02,
+  GVP_SCSI = 0x04,
+  GVP_24BITDMA = 0x08,
+  GVP_25BITDMA = 0x10,
+  GVP_NOBANK = 0x20,
+  GVP_14MHZ = 0x40,
+};
+struct Node {
+  __be32 ln_Succ;
+  __be32 ln_Pred;
+  __u8 ln_Type;
+  __s8 ln_Pri;
+  __be32 ln_Name;
+} __packed;
+struct ExpansionRom {
+  __u8 er_Type;
+  __u8 er_Product;
+  __u8 er_Flags;
+  __u8 er_Reserved03;
+  __be16 er_Manufacturer;
+  __be32 er_SerialNumber;
+  __be16 er_InitDiagVec;
+  __u8 er_Reserved0c;
+  __u8 er_Reserved0d;
+  __u8 er_Reserved0e;
+  __u8 er_Reserved0f;
+} __packed;
+#define ERT_TYPEMASK 0xc0
+#define ERT_ZORROII 0xc0
+#define ERT_ZORROIII 0x80
+#define ERTB_MEMLIST 5
+#define ERTF_MEMLIST (1 << 5)
+struct ConfigDev {
+  struct Node cd_Node;
+  __u8 cd_Flags;
+  __u8 cd_Pad;
+  struct ExpansionRom cd_Rom;
+  __be32 cd_BoardAddr;
+  __be32 cd_BoardSize;
+  __be16 cd_SlotAddr;
+  __be16 cd_SlotSize;
+  __be32 cd_Driver;
+  __be32 cd_NextCD;
+  __be32 cd_Unused[4];
+} __packed;
+#define ZORRO_NUM_AUTO 16
+#endif
diff --git a/i686-linux-musl/include/linux/zorro_ids.h b/i686-linux-musl/include/linux/zorro_ids.h
new file mode 100644
index 0000000..99687a3
--- /dev/null
+++ b/i686-linux-musl/include/linux/zorro_ids.h
@@ -0,0 +1,446 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#define ZORRO_MANUF_PACIFIC_PERIPHERALS 0x00D3
+#define ZORRO_PROD_PACIFIC_PERIPHERALS_SE_2000_A500 ZORRO_ID(PACIFIC_PERIPHERALS, 0x00, 0)
+#define ZORRO_PROD_PACIFIC_PERIPHERALS_SCSI ZORRO_ID(PACIFIC_PERIPHERALS, 0x0A, 0)
+#define ZORRO_MANUF_MACROSYSTEMS_USA_2 0x0100
+#define ZORRO_PROD_MACROSYSTEMS_WARP_ENGINE ZORRO_ID(MACROSYSTEMS_USA_2, 0x13, 0)
+#define ZORRO_MANUF_KUPKE_1 0x00DD
+#define ZORRO_PROD_KUPKE_GOLEM_RAM_BOX_2MB ZORRO_ID(KUPKE_1, 0x00, 0)
+#define ZORRO_MANUF_MEMPHIS 0x0100
+#define ZORRO_PROD_MEMPHIS_STORMBRINGER ZORRO_ID(MEMPHIS, 0x00, 0)
+#define ZORRO_MANUF_3_STATE 0x0200
+#define ZORRO_PROD_3_STATE_MEGAMIX_2000 ZORRO_ID(3_STATE, 0x02, 0)
+#define ZORRO_MANUF_COMMODORE_BRAUNSCHWEIG 0x0201
+#define ZORRO_PROD_CBM_A2088_A2286 ZORRO_ID(COMMODORE_BRAUNSCHWEIG, 0x01, 0)
+#define ZORRO_PROD_CBM_A2286 ZORRO_ID(COMMODORE_BRAUNSCHWEIG, 0x02, 0)
+#define ZORRO_PROD_CBM_A4091_1 ZORRO_ID(COMMODORE_BRAUNSCHWEIG, 0x54, 0)
+#define ZORRO_PROD_CBM_A2386SX_1 ZORRO_ID(COMMODORE_BRAUNSCHWEIG, 0x67, 0)
+#define ZORRO_MANUF_COMMODORE_WEST_CHESTER_1 0x0202
+#define ZORRO_PROD_CBM_A2090A ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x01, 0)
+#define ZORRO_PROD_CBM_A590_A2091_1 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x02, 0)
+#define ZORRO_PROD_CBM_A590_A2091_2 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x03, 0)
+#define ZORRO_PROD_CBM_A2090B ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x04, 0)
+#define ZORRO_PROD_CBM_A2060 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x09, 0)
+#define ZORRO_PROD_CBM_A590_A2052_A2058_A2091 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x0A, 0)
+#define ZORRO_PROD_CBM_A560_RAM ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x20, 0)
+#define ZORRO_PROD_CBM_A2232_PROTOTYPE ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x45, 0)
+#define ZORRO_PROD_CBM_A2232 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x46, 0)
+#define ZORRO_PROD_CBM_A2620 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x50, 0)
+#define ZORRO_PROD_CBM_A2630 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x51, 0)
+#define ZORRO_PROD_CBM_A4091_2 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x54, 0)
+#define ZORRO_PROD_CBM_A2065_1 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x5A, 0)
+#define ZORRO_PROD_CBM_ROMULATOR ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x60, 0)
+#define ZORRO_PROD_CBM_A3000_TEST_FIXTURE ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x61, 0)
+#define ZORRO_PROD_CBM_A2386SX_2 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x67, 0)
+#define ZORRO_PROD_CBM_A2065_2 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x70, 0)
+#define ZORRO_MANUF_COMMODORE_WEST_CHESTER_2 0x0203
+#define ZORRO_PROD_CBM_A2090A_CM ZORRO_ID(COMMODORE_WEST_CHESTER_2, 0x03, 0)
+#define ZORRO_MANUF_PROGRESSIVE_PERIPHERALS_AND_SYSTEMS_2 0x02F4
+#define ZORRO_PROD_PPS_EXP8000 ZORRO_ID(PROGRESSIVE_PERIPHERALS_AND_SYSTEMS_2, 0x02, 0)
+#define ZORRO_MANUF_KOLFF_COMPUTER_SUPPLIES 0x02FF
+#define ZORRO_PROD_KCS_POWER_PC_BOARD ZORRO_ID(KOLFF_COMPUTER_SUPPLIES, 0x00, 0)
+#define ZORRO_MANUF_CARDCO_1 0x03EC
+#define ZORRO_PROD_CARDCO_KRONOS_2000_1 ZORRO_ID(CARDCO_1, 0x04, 0)
+#define ZORRO_PROD_CARDCO_A1000_1 ZORRO_ID(CARDCO_1, 0x0C, 0)
+#define ZORRO_PROD_CARDCO_ESCORT ZORRO_ID(CARDCO_1, 0x0E, 0)
+#define ZORRO_PROD_CARDCO_A2410 ZORRO_ID(CARDCO_1, 0xF5, 0)
+#define ZORRO_MANUF_A_SQUARED 0x03ED
+#define ZORRO_PROD_A_SQUARED_LIVE_2000 ZORRO_ID(A_SQUARED, 0x01, 0)
+#define ZORRO_MANUF_COMSPEC_COMMUNICATIONS 0x03EE
+#define ZORRO_PROD_COMSPEC_COMMUNICATIONS_AX2000 ZORRO_ID(COMSPEC_COMMUNICATIONS, 0x01, 0)
+#define ZORRO_MANUF_ANAKIN_RESEARCH 0x03F1
+#define ZORRO_PROD_ANAKIN_RESEARCH_EASYL ZORRO_ID(ANAKIN_RESEARCH, 0x01, 0)
+#define ZORRO_MANUF_MICROBOTICS 0x03F2
+#define ZORRO_PROD_MICROBOTICS_STARBOARD_II ZORRO_ID(MICROBOTICS, 0x00, 0)
+#define ZORRO_PROD_MICROBOTICS_STARDRIVE ZORRO_ID(MICROBOTICS, 0x02, 0)
+#define ZORRO_PROD_MICROBOTICS_8_UP_A ZORRO_ID(MICROBOTICS, 0x03, 0)
+#define ZORRO_PROD_MICROBOTICS_8_UP_Z ZORRO_ID(MICROBOTICS, 0x04, 0)
+#define ZORRO_PROD_MICROBOTICS_DELTA_RAM ZORRO_ID(MICROBOTICS, 0x20, 0)
+#define ZORRO_PROD_MICROBOTICS_8_STAR_RAM ZORRO_ID(MICROBOTICS, 0x40, 0)
+#define ZORRO_PROD_MICROBOTICS_8_STAR ZORRO_ID(MICROBOTICS, 0x41, 0)
+#define ZORRO_PROD_MICROBOTICS_VXL_RAM_32 ZORRO_ID(MICROBOTICS, 0x44, 0)
+#define ZORRO_PROD_MICROBOTICS_VXL_68030 ZORRO_ID(MICROBOTICS, 0x45, 0)
+#define ZORRO_PROD_MICROBOTICS_DELTA ZORRO_ID(MICROBOTICS, 0x60, 0)
+#define ZORRO_PROD_MICROBOTICS_MBX_1200_1200Z_RAM ZORRO_ID(MICROBOTICS, 0x81, 0)
+#define ZORRO_PROD_MICROBOTICS_HARDFRAME_2000_1 ZORRO_ID(MICROBOTICS, 0x96, 0)
+#define ZORRO_PROD_MICROBOTICS_HARDFRAME_2000_2 ZORRO_ID(MICROBOTICS, 0x9E, 0)
+#define ZORRO_PROD_MICROBOTICS_MBX_1200_1200Z ZORRO_ID(MICROBOTICS, 0xC1, 0)
+#define ZORRO_MANUF_ACCESS_ASSOCIATES_ALEGRA 0x03F4
+#define ZORRO_MANUF_EXPANSION_TECHNOLOGIES 0x03F6
+#define ZORRO_MANUF_ASDG 0x03FF
+#define ZORRO_PROD_ASDG_MEMORY_1 ZORRO_ID(ASDG, 0x01, 0)
+#define ZORRO_PROD_ASDG_MEMORY_2 ZORRO_ID(ASDG, 0x02, 0)
+#define ZORRO_PROD_ASDG_EB920_LAN_ROVER ZORRO_ID(ASDG, 0xFE, 0)
+#define ZORRO_PROD_ASDG_GPIB_DUALIEEE488_TWIN_X ZORRO_ID(ASDG, 0xFF, 0)
+#define ZORRO_MANUF_IMTRONICS_1 0x0404
+#define ZORRO_PROD_IMTRONICS_HURRICANE_2800_1 ZORRO_ID(IMTRONICS_1, 0x39, 0)
+#define ZORRO_PROD_IMTRONICS_HURRICANE_2800_2 ZORRO_ID(IMTRONICS_1, 0x57, 0)
+#define ZORRO_MANUF_CBM_UNIVERSITY_OF_LOWELL 0x0406
+#define ZORRO_PROD_CBM_A2410 ZORRO_ID(CBM_UNIVERSITY_OF_LOWELL, 0x00, 0)
+#define ZORRO_MANUF_AMERISTAR 0x041D
+#define ZORRO_PROD_AMERISTAR_A2065 ZORRO_ID(AMERISTAR, 0x01, 0)
+#define ZORRO_PROD_AMERISTAR_A560 ZORRO_ID(AMERISTAR, 0x09, 0)
+#define ZORRO_PROD_AMERISTAR_A4066 ZORRO_ID(AMERISTAR, 0x0A, 0)
+#define ZORRO_MANUF_SUPRA 0x0420
+#define ZORRO_PROD_SUPRA_SUPRADRIVE_4x4 ZORRO_ID(SUPRA, 0x01, 0)
+#define ZORRO_PROD_SUPRA_1000_RAM ZORRO_ID(SUPRA, 0x02, 0)
+#define ZORRO_PROD_SUPRA_2000_DMA ZORRO_ID(SUPRA, 0x03, 0)
+#define ZORRO_PROD_SUPRA_500 ZORRO_ID(SUPRA, 0x05, 0)
+#define ZORRO_PROD_SUPRA_500_SCSI ZORRO_ID(SUPRA, 0x08, 0)
+#define ZORRO_PROD_SUPRA_500XP_2000_RAM ZORRO_ID(SUPRA, 0x09, 0)
+#define ZORRO_PROD_SUPRA_500RX_2000_RAM ZORRO_ID(SUPRA, 0x0A, 0)
+#define ZORRO_PROD_SUPRA_2400ZI ZORRO_ID(SUPRA, 0x0B, 0)
+#define ZORRO_PROD_SUPRA_500XP_SUPRADRIVE_WORDSYNC ZORRO_ID(SUPRA, 0x0C, 0)
+#define ZORRO_PROD_SUPRA_SUPRADRIVE_WORDSYNC_II ZORRO_ID(SUPRA, 0x0D, 0)
+#define ZORRO_PROD_SUPRA_2400ZIPLUS ZORRO_ID(SUPRA, 0x10, 0)
+#define ZORRO_MANUF_COMPUTER_SYSTEMS_ASSOCIATES 0x0422
+#define ZORRO_PROD_CSA_MAGNUM ZORRO_ID(COMPUTER_SYSTEMS_ASSOCIATES, 0x11, 0)
+#define ZORRO_PROD_CSA_12_GAUGE ZORRO_ID(COMPUTER_SYSTEMS_ASSOCIATES, 0x15, 0)
+#define ZORRO_MANUF_MARC_MICHAEL_GROTH 0x0439
+#define ZORRO_MANUF_M_TECH 0x0502
+#define ZORRO_PROD_MTEC_AT500_1 ZORRO_ID(M_TECH, 0x03, 0)
+#define ZORRO_MANUF_GREAT_VALLEY_PRODUCTS_1 0x06E1
+#define ZORRO_PROD_GVP_IMPACT_SERIES_I ZORRO_ID(GREAT_VALLEY_PRODUCTS_1, 0x08, 0)
+#define ZORRO_MANUF_BYTEBOX 0x07DA
+#define ZORRO_PROD_BYTEBOX_A500 ZORRO_ID(BYTEBOX, 0x00, 0)
+#define ZORRO_MANUF_DKB_POWER_COMPUTING 0x07DC
+#define ZORRO_PROD_DKB_POWER_COMPUTING_SECUREKEY ZORRO_ID(DKB_POWER_COMPUTING, 0x09, 0)
+#define ZORRO_PROD_DKB_POWER_COMPUTING_DKM_3128 ZORRO_ID(DKB_POWER_COMPUTING, 0x0E, 0)
+#define ZORRO_PROD_DKB_POWER_COMPUTING_RAPID_FIRE ZORRO_ID(DKB_POWER_COMPUTING, 0x0F, 0)
+#define ZORRO_PROD_DKB_POWER_COMPUTING_DKM_1202 ZORRO_ID(DKB_POWER_COMPUTING, 0x10, 0)
+#define ZORRO_PROD_DKB_POWER_COMPUTING_COBRA_VIPER_II_68EC030 ZORRO_ID(DKB_POWER_COMPUTING, 0x12, 0)
+#define ZORRO_PROD_DKB_POWER_COMPUTING_WILDFIRE_060_1 ZORRO_ID(DKB_POWER_COMPUTING, 0x17, 0)
+#define ZORRO_PROD_DKB_POWER_COMPUTING_WILDFIRE_060_2 ZORRO_ID(DKB_POWER_COMPUTING, 0xFF, 0)
+#define ZORRO_MANUF_GREAT_VALLEY_PRODUCTS_2 0x07E1
+#define ZORRO_PROD_GVP_IMPACT_SERIES_I_4K ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x01, 0)
+#define ZORRO_PROD_GVP_IMPACT_SERIES_I_16K_2 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x02, 0)
+#define ZORRO_PROD_GVP_IMPACT_SERIES_I_16K_3 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x03, 0)
+#define ZORRO_PROD_GVP_IMPACT_3001_IDE_1 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x08, 0)
+#define ZORRO_PROD_GVP_IMPACT_3001_RAM ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x09, 0)
+#define ZORRO_PROD_GVP_IMPACT_SERIES_II_RAM_1 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0A, 0)
+#define ZORRO_PROD_GVP_EPC_BASE ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0)
+#define ZORRO_PROD_GVP_GFORCE_040_1 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0x20)
+#define ZORRO_PROD_GVP_GFORCE_040_SCSI_1 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0x30)
+#define ZORRO_PROD_GVP_A1291 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0x40)
+#define ZORRO_PROD_GVP_COMBO_030_R4 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0x60)
+#define ZORRO_PROD_GVP_COMBO_030_R4_SCSI ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0x70)
+#define ZORRO_PROD_GVP_PHONEPAK ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0x78)
+#define ZORRO_PROD_GVP_IO_EXTENDER ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0x98)
+#define ZORRO_PROD_GVP_GFORCE_030 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0xa0)
+#define ZORRO_PROD_GVP_GFORCE_030_SCSI ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0xb0)
+#define ZORRO_PROD_GVP_A530 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0xc0)
+#define ZORRO_PROD_GVP_A530_SCSI ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0xd0)
+#define ZORRO_PROD_GVP_COMBO_030_R3 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0xe0)
+#define ZORRO_PROD_GVP_COMBO_030_R3_SCSI ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0xf0)
+#define ZORRO_PROD_GVP_SERIES_II ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0xf8)
+#define ZORRO_PROD_GVP_IMPACT_3001_IDE_2 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0D, 0)
+#define ZORRO_PROD_GVP_GFORCE_040_060 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x16, 0)
+#define ZORRO_PROD_GVP_IMPACT_VISION_24 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x20, 0)
+#define ZORRO_PROD_GVP_GFORCE_040_2 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0xFF, 0)
+#define ZORRO_MANUF_CALIFORNIA_ACCESS_SYNERGY 0x07E5
+#define ZORRO_PROD_CALIFORNIA_ACCESS_SYNERGY_MALIBU ZORRO_ID(CALIFORNIA_ACCESS_SYNERGY, 0x01, 0)
+#define ZORRO_MANUF_XETEC 0x07E6
+#define ZORRO_PROD_XETEC_FASTCARD ZORRO_ID(XETEC, 0x01, 0)
+#define ZORRO_PROD_XETEC_FASTCARD_RAM ZORRO_ID(XETEC, 0x02, 0)
+#define ZORRO_PROD_XETEC_FASTCARD_PLUS ZORRO_ID(XETEC, 0x03, 0)
+#define ZORRO_MANUF_PROGRESSIVE_PERIPHERALS_AND_SYSTEMS 0x07EA
+#define ZORRO_PROD_PPS_MERCURY ZORRO_ID(PROGRESSIVE_PERIPHERALS_AND_SYSTEMS, 0x00, 0)
+#define ZORRO_PROD_PPS_A3000_68040 ZORRO_ID(PROGRESSIVE_PERIPHERALS_AND_SYSTEMS, 0x01, 0)
+#define ZORRO_PROD_PPS_A2000_68040 ZORRO_ID(PROGRESSIVE_PERIPHERALS_AND_SYSTEMS, 0x69, 0)
+#define ZORRO_PROD_PPS_ZEUS ZORRO_ID(PROGRESSIVE_PERIPHERALS_AND_SYSTEMS, 0x96, 0)
+#define ZORRO_PROD_PPS_A500_68040 ZORRO_ID(PROGRESSIVE_PERIPHERALS_AND_SYSTEMS, 0xBB, 0)
+#define ZORRO_MANUF_XEBEC 0x07EC
+#define ZORRO_MANUF_SPIRIT_TECHNOLOGY 0x07F2
+#define ZORRO_PROD_SPIRIT_TECHNOLOGY_INSIDER_IN1000 ZORRO_ID(SPIRIT_TECHNOLOGY, 0x01, 0)
+#define ZORRO_PROD_SPIRIT_TECHNOLOGY_INSIDER_IN500 ZORRO_ID(SPIRIT_TECHNOLOGY, 0x02, 0)
+#define ZORRO_PROD_SPIRIT_TECHNOLOGY_SIN500 ZORRO_ID(SPIRIT_TECHNOLOGY, 0x03, 0)
+#define ZORRO_PROD_SPIRIT_TECHNOLOGY_HDA_506 ZORRO_ID(SPIRIT_TECHNOLOGY, 0x04, 0)
+#define ZORRO_PROD_SPIRIT_TECHNOLOGY_AX_S ZORRO_ID(SPIRIT_TECHNOLOGY, 0x05, 0)
+#define ZORRO_PROD_SPIRIT_TECHNOLOGY_OCTABYTE ZORRO_ID(SPIRIT_TECHNOLOGY, 0x06, 0)
+#define ZORRO_PROD_SPIRIT_TECHNOLOGY_INMATE ZORRO_ID(SPIRIT_TECHNOLOGY, 0x08, 0)
+#define ZORRO_MANUF_SPIRIT_TECHNOLOGY_2 0x07F3
+#define ZORRO_MANUF_BSC_ALFADATA_1 0x07FE
+#define ZORRO_PROD_BSC_ALF_3_1 ZORRO_ID(BSC_ALFADATA_1, 0x03, 0)
+#define ZORRO_MANUF_BSC_ALFADATA_2 0x0801
+#define ZORRO_PROD_BSC_ALF_2_1 ZORRO_ID(BSC_ALFADATA_2, 0x01, 0)
+#define ZORRO_PROD_BSC_ALF_2_2 ZORRO_ID(BSC_ALFADATA_2, 0x02, 0)
+#define ZORRO_PROD_BSC_ALF_3_2 ZORRO_ID(BSC_ALFADATA_2, 0x03, 0)
+#define ZORRO_MANUF_CARDCO_2 0x0802
+#define ZORRO_PROD_CARDCO_KRONOS_2000_2 ZORRO_ID(CARDCO_2, 0x04, 0)
+#define ZORRO_PROD_CARDCO_A1000_2 ZORRO_ID(CARDCO_2, 0x0C, 0)
+#define ZORRO_MANUF_JOCHHEIM 0x0804
+#define ZORRO_PROD_JOCHHEIM_RAM ZORRO_ID(JOCHHEIM, 0x01, 0)
+#define ZORRO_MANUF_CHECKPOINT_TECHNOLOGIES 0x0807
+#define ZORRO_PROD_CHECKPOINT_TECHNOLOGIES_SERIAL_SOLUTION ZORRO_ID(CHECKPOINT_TECHNOLOGIES, 0x00, 0)
+#define ZORRO_MANUF_EDOTRONIK 0x0810
+#define ZORRO_PROD_EDOTRONIK_IEEE_488 ZORRO_ID(EDOTRONIK, 0x01, 0)
+#define ZORRO_PROD_EDOTRONIK_8032 ZORRO_ID(EDOTRONIK, 0x02, 0)
+#define ZORRO_PROD_EDOTRONIK_MULTISERIAL ZORRO_ID(EDOTRONIK, 0x03, 0)
+#define ZORRO_PROD_EDOTRONIK_VIDEODIGITIZER ZORRO_ID(EDOTRONIK, 0x04, 0)
+#define ZORRO_PROD_EDOTRONIK_PARALLEL_IO ZORRO_ID(EDOTRONIK, 0x05, 0)
+#define ZORRO_PROD_EDOTRONIK_PIC_PROTOYPING ZORRO_ID(EDOTRONIK, 0x06, 0)
+#define ZORRO_PROD_EDOTRONIK_ADC ZORRO_ID(EDOTRONIK, 0x07, 0)
+#define ZORRO_PROD_EDOTRONIK_VME ZORRO_ID(EDOTRONIK, 0x08, 0)
+#define ZORRO_PROD_EDOTRONIK_DSP96000 ZORRO_ID(EDOTRONIK, 0x09, 0)
+#define ZORRO_MANUF_NES_INC 0x0813
+#define ZORRO_PROD_NES_INC_RAM ZORRO_ID(NES_INC, 0x00, 0)
+#define ZORRO_MANUF_ICD 0x0817
+#define ZORRO_PROD_ICD_ADVANTAGE_2000_SCSI ZORRO_ID(ICD, 0x01, 0)
+#define ZORRO_PROD_ICD_ADVANTAGE_IDE ZORRO_ID(ICD, 0x03, 0)
+#define ZORRO_PROD_ICD_ADVANTAGE_2080_RAM ZORRO_ID(ICD, 0x04, 0)
+#define ZORRO_MANUF_KUPKE_2 0x0819
+#define ZORRO_PROD_KUPKE_OMTI ZORRO_ID(KUPKE_2, 0x01, 0)
+#define ZORRO_PROD_KUPKE_SCSI_II ZORRO_ID(KUPKE_2, 0x02, 0)
+#define ZORRO_PROD_KUPKE_GOLEM_BOX ZORRO_ID(KUPKE_2, 0x03, 0)
+#define ZORRO_PROD_KUPKE_030_882 ZORRO_ID(KUPKE_2, 0x04, 0)
+#define ZORRO_PROD_KUPKE_SCSI_AT ZORRO_ID(KUPKE_2, 0x05, 0)
+#define ZORRO_MANUF_GREAT_VALLEY_PRODUCTS_3 0x081D
+#define ZORRO_PROD_GVP_A2000_RAM8 ZORRO_ID(GREAT_VALLEY_PRODUCTS_3, 0x09, 0)
+#define ZORRO_PROD_GVP_IMPACT_SERIES_II_RAM_2 ZORRO_ID(GREAT_VALLEY_PRODUCTS_3, 0x0A, 0)
+#define ZORRO_MANUF_INTERWORKS_NETWORK 0x081E
+#define ZORRO_MANUF_HARDITAL_SYNTHESIS 0x0820
+#define ZORRO_PROD_HARDITAL_SYNTHESIS_TQM_68030_68882 ZORRO_ID(HARDITAL_SYNTHESIS, 0x14, 0)
+#define ZORRO_MANUF_APPLIED_ENGINEERING 0x0828
+#define ZORRO_PROD_APPLIED_ENGINEERING_DL2000 ZORRO_ID(APPLIED_ENGINEERING, 0x10, 0)
+#define ZORRO_PROD_APPLIED_ENGINEERING_RAM_WORKS ZORRO_ID(APPLIED_ENGINEERING, 0xE0, 0)
+#define ZORRO_MANUF_BSC_ALFADATA_3 0x082C
+#define ZORRO_PROD_BSC_OKTAGON_2008 ZORRO_ID(BSC_ALFADATA_3, 0x05, 0)
+#define ZORRO_PROD_BSC_TANDEM_AT_2008_508 ZORRO_ID(BSC_ALFADATA_3, 0x06, 0)
+#define ZORRO_PROD_BSC_ALFA_RAM_1200 ZORRO_ID(BSC_ALFADATA_3, 0x07, 0)
+#define ZORRO_PROD_BSC_OKTAGON_2008_RAM ZORRO_ID(BSC_ALFADATA_3, 0x08, 0)
+#define ZORRO_PROD_BSC_MULTIFACE_I ZORRO_ID(BSC_ALFADATA_3, 0x10, 0)
+#define ZORRO_PROD_BSC_MULTIFACE_II ZORRO_ID(BSC_ALFADATA_3, 0x11, 0)
+#define ZORRO_PROD_BSC_MULTIFACE_III ZORRO_ID(BSC_ALFADATA_3, 0x12, 0)
+#define ZORRO_PROD_BSC_FRAMEMASTER_II ZORRO_ID(BSC_ALFADATA_3, 0x20, 0)
+#define ZORRO_PROD_BSC_GRAFFITI_RAM ZORRO_ID(BSC_ALFADATA_3, 0x21, 0)
+#define ZORRO_PROD_BSC_GRAFFITI_REG ZORRO_ID(BSC_ALFADATA_3, 0x22, 0)
+#define ZORRO_PROD_BSC_ISDN_MASTERCARD ZORRO_ID(BSC_ALFADATA_3, 0x40, 0)
+#define ZORRO_PROD_BSC_ISDN_MASTERCARD_II ZORRO_ID(BSC_ALFADATA_3, 0x41, 0)
+#define ZORRO_MANUF_PHOENIX 0x0835
+#define ZORRO_PROD_PHOENIX_ST506 ZORRO_ID(PHOENIX, 0x21, 0)
+#define ZORRO_PROD_PHOENIX_SCSI ZORRO_ID(PHOENIX, 0x22, 0)
+#define ZORRO_PROD_PHOENIX_RAM ZORRO_ID(PHOENIX, 0xBE, 0)
+#define ZORRO_MANUF_ADVANCED_STORAGE_SYSTEMS 0x0836
+#define ZORRO_PROD_ADVANCED_STORAGE_SYSTEMS_NEXUS ZORRO_ID(ADVANCED_STORAGE_SYSTEMS, 0x01, 0)
+#define ZORRO_PROD_ADVANCED_STORAGE_SYSTEMS_NEXUS_RAM ZORRO_ID(ADVANCED_STORAGE_SYSTEMS, 0x08, 0)
+#define ZORRO_MANUF_IMPULSE 0x0838
+#define ZORRO_PROD_IMPULSE_FIRECRACKER_24 ZORRO_ID(IMPULSE, 0x00, 0)
+#define ZORRO_MANUF_IVS 0x0840
+#define ZORRO_PROD_IVS_GRANDSLAM_PIC_2 ZORRO_ID(IVS, 0x02, 0)
+#define ZORRO_PROD_IVS_GRANDSLAM_PIC_1 ZORRO_ID(IVS, 0x04, 0)
+#define ZORRO_PROD_IVS_OVERDRIVE ZORRO_ID(IVS, 0x10, 0)
+#define ZORRO_PROD_IVS_TRUMPCARD_CLASSIC ZORRO_ID(IVS, 0x30, 0)
+#define ZORRO_PROD_IVS_TRUMPCARD_PRO_GRANDSLAM ZORRO_ID(IVS, 0x34, 0)
+#define ZORRO_PROD_IVS_META_4 ZORRO_ID(IVS, 0x40, 0)
+#define ZORRO_PROD_IVS_WAVETOOLS ZORRO_ID(IVS, 0xBF, 0)
+#define ZORRO_PROD_IVS_VECTOR_1 ZORRO_ID(IVS, 0xF3, 0)
+#define ZORRO_PROD_IVS_VECTOR_2 ZORRO_ID(IVS, 0xF4, 0)
+#define ZORRO_MANUF_VECTOR_1 0x0841
+#define ZORRO_PROD_VECTOR_CONNECTION_1 ZORRO_ID(VECTOR_1, 0xE3, 0)
+#define ZORRO_MANUF_XPERT_PRODEV 0x0845
+#define ZORRO_PROD_XPERT_PRODEV_VISIONA_RAM ZORRO_ID(XPERT_PRODEV, 0x01, 0)
+#define ZORRO_PROD_XPERT_PRODEV_VISIONA_REG ZORRO_ID(XPERT_PRODEV, 0x02, 0)
+#define ZORRO_PROD_XPERT_PRODEV_MERLIN_RAM ZORRO_ID(XPERT_PRODEV, 0x03, 0)
+#define ZORRO_PROD_XPERT_PRODEV_MERLIN_REG_1 ZORRO_ID(XPERT_PRODEV, 0x04, 0)
+#define ZORRO_PROD_XPERT_PRODEV_MERLIN_REG_2 ZORRO_ID(XPERT_PRODEV, 0xC9, 0)
+#define ZORRO_MANUF_HYDRA_SYSTEMS 0x0849
+#define ZORRO_PROD_HYDRA_SYSTEMS_AMIGANET ZORRO_ID(HYDRA_SYSTEMS, 0x01, 0)
+#define ZORRO_MANUF_SUNRIZE_INDUSTRIES 0x084F
+#define ZORRO_PROD_SUNRIZE_INDUSTRIES_AD1012 ZORRO_ID(SUNRIZE_INDUSTRIES, 0x01, 0)
+#define ZORRO_PROD_SUNRIZE_INDUSTRIES_AD516 ZORRO_ID(SUNRIZE_INDUSTRIES, 0x02, 0)
+#define ZORRO_PROD_SUNRIZE_INDUSTRIES_DD512 ZORRO_ID(SUNRIZE_INDUSTRIES, 0x03, 0)
+#define ZORRO_MANUF_TRICERATOPS 0x0850
+#define ZORRO_PROD_TRICERATOPS_MULTI_IO ZORRO_ID(TRICERATOPS, 0x01, 0)
+#define ZORRO_MANUF_APPLIED_MAGIC 0x0851
+#define ZORRO_PROD_APPLIED_MAGIC_DMI_RESOLVER ZORRO_ID(APPLIED_MAGIC, 0x01, 0)
+#define ZORRO_PROD_APPLIED_MAGIC_DIGITAL_BROADCASTER ZORRO_ID(APPLIED_MAGIC, 0x06, 0)
+#define ZORRO_MANUF_GFX_BASE 0x085E
+#define ZORRO_PROD_GFX_BASE_GDA_1_VRAM ZORRO_ID(GFX_BASE, 0x00, 0)
+#define ZORRO_PROD_GFX_BASE_GDA_1 ZORRO_ID(GFX_BASE, 0x01, 0)
+#define ZORRO_MANUF_ROCTEC 0x0860
+#define ZORRO_PROD_ROCTEC_RH_800C ZORRO_ID(ROCTEC, 0x01, 0)
+#define ZORRO_PROD_ROCTEC_RH_800C_RAM ZORRO_ID(ROCTEC, 0x01, 0)
+#define ZORRO_MANUF_KATO 0x0861
+#define ZORRO_PROD_KATO_MELODY ZORRO_ID(KATO, 0x80, 0)
+#define ZORRO_MANUF_HELFRICH_1 0x0861
+#define ZORRO_PROD_HELFRICH_RAINBOW_II ZORRO_ID(HELFRICH_1, 0x20, 0)
+#define ZORRO_PROD_HELFRICH_RAINBOW_III ZORRO_ID(HELFRICH_1, 0x21, 0)
+#define ZORRO_MANUF_ATLANTIS 0x0862
+#define ZORRO_MANUF_PROTAR 0x0864
+#define ZORRO_MANUF_ACS 0x0865
+#define ZORRO_MANUF_SOFTWARE_RESULTS_ENTERPRISES 0x0866
+#define ZORRO_PROD_SOFTWARE_RESULTS_ENTERPRISES_GOLDEN_GATE_2_BUS_PLUS ZORRO_ID(SOFTWARE_RESULTS_ENTERPRISES, 0x01, 0)
+#define ZORRO_MANUF_MASOBOSHI 0x086D
+#define ZORRO_PROD_MASOBOSHI_MASTER_CARD_SC201 ZORRO_ID(MASOBOSHI, 0x03, 0)
+#define ZORRO_PROD_MASOBOSHI_MASTER_CARD_MC702 ZORRO_ID(MASOBOSHI, 0x04, 0)
+#define ZORRO_PROD_MASOBOSHI_MVD_819 ZORRO_ID(MASOBOSHI, 0x07, 0)
+#define ZORRO_MANUF_MAINHATTAN_DATA 0x086F
+#define ZORRO_PROD_MAINHATTAN_DATA_IDE ZORRO_ID(MAINHATTAN_DATA, 0x01, 0)
+#define ZORRO_MANUF_VILLAGE_TRONIC 0x0877
+#define ZORRO_PROD_VILLAGE_TRONIC_DOMINO_RAM ZORRO_ID(VILLAGE_TRONIC, 0x01, 0)
+#define ZORRO_PROD_VILLAGE_TRONIC_DOMINO_REG ZORRO_ID(VILLAGE_TRONIC, 0x02, 0)
+#define ZORRO_PROD_VILLAGE_TRONIC_DOMINO_16M_PROTOTYPE ZORRO_ID(VILLAGE_TRONIC, 0x03, 0)
+#define ZORRO_PROD_VILLAGE_TRONIC_PICASSO_II_II_PLUS_RAM ZORRO_ID(VILLAGE_TRONIC, 0x0B, 0)
+#define ZORRO_PROD_VILLAGE_TRONIC_PICASSO_II_II_PLUS_REG ZORRO_ID(VILLAGE_TRONIC, 0x0C, 0)
+#define ZORRO_PROD_VILLAGE_TRONIC_PICASSO_II_II_PLUS_SEGMENTED_MODE ZORRO_ID(VILLAGE_TRONIC, 0x0D, 0)
+#define ZORRO_PROD_VILLAGE_TRONIC_PICASSO_IV_Z2_RAM1 ZORRO_ID(VILLAGE_TRONIC, 0x15, 0)
+#define ZORRO_PROD_VILLAGE_TRONIC_PICASSO_IV_Z2_RAM2 ZORRO_ID(VILLAGE_TRONIC, 0x16, 0)
+#define ZORRO_PROD_VILLAGE_TRONIC_PICASSO_IV_Z2_REG ZORRO_ID(VILLAGE_TRONIC, 0x17, 0)
+#define ZORRO_PROD_VILLAGE_TRONIC_PICASSO_IV_Z3 ZORRO_ID(VILLAGE_TRONIC, 0x18, 0)
+#define ZORRO_PROD_VILLAGE_TRONIC_ARIADNE ZORRO_ID(VILLAGE_TRONIC, 0xC9, 0)
+#define ZORRO_PROD_VILLAGE_TRONIC_ARIADNE2 ZORRO_ID(VILLAGE_TRONIC, 0xCA, 0)
+#define ZORRO_MANUF_UTILITIES_UNLIMITED 0x087B
+#define ZORRO_PROD_UTILITIES_UNLIMITED_EMPLANT_DELUXE ZORRO_ID(UTILITIES_UNLIMITED, 0x15, 0)
+#define ZORRO_PROD_UTILITIES_UNLIMITED_EMPLANT_DELUXE2 ZORRO_ID(UTILITIES_UNLIMITED, 0x20, 0)
+#define ZORRO_MANUF_AMITRIX 0x0880
+#define ZORRO_PROD_AMITRIX_MULTI_IO ZORRO_ID(AMITRIX, 0x01, 0)
+#define ZORRO_PROD_AMITRIX_CD_RAM ZORRO_ID(AMITRIX, 0x02, 0)
+#define ZORRO_MANUF_ARMAX 0x0885
+#define ZORRO_PROD_ARMAX_OMNIBUS ZORRO_ID(ARMAX, 0x00, 0)
+#define ZORRO_MANUF_ZEUS 0x088D
+#define ZORRO_PROD_ZEUS_SPIDER ZORRO_ID(ZEUS, 0x04, 0)
+#define ZORRO_MANUF_NEWTEK 0x088F
+#define ZORRO_PROD_NEWTEK_VIDEOTOASTER ZORRO_ID(NEWTEK, 0x00, 0)
+#define ZORRO_MANUF_M_TECH_GERMANY 0x0890
+#define ZORRO_PROD_MTEC_AT500_2 ZORRO_ID(M_TECH_GERMANY, 0x01, 0)
+#define ZORRO_PROD_MTEC_68030 ZORRO_ID(M_TECH_GERMANY, 0x03, 0)
+#define ZORRO_PROD_MTEC_68020I ZORRO_ID(M_TECH_GERMANY, 0x06, 0)
+#define ZORRO_PROD_MTEC_A1200_T68030_RTC ZORRO_ID(M_TECH_GERMANY, 0x20, 0)
+#define ZORRO_PROD_MTEC_VIPER_MK_V_E_MATRIX_530 ZORRO_ID(M_TECH_GERMANY, 0x21, 0)
+#define ZORRO_PROD_MTEC_8_MB_RAM ZORRO_ID(M_TECH_GERMANY, 0x22, 0)
+#define ZORRO_PROD_MTEC_VIPER_MK_V_E_MATRIX_530_SCSI_IDE ZORRO_ID(M_TECH_GERMANY, 0x24, 0)
+#define ZORRO_MANUF_GREAT_VALLEY_PRODUCTS_4 0x0891
+#define ZORRO_PROD_GVP_EGS_28_24_SPECTRUM_RAM ZORRO_ID(GREAT_VALLEY_PRODUCTS_4, 0x01, 0)
+#define ZORRO_PROD_GVP_EGS_28_24_SPECTRUM_REG ZORRO_ID(GREAT_VALLEY_PRODUCTS_4, 0x02, 0)
+#define ZORRO_MANUF_APOLLO_1 0x0892
+#define ZORRO_PROD_APOLLO_A1200 ZORRO_ID(APOLLO_1, 0x01, 0)
+#define ZORRO_MANUF_HELFRICH_2 0x0893
+#define ZORRO_PROD_HELFRICH_PICCOLO_RAM ZORRO_ID(HELFRICH_2, 0x05, 0)
+#define ZORRO_PROD_HELFRICH_PICCOLO_REG ZORRO_ID(HELFRICH_2, 0x06, 0)
+#define ZORRO_PROD_HELFRICH_PEGGY_PLUS_MPEG ZORRO_ID(HELFRICH_2, 0x07, 0)
+#define ZORRO_PROD_HELFRICH_VIDEOCRUNCHER ZORRO_ID(HELFRICH_2, 0x08, 0)
+#define ZORRO_PROD_HELFRICH_SD64_RAM ZORRO_ID(HELFRICH_2, 0x0A, 0)
+#define ZORRO_PROD_HELFRICH_SD64_REG ZORRO_ID(HELFRICH_2, 0x0B, 0)
+#define ZORRO_MANUF_MACROSYSTEMS_USA 0x089B
+#define ZORRO_PROD_MACROSYSTEMS_WARP_ENGINE_40xx ZORRO_ID(MACROSYSTEMS_USA, 0x13, 0)
+#define ZORRO_MANUF_ELBOX_COMPUTER 0x089E
+#define ZORRO_PROD_ELBOX_COMPUTER_1200_4 ZORRO_ID(ELBOX_COMPUTER, 0x06, 0)
+#define ZORRO_MANUF_HARMS_PROFESSIONAL 0x0A00
+#define ZORRO_PROD_HARMS_PROFESSIONAL_030_PLUS ZORRO_ID(HARMS_PROFESSIONAL, 0x10, 0)
+#define ZORRO_PROD_HARMS_PROFESSIONAL_3500 ZORRO_ID(HARMS_PROFESSIONAL, 0xD0, 0)
+#define ZORRO_MANUF_MICRONIK 0x0A50
+#define ZORRO_PROD_MICRONIK_RCA_120 ZORRO_ID(MICRONIK, 0x0A, 0)
+#define ZORRO_MANUF_MICRONIK2 0x0F0F
+#define ZORRO_PROD_MICRONIK2_Z3I ZORRO_ID(MICRONIK2, 0x01, 0)
+#define ZORRO_MANUF_MEGAMICRO 0x1000
+#define ZORRO_PROD_MEGAMICRO_SCRAM_500 ZORRO_ID(MEGAMICRO, 0x03, 0)
+#define ZORRO_PROD_MEGAMICRO_SCRAM_500_RAM ZORRO_ID(MEGAMICRO, 0x04, 0)
+#define ZORRO_MANUF_IMTRONICS_2 0x1028
+#define ZORRO_PROD_IMTRONICS_HURRICANE_2800_3 ZORRO_ID(IMTRONICS_2, 0x39, 0)
+#define ZORRO_PROD_IMTRONICS_HURRICANE_2800_4 ZORRO_ID(IMTRONICS_2, 0x57, 0)
+#define ZORRO_MANUF_INDIVIDUAL_COMPUTERS 0x1212
+#define ZORRO_PROD_INDIVIDUAL_COMPUTERS_BUDDHA ZORRO_ID(INDIVIDUAL_COMPUTERS, 0x00, 0)
+#define ZORRO_PROD_INDIVIDUAL_COMPUTERS_X_SURF ZORRO_ID(INDIVIDUAL_COMPUTERS, 0x17, 0)
+#define ZORRO_PROD_INDIVIDUAL_COMPUTERS_CATWEASEL ZORRO_ID(INDIVIDUAL_COMPUTERS, 0x2A, 0)
+#define ZORRO_MANUF_KUPKE_3 0x1248
+#define ZORRO_PROD_KUPKE_GOLEM_HD_3000 ZORRO_ID(KUPKE_3, 0x01, 0)
+#define ZORRO_MANUF_ITH 0x1388
+#define ZORRO_PROD_ITH_ISDN_MASTER_II ZORRO_ID(ITH, 0x01, 0)
+#define ZORRO_MANUF_VMC 0x1389
+#define ZORRO_PROD_VMC_ISDN_BLASTER_Z2 ZORRO_ID(VMC, 0x01, 0)
+#define ZORRO_PROD_VMC_HYPERCOM_4 ZORRO_ID(VMC, 0x02, 0)
+#define ZORRO_MANUF_INFORMATION 0x157C
+#define ZORRO_PROD_INFORMATION_ISDN_ENGINE_I ZORRO_ID(INFORMATION, 0x64, 0)
+#define ZORRO_MANUF_VORTEX 0x2017
+#define ZORRO_PROD_VORTEX_GOLDEN_GATE_80386SX ZORRO_ID(VORTEX, 0x07, 0)
+#define ZORRO_PROD_VORTEX_GOLDEN_GATE_RAM ZORRO_ID(VORTEX, 0x08, 0)
+#define ZORRO_PROD_VORTEX_GOLDEN_GATE_80486 ZORRO_ID(VORTEX, 0x09, 0)
+#define ZORRO_MANUF_EXPANSION_SYSTEMS 0x2062
+#define ZORRO_PROD_EXPANSION_SYSTEMS_DATAFLYER_4000SX ZORRO_ID(EXPANSION_SYSTEMS, 0x01, 0)
+#define ZORRO_PROD_EXPANSION_SYSTEMS_DATAFLYER_4000SX_RAM ZORRO_ID(EXPANSION_SYSTEMS, 0x02, 0)
+#define ZORRO_MANUF_READYSOFT 0x2100
+#define ZORRO_PROD_READYSOFT_AMAX_II_IV ZORRO_ID(READYSOFT, 0x01, 0)
+#define ZORRO_MANUF_PHASE5 0x2140
+#define ZORRO_PROD_PHASE5_BLIZZARD_RAM ZORRO_ID(PHASE5, 0x01, 0)
+#define ZORRO_PROD_PHASE5_BLIZZARD ZORRO_ID(PHASE5, 0x02, 0)
+#define ZORRO_PROD_PHASE5_BLIZZARD_1220_IV ZORRO_ID(PHASE5, 0x06, 0)
+#define ZORRO_PROD_PHASE5_FASTLANE_Z3_RAM ZORRO_ID(PHASE5, 0x0A, 0)
+#define ZORRO_PROD_PHASE5_BLIZZARD_1230_II_FASTLANE_Z3_CYBERSCSI_CYBERSTORM060 ZORRO_ID(PHASE5, 0x0B, 0)
+#define ZORRO_PROD_PHASE5_BLIZZARD_1220_CYBERSTORM ZORRO_ID(PHASE5, 0x0C, 0)
+#define ZORRO_PROD_PHASE5_BLIZZARD_1230 ZORRO_ID(PHASE5, 0x0D, 0)
+#define ZORRO_PROD_PHASE5_BLIZZARD_1230_IV_1260 ZORRO_ID(PHASE5, 0x11, 0)
+#define ZORRO_PROD_PHASE5_BLIZZARD_2060 ZORRO_ID(PHASE5, 0x18, 0)
+#define ZORRO_PROD_PHASE5_CYBERSTORM_MK_II ZORRO_ID(PHASE5, 0x19, 0)
+#define ZORRO_PROD_PHASE5_CYBERVISION64 ZORRO_ID(PHASE5, 0x22, 0)
+#define ZORRO_PROD_PHASE5_CYBERVISION64_3D_PROTOTYPE ZORRO_ID(PHASE5, 0x32, 0)
+#define ZORRO_PROD_PHASE5_CYBERVISION64_3D ZORRO_ID(PHASE5, 0x43, 0)
+#define ZORRO_PROD_PHASE5_CYBERSTORM_MK_III ZORRO_ID(PHASE5, 0x64, 0)
+#define ZORRO_PROD_PHASE5_BLIZZARD_603E_PLUS ZORRO_ID(PHASE5, 0x6e, 0)
+#define ZORRO_MANUF_DPS 0x2169
+#define ZORRO_PROD_DPS_PERSONAL_ANIMATION_RECORDER ZORRO_ID(DPS, 0x01, 0)
+#define ZORRO_MANUF_APOLLO_2 0x2200
+#define ZORRO_PROD_APOLLO_A620_68020_1 ZORRO_ID(APOLLO_2, 0x00, 0)
+#define ZORRO_PROD_APOLLO_A620_68020_2 ZORRO_ID(APOLLO_2, 0x01, 0)
+#define ZORRO_MANUF_APOLLO_3 0x2222
+#define ZORRO_PROD_APOLLO_AT_APOLLO ZORRO_ID(APOLLO_3, 0x22, 0)
+#define ZORRO_PROD_APOLLO_1230_1240_1260_2030_4040_4060 ZORRO_ID(APOLLO_3, 0x23, 0)
+#define ZORRO_MANUF_PETSOFF_LP 0x38A5
+#define ZORRO_PROD_PETSOFF_LP_DELFINA ZORRO_ID(PETSOFF_LP, 0x00, 0)
+#define ZORRO_PROD_PETSOFF_LP_DELFINA_LITE ZORRO_ID(PETSOFF_LP, 0x01, 0)
+#define ZORRO_MANUF_UWE_GERLACH 0x3FF7
+#define ZORRO_PROD_UWE_GERLACH_RAM_ROM ZORRO_ID(UWE_GERLACH, 0xd4, 0)
+#define ZORRO_MANUF_ACT 0x4231
+#define ZORRO_PROD_ACT_PRELUDE ZORRO_ID(ACT, 0x01, 0)
+#define ZORRO_MANUF_MACROSYSTEMS_GERMANY 0x4754
+#define ZORRO_PROD_MACROSYSTEMS_MAESTRO ZORRO_ID(MACROSYSTEMS_GERMANY, 0x03, 0)
+#define ZORRO_PROD_MACROSYSTEMS_VLAB ZORRO_ID(MACROSYSTEMS_GERMANY, 0x04, 0)
+#define ZORRO_PROD_MACROSYSTEMS_MAESTRO_PRO ZORRO_ID(MACROSYSTEMS_GERMANY, 0x05, 0)
+#define ZORRO_PROD_MACROSYSTEMS_RETINA ZORRO_ID(MACROSYSTEMS_GERMANY, 0x06, 0)
+#define ZORRO_PROD_MACROSYSTEMS_MULTI_EVOLUTION ZORRO_ID(MACROSYSTEMS_GERMANY, 0x08, 0)
+#define ZORRO_PROD_MACROSYSTEMS_TOCCATA ZORRO_ID(MACROSYSTEMS_GERMANY, 0x0C, 0)
+#define ZORRO_PROD_MACROSYSTEMS_RETINA_Z3 ZORRO_ID(MACROSYSTEMS_GERMANY, 0x10, 0)
+#define ZORRO_PROD_MACROSYSTEMS_VLAB_MOTION ZORRO_ID(MACROSYSTEMS_GERMANY, 0x12, 0)
+#define ZORRO_PROD_MACROSYSTEMS_ALTAIS ZORRO_ID(MACROSYSTEMS_GERMANY, 0x13, 0)
+#define ZORRO_PROD_MACROSYSTEMS_FALCON_040 ZORRO_ID(MACROSYSTEMS_GERMANY, 0xFD, 0)
+#define ZORRO_MANUF_COMBITEC 0x6766
+#define ZORRO_MANUF_SKI_PERIPHERALS 0x8000
+#define ZORRO_PROD_SKI_PERIPHERALS_MAST_FIREBALL ZORRO_ID(SKI_PERIPHERALS, 0x08, 0)
+#define ZORRO_PROD_SKI_PERIPHERALS_SCSI_DUAL_SERIAL ZORRO_ID(SKI_PERIPHERALS, 0x80, 0)
+#define ZORRO_MANUF_REIS_WARE_2 0xA9AD
+#define ZORRO_PROD_REIS_WARE_SCAN_KING ZORRO_ID(REIS_WARE_2, 0x11, 0)
+#define ZORRO_MANUF_CAMERON 0xAA01
+#define ZORRO_PROD_CAMERON_PERSONAL_A4 ZORRO_ID(CAMERON, 0x10, 0)
+#define ZORRO_MANUF_REIS_WARE 0xAA11
+#define ZORRO_PROD_REIS_WARE_HANDYSCANNER ZORRO_ID(REIS_WARE, 0x11, 0)
+#define ZORRO_MANUF_PHOENIX_2 0xB5A8
+#define ZORRO_PROD_PHOENIX_ST506_2 ZORRO_ID(PHOENIX_2, 0x21, 0)
+#define ZORRO_PROD_PHOENIX_SCSI_2 ZORRO_ID(PHOENIX_2, 0x22, 0)
+#define ZORRO_PROD_PHOENIX_RAM_2 ZORRO_ID(PHOENIX_2, 0xBE, 0)
+#define ZORRO_MANUF_COMBITEC_2 0xC008
+#define ZORRO_PROD_COMBITEC_HD ZORRO_ID(COMBITEC_2, 0x2A, 0)
+#define ZORRO_PROD_COMBITEC_SRAM ZORRO_ID(COMBITEC_2, 0x2B, 0)
+#define ZORRO_MANUF_HACKER 0x07DB
+#define ZORRO_PROD_GENERAL_PROTOTYPE ZORRO_ID(HACKER, 0x00, 0)
+#define ZORRO_PROD_HACKER_SCSI ZORRO_ID(HACKER, 0x01, 0)
+#define ZORRO_PROD_RESOURCE_MANAGEMENT_FORCE_QUICKNET_QN2000 ZORRO_ID(HACKER, 0x02, 0)
+#define ZORRO_PROD_VECTOR_CONNECTION_2 ZORRO_ID(HACKER, 0xE0, 0)
+#define ZORRO_PROD_VECTOR_CONNECTION_3 ZORRO_ID(HACKER, 0xE1, 0)
+#define ZORRO_PROD_VECTOR_CONNECTION_4 ZORRO_ID(HACKER, 0xE2, 0)
+#define ZORRO_PROD_VECTOR_CONNECTION_5 ZORRO_ID(HACKER, 0xE3, 0)